@data-client/rest 0.10.0 → 0.11.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/README.md +4 -3
- package/dist/index.js +5 -6
- package/dist/index.umd.min.js +1 -1
- package/legacy/NetworkError.js +1 -1
- package/legacy/OptionsToFunction.js +1 -1
- package/legacy/RestEndpoint.js +1 -1
- package/legacy/RestEndpointTypeHelp.js +1 -1
- package/legacy/RestEndpointTypes.js +1 -1
- package/legacy/RestHelpers.js +1 -1
- package/legacy/createResource.js +7 -8
- package/legacy/extractCollection.js +1 -1
- package/legacy/extractObject.js +1 -1
- package/legacy/hookifyResource.js +1 -1
- package/legacy/index.js +1 -1
- package/legacy/mapCollection.js +1 -1
- package/legacy/next/index.js +1 -1
- package/legacy/paginatedCollections.js +1 -1
- package/legacy/paramsToString.js +1 -1
- package/legacy/paramsToString.native.js +1 -1
- package/legacy/pathTypes.js +1 -1
- package/legacy/resourceExtendable.js +1 -1
- package/legacy/resourceExtensionTypes.js +1 -1
- package/legacy/resourceTypes.js +1 -1
- package/legacy/test-fixtures.js +1 -1
- package/legacy/utiltypes.js +1 -1
- package/lib/NetworkError.js +1 -1
- package/lib/OptionsToFunction.js +1 -1
- package/lib/RestEndpoint.js +1 -1
- package/lib/RestEndpointTypeHelp.js +1 -1
- package/lib/RestEndpointTypes.d.ts +15 -13
- package/lib/RestEndpointTypes.d.ts.map +1 -1
- package/lib/RestEndpointTypes.js +1 -1
- package/lib/RestHelpers.js +1 -1
- package/lib/createResource.d.ts.map +1 -1
- package/lib/createResource.js +7 -8
- package/lib/extractCollection.js +1 -1
- package/lib/extractObject.js +1 -1
- package/lib/hookifyResource.js +1 -1
- package/lib/index.js +1 -1
- package/lib/mapCollection.js +1 -1
- package/lib/next/index.js +1 -1
- package/lib/paginatedCollections.js +1 -1
- package/lib/paramsToString.js +1 -1
- package/lib/paramsToString.native.js +1 -1
- package/lib/pathTypes.js +1 -1
- package/lib/resourceExtendable.js +1 -1
- package/lib/resourceExtensionTypes.js +1 -1
- package/lib/resourceTypes.d.ts +4 -8
- package/lib/resourceTypes.d.ts.map +1 -1
- package/lib/resourceTypes.js +1 -1
- package/lib/test-fixtures.js +1 -1
- package/lib/utiltypes.js +1 -1
- package/package.json +2 -2
- package/src/RestEndpointTypes.ts +30 -32
- package/src/__tests__/RestEndpoint.ts +5 -4
- package/src/__tests__/createResource.test.ts +42 -2
- package/src/__tests__/types.test.ts +112 -1
- package/src/createResource.ts +7 -12
- package/src/resourceTypes.ts +16 -15
- package/ts4.0/RestEndpointTypes.d.ts +21 -13
- package/ts4.0/resourceTypes.d.ts +4 -8
- package/ts4.1/RestEndpointTypes.d.ts +21 -13
- package/ts4.1/resourceTypes.d.ts +4 -8
package/lib/resourceTypes.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Collection, schema } from '@data-client/endpoint';
|
|
2
2
|
import type { Schema } from '@data-client/endpoint';
|
|
3
3
|
import type { Denormalize } from '@data-client/endpoint';
|
|
4
|
-
import type { PathArgs, ResourcePath, ShortenPath } from './pathTypes.js';
|
|
4
|
+
import type { KeysToArgs, PathArgs, ResourcePath, ShortenPath } from './pathTypes.js';
|
|
5
5
|
import { Extendable } from './resourceExtendable.js';
|
|
6
|
-
import RestEndpoint, { GetEndpoint, MutateEndpoint, RestInstanceBase, RestTypeNoBody } from './RestEndpoint.js';
|
|
6
|
+
import RestEndpoint, { GetEndpoint, MutateEndpoint, ParamToArgs, RestInstanceBase, RestTypeNoBody } from './RestEndpoint.js';
|
|
7
7
|
/** The typed (generic) options for a Resource */
|
|
8
8
|
export interface ResourceGenerics {
|
|
9
9
|
/** @see https://dataclient.io/rest/api/createResource#path */
|
|
@@ -68,18 +68,14 @@ export interface Resource<O extends ResourceGenerics = {
|
|
|
68
68
|
path: ShortenPath<O['path']>;
|
|
69
69
|
schema: schema.Collection<[
|
|
70
70
|
O['schema']
|
|
71
|
-
], [
|
|
72
|
-
'searchParams' extends keyof O ? O['searchParams'] extends undefined ? PathArgs<ShortenPath<O['path']>> : O['searchParams'] & PathArgs<ShortenPath<O['path']>> : PathArgs<ShortenPath<O['path']>>
|
|
73
|
-
]>;
|
|
71
|
+
], ParamToArgs<O['searchParams'] extends undefined ? KeysToArgs<ShortenPath<O['path']>> : O['searchParams'] & PathArgs<ShortenPath<O['path']>>>>;
|
|
74
72
|
body: 'body' extends keyof O ? O['body'] : Partial<Denormalize<O['schema']>>;
|
|
75
73
|
searchParams: O['searchParams'];
|
|
76
74
|
} & Pick<O, 'paginationField'>> : GetEndpoint<{
|
|
77
75
|
path: ShortenPath<O['path']>;
|
|
78
76
|
schema: schema.Collection<[
|
|
79
77
|
O['schema']
|
|
80
|
-
], [
|
|
81
|
-
'searchParams' extends keyof O ? O['searchParams'] extends undefined ? PathArgs<ShortenPath<O['path']>> : O['searchParams'] & PathArgs<ShortenPath<O['path']>> : PathArgs<ShortenPath<O['path']>>
|
|
82
|
-
]>;
|
|
78
|
+
], ParamToArgs<(Record<string, number | string | boolean> | undefined) & PathArgs<ShortenPath<O['path']>>>>;
|
|
83
79
|
body: 'body' extends keyof O ? O['body'] : Partial<Denormalize<O['schema']>>;
|
|
84
80
|
searchParams: Record<string, number | string | boolean> | undefined;
|
|
85
81
|
} & Pick<O, 'paginationField'>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceTypes.d.ts","sourceRoot":"","sources":["../src/resourceTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"resourceTypes.d.ts","sourceRoot":"","sources":["../src/resourceTypes.ts"],"names":[],"mappings":"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"}
|
package/lib/resourceTypes.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3Jlc291cmNlVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uLCBzY2hlbWEgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuaW1wb3J0IHR5cGUgeyBTY2hlbWEgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuaW1wb3J0IHR5cGUgeyBEZW5vcm1hbGl6ZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgS2V5c1RvQXJncyxcbiAgUGF0aEFyZ3MsXG4gIFJlc291cmNlUGF0aCxcbiAgU2hvcnRlblBhdGgsXG59IGZyb20gJy4vcGF0aFR5cGVzLmpzJztcbmltcG9ydCB7IEV4dGVuZGFibGUgfSBmcm9tICcuL3Jlc291cmNlRXh0ZW5kYWJsZS5qcyc7XG5pbXBvcnQgUmVzdEVuZHBvaW50LCB7XG4gIEdldEVuZHBvaW50LFxuICBNdXRhdGVFbmRwb2ludCxcbiAgUGFyYW1Ub0FyZ3MsXG4gIFJlc3RJbnN0YW5jZUJhc2UsXG4gIFJlc3RUeXBlTm9Cb2R5LFxufSBmcm9tICcuL1Jlc3RFbmRwb2ludC5qcyc7XG5cbi8qKiBUaGUgdHlwZWQgKGdlbmVyaWMpIG9wdGlvbnMgZm9yIGEgUmVzb3VyY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VHZW5lcmljcyB7XG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZSNwYXRoICovXG4gIHJlYWRvbmx5IHBhdGg6IFJlc291cmNlUGF0aDtcbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI3NjaGVtYSAqL1xuICByZWFkb25seSBzY2hlbWE6IFNjaGVtYTtcbiAgLyoqIE9ubHkgdXNlZCBmb3IgdHlwZXMgKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2JvZHkgKi9cbiAgcmVhZG9ubHkgYm9keT86IGFueTtcbiAgLyoqIE9ubHkgdXNlZCBmb3IgdHlwZXMgKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI3NlYXJjaFBhcmFtcyAqL1xuICByZWFkb25seSBzZWFyY2hQYXJhbXM/OiBhbnk7XG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZSNwYWdpbmF0aW9uZmllbGQgKi9cbiAgcmVhZG9ubHkgcGFnaW5hdGlvbkZpZWxkPzogc3RyaW5nO1xufVxuLyoqIFRoZSB1bnR5cGVkIG9wdGlvbnMgZm9yIGNyZWF0ZVJlc291cmNlKCkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VPcHRpb25zIHtcbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2VuZHBvaW50ICovXG4gIEVuZHBvaW50PzogdHlwZW9mIFJlc3RFbmRwb2ludDtcbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2NvbGxlY3Rpb24gKi9cbiAgQ29sbGVjdGlvbj86IHR5cGVvZiBDb2xsZWN0aW9uO1xuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2Ujb3B0aW1pc3RpYyAqL1xuICBvcHRpbWlzdGljPzogYm9vbGVhbjtcbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI3VybHByZWZpeCAqL1xuICB1cmxQcmVmaXg/OiBzdHJpbmc7XG4gIHJlcXVlc3RJbml0PzogUmVxdWVzdEluaXQ7XG4gIGdldEhlYWRlcnM/KGhlYWRlcnM6IEhlYWRlcnNJbml0KTogUHJvbWlzZTxIZWFkZXJzSW5pdD4gfCBIZWFkZXJzSW5pdDtcbiAgZ2V0UmVxdWVzdEluaXQ/KGJvZHk6IGFueSk6IFByb21pc2U8UmVxdWVzdEluaXQ+IHwgUmVxdWVzdEluaXQ7XG4gIGZldGNoUmVzcG9uc2U/KGlucHV0OiBSZXF1ZXN0SW5mbywgaW5pdDogUmVxdWVzdEluaXQpOiBQcm9taXNlPGFueT47XG4gIHBhcnNlUmVzcG9uc2U/KHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8YW55PjtcbiAgLyoqIERlZmF1bHQgZGF0YSBleHBpcnkgbGVuZ3RoLCB3aWxsIGZhbGwgYmFjayB0byBOZXR3b3JrTWFuYWdlciBkZWZhdWx0IGlmIG5vdCBkZWZpbmVkICovXG4gIHJlYWRvbmx5IGRhdGFFeHBpcnlMZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBEZWZhdWx0IGVycm9yIGV4cGlyeSBsZW5ndGgsIHdpbGwgZmFsbCBiYWNrIHRvIE5ldHdvcmtNYW5hZ2VyIGRlZmF1bHQgaWYgbm90IGRlZmluZWQgKi9cbiAgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBQb2xsIHdpdGggYXQgbGVhc3QgdGhpcyBmcmVxdWVuY3kgaW4gbWlsaXNlY29uZHMgKi9cbiAgcmVhZG9ubHkgcG9sbEZyZXF1ZW5jeT86IG51bWJlcjtcbiAgLyoqIE1hcmtzIGNhY2hlZCByZXNvdXJjZXMgYXMgaW52YWxpZCBpZiB0aGV5IGFyZSBzdGFsZSAqL1xuICByZWFkb25seSBpbnZhbGlkSWZTdGFsZT86IGJvb2xlYW47XG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGhyb3cgb3IgZmFsbGJhY2sgdG8gKi9cbiAgZXJyb3JQb2xpY3k/KGVycm9yOiBhbnkpOiAnaGFyZCcgfCAnc29mdCcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBSZXNvdXJjZXMgYXJlIGEgY29sbGVjdGlvbiBvZiBtZXRob2RzIGZvciBhIGdpdmVuIGRhdGEgbW9kZWwuXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlPFxuICBPIGV4dGVuZHMgUmVzb3VyY2VHZW5lcmljcyA9IHsgcGF0aDogUmVzb3VyY2VQYXRoOyBzY2hlbWE6IGFueSB9LFxuPiBleHRlbmRzIEV4dGVuZGFibGU8Tz4ge1xuICAvKiogR2V0IGEgc2luZ3VsYXIgaXRlbVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZSNnZXRcbiAgICovXG4gIGdldDogR2V0RW5kcG9pbnQ8eyBwYXRoOiBPWydwYXRoJ107IHNjaGVtYTogT1snc2NoZW1hJ10gfT47XG4gIC8qKiBHZXQgYSBsaXN0IG9mIGl0ZW1cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2UjZ2V0bGlzdFxuICAgKi9cbiAgZ2V0TGlzdDogJ3NlYXJjaFBhcmFtcycgZXh0ZW5kcyBrZXlvZiBPID9cbiAgICBHZXRFbmRwb2ludDxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogU2hvcnRlblBhdGg8T1sncGF0aCddPjtcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEuQ29sbGVjdGlvbjxcbiAgICAgICAgICBbT1snc2NoZW1hJ11dLFxuICAgICAgICAgIFBhcmFtVG9BcmdzPFxuICAgICAgICAgICAgT1snc2VhcmNoUGFyYW1zJ10gZXh0ZW5kcyB1bmRlZmluZWQgP1xuICAgICAgICAgICAgICBLZXlzVG9BcmdzPFNob3J0ZW5QYXRoPE9bJ3BhdGgnXT4+XG4gICAgICAgICAgICA6IE9bJ3NlYXJjaFBhcmFtcyddICYgUGF0aEFyZ3M8U2hvcnRlblBhdGg8T1sncGF0aCddPj5cbiAgICAgICAgICA+XG4gICAgICAgID47XG4gICAgICAgIGJvZHk6ICdib2R5JyBleHRlbmRzIGtleW9mIE8gPyBPWydib2R5J11cbiAgICAgICAgOiBQYXJ0aWFsPERlbm9ybWFsaXplPE9bJ3NjaGVtYSddPj47XG4gICAgICAgIHNlYXJjaFBhcmFtczogT1snc2VhcmNoUGFyYW1zJ107XG4gICAgICB9ICYgUGljazxPLCAncGFnaW5hdGlvbkZpZWxkJz5cbiAgICA+XG4gIDogR2V0RW5kcG9pbnQ8XG4gICAgICB7XG4gICAgICAgIHBhdGg6IFNob3J0ZW5QYXRoPE9bJ3BhdGgnXT47XG4gICAgICAgIHNjaGVtYTogc2NoZW1hLkNvbGxlY3Rpb248XG4gICAgICAgICAgW09bJ3NjaGVtYSddXSxcbiAgICAgICAgICBQYXJhbVRvQXJnczxcbiAgICAgICAgICAgIChSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZCkgJlxuICAgICAgICAgICAgICBQYXRoQXJnczxTaG9ydGVuUGF0aDxPWydwYXRoJ10+PlxuICAgICAgICAgID5cbiAgICAgICAgPjtcbiAgICAgICAgYm9keTogJ2JvZHknIGV4dGVuZHMga2V5b2YgTyA/IE9bJ2JvZHknXVxuICAgICAgICA6IFBhcnRpYWw8RGVub3JtYWxpemU8T1snc2NoZW1hJ10+PjtcbiAgICAgICAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZDtcbiAgICAgIH0gJiBQaWNrPE8sICdwYWdpbmF0aW9uRmllbGQnPlxuICAgID47XG4gIC8qKiBDcmVhdGUgYSBuZXcgaXRlbSAoUE9TVClcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFJlc291cmNlLmdldExpc3QucHVzaCBpbnN0ZWFkXG4gICAqL1xuICBjcmVhdGU6ICdzZWFyY2hQYXJhbXMnIGV4dGVuZHMga2V5b2YgTyA/XG4gICAgTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgcGF0aDogU2hvcnRlblBhdGg8T1sncGF0aCddPjtcbiAgICAgIHNjaGVtYTogc2NoZW1hLkNvbGxlY3Rpb248W09bJ3NjaGVtYSddXT5bJ3B1c2gnXTtcbiAgICAgIGJvZHk6ICdib2R5JyBleHRlbmRzIGtleW9mIE8gPyBPWydib2R5J11cbiAgICAgIDogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+O1xuICAgICAgc2VhcmNoUGFyYW1zOiBPWydzZWFyY2hQYXJhbXMnXTtcbiAgICB9PlxuICA6IE11dGF0ZUVuZHBvaW50PHtcbiAgICAgIHBhdGg6IFNob3J0ZW5QYXRoPE9bJ3BhdGgnXT47XG4gICAgICBzY2hlbWE6IHNjaGVtYS5Db2xsZWN0aW9uPFtPWydzY2hlbWEnXV0+WydwdXNoJ107XG4gICAgICBib2R5OiAnYm9keScgZXh0ZW5kcyBrZXlvZiBPID8gT1snYm9keSddXG4gICAgICA6IFBhcnRpYWw8RGVub3JtYWxpemU8T1snc2NoZW1hJ10+PjtcbiAgICB9PjtcbiAgLyoqIFVwZGF0ZSBhbiBpdGVtIChQVVQpXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI3VwZGF0ZVxuICAgKi9cbiAgdXBkYXRlOiAnYm9keScgZXh0ZW5kcyBrZXlvZiBPID9cbiAgICBNdXRhdGVFbmRwb2ludDx7XG4gICAgICBwYXRoOiBPWydwYXRoJ107XG4gICAgICBib2R5OiBPWydib2R5J107XG4gICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgIH0+XG4gIDogTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgcGF0aDogT1sncGF0aCddO1xuICAgICAgYm9keTogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+IHwgRm9ybURhdGE7XG4gICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgIH0+O1xuICAvKiogVXBkYXRlIGFuIGl0ZW0gKFBBVENIKVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZSNwYXJ0aWFsdXBkYXRlXG4gICAqL1xuICBwYXJ0aWFsVXBkYXRlOiAnYm9keScgZXh0ZW5kcyBrZXlvZiBPID9cbiAgICBNdXRhdGVFbmRwb2ludDx7XG4gICAgICBwYXRoOiBPWydwYXRoJ107XG4gICAgICBib2R5OiBQYXJ0aWFsPE9bJ2JvZHknXT47XG4gICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgIH0+XG4gIDogTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgcGF0aDogT1sncGF0aCddO1xuICAgICAgYm9keTogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+IHwgRm9ybURhdGE7XG4gICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgIH0+O1xuICAvKiogRGVsZXRlIGFuIGl0ZW0gKERFTEVURSlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2UjZGVsZXRlXG4gICAqL1xuICBkZWxldGU6IFJlc3RUeXBlTm9Cb2R5PFxuICAgIFBhdGhBcmdzPE9bJ3BhdGgnXT4sXG4gICAgT1snc2NoZW1hJ10gZXh0ZW5kcyBzY2hlbWEuRW50aXR5SW50ZXJmYWNlICYgeyBwcm9jZXNzOiBhbnkgfSA/XG4gICAgICBzY2hlbWEuSW52YWxpZGF0ZTxPWydzY2hlbWEnXT5cbiAgICA6IE9bJ3NjaGVtYSddLFxuICAgIHVuZGVmaW5lZCxcbiAgICBQYXJ0aWFsPFBhdGhBcmdzPE9bJ3BhdGgnXT4+LFxuICAgIHtcbiAgICAgIHBhdGg6IE9bJ3BhdGgnXTtcbiAgICB9XG4gID47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJbnRlcmZhY2Uge1xuICBnZXQ6IFJlc3RJbnN0YW5jZUJhc2U7XG4gIGdldExpc3Q6IFJlc3RJbnN0YW5jZUJhc2U7XG4gIHVwZGF0ZTogUmVzdEluc3RhbmNlQmFzZTtcbiAgcGFydGlhbFVwZGF0ZTogUmVzdEluc3RhbmNlQmFzZTtcbiAgZGVsZXRlOiBSZXN0SW5zdGFuY2VCYXNlO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
package/lib/test-fixtures.js
CHANGED
|
@@ -108,4 +108,4 @@ export const paginatedSecondPage = {
|
|
|
108
108
|
results: moreNested
|
|
109
109
|
}
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXlsb2FkIiwiaWQiLCJ0aXRsZSIsImNvbnRlbnQiLCJ0YWdzIiwiY3JlYXRlUGF5bG9hZCIsImFydGljbGVzUGFnZXMiLCJwcmV2UGFnZSIsIm5leHRQYWdlIiwicmVzdWx0cyIsInVzZXJzIiwidXNlcm5hbWUiLCJlbWFpbCIsImlzQWRtaW4iLCJuZXN0ZWQiLCJhdXRob3IiLCJtb3JlTmVzdGVkIiwidmFsdWVzRml4dHVyZSIsImZpcnN0Iiwic2Vjb25kIiwibmFtZSIsInBhZ2luYXRlZEZpcnN0UGFnZSIsImRhdGEiLCJwYWdpbmF0ZWRTZWNvbmRQYWdlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QtZml4dHVyZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHBheWxvYWQgPSB7XG4gIGlkOiA1LFxuICB0aXRsZTogJ2hpIGhvJyxcbiAgY29udGVudDogJ3doYXRldmVyJyxcbiAgdGFnczogWydhJywgJ2Jlc3QnLCAncmVhY3QnXSxcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXlsb2FkID0ge1xuICBpZDogMSxcbiAgdGl0bGU6ICdoaSBobycsXG4gIGNvbnRlbnQ6ICd3aGF0ZXZlcicsXG4gIHRhZ3M6IFsnYScsICdiZXN0JywgJ3JlYWN0J10sXG59O1xuXG5leHBvcnQgY29uc3QgYXJ0aWNsZXNQYWdlcyA9IHtcbiAgcHJldlBhZ2U6ICcyM2FzZGwnLFxuICBuZXh0UGFnZTogJ3MzZjMnLFxuICByZXN1bHRzOiBbXG4gICAge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdGl0bGU6ICd0aGUgZmlyc3QgZHJhZnQnLFxuICAgICAgY29udGVudDogJ3RoZSBiZXN0IHRoaW5ncyBpbiBsaWZlIGNvbSBlZnJlZScsXG4gICAgICB0YWdzOiBbJ29uZScsICd0d28nXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0NCxcbiAgICAgIHRpdGxlOiAndGhlIHNlY29uZCBib29rJyxcbiAgICAgIGNvbnRlbnQ6ICd0aGUgYmVzdCB0aGluZ3MgaW4gbGlmZSBjb20gZWZyZWUnLFxuICAgICAgdGFnczogWydoYmgnLCAnd2V3J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAndGhlIHRoaXJkIG5vdmVsJyxcbiAgICAgIGNvbnRlbnQ6ICd0aGUgYmVzdCB0aGluZ3MgaW4gbGlmZSBjb20gZWZyZWUnLFxuICAgICAgdGFnczogWydmcmVlJywgJ2hvbmV5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNjQzLFxuICAgICAgdGl0bGU6ICdhIGxvbmcgdGltZSBhZ28nLFxuICAgICAgY29udGVudDogJ3RoZSBiZXN0IHRoaW5ncyBpbiBsaWZlIGNvbSBlZnJlZScsXG4gICAgfSxcbiAgXSxcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VycyA9IFtcbiAge1xuICAgIGlkOiAyMyxcbiAgICB1c2VybmFtZTogJ2JvYicsXG4gICAgZW1haWw6ICdib2JAYm9iLmNvbScsXG4gICAgaXNBZG1pbjogZmFsc2UsXG4gIH0sXG4gIHtcbiAgICBpZDogNzM0MixcbiAgICB1c2VybmFtZTogJ2xpbmRzZXknLFxuICAgIGVtYWlsOiAnbGluZHNleUBib2IuY29tJyxcbiAgICBpc0FkbWluOiB0cnVlLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZCA9IFtcbiAge1xuICAgIGlkOiA1LFxuICAgIHRpdGxlOiAnaGkgaG8nLFxuICAgIGNvbnRlbnQ6ICd3aGF0ZXZlcicsXG4gICAgdGFnczogWydhJywgJ2Jlc3QnLCAncmVhY3QnXSxcbiAgICBhdXRob3I6IHtcbiAgICAgIGlkOiAyMyxcbiAgICAgIHVzZXJuYW1lOiAnYm9iJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6IDMsXG4gICAgdGl0bGU6ICd0aGUgbmV4dCB0aW1lJyxcbiAgICBjb250ZW50OiAnd2hhdGV2ZXInLFxuICAgIGF1dGhvcjoge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdXNlcm5hbWU6ICdjaGFybGVzJyxcbiAgICAgIGVtYWlsOiAnYm9iQGJvYi5jb20nLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgbW9yZU5lc3RlZCA9IFtcbiAge1xuICAgIGlkOiA3LFxuICAgIHRpdGxlOiAnYXJ0aWNsZSA3JyxcbiAgICBjb250ZW50OiAnd2hhdGV2ZXInLFxuICAgIHRhZ3M6IFsnYmxhaCddLFxuICAgIGF1dGhvcjoge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdXNlcm5hbWU6ICdib2InLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogOCxcbiAgICB0aXRsZTogJ2FydGljbGUgOCcsXG4gICAgY29udGVudDogJ3doYXRldmVyJyxcbiAgICBhdXRob3I6IHtcbiAgICAgIGlkOiAyNyxcbiAgICAgIHVzZXJuYW1lOiAnemFjJyxcbiAgICAgIGVtYWlsOiAnemFjQGJvYi5jb20nLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgdmFsdWVzRml4dHVyZSA9IHtcbiAgZmlyc3Q6IHtcbiAgICBpZDogMSxcbiAgICB0aXRsZTogJ2ZpcnN0IHRoaW5nJyxcbiAgICBjb250ZW50OiAnYmxhaCcsXG4gICAgdGFnczogW10sXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIGlkOiAyLFxuICAgIG5hbWU6ICdzZWNvbmQgdGhpbmcnLFxuICAgIGNvbnRlbnQ6ICdibGFoJyxcbiAgICB0YWdzOiBbXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBwYWdpbmF0ZWRGaXJzdFBhZ2UgPSB7XG4gIG5leHRQYWdlOiAnMicsXG4gIGRhdGE6IHsgcmVzdWx0czogbmVzdGVkIH0sXG59O1xuXG5leHBvcnQgY29uc3QgcGFnaW5hdGVkU2Vjb25kUGFnZSA9IHtcbiAgZGF0YTogeyByZXN1bHRzOiBtb3JlTmVzdGVkIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLE9BQU8sR0FBRztFQUNyQkMsRUFBRSxFQUFFLENBQUM7RUFDTEMsS0FBSyxFQUFFLE9BQU87RUFDZEMsT0FBTyxFQUFFLFVBQVU7RUFDbkJD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
|
package/lib/utiltypes.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWx0eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXh0cmFjdHMgb25seSB0aGUga2V5cyB0aGF0IHdpbGwgYmUgcmVxdWlyZWRcbiAqXG4gKiBSZW1vdmVzIG9wdGlvbmFsLCBhcyB3ZWxsIGFzIHVuYm91bmRlZCAoYWthICdzdHJpbmcnKVxuICpcbiAqIEBleGFtcGxlXG4gYGBgXG5SZXF1aXJlZEtleXM8e1xuICBvcHQ/OiBzdHJpbmc7XG4gIGJvYjogc3RyaW5nO1xuICBhbGljZTogbnVtYmVyO1xuICBbazogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufT4gLy8gPSAnYm9iJyB8ICdhbGljZSdcbiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWRLZXlzPFQ+ID0gVmFsdWVzPE9ubHlSZXF1aXJlZDxUPj47XG5cbnR5cGUgT25seVJlcXVpcmVkPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIHN0cmluZyBleHRlbmRzIEsgPyBuZXZlciA6IEtdLT86IHt9IGV4dGVuZHMgUGljazxULCBLPiA/
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWx0eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXh0cmFjdHMgb25seSB0aGUga2V5cyB0aGF0IHdpbGwgYmUgcmVxdWlyZWRcbiAqXG4gKiBSZW1vdmVzIG9wdGlvbmFsLCBhcyB3ZWxsIGFzIHVuYm91bmRlZCAoYWthICdzdHJpbmcnKVxuICpcbiAqIEBleGFtcGxlXG4gYGBgXG5SZXF1aXJlZEtleXM8e1xuICBvcHQ/OiBzdHJpbmc7XG4gIGJvYjogc3RyaW5nO1xuICBhbGljZTogbnVtYmVyO1xuICBbazogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufT4gLy8gPSAnYm9iJyB8ICdhbGljZSdcbiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWRLZXlzPFQ+ID0gVmFsdWVzPE9ubHlSZXF1aXJlZDxUPj47XG5cbnR5cGUgT25seVJlcXVpcmVkPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIHN0cmluZyBleHRlbmRzIEsgPyBuZXZlciA6IEtdLT86IHt9IGV4dGVuZHMgUGljazxULCBLPiA/XG4gICAgbmV2ZXJcbiAgOiBLO1xufTtcblxuLy8gZXhjbHVkZSBudW1iZXIgb25seSByZXF1aXJlZCBmb3IgdHlwZXNjcmlwdCA0LjQgYW5kIGJlbG93XG4vLyBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvcGxheT90cz00LjQuNCNjb2RlL0M0VHdEZ3BnQkFnbEM4VURlVUJHQjdWQXVLQm5ZQVRnSllCMkE1Z054UURhQTFqdnNlUUxvNENzQVBvNldWQUw0VUFzQUNnUklpQUE4dzZBc0NpaElVQUVvUUFqZ0ZjaUJDQUJNQTBoQkM0QVBBQlVBZkFpZ0ExQUlZQWJkUkJNQjVFdlpBcU5XM1dmUG1oVVdGSmFWbDVjR2czRHk5TmJSMC1LeVFSS0JvOUtGSW9Xa04wQURNb1V5aGJYRHhDSGloSllBZ1NIV0swZ0g0b0VnZ0FOd2dDS0J3OVpnQmFPcHdrUG5LSlN1cmlnQVVpQUdOYU13QWFLRDF6WkpTb0JxYldnbVdVenNDQk1XRUZhRHRIWndURVV6cHN2Tk5tUUpGRHFBQmhLeWpQTlZqZkdDV0RpS2dBSVQrVml5SUZ5VDN1djBlejBReHljSmtlNWlBQVxudHlwZSBWYWx1ZXM8VD4gPSBUW0V4Y2x1ZGU8a2V5b2YgVCwgbnVtYmVyPl07XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-client/rest",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Endpoints for REST APIs",
|
|
5
5
|
"homepage": "https://dataclient.io/rest",
|
|
6
6
|
"repository": {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"license": "Apache-2.0",
|
|
127
127
|
"dependencies": {
|
|
128
128
|
"@babel/runtime": "^7.17.0",
|
|
129
|
-
"@data-client/endpoint": "^0.
|
|
129
|
+
"@data-client/endpoint": "^0.11.1",
|
|
130
130
|
"path-to-regexp": "^6.2.1"
|
|
131
131
|
},
|
|
132
132
|
"devDependencies": {
|
package/src/RestEndpointTypes.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { EndpointUpdateFunction } from './RestEndpointTypeHelp.js';
|
|
|
18
18
|
export interface RestInstanceBase<
|
|
19
19
|
F extends FetchFunction = FetchFunction,
|
|
20
20
|
S extends Schema | undefined = any,
|
|
21
|
-
M extends
|
|
21
|
+
M extends boolean | undefined = boolean | undefined,
|
|
22
22
|
O extends {
|
|
23
23
|
path: string;
|
|
24
24
|
body?: any;
|
|
@@ -113,7 +113,7 @@ export interface RestInstanceBase<
|
|
|
113
113
|
export interface RestInstance<
|
|
114
114
|
F extends FetchFunction = FetchFunction,
|
|
115
115
|
S extends Schema | undefined = any,
|
|
116
|
-
M extends
|
|
116
|
+
M extends boolean | undefined = boolean | undefined,
|
|
117
117
|
O extends {
|
|
118
118
|
path: string;
|
|
119
119
|
body?: any;
|
|
@@ -221,7 +221,9 @@ type OptionsToRestEndpoint<
|
|
|
221
221
|
'method' extends keyof O ? O['method'] : E['method']
|
|
222
222
|
>,
|
|
223
223
|
'schema' extends keyof O ? O['schema'] : E['schema'],
|
|
224
|
-
'
|
|
224
|
+
'sideEffect' extends keyof O ? Extract<O['sideEffect'], undefined | true>
|
|
225
|
+
: 'method' extends keyof O ? MethodToSide<O['method']>
|
|
226
|
+
: E['sideEffect'],
|
|
225
227
|
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>,
|
|
226
228
|
{
|
|
227
229
|
path: Exclude<O['path'], undefined>;
|
|
@@ -246,7 +248,9 @@ type OptionsToRestEndpoint<
|
|
|
246
248
|
'method' extends keyof O ? O['method'] : E['method']
|
|
247
249
|
>,
|
|
248
250
|
'schema' extends keyof O ? O['schema'] : E['schema'],
|
|
249
|
-
'
|
|
251
|
+
'sideEffect' extends keyof O ? Extract<O['sideEffect'], undefined | true>
|
|
252
|
+
: 'method' extends keyof O ? MethodToSide<O['method']>
|
|
253
|
+
: E['sideEffect'],
|
|
250
254
|
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>,
|
|
251
255
|
{
|
|
252
256
|
path: E['path'];
|
|
@@ -269,7 +273,9 @@ type OptionsToRestEndpoint<
|
|
|
269
273
|
'method' extends keyof O ? O['method'] : E['method']
|
|
270
274
|
>,
|
|
271
275
|
'schema' extends keyof O ? O['schema'] : E['schema'],
|
|
272
|
-
'
|
|
276
|
+
'sideEffect' extends keyof O ? Extract<O['sideEffect'], undefined | true>
|
|
277
|
+
: 'method' extends keyof O ? MethodToSide<O['method']>
|
|
278
|
+
: E['sideEffect'],
|
|
273
279
|
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>,
|
|
274
280
|
{
|
|
275
281
|
path: E['path'];
|
|
@@ -284,7 +290,9 @@ type OptionsToRestEndpoint<
|
|
|
284
290
|
: RestInstance<
|
|
285
291
|
F,
|
|
286
292
|
'schema' extends keyof O ? O['schema'] : E['schema'],
|
|
287
|
-
'
|
|
293
|
+
'sideEffect' extends keyof O ? Extract<O['sideEffect'], undefined | true>
|
|
294
|
+
: 'method' extends keyof O ? MethodToSide<O['method']>
|
|
295
|
+
: E['sideEffect'],
|
|
288
296
|
{
|
|
289
297
|
path: 'path' extends keyof O ? Exclude<O['path'], undefined>
|
|
290
298
|
: E['path'];
|
|
@@ -342,7 +350,7 @@ export interface RestGenerics extends PartialRestGenerics {
|
|
|
342
350
|
}
|
|
343
351
|
|
|
344
352
|
export type PaginationEndpoint<
|
|
345
|
-
E extends FetchFunction & RestGenerics & { sideEffect?:
|
|
353
|
+
E extends FetchFunction & RestGenerics & { sideEffect?: boolean | undefined },
|
|
346
354
|
A extends any[],
|
|
347
355
|
> = RestInstanceBase<
|
|
348
356
|
ParamFetchNoBody<A[0], ResolveType<E>>,
|
|
@@ -353,7 +361,7 @@ export type PaginationEndpoint<
|
|
|
353
361
|
}
|
|
354
362
|
>;
|
|
355
363
|
export type PaginationFieldEndpoint<
|
|
356
|
-
E extends FetchFunction & RestGenerics & { sideEffect?:
|
|
364
|
+
E extends FetchFunction & RestGenerics & { sideEffect?: boolean | undefined },
|
|
357
365
|
C extends string,
|
|
358
366
|
> = RestInstanceBase<
|
|
359
367
|
ParamFetchNoBody<
|
|
@@ -409,7 +417,7 @@ export interface RestEndpointOptions<
|
|
|
409
417
|
fetchResponse?(input: RequestInfo, init: RequestInit): Promise<any>;
|
|
410
418
|
parseResponse?(response: Response): Promise<any>;
|
|
411
419
|
|
|
412
|
-
sideEffect?:
|
|
420
|
+
sideEffect?: boolean | undefined;
|
|
413
421
|
name?: string;
|
|
414
422
|
signal?: AbortSignal;
|
|
415
423
|
fetch?: F;
|
|
@@ -483,7 +491,7 @@ export type RestType<
|
|
|
483
491
|
UrlParams = any,
|
|
484
492
|
Body = any,
|
|
485
493
|
S extends Schema | undefined = Schema | undefined,
|
|
486
|
-
M extends
|
|
494
|
+
M extends boolean | undefined = boolean | undefined,
|
|
487
495
|
R = any,
|
|
488
496
|
O extends {
|
|
489
497
|
path: string;
|
|
@@ -493,26 +501,7 @@ export type RestType<
|
|
|
493
501
|
} = { path: string; paginationField: string },
|
|
494
502
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
495
503
|
> = IfTypeScriptLooseNull<
|
|
496
|
-
RestInstance<
|
|
497
|
-
keyof UrlParams extends never ?
|
|
498
|
-
(this: EndpointInstanceInterface, body?: Body) => Promise<R>
|
|
499
|
-
: // even with loose null, this will only be true when all members are optional
|
|
500
|
-
{} extends UrlParams ?
|
|
501
|
-
| ((this: EndpointInstanceInterface, body?: Body) => Promise<R>)
|
|
502
|
-
| ((
|
|
503
|
-
this: EndpointInstanceInterface,
|
|
504
|
-
params: UrlParams,
|
|
505
|
-
body?: Body,
|
|
506
|
-
) => Promise<R>)
|
|
507
|
-
: (
|
|
508
|
-
this: EndpointInstanceInterface,
|
|
509
|
-
params: UrlParams,
|
|
510
|
-
body?: Body,
|
|
511
|
-
) => Promise<R>,
|
|
512
|
-
S,
|
|
513
|
-
M,
|
|
514
|
-
O
|
|
515
|
-
>,
|
|
504
|
+
RestInstance<RestFetch<UrlParams, Body, R>, S, M, O>,
|
|
516
505
|
Body extends {} ? RestTypeWithBody<UrlParams, S, M, Body, R, O>
|
|
517
506
|
: RestTypeNoBody<UrlParams, S, M, R, O>
|
|
518
507
|
>;
|
|
@@ -520,7 +509,7 @@ export type RestType<
|
|
|
520
509
|
export type RestTypeWithBody<
|
|
521
510
|
UrlParams = any,
|
|
522
511
|
S extends Schema | undefined = Schema | undefined,
|
|
523
|
-
M extends
|
|
512
|
+
M extends boolean | undefined = boolean | undefined,
|
|
524
513
|
Body = any,
|
|
525
514
|
R = any /*Denormalize<S>*/,
|
|
526
515
|
O extends {
|
|
@@ -533,7 +522,7 @@ export type RestTypeWithBody<
|
|
|
533
522
|
export type RestTypeNoBody<
|
|
534
523
|
UrlParams = any,
|
|
535
524
|
S extends Schema | undefined = Schema | undefined,
|
|
536
|
-
M extends
|
|
525
|
+
M extends boolean | undefined = boolean | undefined,
|
|
537
526
|
R = any /*Denormalize<S>*/,
|
|
538
527
|
O extends {
|
|
539
528
|
path: string;
|
|
@@ -579,6 +568,15 @@ export type ParamFetchNoBody<P, R = any> =
|
|
|
579
568
|
| ((this: EndpointInstanceInterface) => Promise<R>)
|
|
580
569
|
: (this: EndpointInstanceInterface, params: P) => Promise<R>;
|
|
581
570
|
|
|
571
|
+
// same algorithm, but for Args (aka readonly any[])
|
|
572
|
+
export type ParamToArgs<P> =
|
|
573
|
+
P extends undefined ? []
|
|
574
|
+
: {} extends P ?
|
|
575
|
+
keyof P extends never ?
|
|
576
|
+
[]
|
|
577
|
+
: [] | [P]
|
|
578
|
+
: [P];
|
|
579
|
+
|
|
582
580
|
type IfTypeScriptLooseNull<Y, N> = 1 | undefined extends 1 ? Y : N;
|
|
583
581
|
|
|
584
582
|
export type KeyofRestEndpoint = keyof RestInstance;
|
|
@@ -234,7 +234,7 @@ describe('RestEndpoint', () => {
|
|
|
234
234
|
() => epbody({ title: 'hi' }, { title: 'hi' });
|
|
235
235
|
});
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
it('should allow sideEffect overrides', () => {
|
|
238
238
|
const weirdGetUser = new RestEndpoint({
|
|
239
239
|
path: 'http\\://test.com/user/:id',
|
|
240
240
|
name: 'getter',
|
|
@@ -244,9 +244,10 @@ describe('RestEndpoint', () => {
|
|
|
244
244
|
});
|
|
245
245
|
|
|
246
246
|
expect(weirdGetUser.sideEffect).toBe(undefined);
|
|
247
|
-
|
|
248
|
-
//
|
|
249
|
-
|
|
247
|
+
const a: undefined = weirdGetUser.sideEffect;
|
|
248
|
+
// @ts-expect-error
|
|
249
|
+
const y: true = weirdGetUser.sideEffect;
|
|
250
|
+
});
|
|
250
251
|
|
|
251
252
|
it('should handle simple urls', () => {
|
|
252
253
|
expect(getUser.url({ id: '5' })).toBe('http://test.com/user/5');
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Entity, schema } from '@data-client/endpoint';
|
|
1
|
+
import { Entity, schema, SchemaArgs } from '@data-client/endpoint';
|
|
2
2
|
import {
|
|
3
3
|
CacheProvider,
|
|
4
4
|
useCache,
|
|
5
5
|
useController,
|
|
6
6
|
Controller,
|
|
7
7
|
useSuspense,
|
|
8
|
+
useQuery,
|
|
8
9
|
} from '@data-client/react';
|
|
9
10
|
import { makeRenderDataClient } from '@data-client/test';
|
|
10
11
|
import { act } from '@testing-library/react-hooks';
|
|
@@ -205,6 +206,9 @@ describe('createResource()', () => {
|
|
|
205
206
|
expect(user.username).toBe('newbob');
|
|
206
207
|
expect(user).toBeInstanceOf(User);
|
|
207
208
|
expect(user.isAdmin).toBe(false);
|
|
209
|
+
|
|
210
|
+
// check types
|
|
211
|
+
() => controller.getResponse(UserResource.current, controller.getState());
|
|
208
212
|
});
|
|
209
213
|
|
|
210
214
|
it('can override endpoint options', async () => {
|
|
@@ -837,7 +841,7 @@ describe('createResource()', () => {
|
|
|
837
841
|
}
|
|
838
842
|
const FeedUnion = new schema.Union(
|
|
839
843
|
{ post: FeedPost, link: FeedLink },
|
|
840
|
-
'type'
|
|
844
|
+
'type',
|
|
841
845
|
);
|
|
842
846
|
const FeedResource = createResource({
|
|
843
847
|
path: 'http\\://test.com/feed/:id',
|
|
@@ -1094,4 +1098,40 @@ describe('createResource()', () => {
|
|
|
1094
1098
|
// this is set in our override
|
|
1095
1099
|
expect(result.current[0].isAdmin).toBe(true);
|
|
1096
1100
|
});
|
|
1101
|
+
|
|
1102
|
+
it('searchParams are used in Queries based on getList.schema', () => {
|
|
1103
|
+
class Todo extends Entity {
|
|
1104
|
+
id = '';
|
|
1105
|
+
readonly userId: number = 0;
|
|
1106
|
+
readonly title: string = '';
|
|
1107
|
+
readonly completed: boolean = false;
|
|
1108
|
+
|
|
1109
|
+
static key = 'Todo';
|
|
1110
|
+
|
|
1111
|
+
pk() {
|
|
1112
|
+
return this.id;
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
const TodoResource = createResource({
|
|
1117
|
+
path: '/todos/:id',
|
|
1118
|
+
schema: Todo,
|
|
1119
|
+
optimistic: true,
|
|
1120
|
+
searchParams: {} as { userId?: string | number } | undefined,
|
|
1121
|
+
});
|
|
1122
|
+
|
|
1123
|
+
const queryRemainingTodos = new schema.Query(
|
|
1124
|
+
TodoResource.getList.schema,
|
|
1125
|
+
entries => entries && entries.filter(todo => !todo.completed).length,
|
|
1126
|
+
);
|
|
1127
|
+
|
|
1128
|
+
() => useQuery(queryRemainingTodos, { userId: 1 });
|
|
1129
|
+
() => useQuery(queryRemainingTodos);
|
|
1130
|
+
// @ts-expect-error
|
|
1131
|
+
() => useQuery(queryRemainingTodos, { user: 1 });
|
|
1132
|
+
// @ts-expect-error
|
|
1133
|
+
() => useQuery(queryRemainingTodos, 5);
|
|
1134
|
+
// @ts-expect-error
|
|
1135
|
+
() => useQuery(queryRemainingTodos, { userId: 1 }, 5);
|
|
1136
|
+
});
|
|
1097
1137
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
2
2
|
import { Entity, schema } from '@data-client/endpoint';
|
|
3
|
-
import { useSuspense } from '@data-client/react';
|
|
3
|
+
import { useController, useLive, useSuspense } from '@data-client/react';
|
|
4
4
|
import { User } from '__tests__/new';
|
|
5
5
|
|
|
6
6
|
import createResource from '../createResource';
|
|
@@ -429,6 +429,117 @@ it('should precisely type function arguments', () => {
|
|
|
429
429
|
};
|
|
430
430
|
});
|
|
431
431
|
|
|
432
|
+
it('should allow sideEffect overrides', () => {
|
|
433
|
+
const getEth = new RestEndpoint({
|
|
434
|
+
urlPrefix: 'https://rpc.ankr.com',
|
|
435
|
+
path: '/eth',
|
|
436
|
+
method: 'POST',
|
|
437
|
+
body: {} as { jsonrpc: string; id: number; method: string; params: any[] },
|
|
438
|
+
pollFrequency: 30 * 1000,
|
|
439
|
+
sideEffect: undefined,
|
|
440
|
+
});
|
|
441
|
+
const getEthExtend = new RestEndpoint({
|
|
442
|
+
urlPrefix: 'https://rpc.ankr.com',
|
|
443
|
+
path: '/eth',
|
|
444
|
+
method: 'POST',
|
|
445
|
+
body: {} as { jsonrpc: string; id: number; method: string; params: any[] },
|
|
446
|
+
pollFrequency: 30 * 1000,
|
|
447
|
+
}).extend({ sideEffect: undefined });
|
|
448
|
+
|
|
449
|
+
const a: undefined = getEth.sideEffect;
|
|
450
|
+
const b: undefined = getEthExtend.sideEffect;
|
|
451
|
+
() => {
|
|
452
|
+
const ctrl = useController();
|
|
453
|
+
ctrl.fetch(getEth, {
|
|
454
|
+
jsonrpc: '2.0',
|
|
455
|
+
id: 1,
|
|
456
|
+
method: 'eth_getBlockByNumber',
|
|
457
|
+
params: ['latest', true],
|
|
458
|
+
});
|
|
459
|
+
useSuspense(getEth, {
|
|
460
|
+
jsonrpc: '2.0',
|
|
461
|
+
id: 1,
|
|
462
|
+
method: 'eth_getBlockByNumber',
|
|
463
|
+
params: ['latest', true],
|
|
464
|
+
});
|
|
465
|
+
// @ts-expect-error
|
|
466
|
+
ctrl.fetch(getEth, {
|
|
467
|
+
id: 1,
|
|
468
|
+
method: 'eth_getBlockByNumber',
|
|
469
|
+
params: ['latest', true],
|
|
470
|
+
});
|
|
471
|
+
// @ts-expect-error
|
|
472
|
+
useSuspense(getEth, {
|
|
473
|
+
id: 1,
|
|
474
|
+
method: 'eth_getBlockByNumber',
|
|
475
|
+
params: ['latest', true],
|
|
476
|
+
});
|
|
477
|
+
// @ts-expect-error
|
|
478
|
+
useSuspense(getEth, {
|
|
479
|
+
jsonrpc: '2.0',
|
|
480
|
+
id: 1,
|
|
481
|
+
method: 6,
|
|
482
|
+
params: ['latest', true],
|
|
483
|
+
});
|
|
484
|
+
useSuspense(
|
|
485
|
+
getEth,
|
|
486
|
+
// @ts-expect-error
|
|
487
|
+
{},
|
|
488
|
+
{
|
|
489
|
+
jsonrpc: '2.0',
|
|
490
|
+
id: 1,
|
|
491
|
+
method: 'eth_getBlockByNumber',
|
|
492
|
+
params: ['latest', true],
|
|
493
|
+
},
|
|
494
|
+
);
|
|
495
|
+
};
|
|
496
|
+
() => {
|
|
497
|
+
const ctrl = useController();
|
|
498
|
+
ctrl.fetch(getEthExtend, {
|
|
499
|
+
jsonrpc: '2.0',
|
|
500
|
+
id: 1,
|
|
501
|
+
method: 'eth_getBlockByNumber',
|
|
502
|
+
params: ['latest', true],
|
|
503
|
+
});
|
|
504
|
+
useSuspense(getEthExtend, {
|
|
505
|
+
jsonrpc: '2.0',
|
|
506
|
+
id: 1,
|
|
507
|
+
method: 'eth_getBlockByNumber',
|
|
508
|
+
params: ['latest', true],
|
|
509
|
+
});
|
|
510
|
+
// @ts-expect-error
|
|
511
|
+
ctrl.fetch(getEthExtend, {
|
|
512
|
+
id: 1,
|
|
513
|
+
method: 'eth_getBlockByNumber',
|
|
514
|
+
params: ['latest', true],
|
|
515
|
+
});
|
|
516
|
+
// @ts-expect-error
|
|
517
|
+
useSuspense(getEthExtend, {
|
|
518
|
+
id: 1,
|
|
519
|
+
method: 'eth_getBlockByNumber',
|
|
520
|
+
params: ['latest', true],
|
|
521
|
+
});
|
|
522
|
+
// @ts-expect-error
|
|
523
|
+
useSuspense(getEthExtend, {
|
|
524
|
+
jsonrpc: '2.0',
|
|
525
|
+
id: 1,
|
|
526
|
+
method: 6,
|
|
527
|
+
params: ['latest', true],
|
|
528
|
+
});
|
|
529
|
+
useSuspense(
|
|
530
|
+
getEthExtend,
|
|
531
|
+
// @ts-expect-error
|
|
532
|
+
{},
|
|
533
|
+
{
|
|
534
|
+
jsonrpc: '2.0',
|
|
535
|
+
id: 1,
|
|
536
|
+
method: 'eth_getBlockByNumber',
|
|
537
|
+
params: ['latest', true],
|
|
538
|
+
},
|
|
539
|
+
);
|
|
540
|
+
};
|
|
541
|
+
});
|
|
542
|
+
|
|
432
543
|
it('should handle more open ended type definitions', () => {
|
|
433
544
|
() => {
|
|
434
545
|
const unknownParams = new RestEndpoint({
|
package/src/createResource.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
SnapshotInterface,
|
|
4
|
-
schema,
|
|
5
|
-
} from '@data-client/endpoint';
|
|
1
|
+
import { schema } from '@data-client/endpoint';
|
|
2
|
+
import type { SnapshotInterface, Queryable } from '@data-client/endpoint';
|
|
6
3
|
|
|
7
|
-
import { ResourcePath } from './pathTypes.js';
|
|
8
4
|
import {
|
|
9
5
|
ResourceGenerics,
|
|
10
6
|
ResourceOptions,
|
|
@@ -52,8 +48,9 @@ export default function createResource<O extends ResourceGenerics>({
|
|
|
52
48
|
}) as any;
|
|
53
49
|
if (optimistic) {
|
|
54
50
|
(extraMutateOptions as any).getOptimisticResponse = optimisticUpdate;
|
|
51
|
+
// TODO: Check that schema is a queryable, otherwise this doesn't make sense
|
|
55
52
|
(extraPartialOptions as any).getOptimisticResponse = optimisticPartial(
|
|
56
|
-
|
|
53
|
+
schema as any,
|
|
57
54
|
);
|
|
58
55
|
}
|
|
59
56
|
const getList = new Endpoint({
|
|
@@ -141,12 +138,10 @@ function optimisticUpdate(snap: SnapshotInterface, params: any, body: any) {
|
|
|
141
138
|
...ensurePojo(body),
|
|
142
139
|
};
|
|
143
140
|
}
|
|
144
|
-
function optimisticPartial(
|
|
145
|
-
getEndpoint: GetEndpoint<{ path: ResourcePath; schema: any }>,
|
|
146
|
-
) {
|
|
141
|
+
function optimisticPartial(schema: Queryable) {
|
|
147
142
|
return function (snap: SnapshotInterface, params: any, body: any) {
|
|
148
|
-
const
|
|
149
|
-
if (!data) throw
|
|
143
|
+
const data = snap.get(schema, params);
|
|
144
|
+
if (!data) throw snap.abort;
|
|
150
145
|
return {
|
|
151
146
|
...params,
|
|
152
147
|
...data,
|
package/src/resourceTypes.ts
CHANGED
|
@@ -2,11 +2,17 @@ import type { Collection, schema } from '@data-client/endpoint';
|
|
|
2
2
|
import type { Schema } from '@data-client/endpoint';
|
|
3
3
|
import type { Denormalize } from '@data-client/endpoint';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
KeysToArgs,
|
|
7
|
+
PathArgs,
|
|
8
|
+
ResourcePath,
|
|
9
|
+
ShortenPath,
|
|
10
|
+
} from './pathTypes.js';
|
|
6
11
|
import { Extendable } from './resourceExtendable.js';
|
|
7
12
|
import RestEndpoint, {
|
|
8
13
|
GetEndpoint,
|
|
9
14
|
MutateEndpoint,
|
|
15
|
+
ParamToArgs,
|
|
10
16
|
RestInstanceBase,
|
|
11
17
|
RestTypeNoBody,
|
|
12
18
|
} from './RestEndpoint.js';
|
|
@@ -74,13 +80,11 @@ export interface Resource<
|
|
|
74
80
|
path: ShortenPath<O['path']>;
|
|
75
81
|
schema: schema.Collection<
|
|
76
82
|
[O['schema']],
|
|
77
|
-
|
|
78
|
-
'searchParams' extends
|
|
79
|
-
O['
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
: PathArgs<ShortenPath<O['path']>>,
|
|
83
|
-
]
|
|
83
|
+
ParamToArgs<
|
|
84
|
+
O['searchParams'] extends undefined ?
|
|
85
|
+
KeysToArgs<ShortenPath<O['path']>>
|
|
86
|
+
: O['searchParams'] & PathArgs<ShortenPath<O['path']>>
|
|
87
|
+
>
|
|
84
88
|
>;
|
|
85
89
|
body: 'body' extends keyof O ? O['body']
|
|
86
90
|
: Partial<Denormalize<O['schema']>>;
|
|
@@ -92,13 +96,10 @@ export interface Resource<
|
|
|
92
96
|
path: ShortenPath<O['path']>;
|
|
93
97
|
schema: schema.Collection<
|
|
94
98
|
[O['schema']],
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
O['
|
|
98
|
-
|
|
99
|
-
: O['searchParams'] & PathArgs<ShortenPath<O['path']>>
|
|
100
|
-
: PathArgs<ShortenPath<O['path']>>,
|
|
101
|
-
]
|
|
99
|
+
ParamToArgs<
|
|
100
|
+
(Record<string, number | string | boolean> | undefined) &
|
|
101
|
+
PathArgs<ShortenPath<O['path']>>
|
|
102
|
+
>
|
|
102
103
|
>;
|
|
103
104
|
body: 'body' extends keyof O ? O['body']
|
|
104
105
|
: Partial<Denormalize<O['schema']>>;
|