@data-client/rest 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +10 -14
- package/dist/index.umd.min.js +1 -1
- package/legacy/OptionsToFunction.js +1 -1
- package/legacy/RestEndpoint.js +5 -5
- package/legacy/createResource.js +8 -10
- package/legacy/index.js +2 -1
- package/legacy/next/index.js +4 -4
- package/legacy/resourceTypes.js +2 -0
- package/lib/OptionsToFunction.d.ts.map +1 -1
- package/lib/OptionsToFunction.js +1 -1
- package/lib/RestEndpoint.d.ts +29 -35
- package/lib/RestEndpoint.js +5 -5
- package/lib/createResource.d.ts +51 -31
- package/lib/createResource.d.ts.map +1 -1
- package/lib/createResource.js +7 -11
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/next/index.d.ts +5 -5
- package/lib/next/index.d.ts.map +1 -1
- package/lib/next/index.js +4 -4
- package/lib/resourceTypes.d.ts.map +1 -0
- package/lib/resourceTypes.js +2 -0
- package/package.json +3 -3
- package/src/OptionsToFunction.ts +0 -1
- package/src/RestEndpoint.d.ts +29 -35
- package/src/RestEndpoint.js +4 -4
- package/src/__tests__/RestEndpoint.ts +38 -9
- package/src/__tests__/createResource.test.ts +3 -4
- package/src/__tests__/hookifyResource.ts +7 -3
- package/src/__tests__/types.test.ts +332 -212
- package/src/createResource.ts +81 -60
- package/src/index.ts +2 -2
- package/src/next/index.ts +5 -5
- package/ts4.0/RestEndpoint.d.ts +18 -32
- package/ts4.0/createResource.d.ts +59 -31
- package/ts4.0/index.d.ts +3 -1
- package/ts4.0/next/index.d.ts +5 -5
- package/legacy/next/OptionsToFunction.js +0 -2
- package/legacy/next/RestEndpoint.js +0 -225
- package/legacy/next/createResource.js +0 -86
- package/legacy/next/resourceTypes.js +0 -2
- package/lib/next/OptionsToFunction.d.ts +0 -7
- package/lib/next/OptionsToFunction.d.ts.map +0 -1
- package/lib/next/OptionsToFunction.js +0 -2
- package/lib/next/RestEndpoint.d.ts +0 -542
- package/lib/next/RestEndpoint.js +0 -229
- package/lib/next/createResource.d.ts +0 -86
- package/lib/next/createResource.d.ts.map +0 -1
- package/lib/next/createResource.js +0 -100
- package/lib/next/resourceTypes.d.ts.map +0 -1
- package/lib/next/resourceTypes.js +0 -2
- package/src/next/OptionsToFunction.ts +0 -41
- package/src/next/RestEndpoint.d.ts +0 -542
- package/src/next/RestEndpoint.js +0 -262
- package/src/next/__tests__/RestEndpoint.ts +0 -1333
- package/src/next/__tests__/__snapshots__/RestEndpoint.ts.snap +0 -18
- package/src/next/__tests__/types.test.ts +0 -429
- package/src/next/createResource.ts +0 -194
- package/ts4.0/next/OptionsToFunction.d.ts +0 -16
- package/ts4.0/next/RestEndpoint.d.ts +0 -226
- package/ts4.0/next/createResource.d.ts +0 -94
- /package/lib/{next/resourceTypes.d.ts → resourceTypes.d.ts} +0 -0
- /package/src/{next/resourceTypes.ts → resourceTypes.ts} +0 -0
- /package/ts4.0/{next/resourceTypes.d.ts → resourceTypes.d.ts} +0 -0
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
|
|
2
|
-
import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase";
|
|
3
|
-
import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
|
|
4
|
-
import { Endpoint } from '@data-client/endpoint';
|
|
5
|
-
import { pathToRegexp } from 'path-to-regexp';
|
|
6
|
-
import extractCollection from '../extractCollection.js';
|
|
7
|
-
import mapCollection from '../mapCollection.js';
|
|
8
|
-
import NetworkError from '../NetworkError.js';
|
|
9
|
-
import { paginatedMerge, paginatedFilter } from '../paginatedCollections.js';
|
|
10
|
-
import paginationUpdate from '../paginationUpdate.js';
|
|
11
|
-
import paramsToString from '../paramsToString.js';
|
|
12
|
-
import { getUrlBase, getUrlTokens, isPojo } from '../RestHelpers.js';
|
|
13
|
-
|
|
14
|
-
/** Simplifies endpoint definitions that follow REST patterns
|
|
15
|
-
*
|
|
16
|
-
* @see https://resthooks.io/rest/api/RestEndpoint
|
|
17
|
-
*/
|
|
18
|
-
var _hasBody = /*#__PURE__*/_classPrivateFieldLooseKey("hasBody");
|
|
19
|
-
export default class RestEndpoint extends Endpoint {
|
|
20
|
-
constructor(options) {
|
|
21
|
-
var _options$fetch;
|
|
22
|
-
super((_options$fetch = options.fetch) != null ? _options$fetch : async function (...args) {
|
|
23
|
-
const urlParams = _classPrivateFieldLooseBase(this, _hasBody)[_hasBody] && args.length < 2 ? {} : args[0] || {};
|
|
24
|
-
const body = _classPrivateFieldLooseBase(this, _hasBody)[_hasBody] ? args[args.length - 1] : undefined;
|
|
25
|
-
return this.fetchResponse(this.url(urlParams), await this.getRequestInit(body)).then(response => this.parseResponse(response)).then(res => this.process(res, ...args));
|
|
26
|
-
}, options);
|
|
27
|
-
// we want to use the prototype chain here
|
|
28
|
-
Object.defineProperty(this, _hasBody, {
|
|
29
|
-
writable: true,
|
|
30
|
-
value: void 0
|
|
31
|
-
});
|
|
32
|
-
if (!('sideEffect' in this) || 'method' in options && !('sideEffect' in options)) {
|
|
33
|
-
this.sideEffect = options.method === 'GET' || options.method === undefined ? undefined : true;
|
|
34
|
-
}
|
|
35
|
-
if (this.method === undefined) {
|
|
36
|
-
this.method = this.sideEffect ? 'POST' : 'GET';
|
|
37
|
-
}
|
|
38
|
-
if (this.urlPrefix === undefined) {
|
|
39
|
-
this.urlPrefix = '';
|
|
40
|
-
}
|
|
41
|
-
_classPrivateFieldLooseBase(this, _hasBody)[_hasBody] = (!('body' in this) || this.body !== undefined) && !['GET', 'DELETE'].includes(this.method);
|
|
42
|
-
Object.defineProperty(this, 'name', {
|
|
43
|
-
get() {
|
|
44
|
-
// using 'in' to ensure inheritance lookup
|
|
45
|
-
if ('__name' in this) return this.__name;
|
|
46
|
-
return this.urlPrefix + this.path;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
key(...args) {
|
|
51
|
-
return `${this.method} ${this.url(_classPrivateFieldLooseBase(this, _hasBody)[_hasBody] && args.length < 2 ? {} : args[0] || {})}`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** Get the url */
|
|
55
|
-
url(urlParams = {}) {
|
|
56
|
-
const urlBase = getUrlBase(this.path)(urlParams);
|
|
57
|
-
const tokens = getUrlTokens(this.path);
|
|
58
|
-
const searchParams = {};
|
|
59
|
-
Object.keys(urlParams).forEach(k => {
|
|
60
|
-
if (!tokens.has(k)) {
|
|
61
|
-
searchParams[k] = urlParams[k];
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
if (Object.keys(searchParams).length) {
|
|
65
|
-
return `${this.urlPrefix}${urlBase}?${paramsToString(searchParams)}`;
|
|
66
|
-
}
|
|
67
|
-
return `${this.urlPrefix}${urlBase}`;
|
|
68
|
-
}
|
|
69
|
-
getHeaders(headers) {
|
|
70
|
-
return headers;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Init options for fetch - run at fetch */
|
|
74
|
-
async getRequestInit(body) {
|
|
75
|
-
const bodyIsPojo = isPojo(body);
|
|
76
|
-
if (bodyIsPojo) {
|
|
77
|
-
body = JSON.stringify(body);
|
|
78
|
-
}
|
|
79
|
-
const init = Object.assign({}, this.requestInit, {
|
|
80
|
-
method: this.method,
|
|
81
|
-
signal: this.signal,
|
|
82
|
-
body
|
|
83
|
-
});
|
|
84
|
-
if (!body || bodyIsPojo) {
|
|
85
|
-
init.headers = Object.assign({
|
|
86
|
-
// default to application/json but allow user explicit overrides
|
|
87
|
-
'Content-Type': 'application/json'
|
|
88
|
-
}, init.headers);
|
|
89
|
-
}
|
|
90
|
-
init.headers = await this.getHeaders(init.headers);
|
|
91
|
-
return init;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/** Perform network request and resolve with HTTP Response */
|
|
95
|
-
fetchResponse(input, init) {
|
|
96
|
-
return fetch(input, init).then(response => {
|
|
97
|
-
if (!response.ok) {
|
|
98
|
-
throw new NetworkError(response);
|
|
99
|
-
}
|
|
100
|
-
return response;
|
|
101
|
-
}).catch(error => {
|
|
102
|
-
// ensure CORS, network down, and parse errors are still caught by NetworkErrorBoundary
|
|
103
|
-
if (error instanceof TypeError) {
|
|
104
|
-
error.status = 500;
|
|
105
|
-
}
|
|
106
|
-
throw error;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
parseResponse(response) {
|
|
110
|
-
var _response$headers$get;
|
|
111
|
-
// this should not have any content to read
|
|
112
|
-
if (response.status === 204) return Promise.resolve(null);
|
|
113
|
-
if (!((_response$headers$get = response.headers.get('content-type')) != null && _response$headers$get.includes('json'))) {
|
|
114
|
-
return response.text().then(text => {
|
|
115
|
-
// string or 'not set' schema, are valid
|
|
116
|
-
// when overriding process they might handle other cases, so we don't want to block on our logic
|
|
117
|
-
if (['string', 'undefined'].includes(typeof this.schema) || this.schema === null || this.process !== RestEndpoint.prototype.process) return text;
|
|
118
|
-
const error = new NetworkError(response);
|
|
119
|
-
error.status = 404;
|
|
120
|
-
error.message = `Unexpected text response for schema ${this.schema}`;
|
|
121
|
-
// custom dev-only messages for more detailed cause
|
|
122
|
-
/* istanbul ignore else */
|
|
123
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
124
|
-
var _response$headers$get2;
|
|
125
|
-
if (!((_response$headers$get2 = response.headers.get('content-type')) != null && _response$headers$get2.includes('html') || text.startsWith('<!doctype html>'))) {
|
|
126
|
-
if (tryParse(text) !== undefined) {
|
|
127
|
-
error.message = `"content-type" header does not include "json", but JSON response found.
|
|
128
|
-
See https://www.rfc-editor.org/rfc/rfc4627 for information on JSON responses
|
|
129
|
-
|
|
130
|
-
Using parsed JSON.
|
|
131
|
-
If text content was expected see https://resthooks.io/rest/api/RestEndpoint#parseResponse`;
|
|
132
|
-
}
|
|
133
|
-
} else {
|
|
134
|
-
error.message = `Unexpected html response for schema ${this.schema}
|
|
135
|
-
This likely means no API endpoint was configured for this request, resulting in an HTML fallback.
|
|
136
|
-
|
|
137
|
-
Response (first 300 characters): ${text.substring(0, 300)}`;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
throw error;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
return response.json().catch(error => {
|
|
144
|
-
error.status = 400;
|
|
145
|
-
throw error;
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
process(value) {
|
|
149
|
-
return value;
|
|
150
|
-
}
|
|
151
|
-
errorPolicy(error) {
|
|
152
|
-
return error.status >= 500 ? 'soft' : undefined;
|
|
153
|
-
}
|
|
154
|
-
get pathRegex() {
|
|
155
|
-
return pathToRegexp(this.path);
|
|
156
|
-
}
|
|
157
|
-
testKey(key) {
|
|
158
|
-
const prefix = this.method + ' ' + this.urlPrefix;
|
|
159
|
-
if (!key.startsWith(prefix)) return false;
|
|
160
|
-
let lastQuestion = key.lastIndexOf('?');
|
|
161
|
-
if (lastQuestion === -1) lastQuestion = undefined;
|
|
162
|
-
return this.pathRegex.test(key.substring(prefix.length, lastQuestion));
|
|
163
|
-
}
|
|
164
|
-
extend(options) {
|
|
165
|
-
// make a constructor/prototype based off this
|
|
166
|
-
// extend from it and init with options sent
|
|
167
|
-
class E extends this.constructor {}
|
|
168
|
-
Object.assign(E.prototype, this);
|
|
169
|
-
const instance = new E( // fetch get overridden by function prototype, so we must set it explicitly every time
|
|
170
|
-
Object.assign({
|
|
171
|
-
fetch: this.fetch
|
|
172
|
-
}, options));
|
|
173
|
-
return instance;
|
|
174
|
-
}
|
|
175
|
-
paginated(removeCursor) {
|
|
176
|
-
if (typeof removeCursor === 'string') {
|
|
177
|
-
const fieldName = removeCursor;
|
|
178
|
-
removeCursor = _ref => {
|
|
179
|
-
let params = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
|
|
180
|
-
delete params[fieldName];
|
|
181
|
-
return [params];
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
let found = false;
|
|
185
|
-
const createPaginatedSchema = collection => {
|
|
186
|
-
found = true;
|
|
187
|
-
return collection.addWith(paginatedMerge, paginatedFilter(removeCursor));
|
|
188
|
-
};
|
|
189
|
-
const newSchema = mapCollection(this.schema, createPaginatedSchema);
|
|
190
|
-
if (found) {
|
|
191
|
-
return this.extend({
|
|
192
|
-
schema: newSchema
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
return this.extend({
|
|
196
|
-
update: paginationUpdate(this, removeCursor)
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
get push() {
|
|
200
|
-
return this.extend({
|
|
201
|
-
method: 'POST',
|
|
202
|
-
schema: extractCollection(this.schema, s => s.push)
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
get unshift() {
|
|
206
|
-
return this.extend({
|
|
207
|
-
method: 'POST',
|
|
208
|
-
schema: extractCollection(this.schema, s => s.unshift)
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
get assign() {
|
|
212
|
-
return this.extend({
|
|
213
|
-
method: 'POST',
|
|
214
|
-
schema: extractCollection(this.schema, s => s.assign)
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
const tryParse = input => {
|
|
219
|
-
try {
|
|
220
|
-
return JSON.parse(input);
|
|
221
|
-
} catch (e) {
|
|
222
|
-
return undefined;
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbmRwb2ludCIsInBhdGhUb1JlZ2V4cCIsImV4dHJhY3RDb2xsZWN0aW9uIiwibWFwQ29sbGVjdGlvbiIsIk5ldHdvcmtFcnJvciIsInBhZ2luYXRlZE1lcmdlIiwicGFnaW5hdGVkRmlsdGVyIiwicGFnaW5hdGlvblVwZGF0ZSIsInBhcmFtc1RvU3RyaW5nIiwiZ2V0VXJsQmFzZSIsImdldFVybFRva2VucyIsImlzUG9qbyIsIl9oYXNCb2R5IiwiX2NsYXNzUHJpdmF0ZUZpZWxkTG9vc2VLZXkiLCJSZXN0RW5kcG9pbnQiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfb3B0aW9ucyRmZXRjaCIsImZldGNoIiwiYXJncyIsInVybFBhcmFtcyIsIl9jbGFzc1ByaXZhdGVGaWVsZExvb3NlQmFzZSIsImxlbmd0aCIsImJvZHkiLCJ1bmRlZmluZWQiLCJmZXRjaFJlc3BvbnNlIiwidXJsIiwiZ2V0UmVxdWVzdEluaXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJwYXJzZVJlc3BvbnNlIiwicmVzIiwicHJvY2VzcyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5Iiwid3JpdGFibGUiLCJ2YWx1ZSIsInNpZGVFZmZlY3QiLCJtZXRob2QiLCJ1cmxQcmVmaXgiLCJpbmNsdWRlcyIsImdldCIsIl9fbmFtZSIsInBhdGgiLCJrZXkiLCJ1cmxCYXNlIiwidG9rZW5zIiwic2VhcmNoUGFyYW1zIiwia2V5cyIsImZvckVhY2giLCJrIiwiaGFzIiwiZ2V0SGVhZGVycyIsImhlYWRlcnMiLCJib2R5SXNQb2pvIiwiSlNPTiIsInN0cmluZ2lmeSIsImluaXQiLCJhc3NpZ24iLCJyZXF1ZXN0SW5pdCIsInNpZ25hbCIsImlucHV0Iiwib2siLCJjYXRjaCIsImVycm9yIiwiVHlwZUVycm9yIiwic3RhdHVzIiwiX3Jlc3BvbnNlJGhlYWRlcnMkZ2V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0ZXh0Iiwic2NoZW1hIiwicHJvdG90eXBlIiwibWVzc2FnZSIsImVudiIsIk5PREVfRU5WIiwiX3Jlc3BvbnNlJGhlYWRlcnMkZ2V0MiIsInN0YXJ0c1dpdGgiLCJ0cnlQYXJzZSIsInN1YnN0cmluZyIsImpzb24iLCJlcnJvclBvbGljeSIsInBhdGhSZWdleCIsInRlc3RLZXkiLCJwcmVmaXgiLCJsYXN0UXVlc3Rpb24iLCJsYXN0SW5kZXhPZiIsInRlc3QiLCJleHRlbmQiLCJFIiwiaW5zdGFuY2UiLCJwYWdpbmF0ZWQiLCJyZW1vdmVDdXJzb3IiLCJmaWVsZE5hbWUiLCJfcmVmIiwicGFyYW1zIiwiX29iamVjdERlc3RydWN0dXJpbmdFbXB0eSIsImZvdW5kIiwiY3JlYXRlUGFnaW5hdGVkU2NoZW1hIiwiY29sbGVjdGlvbiIsImFkZFdpdGgiLCJuZXdTY2hlbWEiLCJ1cGRhdGUiLCJwdXNoIiwicyIsInVuc2hpZnQiLCJwYXJzZSIsImUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV4dC9SZXN0RW5kcG9pbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW5kcG9pbnQgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuaW1wb3J0IHsgcGF0aFRvUmVnZXhwIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgZXh0cmFjdENvbGxlY3Rpb24gZnJvbSAnLi4vZXh0cmFjdENvbGxlY3Rpb24uanMnO1xuaW1wb3J0IG1hcENvbGxlY3Rpb24gZnJvbSAnLi4vbWFwQ29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgTmV0d29ya0Vycm9yIGZyb20gJy4uL05ldHdvcmtFcnJvci5qcyc7XG5pbXBvcnQgeyBwYWdpbmF0ZWRNZXJnZSwgcGFnaW5hdGVkRmlsdGVyIH0gZnJvbSAnLi4vcGFnaW5hdGVkQ29sbGVjdGlvbnMuanMnO1xuaW1wb3J0IHBhZ2luYXRpb25VcGRhdGUgZnJvbSAnLi4vcGFnaW5hdGlvblVwZGF0ZS5qcyc7XG5pbXBvcnQgcGFyYW1zVG9TdHJpbmcgZnJvbSAnLi4vcGFyYW1zVG9TdHJpbmcuanMnO1xuaW1wb3J0IHsgZ2V0VXJsQmFzZSwgZ2V0VXJsVG9rZW5zLCBpc1Bvam8gfSBmcm9tICcuLi9SZXN0SGVscGVycy5qcyc7XG5cbi8qKiBTaW1wbGlmaWVzIGVuZHBvaW50IGRlZmluaXRpb25zIHRoYXQgZm9sbG93IFJFU1QgcGF0dGVybnNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL3Jlc3QvYXBpL1Jlc3RFbmRwb2ludFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXN0RW5kcG9pbnQgZXh0ZW5kcyBFbmRwb2ludCB7XG4gICNoYXNCb2R5O1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBvcHRpb25zLmZldGNoID8/XG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgY29uc3QgdXJsUGFyYW1zID1cbiAgICAgICAgICAgIHRoaXMuI2hhc0JvZHkgJiYgYXJncy5sZW5ndGggPCAyID8ge30gOiBhcmdzWzBdIHx8IHt9O1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLiNoYXNCb2R5ID8gYXJnc1thcmdzLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoUmVzcG9uc2UoXG4gICAgICAgICAgICB0aGlzLnVybCh1cmxQYXJhbXMpLFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRSZXF1ZXN0SW5pdChib2R5KSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB0aGlzLnBhcnNlUmVzcG9uc2UocmVzcG9uc2UpKVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMucHJvY2VzcyhyZXMsIC4uLmFyZ3MpKTtcbiAgICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICAvLyB3ZSB3YW50IHRvIHVzZSB0aGUgcHJvdG90eXBlIGNoYWluIGhlcmVcbiAgICBpZiAoXG4gICAgICAhKCdzaWRlRWZmZWN0JyBpbiB0aGlzKSB8fFxuICAgICAgKCdtZXRob2QnIGluIG9wdGlvbnMgJiYgISgnc2lkZUVmZmVjdCcgaW4gb3B0aW9ucykpXG4gICAgKSB7XG4gICAgICB0aGlzLnNpZGVFZmZlY3QgPVxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9PT0gJ0dFVCcgfHwgb3B0aW9ucy5tZXRob2QgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5tZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRob2QgPSB0aGlzLnNpZGVFZmZlY3QgPyAnUE9TVCcgOiAnR0VUJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXJsUHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXJsUHJlZml4ID0gJyc7XG4gICAgfVxuICAgIHRoaXMuI2hhc0JvZHkgPVxuICAgICAgKCEoJ2JvZHknIGluIHRoaXMpIHx8IHRoaXMuYm9keSAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgIVsnR0VUJywgJ0RFTEVURSddLmluY2x1ZGVzKHRoaXMubWV0aG9kKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmFtZScsIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgLy8gdXNpbmcgJ2luJyB0byBlbnN1cmUgaW5oZXJpdGFuY2UgbG9va3VwXG4gICAgICAgIGlmICgnX19uYW1lJyBpbiB0aGlzKSByZXR1cm4gdGhpcy5fX25hbWU7XG4gICAgICAgIHJldHVybiB0aGlzLnVybFByZWZpeCArIHRoaXMucGF0aDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBrZXkoLi4uYXJncykge1xuICAgIHJldHVybiBgJHt0aGlzLm1ldGhvZH0gJHt0aGlzLnVybChcbiAgICAgIHRoaXMuI2hhc0JvZHkgJiYgYXJncy5sZW5ndGggPCAyID8ge30gOiBhcmdzWzBdIHx8IHt9LFxuICAgICl9YDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIHVybCAqL1xuICB1cmwodXJsUGFyYW1zID0ge30pIHtcbiAgICBjb25zdCB1cmxCYXNlID0gZ2V0VXJsQmFzZSh0aGlzLnBhdGgpKHVybFBhcmFtcyk7XG4gICAgY29uc3QgdG9rZW5zID0gZ2V0VXJsVG9rZW5zKHRoaXMucGF0aCk7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0ge307XG4gICAgT2JqZWN0LmtleXModXJsUGFyYW1zKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKCF0b2tlbnMuaGFzKGspKSB7XG4gICAgICAgIHNlYXJjaFBhcmFtc1trXSA9IHVybFBhcmFtc1trXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnVybFByZWZpeH0ke3VybEJhc2V9PyR7cGFyYW1zVG9TdHJpbmcoc2VhcmNoUGFyYW1zKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy51cmxQcmVmaXh9JHt1cmxCYXNlfWA7XG4gIH1cblxuICBnZXRIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKiBJbml0IG9wdGlvbnMgZm9yIGZldGNoIC0gcnVuIGF0IGZldGNoICovXG4gIGFzeW5jIGdldFJlcXVlc3RJbml0KGJvZHkpIHtcbiAgICBjb25zdCBib2R5SXNQb2pvID0gaXNQb2pvKGJvZHkpO1xuICAgIGlmIChib2R5SXNQb2pvKSB7XG4gICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgfVxuICAgIGNvbnN0IGluaXQgPSB7XG4gICAgICAuLi50aGlzLnJlcXVlc3RJbml0LFxuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcbiAgICAgIHNpZ25hbDogdGhpcy5zaWduYWwsXG4gICAgICBib2R5LFxuICAgIH07XG4gICAgaWYgKCFib2R5IHx8IGJvZHlJc1Bvam8pIHtcbiAgICAgIGluaXQuaGVhZGVycyA9IHtcbiAgICAgICAgLy8gZGVmYXVsdCB0byBhcHBsaWNhdGlvbi9qc29uIGJ1dCBhbGxvdyB1c2VyIGV4cGxpY2l0IG92ZXJyaWRlc1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAuLi5pbml0LmhlYWRlcnMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpbml0LmhlYWRlcnMgPSBhd2FpdCB0aGlzLmdldEhlYWRlcnMoaW5pdC5oZWFkZXJzKTtcbiAgICByZXR1cm4gaW5pdDtcbiAgfVxuXG4gIC8qKiBQZXJmb3JtIG5ldHdvcmsgcmVxdWVzdCBhbmQgcmVzb2x2ZSB3aXRoIEhUVFAgUmVzcG9uc2UgKi9cbiAgZmV0Y2hSZXNwb25zZShpbnB1dCwgaW5pdCkge1xuICAgIHJldHVybiBmZXRjaChpbnB1dCwgaW5pdClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIHRocm93IG5ldyBOZXR3b3JrRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAvLyBlbnN1cmUgQ09SUywgbmV0d29yayBkb3duLCBhbmQgcGFyc2UgZXJyb3JzIGFyZSBzdGlsbCBjYXVnaHQgYnkgTmV0d29ya0Vycm9yQm91bmRhcnlcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzID0gNTAwO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH1cblxuICBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgLy8gdGhpcyBzaG91bGQgbm90IGhhdmUgYW55IGNvbnRlbnQgdG8gcmVhZFxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICBpZiAoIXJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKT8uaW5jbHVkZXMoJ2pzb24nKSkge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKS50aGVuKHRleHQgPT4ge1xuICAgICAgICAvLyBzdHJpbmcgb3IgJ25vdCBzZXQnIHNjaGVtYSwgYXJlIHZhbGlkXG4gICAgICAgIC8vIHdoZW4gb3ZlcnJpZGluZyBwcm9jZXNzIHRoZXkgbWlnaHQgaGFuZGxlIG90aGVyIGNhc2VzLCBzbyB3ZSBkb24ndCB3YW50IHRvIGJsb2NrIG9uIG91ciBsb2dpY1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWydzdHJpbmcnLCAndW5kZWZpbmVkJ10uaW5jbHVkZXModHlwZW9mIHRoaXMuc2NoZW1hKSB8fFxuICAgICAgICAgIHRoaXMuc2NoZW1hID09PSBudWxsIHx8XG4gICAgICAgICAgdGhpcy5wcm9jZXNzICE9PSBSZXN0RW5kcG9pbnQucHJvdG90eXBlLnByb2Nlc3NcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB0ZXh0O1xuXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IE5ldHdvcmtFcnJvcihyZXNwb25zZSk7XG4gICAgICAgIGVycm9yLnN0YXR1cyA9IDQwNDtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIHRleHQgcmVzcG9uc2UgZm9yIHNjaGVtYSAke3RoaXMuc2NoZW1hfWA7XG4gICAgICAgIC8vIGN1c3RvbSBkZXYtb25seSBtZXNzYWdlcyBmb3IgbW9yZSBkZXRhaWxlZCBjYXVzZVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKT8uaW5jbHVkZXMoJ2h0bWwnKSB8fFxuICAgICAgICAgICAgICB0ZXh0LnN0YXJ0c1dpdGgoJzwhZG9jdHlwZSBodG1sPicpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodHJ5UGFyc2UodGV4dCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gYFwiY29udGVudC10eXBlXCIgaGVhZGVyIGRvZXMgbm90IGluY2x1ZGUgXCJqc29uXCIsIGJ1dCBKU09OIHJlc3BvbnNlIGZvdW5kLlxuU2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0NjI3IGZvciBpbmZvcm1hdGlvbiBvbiBKU09OIHJlc3BvbnNlc1xuXG5Vc2luZyBwYXJzZWQgSlNPTi5cbklmIHRleHQgY29udGVudCB3YXMgZXhwZWN0ZWQgc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL3Jlc3QvYXBpL1Jlc3RFbmRwb2ludCNwYXJzZVJlc3BvbnNlYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBVbmV4cGVjdGVkIGh0bWwgcmVzcG9uc2UgZm9yIHNjaGVtYSAke3RoaXMuc2NoZW1hfVxuVGhpcyBsaWtlbHkgbWVhbnMgbm8gQVBJIGVuZHBvaW50IHdhcyBjb25maWd1cmVkIGZvciB0aGlzIHJlcXVlc3QsIHJlc3VsdGluZyBpbiBhbiBIVE1MIGZhbGxiYWNrLlxuXG5SZXNwb25zZSAoZmlyc3QgMzAwIGNoYXJhY3RlcnMpOiAke3RleHQuc3Vic3RyaW5nKDAsIDMwMCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBlcnJvci5zdGF0dXMgPSA0MDA7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgfVxuXG4gIHByb2Nlc3ModmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBlcnJvclBvbGljeShlcnJvcikge1xuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPj0gNTAwID8gJ3NvZnQnIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHBhdGhSZWdleCgpIHtcbiAgICByZXR1cm4gcGF0aFRvUmVnZXhwKHRoaXMucGF0aCk7XG4gIH1cblxuICB0ZXN0S2V5KGtleSkge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMubWV0aG9kICsgJyAnICsgdGhpcy51cmxQcmVmaXg7XG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IGxhc3RRdWVzdGlvbiA9IGtleS5sYXN0SW5kZXhPZignPycpO1xuICAgIGlmIChsYXN0UXVlc3Rpb24gPT09IC0xKSBsYXN0UXVlc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMucGF0aFJlZ2V4LnRlc3Qoa2V5LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoLCBsYXN0UXVlc3Rpb24pKTtcbiAgfVxuXG4gIGV4dGVuZChvcHRpb25zKSB7XG4gICAgLy8gbWFrZSBhIGNvbnN0cnVjdG9yL3Byb3RvdHlwZSBiYXNlZCBvZmYgdGhpc1xuICAgIC8vIGV4dGVuZCBmcm9tIGl0IGFuZCBpbml0IHdpdGggb3B0aW9ucyBzZW50XG4gICAgY2xhc3MgRSBleHRlbmRzIHRoaXMuY29uc3RydWN0b3Ige31cblxuICAgIE9iamVjdC5hc3NpZ24oRS5wcm90b3R5cGUsIHRoaXMpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEUoXG4gICAgICAvLyAgZmV0Y2ggZ2V0IG92ZXJyaWRkZW4gYnkgZnVuY3Rpb24gcHJvdG90eXBlLCBzbyB3ZSBtdXN0IHNldCBpdCBleHBsaWNpdGx5IGV2ZXJ5IHRpbWVcbiAgICAgIHsgZmV0Y2g6IHRoaXMuZmV0Y2gsIC4uLm9wdGlvbnMgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgcGFnaW5hdGVkKHJlbW92ZUN1cnNvcikge1xuICAgIGlmICh0eXBlb2YgcmVtb3ZlQ3Vyc29yID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gcmVtb3ZlQ3Vyc29yO1xuICAgICAgcmVtb3ZlQ3Vyc29yID0gKHsgLi4ucGFyYW1zIH0pID0+IHtcbiAgICAgICAgZGVsZXRlIHBhcmFtc1tmaWVsZE5hbWVdO1xuICAgICAgICByZXR1cm4gW3BhcmFtc107XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBjb25zdCBjcmVhdGVQYWdpbmF0ZWRTY2hlbWEgPSBjb2xsZWN0aW9uID0+IHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uLmFkZFdpdGgocGFnaW5hdGVkTWVyZ2UsIHBhZ2luYXRlZEZpbHRlcihyZW1vdmVDdXJzb3IpKTtcbiAgICB9O1xuICAgIGNvbnN0IG5ld1NjaGVtYSA9IG1hcENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIGNyZWF0ZVBhZ2luYXRlZFNjaGVtYSk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRlbmQoeyBzY2hlbWE6IG5ld1NjaGVtYSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlbmQoeyB1cGRhdGU6IHBhZ2luYXRpb25VcGRhdGUodGhpcywgcmVtb3ZlQ3Vyc29yKSB9KTtcbiAgfVxuXG4gIGdldCBwdXNoKCkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHNjaGVtYTogZXh0cmFjdENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIHMgPT4gcy5wdXNoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB1bnNoaWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHNjaGVtYTogZXh0cmFjdENvbGxlY3Rpb24odGhpcy5zY2hlbWEsIHMgPT4gcy51bnNoaWZ0KSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhc3NpZ24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kKHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgc2NoZW1hOiBleHRyYWN0Q29sbGVjdGlvbih0aGlzLnNjaGVtYSwgcyA9PiBzLmFzc2lnbiksXG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgdHJ5UGFyc2UgPSBpbnB1dCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoaW5wdXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsUUFBUSxRQUFRLHVCQUF1QjtBQUNoRCxTQUFTQyxZQUFZLFFBQVEsZ0JBQWdCO0FBRTdDLE9BQU9DLGlCQUFpQixNQUFNLHlCQUF5QjtBQUN2RCxPQUFPQyxhQUFhLE1BQU0scUJBQXFCO0FBQy9DLE9BQU9DLFlBQVksTUFBTSxvQkFBb0I7QUFDN0MsU0FBU0MsY0FBYyxFQUFFQyxlQUFlLFFBQVEsNEJBQTRCO0FBQzVFLE9BQU9DLGdCQUFnQixNQUFNLHdCQUF3QjtBQUNyRCxPQUFPQyxjQUFjLE1BQU0sc0JBQXNCO0FBQ2pELFNBQVNDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxNQUFNLFFBQVEsbUJBQW1COztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUhBLElBQUFDLFFBQUEsZ0JBQUFDLDBCQUFBO0FBSUEsZUFBZSxNQUFNQyxZQUFZLFNBQVNkLFFBQVEsQ0FBQztFQUVqRGUsV0FBV0EsQ0FBQ0MsT0FBTyxFQUFFO0lBQUEsSUFBQUMsY0FBQTtJQUNuQixLQUFLLEVBQUFBLGNBQUEsR0FDSEQsT0FBTyxDQUFDRSxLQUFLLFlBQUFELGNBQUEsR0FDWCxnQkFBZ0IsR0FBR0UsSUFBSSxFQUFFO01BQ3ZCLE1BQU1DLFNBQVMsR0FDYkMsMkJBQUEsS0FBSSxFQUFBVCxRQUFBLEVBQUFBLFFBQUEsS0FBYU8sSUFBSSxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENB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
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
|
|
2
|
-
const _excluded = ["path", "schema", "Endpoint", "optimistic"];
|
|
3
|
-
import { AbortOptimistic, schema } from '@data-client/endpoint';
|
|
4
|
-
import RestEndpoint from './RestEndpoint.js';
|
|
5
|
-
import { shortenPath } from '../RestHelpers.js';
|
|
6
|
-
const {
|
|
7
|
-
Invalidate,
|
|
8
|
-
Collection
|
|
9
|
-
} = schema;
|
|
10
|
-
|
|
11
|
-
/** Creates collection of Endpoints for common operations on a given data/schema.
|
|
12
|
-
*
|
|
13
|
-
* @see https://resthooks.io/rest/api/createResource
|
|
14
|
-
*/
|
|
15
|
-
export default function createResource(_ref) {
|
|
16
|
-
let {
|
|
17
|
-
path,
|
|
18
|
-
schema,
|
|
19
|
-
Endpoint = RestEndpoint,
|
|
20
|
-
optimistic
|
|
21
|
-
} = _ref,
|
|
22
|
-
extraOptions = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
23
|
-
const shortenedPath = shortenPath(path);
|
|
24
|
-
const getName = name => `${schema == null ? void 0 : schema.name}.${name}`;
|
|
25
|
-
const extraMutateOptions = Object.assign({}, extraOptions);
|
|
26
|
-
const extraPartialOptions = Object.assign({}, extraOptions);
|
|
27
|
-
const get = new Endpoint(Object.assign({}, extraOptions, {
|
|
28
|
-
path,
|
|
29
|
-
schema,
|
|
30
|
-
name: getName('get')
|
|
31
|
-
}));
|
|
32
|
-
if (optimistic) {
|
|
33
|
-
extraMutateOptions.getOptimisticResponse = optimisticUpdate;
|
|
34
|
-
extraPartialOptions.getOptimisticResponse = optimisticPartial(get);
|
|
35
|
-
}
|
|
36
|
-
const getList = new Endpoint(Object.assign({}, extraMutateOptions, {
|
|
37
|
-
path: shortenedPath,
|
|
38
|
-
schema: new Collection([schema]),
|
|
39
|
-
name: getName('getList')
|
|
40
|
-
}));
|
|
41
|
-
return {
|
|
42
|
-
get,
|
|
43
|
-
getList,
|
|
44
|
-
create: getList.push.extend({
|
|
45
|
-
name: getName('create')
|
|
46
|
-
}),
|
|
47
|
-
update: new Endpoint(Object.assign({}, extraMutateOptions, {
|
|
48
|
-
path,
|
|
49
|
-
schema,
|
|
50
|
-
method: 'PUT',
|
|
51
|
-
name: getName('update')
|
|
52
|
-
})),
|
|
53
|
-
partialUpdate: new Endpoint(Object.assign({}, extraPartialOptions, {
|
|
54
|
-
path,
|
|
55
|
-
schema,
|
|
56
|
-
method: 'PATCH',
|
|
57
|
-
name: getName('partialUpdate')
|
|
58
|
-
})),
|
|
59
|
-
delete: new Endpoint(Object.assign({}, extraMutateOptions, {
|
|
60
|
-
path,
|
|
61
|
-
schema: schema.process ? new Invalidate(schema) : schema,
|
|
62
|
-
method: 'DELETE',
|
|
63
|
-
name: getName('delete'),
|
|
64
|
-
process(res, params) {
|
|
65
|
-
return res && Object.keys(res).length ? res : params;
|
|
66
|
-
},
|
|
67
|
-
getOptimisticResponse: optimistic ? optimisticDelete : undefined
|
|
68
|
-
}))
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function optimisticUpdate(snap, params, body) {
|
|
72
|
-
return Object.assign({}, params, body);
|
|
73
|
-
}
|
|
74
|
-
function optimisticPartial(getEndpoint) {
|
|
75
|
-
return function (snap, params, body) {
|
|
76
|
-
const {
|
|
77
|
-
data
|
|
78
|
-
} = snap.getResponse(getEndpoint, params);
|
|
79
|
-
if (!data) throw new AbortOptimistic();
|
|
80
|
-
return Object.assign({}, params, data, body);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
function optimisticDelete(snap, params) {
|
|
84
|
-
return params;
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBYm9ydE9wdGltaXN0aWMiLCJzY2hlbWEiLCJSZXN0RW5kcG9pbnQiLCJzaG9ydGVuUGF0aCIsIkludmFsaWRhdGUiLCJDb2xsZWN0aW9uIiwiY3JlYXRlUmVzb3VyY2UiLCJfcmVmIiwicGF0aCIsIkVuZHBvaW50Iiwib3B0aW1pc3RpYyIsImV4dHJhT3B0aW9ucyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX2V4Y2x1ZGVkIiwic2hvcnRlbmVkUGF0aCIsImdldE5hbWUiLCJuYW1lIiwiZXh0cmFNdXRhdGVPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZXh0cmFQYXJ0aWFsT3B0aW9ucyIsImdldCIsImdldE9wdGltaXN0aWNSZXNwb25zZSIsIm9wdGltaXN0aWNVcGRhdGUiLCJvcHRpbWlzdGljUGFydGlhbCIsImdldExpc3QiLCJjcmVhdGUiLCJwdXNoIiwiZXh0ZW5kIiwidXBkYXRlIiwibWV0aG9kIiwicGFydGlhbFVwZGF0ZSIsImRlbGV0ZSIsInByb2Nlc3MiLCJyZXMiLCJwYXJhbXMiLCJrZXlzIiwibGVuZ3RoIiwib3B0aW1pc3RpY0RlbGV0ZSIsInVuZGVmaW5lZCIsInNuYXAiLCJib2R5IiwiZ2V0RW5kcG9pbnQiLCJkYXRhIiwiZ2V0UmVzcG9uc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV4dC9jcmVhdGVSZXNvdXJjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBYm9ydE9wdGltaXN0aWMsXG4gIFNuYXBzaG90SW50ZXJmYWNlLFxuICBzY2hlbWEsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5pbXBvcnQgdHlwZSB7IFNjaGVtYSwgRGVub3JtYWxpemUgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZUdlbmVyaWNzLCBSZXNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3Jlc291cmNlVHlwZXMuanMnO1xuaW1wb3J0IFJlc3RFbmRwb2ludCwge1xuICBHZXRFbmRwb2ludCxcbiAgTXV0YXRlRW5kcG9pbnQsXG4gIFJlc3RJbnN0YW5jZSxcbiAgUmVzdFR5cGVOb0JvZHksXG59IGZyb20gJy4vUmVzdEVuZHBvaW50LmpzJztcbmltcG9ydCB7IFBhdGhBcmdzLCBTaG9ydGVuUGF0aCB9IGZyb20gJy4uL3BhdGhUeXBlcy5qcyc7XG5pbXBvcnQgeyBzaG9ydGVuUGF0aCB9IGZyb20gJy4uL1Jlc3RIZWxwZXJzLmpzJztcblxuY29uc3QgeyBJbnZhbGlkYXRlLCBDb2xsZWN0aW9uIH0gPSBzY2hlbWE7XG5cbi8qKiBDcmVhdGVzIGNvbGxlY3Rpb24gb2YgRW5kcG9pbnRzIGZvciBjb21tb24gb3BlcmF0aW9ucyBvbiBhIGdpdmVuIGRhdGEvc2NoZW1hLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2U8TyBleHRlbmRzIFJlc291cmNlR2VuZXJpY3M+KHtcbiAgcGF0aCxcbiAgc2NoZW1hLFxuICBFbmRwb2ludCA9IFJlc3RFbmRwb2ludCxcbiAgb3B0aW1pc3RpYyxcbiAgLi4uZXh0cmFPcHRpb25zXG59OiBSZWFkb25seTxPPiAmIFJlc291cmNlT3B0aW9ucyk6IFJlc291cmNlPE8+IHtcbiAgY29uc3Qgc2hvcnRlbmVkUGF0aCA9IHNob3J0ZW5QYXRoKHBhdGgpO1xuICBjb25zdCBnZXROYW1lID0gKG5hbWU6IHN0cmluZykgPT4gYCR7KHNjaGVtYSBhcyBhbnkpPy5uYW1lfS4ke25hbWV9YDtcbiAgY29uc3QgZXh0cmFNdXRhdGVPcHRpb25zID0geyAuLi5leHRyYU9wdGlvbnMgfTtcbiAgY29uc3QgZXh0cmFQYXJ0aWFsT3B0aW9ucyA9IHsgLi4uZXh0cmFPcHRpb25zIH07XG4gIGNvbnN0IGdldDogR2V0RW5kcG9pbnQ8eyBwYXRoOiBPWydwYXRoJ107IHNjaGVtYTogT1snc2NoZW1hJ10gfT4gPVxuICAgIG5ldyBFbmRwb2ludCh7XG4gICAgICAuLi5leHRyYU9wdGlvbnMsXG4gICAgICBwYXRoLFxuICAgICAgc2NoZW1hLFxuICAgICAgbmFtZTogZ2V0TmFtZSgnZ2V0JyksXG4gICAgfSkgYXMgYW55O1xuICBpZiAob3B0aW1pc3RpYykge1xuICAgIChleHRyYU11dGF0ZU9wdGlvbnMgYXMgYW55KS5nZXRPcHRpbWlzdGljUmVzcG9uc2UgPSBvcHRpbWlzdGljVXBkYXRlO1xuICAgIChleHRyYVBhcnRpYWxPcHRpb25zIGFzIGFueSkuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlID0gb3B0aW1pc3RpY1BhcnRpYWwoZ2V0KTtcbiAgfVxuICBjb25zdCBnZXRMaXN0ID0gbmV3IEVuZHBvaW50KHtcbiAgICAuLi5leHRyYU11dGF0ZU9wdGlvbnMsXG4gICAgcGF0aDogc2hvcnRlbmVkUGF0aCxcbiAgICBzY2hlbWE6IG5ldyBDb2xsZWN0aW9uKFtzY2hlbWEgYXMgYW55XSksXG4gICAgbmFtZTogZ2V0TmFtZSgnZ2V0TGlzdCcpLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBnZXQsXG4gICAgZ2V0TGlzdCxcbiAgICBjcmVhdGU6IGdldExpc3QucHVzaC5leHRlbmQoeyBuYW1lOiBnZXROYW1lKCdjcmVhdGUnKSB9KSxcbiAgICB1cGRhdGU6IG5ldyBFbmRwb2ludCh7XG4gICAgICAuLi5leHRyYU11dGF0ZU9wdGlvbnMsXG4gICAgICBwYXRoLFxuICAgICAgc2NoZW1hLFxuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIG5hbWU6IGdldE5hbWUoJ3VwZGF0ZScpLFxuICAgIH0pLFxuICAgIHBhcnRpYWxVcGRhdGU6IG5ldyBFbmRwb2ludCh7XG4gICAgICAuLi5leHRyYVBhcnRpYWxPcHRpb25zLFxuICAgICAgcGF0aCxcbiAgICAgIHNjaGVtYSxcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIG5hbWU6IGdldE5hbWUoJ3BhcnRpYWxVcGRhdGUnKSxcbiAgICB9KSxcbiAgICBkZWxldGU6IG5ldyBFbmRwb2ludCh7XG4gICAgICAuLi5leHRyYU11dGF0ZU9wdGlvbnMsXG4gICAgICBwYXRoLFxuICAgICAgc2NoZW1hOiAoc2NoZW1hIGFzIGFueSkucHJvY2VzcyA/IG5ldyBJbnZhbGlkYXRlKHNjaGVtYSBhcyBhbnkpIDogc2NoZW1hLFxuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIG5hbWU6IGdldE5hbWUoJ2RlbGV0ZScpLFxuICAgICAgcHJvY2VzcyhyZXM6IGFueSwgcGFyYW1zOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHJlcyAmJiBPYmplY3Qua2V5cyhyZXMpLmxlbmd0aCA/IHJlcyA6IHBhcmFtcztcbiAgICAgIH0sXG4gICAgICBnZXRPcHRpbWlzdGljUmVzcG9uc2U6IG9wdGltaXN0aWMgPyAob3B0aW1pc3RpY0RlbGV0ZSBhcyBhbnkpIDogdW5kZWZpbmVkLFxuICAgIH0pLFxuICB9IGFzIGFueTtcbn1cblxuZnVuY3Rpb24gb3B0aW1pc3RpY1VwZGF0ZShzbmFwOiBTbmFwc2hvdEludGVyZmFjZSwgcGFyYW1zOiBhbnksIGJvZHk6IGFueSkge1xuICByZXR1cm4ge1xuICAgIC4uLnBhcmFtcyxcbiAgICAuLi5ib2R5LFxuICB9O1xufVxuZnVuY3Rpb24gb3B0aW1pc3RpY1BhcnRpYWwoZ2V0RW5kcG9pbnQ6IEdldEVuZHBvaW50KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc25hcDogU25hcHNob3RJbnRlcmZhY2UsIHBhcmFtczogYW55LCBib2R5OiBhbnkpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IHNuYXAuZ2V0UmVzcG9uc2UoZ2V0RW5kcG9pbnQsIHBhcmFtcykgYXMgeyBkYXRhOiBhbnkgfTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBBYm9ydE9wdGltaXN0aWMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgLi4uZGF0YSxcbiAgICAgIC8vIGV2ZW4gdGhvIHdlIGRvbid0IGFsd2F5cyBoYXZlIHR3byBhcmd1bWVudHMsIHRoZSBleHRyYSBvbmUgd2lsbCBzaW1wbHkgYmUgdW5kZWZpbmVkIHdoaWNoIHNwcmVhZHMgZmluZVxuICAgICAgLi4uYm9keSxcbiAgICB9O1xuICB9O1xufVxuZnVuY3Rpb24gb3B0aW1pc3RpY0RlbGV0ZShzbmFwOiBTbmFwc2hvdEludGVyZmFjZSwgcGFyYW1zOiBhbnkpIHtcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZTxcbiAgTyBleHRlbmRzIFJlc291cmNlR2VuZXJpY3MgPSB7IHBhdGg6IHN0cmluZzsgc2NoZW1hOiBhbnkgfSxcbj4ge1xuICAvKiogR2V0IGEgc2luZ3VsYXIgaXRlbVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2dldFxuICAgKi9cbiAgZ2V0OiBHZXRFbmRwb2ludDx7IHBhdGg6IE9bJ3BhdGgnXTsgc2NoZW1hOiBPWydzY2hlbWEnXSB9PjtcbiAgLyoqIEdldCBhIGxpc3Qgb2YgaXRlbVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2dldGxpc3RcbiAgICovXG4gIGdldExpc3Q6ICdzZWFyY2hQYXJhbXMnIGV4dGVuZHMga2V5b2YgT1xuICAgID8gR2V0RW5kcG9pbnQ8e1xuICAgICAgICBwYXRoOiBTaG9ydGVuUGF0aDxPWydwYXRoJ10+O1xuICAgICAgICBzY2hlbWE6IHNjaGVtYS5Db2xsZWN0aW9uPFtPWydzY2hlbWEnXV0+O1xuICAgICAgICBzZWFyY2hQYXJhbXM6IE9bJ3NlYXJjaFBhcmFtcyddO1xuICAgICAgfT5cbiAgICA6IEdldEVuZHBvaW50PHtcbiAgICAgICAgcGF0aDogU2hvcnRlblBhdGg8T1sncGF0aCddPjtcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEuQ29sbGVjdGlvbjxbT1snc2NoZW1hJ11dPjtcbiAgICAgICAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZDtcbiAgICAgIH0+O1xuICAvKiogQ3JlYXRlIGEgbmV3IGl0ZW0gKFBPU1QpXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2UjY3JlYXRlXG4gICAqL1xuICBjcmVhdGU6ICdzZWFyY2hQYXJhbXMnIGV4dGVuZHMga2V5b2YgT1xuICAgID8gTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgICBwYXRoOiBTaG9ydGVuUGF0aDxPWydwYXRoJ10+O1xuICAgICAgICBzY2hlbWE6IHNjaGVtYS5Db2xsZWN0aW9uPFtPWydzY2hlbWEnXV0+WydwdXNoJ107XG4gICAgICAgIGJvZHk6ICdib2R5JyBleHRlbmRzIGtleW9mIE9cbiAgICAgICAgICA/IE9bJ2JvZHknXVxuICAgICAgICAgIDogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+O1xuICAgICAgICBzZWFyY2hQYXJhbXM6IE9bJ3NlYXJjaFBhcmFtcyddO1xuICAgICAgfT5cbiAgICA6IE11dGF0ZUVuZHBvaW50PHtcbiAgICAgICAgcGF0aDogU2hvcnRlblBhdGg8T1sncGF0aCddPjtcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEuQ29sbGVjdGlvbjxbT1snc2NoZW1hJ11dPlsncHVzaCddO1xuICAgICAgICBib2R5OiAnYm9keScgZXh0ZW5kcyBrZXlvZiBPXG4gICAgICAgICAgPyBPWydib2R5J11cbiAgICAgICAgICA6IFBhcnRpYWw8RGVub3JtYWxpemU8T1snc2NoZW1hJ10+PjtcbiAgICAgIH0+O1xuICAvKiogVXBkYXRlIGFuIGl0ZW0gKFBVVClcbiAgICpcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9yZXN0L2FwaS9jcmVhdGVSZXNvdXJjZSN1cGRhdGVcbiAgICovXG4gIHVwZGF0ZTogJ2JvZHknIGV4dGVuZHMga2V5b2YgT1xuICAgID8gTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgICBwYXRoOiBPWydwYXRoJ107XG4gICAgICAgIGJvZHk6IE9bJ2JvZHknXTtcbiAgICAgICAgc2NoZW1hOiBPWydzY2hlbWEnXTtcbiAgICAgIH0+XG4gICAgOiBNdXRhdGVFbmRwb2ludDx7XG4gICAgICAgIHBhdGg6IE9bJ3BhdGgnXTtcbiAgICAgICAgYm9keTogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+O1xuICAgICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgICAgfT47XG4gIC8qKiBVcGRhdGUgYW4gaXRlbSAoUEFUQ0gpXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vcmVzdC9hcGkvY3JlYXRlUmVzb3VyY2UjcGFydGlhbHVwZGF0ZVxuICAgKi9cbiAgcGFydGlhbFVwZGF0ZTogJ2JvZHknIGV4dGVuZHMga2V5b2YgT1xuICAgID8gTXV0YXRlRW5kcG9pbnQ8e1xuICAgICAgICBwYXRoOiBPWydwYXRoJ107XG4gICAgICAgIGJvZHk6IFBhcnRpYWw8T1snYm9keSddPjtcbiAgICAgICAgc2NoZW1hOiBPWydzY2hlbWEnXTtcbiAgICAgIH0+XG4gICAgOiBNdXRhdGVFbmRwb2ludDx7XG4gICAgICAgIHBhdGg6IE9bJ3BhdGgnXTtcbiAgICAgICAgYm9keTogUGFydGlhbDxEZW5vcm1hbGl6ZTxPWydzY2hlbWEnXT4+O1xuICAgICAgICBzY2hlbWE6IE9bJ3NjaGVtYSddO1xuICAgICAgfT47XG4gIC8qKiBEZWxldGUgYW4gaXRlbSAoREVMRVRFKVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL3Jlc3QvYXBpL2NyZWF0ZVJlc291cmNlI2RlbGV0ZVxuICAgKi9cbiAgZGVsZXRlOiBSZXN0VHlwZU5vQm9keTxcbiAgICBQYXRoQXJnczxPWydwYXRoJ10+LFxuICAgIE9bJ3NjaGVtYSddIGV4dGVuZHMgc2NoZW1hLkVudGl0eUludGVyZmFjZSAmIHsgcHJvY2VzczogYW55IH1cbiAgICAgID8gc2NoZW1hLkludmFsaWRhdGU8T1snc2NoZW1hJ10+XG4gICAgICA6IE9bJ3NjaGVtYSddLFxuICAgIHVuZGVmaW5lZCxcbiAgICBQYXJ0aWFsPFBhdGhBcmdzPE9bJ3BhdGgnXT4+LFxuICAgIHtcbiAgICAgIHBhdGg6IE9bJ3BhdGgnXTtcbiAgICB9XG4gID47XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FDRUEsZUFBZSxFQUVmQyxNQUFNLFFBQ0QsdUJBQXVCO0FBSTlCLE9BQU9DLFlBQVksTUFLWixtQkFBbUI7QUFFMUIsU0FBU0MsV0FBVyxRQUFRLG1CQUFtQjtBQUUvQyxNQUFNO0VBQUVDLFVBQVU7RUFBRUM7QUFBVyxDQUFDLEdBQUdKLE1BQU07O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTSyxjQUFjQSxDQUFBQyxJQUFBLEVBTVM7RUFBQSxJQU5vQjtNQUNqRUMsSUFBSTtNQUNKUCxNQUFNO01BQ05RLFFBQVEsR0FBR1AsWUFBWTtNQUN2QlE7SUFFNkIsQ0FBQyxHQUFBSCxJQUFBO0lBRDNCSSxZQUFZLEdBQUFDLDZCQUFBLENBQUFMLElBQUEsRUFBQU0sU0FBQTtFQUVmLE1BQU1DLGFBQWEsR0FBR1gsV0FBVyxDQUFDSyxJQUFJLENBQUM7RUFDdkMsTUFBTU8sT0FBTyxHQUFJQyxJQUFZLElBQU0sR0FBR2YsTUFBTSxvQkFBTkEsTUFBTSxDQUFVZSxJQUFLLElBQUdBLElBQUssRUFBQztFQUNwRSxNQUFNQyxrQkFBa0IsR0FBQUMsTUFBQSxDQUFBQyxNQUFBLEtBQVFSLFlBQVksQ0FBRTtFQUM5QyxNQUFNUyxtQkFBbUIsR0FBQUYsTUFBQSxDQUFBQyxNQUFBLEtBQVFSLFlBQVksQ0FBRTtFQUMvQyxNQUFNVSxHQUEwRCxHQUM5RCxJQUFJWixRQUFRLENBQUFTLE1BQUEsQ0FBQUMsTUFBQSxLQUNQUixZQUFZO0lBQ2ZILElBQUk7SUFDSlAsTUFBTTtJQUNOZSxJQUFJLEVBQUVELE9BQU8sQ0FBQyxLQUFLO0VBQUMsRUFDckIsQ0FBUTtFQUNYLElBQUlMLFVBQVUsRUFBRTtJQUNiTyxrQkFBa0IsQ0FBU0ss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
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL25leHQvcmVzb3VyY2VUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVtYSB9IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5cbmltcG9ydCBSZXN0RW5kcG9pbnQgZnJvbSAnLi9SZXN0RW5kcG9pbnQuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlR2VuZXJpY3Mge1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjaGVtYTogU2NoZW1hO1xuICAvKiogT25seSB1c2VkIGZvciB0eXBlcyAqL1xuICByZWFkb25seSBib2R5PzogYW55O1xuICAvKiogT25seSB1c2VkIGZvciB0eXBlcyAqL1xuICByZWFkb25seSBzZWFyY2hQYXJhbXM/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlT3B0aW9ucyB7XG4gIEVuZHBvaW50PzogdHlwZW9mIFJlc3RFbmRwb2ludDtcbiAgdXJsUHJlZml4Pzogc3RyaW5nO1xuICByZXF1ZXN0SW5pdD86IFJlcXVlc3RJbml0O1xuICBnZXRIZWFkZXJzPyhoZWFkZXJzOiBIZWFkZXJzSW5pdCk6IFByb21pc2U8SGVhZGVyc0luaXQ+IHwgSGVhZGVyc0luaXQ7XG4gIGdldFJlcXVlc3RJbml0Pyhib2R5OiBhbnkpOiBQcm9taXNlPFJlcXVlc3RJbml0PiB8IFJlcXVlc3RJbml0O1xuICBmZXRjaFJlc3BvbnNlPyhpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ6IFJlcXVlc3RJbml0KTogUHJvbWlzZTxhbnk+O1xuICBwYXJzZVJlc3BvbnNlPyhyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPGFueT47XG4gIC8qKiBEZWZhdWx0IGRhdGEgZXhwaXJ5IGxlbmd0aCwgd2lsbCBmYWxsIGJhY2sgdG8gTmV0d29ya01hbmFnZXIgZGVmYXVsdCBpZiBub3QgZGVmaW5lZCAqL1xuICByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoPzogbnVtYmVyO1xuICAvKiogRGVmYXVsdCBlcnJvciBleHBpcnkgbGVuZ3RoLCB3aWxsIGZhbGwgYmFjayB0byBOZXR3b3JrTWFuYWdlciBkZWZhdWx0IGlmIG5vdCBkZWZpbmVkICovXG4gIHJlYWRvbmx5IGVycm9yRXhwaXJ5TGVuZ3RoPzogbnVtYmVyO1xuICAvKiogUG9sbCB3aXRoIGF0IGxlYXN0IHRoaXMgZnJlcXVlbmN5IGluIG1pbGlzZWNvbmRzICovXG4gIHJlYWRvbmx5IHBvbGxGcmVxdWVuY3k/OiBudW1iZXI7XG4gIC8qKiBNYXJrcyBjYWNoZWQgcmVzb3VyY2VzIGFzIGludmFsaWQgaWYgdGhleSBhcmUgc3RhbGUgKi9cbiAgcmVhZG9ubHkgaW52YWxpZElmU3RhbGU/OiBib29sZWFuO1xuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRocm93IG9yIGZhbGxiYWNrIHRvICovXG4gIGVycm9yUG9saWN5PyhlcnJvcjogYW55KTogJ2hhcmQnIHwgJ3NvZnQnIHwgdW5kZWZpbmVkO1xuICBvcHRpbWlzdGljPzogYm9vbGVhbjtcbn1cbiJdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { FetchFunction, ResolveType } from '@data-client/endpoint';
|
|
2
|
-
import { PartialRestGenerics, RestInstanceBase, RestFetch } from './RestEndpoint.js';
|
|
3
|
-
import { PathArgs } from '../pathTypes.js';
|
|
4
|
-
export type OptionsToFunction<O extends PartialRestGenerics, E extends RestInstanceBase & {
|
|
5
|
-
body?: any;
|
|
6
|
-
}, F extends FetchFunction> = 'path' extends keyof O ? RestFetch<'searchParams' extends keyof O ? O['searchParams'] & PathArgs<Exclude<O['path'], undefined>> : PathArgs<Exclude<O['path'], undefined>>, 'body' extends keyof O ? O['body'] : E['body'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>> : 'body' extends keyof O ? RestFetch<'searchParams' extends keyof O ? O['searchParams'] & PathArgs<Exclude<E['path'], undefined>> : PathArgs<Exclude<E['path'], undefined>>, O['body'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>> : 'searchParams' extends keyof O ? RestFetch<O['searchParams'] & PathArgs<Exclude<E['path'], undefined>>, E['body'], O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>> : (this: ThisParameterType<F>, ...args: Parameters<F>) => Promise<O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>>;
|
|
7
|
-
//# sourceMappingURL=OptionsToFunction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OptionsToFunction.d.ts","sourceRoot":"","sources":["../../src/next/OptionsToFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,mBAAmB,EAC7B,CAAC,SAAS,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,EAC3C,CAAC,SAAS,aAAa,IACrB,MAAM,SAAS,MAAM,CAAC,GACtB,SAAS,CACP,cAAc,SAAS,MAAM,CAAC,GAC1B,CAAC,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAC3D,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAC3C,MAAM,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAC9C,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CACpE,GACD,MAAM,SAAS,MAAM,CAAC,GACtB,SAAS,CACP,cAAc,SAAS,MAAM,CAAC,GAC1B,CAAC,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAC3D,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAC3C,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CACpE,GACD,cAAc,SAAS,MAAM,CAAC,GAC9B,SAAS,CACP,CAAC,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAC3D,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CACpE,GACD,CACE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KACnB,OAAO,CACV,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CACpE,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL25leHQvT3B0aW9uc1RvRnVuY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGZXRjaEZ1bmN0aW9uLCBSZXNvbHZlVHlwZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxSZXN0R2VuZXJpY3MsXG4gIFJlc3RJbnN0YW5jZUJhc2UsXG4gIFJlc3RGZXRjaCxcbn0gZnJvbSAnLi9SZXN0RW5kcG9pbnQuanMnO1xuaW1wb3J0IHsgUGF0aEFyZ3MgfSBmcm9tICcuLi9wYXRoVHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBPcHRpb25zVG9GdW5jdGlvbjxcbiAgTyBleHRlbmRzIFBhcnRpYWxSZXN0R2VuZXJpY3MsXG4gIEUgZXh0ZW5kcyBSZXN0SW5zdGFuY2VCYXNlICYgeyBib2R5PzogYW55IH0sXG4gIEYgZXh0ZW5kcyBGZXRjaEZ1bmN0aW9uLFxuPiA9ICdwYXRoJyBleHRlbmRzIGtleW9mIE9cbiAgPyBSZXN0RmV0Y2g8XG4gICAgICAnc2VhcmNoUGFyYW1zJyBleHRlbmRzIGtleW9mIE9cbiAgICAgICAgPyBPWydzZWFyY2hQYXJhbXMnXSAmIFBhdGhBcmdzPEV4Y2x1ZGU8T1sncGF0aCddLCB1bmRlZmluZWQ+PlxuICAgICAgICA6IFBhdGhBcmdzPEV4Y2x1ZGU8T1sncGF0aCddLCB1bmRlZmluZWQ+PixcbiAgICAgICdib2R5JyBleHRlbmRzIGtleW9mIE8gPyBPWydib2R5J10gOiBFWydib2R5J10sXG4gICAgICBPWydwcm9jZXNzJ10gZXh0ZW5kcyB7fSA/IFJldHVyblR5cGU8T1sncHJvY2VzcyddPiA6IFJlc29sdmVUeXBlPEY+XG4gICAgPlxuICA6ICdib2R5JyBleHRlbmRzIGtleW9mIE9cbiAgPyBSZXN0RmV0Y2g8XG4gICAgICAnc2VhcmNoUGFyYW1zJyBleHRlbmRzIGtleW9mIE9cbiAgICAgICAgPyBPWydzZWFyY2hQYXJhbXMnXSAmIFBhdGhBcmdzPEV4Y2x1ZGU8RVsncGF0aCddLCB1bmRlZmluZWQ+PlxuICAgICAgICA6IFBhdGhBcmdzPEV4Y2x1ZGU8RVsncGF0aCddLCB1bmRlZmluZWQ+PixcbiAgICAgIE9bJ2JvZHknXSxcbiAgICAgIE9bJ3Byb2Nlc3MnXSBleHRlbmRzIHt9ID8gUmV0dXJuVHlwZTxPWydwcm9jZXNzJ10+IDogUmVzb2x2ZVR5cGU8Rj5cbiAgICA+XG4gIDogJ3NlYXJjaFBhcmFtcycgZXh0ZW5kcyBrZXlvZiBPXG4gID8gUmVzdEZldGNoPFxuICAgICAgT1snc2VhcmNoUGFyYW1zJ10gJiBQYXRoQXJnczxFeGNsdWRlPEVbJ3BhdGgnXSwgdW5kZWZpbmVkPj4sXG4gICAgICBFWydib2R5J10sXG4gICAgICBPWydwcm9jZXNzJ10gZXh0ZW5kcyB7fSA/IFJldHVyblR5cGU8T1sncHJvY2VzcyddPiA6IFJlc29sdmVUeXBlPEY+XG4gICAgPlxuICA6IChcbiAgICAgIHRoaXM6IFRoaXNQYXJhbWV0ZXJUeXBlPEY+LFxuICAgICAgLi4uYXJnczogUGFyYW1ldGVyczxGPlxuICAgICkgPT4gUHJvbWlzZTxcbiAgICAgIE9bJ3Byb2Nlc3MnXSBleHRlbmRzIHt9ID8gUmV0dXJuVHlwZTxPWydwcm9jZXNzJ10+IDogUmVzb2x2ZVR5cGU8Rj5cbiAgICA+O1xuIl0sIm1hcHBpbmdzIjoiIn0=
|