ketting 8.0.2 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.d.ts +14 -0
- package/dist/action.js +38 -10
- package/dist/action.js.map +1 -1
- package/dist/follow-promise.d.ts +14 -0
- package/dist/follow-promise.js +16 -0
- package/dist/follow-promise.js.map +1 -1
- package/dist/state/base-state.d.ts +2 -0
- package/dist/state/base-state.js +19 -2
- package/dist/state/base-state.js.map +1 -1
- package/dist/state/hal.js +3 -1
- package/dist/state/hal.js.map +1 -1
- package/dist/state/interface.d.ts +7 -1
- package/dist/state/interface.js.map +1 -1
- package/package.json +2 -2
- package/src/action.ts +56 -11
- package/src/follow-promise.ts +20 -0
- package/src/state/base-state.ts +26 -3
- package/src/state/hal.ts +4 -3
- package/src/state/interface.ts +8 -1
package/dist/action.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { State } from './state';
|
|
2
2
|
import Client from './client';
|
|
3
3
|
import { Field } from './field';
|
|
4
|
+
import Resource from './resource';
|
|
4
5
|
export interface ActionInfo {
|
|
5
6
|
/**
|
|
6
7
|
* What url to post the form to.
|
|
@@ -43,6 +44,16 @@ export interface Action<T extends Record<string, any> = Record<string, any>> ext
|
|
|
43
44
|
* Return a field by name.
|
|
44
45
|
*/
|
|
45
46
|
field(name: string): Field | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Execute the action or submit the form, then return the next resource.
|
|
49
|
+
*
|
|
50
|
+
* If a server responds with a 201 Status code and a Location header,
|
|
51
|
+
* it will automatically return the newly created resource.
|
|
52
|
+
*
|
|
53
|
+
* If the server responded with a 204 or 205, this function will return
|
|
54
|
+
* `this`.
|
|
55
|
+
*/
|
|
56
|
+
submitFollow(formData: T): Promise<Resource>;
|
|
46
57
|
}
|
|
47
58
|
export declare class SimpleAction<TFormData extends Record<string, any>> implements Action {
|
|
48
59
|
/**
|
|
@@ -82,6 +93,9 @@ export declare class SimpleAction<TFormData extends Record<string, any>> impleme
|
|
|
82
93
|
* Execute the action or submit the form.
|
|
83
94
|
*/
|
|
84
95
|
submit(formData: TFormData): Promise<State<any>>;
|
|
96
|
+
submitFollow(formData: TFormData): Promise<Resource>;
|
|
97
|
+
private validateForm;
|
|
98
|
+
private fetchOrThrowWithBody;
|
|
85
99
|
field(name: string): Field | undefined;
|
|
86
100
|
}
|
|
87
101
|
export declare class ActionNotFound extends Error {
|
package/dist/action.js
CHANGED
|
@@ -14,6 +14,38 @@ class SimpleAction {
|
|
|
14
14
|
*/
|
|
15
15
|
async submit(formData) {
|
|
16
16
|
const uri = new URL(this.uri);
|
|
17
|
+
const newFormData = this.validateForm(formData);
|
|
18
|
+
if (this.method === 'GET') {
|
|
19
|
+
uri.search = qs.stringify(newFormData);
|
|
20
|
+
const resource = this.client.go(uri.toString());
|
|
21
|
+
return resource.get();
|
|
22
|
+
}
|
|
23
|
+
const response = await this.fetchOrThrowWithBody(uri, newFormData);
|
|
24
|
+
const state = this.client.getStateForResponse(uri.toString(), response);
|
|
25
|
+
return state;
|
|
26
|
+
}
|
|
27
|
+
async submitFollow(formData) {
|
|
28
|
+
const uri = new URL(this.uri);
|
|
29
|
+
const newFormData = this.validateForm(formData);
|
|
30
|
+
if (this.method === 'GET') {
|
|
31
|
+
uri.search = qs.stringify(newFormData);
|
|
32
|
+
return this.client.go(uri.toString());
|
|
33
|
+
}
|
|
34
|
+
const response = await this.fetchOrThrowWithBody(uri, newFormData);
|
|
35
|
+
switch (response.status) {
|
|
36
|
+
case 201:
|
|
37
|
+
if (response.headers.has('location')) {
|
|
38
|
+
return this.client.go(response.headers.get('location'));
|
|
39
|
+
}
|
|
40
|
+
throw new Error('Could not follow after a 201 request, because the server did not reply with a Location header. If you sent a Location header, check if your service is returning "Access-Control-Expose-Headers: Location".');
|
|
41
|
+
case 204:
|
|
42
|
+
case 205:
|
|
43
|
+
return this.client.go(uri.toString());
|
|
44
|
+
default:
|
|
45
|
+
throw new Error('Did not receive a 201, 204 or 205 status code so we could not follow to the next resource');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
validateForm(formData) {
|
|
17
49
|
const newFormData = {
|
|
18
50
|
...formData
|
|
19
51
|
};
|
|
@@ -29,31 +61,27 @@ class SimpleAction {
|
|
|
29
61
|
}
|
|
30
62
|
}
|
|
31
63
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return resource.get();
|
|
36
|
-
}
|
|
64
|
+
return newFormData;
|
|
65
|
+
}
|
|
66
|
+
fetchOrThrowWithBody(uri, formData) {
|
|
37
67
|
let body;
|
|
38
68
|
switch (this.contentType) {
|
|
39
69
|
case 'application/x-www-form-urlencoded':
|
|
40
|
-
body = qs.stringify(
|
|
70
|
+
body = qs.stringify(formData);
|
|
41
71
|
break;
|
|
42
72
|
case 'application/json':
|
|
43
|
-
body = JSON.stringify(
|
|
73
|
+
body = JSON.stringify(formData);
|
|
44
74
|
break;
|
|
45
75
|
default:
|
|
46
76
|
throw new Error(`Serializing mimetype ${this.contentType} is not yet supported in actions`);
|
|
47
77
|
}
|
|
48
|
-
|
|
78
|
+
return this.client.fetcher.fetchOrThrow(uri.toString(), {
|
|
49
79
|
method: this.method,
|
|
50
80
|
body,
|
|
51
81
|
headers: {
|
|
52
82
|
'Content-Type': this.contentType
|
|
53
83
|
}
|
|
54
84
|
});
|
|
55
|
-
const state = this.client.getStateForResponse(uri.toString(), response);
|
|
56
|
-
return state;
|
|
57
85
|
}
|
|
58
86
|
field(name) {
|
|
59
87
|
return this.fields.find(field => field.name === name);
|
package/dist/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":";;;AACA,kCAAkC;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/follow-promise.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Resource from './resource';
|
|
2
2
|
import { LinkVariables } from './link';
|
|
3
|
+
import { State } from './state';
|
|
4
|
+
import { GetRequestOptions } from './types';
|
|
3
5
|
/**
|
|
4
6
|
* Base interface for both FollowOne and FollowAll
|
|
5
7
|
*/
|
|
@@ -63,6 +65,12 @@ export declare class FollowPromiseOne<T = any> extends FollowPromise<Resource<T>
|
|
|
63
65
|
* For example: resource.follow('foo').follow('bar');
|
|
64
66
|
*/
|
|
65
67
|
follow<TNested = any>(rel: string, variables?: LinkVariables): FollowPromiseOne<TNested>;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the current state of the resource.
|
|
70
|
+
*
|
|
71
|
+
* This function will return a State object.
|
|
72
|
+
*/
|
|
73
|
+
get(getOptions?: GetRequestOptions): Promise<State<T>>;
|
|
66
74
|
/**
|
|
67
75
|
* Follows a set of links immediately after following this link.
|
|
68
76
|
*
|
|
@@ -93,6 +101,12 @@ export declare class FollowPromiseMany<T = any> extends FollowPromise<Resource<T
|
|
|
93
101
|
* Implementation of a Promise.finally function
|
|
94
102
|
*/
|
|
95
103
|
finally<TResult1 = any>(onfinally: () => TResult1 | PromiseLike<TResult1>): Promise<TResult1>;
|
|
104
|
+
/**
|
|
105
|
+
* Gets the current states of the resources.
|
|
106
|
+
*
|
|
107
|
+
* This function will return an array of State object.
|
|
108
|
+
*/
|
|
109
|
+
get(getOptions?: GetRequestOptions): Promise<State<T>[]>;
|
|
96
110
|
/**
|
|
97
111
|
* This function does the actual fetching, to obtained the url
|
|
98
112
|
* of the linked resource. It returns the Resource object.
|
package/dist/follow-promise.js
CHANGED
|
@@ -82,6 +82,14 @@ class FollowPromiseOne extends FollowPromise {
|
|
|
82
82
|
follow(rel, variables) {
|
|
83
83
|
return new FollowPromiseOne(this.fetchLinkedResource(), rel, variables);
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Gets the current state of the resource.
|
|
87
|
+
*
|
|
88
|
+
* This function will return a State object.
|
|
89
|
+
*/
|
|
90
|
+
async get(getOptions) {
|
|
91
|
+
return (await this).get(getOptions);
|
|
92
|
+
}
|
|
85
93
|
/**
|
|
86
94
|
* Follows a set of links immediately after following this link.
|
|
87
95
|
*
|
|
@@ -146,6 +154,14 @@ class FollowPromiseMany extends FollowPromise {
|
|
|
146
154
|
finally(onfinally) {
|
|
147
155
|
return this.then(() => onfinally(), () => onfinally());
|
|
148
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Gets the current states of the resources.
|
|
159
|
+
*
|
|
160
|
+
* This function will return an array of State object.
|
|
161
|
+
*/
|
|
162
|
+
async get(getOptions) {
|
|
163
|
+
return Promise.all((await this).map(resource => resource.get(getOptions)));
|
|
164
|
+
}
|
|
149
165
|
/**
|
|
150
166
|
* This function does the actual fetching, to obtained the url
|
|
151
167
|
* of the linked resource. It returns the Resource object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow-promise.js","sourceRoot":"","sources":["../src/follow-promise.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"follow-promise.js","sourceRoot":"","sources":["../src/follow-promise.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,6 +83,8 @@ export declare class BaseState<T> extends BaseHeadState implements State<T> {
|
|
|
83
83
|
* formats that only supply 1 action, and no name.
|
|
84
84
|
*/
|
|
85
85
|
action<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData>;
|
|
86
|
+
findAction<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> | undefined;
|
|
87
|
+
private doFindAction;
|
|
86
88
|
/**
|
|
87
89
|
* Returns all actions
|
|
88
90
|
*/
|
package/dist/state/base-state.js
CHANGED
|
@@ -93,9 +93,26 @@ class BaseState extends BaseHeadState {
|
|
|
93
93
|
* formats that only supply 1 action, and no name.
|
|
94
94
|
*/
|
|
95
95
|
action(name) {
|
|
96
|
-
|
|
96
|
+
const actionSearchResult = this.doFindAction(name);
|
|
97
|
+
if (actionSearchResult === 'NO_ACTION_DEFINED') {
|
|
97
98
|
throw new action_1.ActionNotFound('This State does not define any actions');
|
|
98
99
|
}
|
|
100
|
+
if (actionSearchResult === 'NO_ACTION_FOR_THE_PROVIDED_NAME') {
|
|
101
|
+
throw new action_1.ActionNotFound('This State defines no action');
|
|
102
|
+
}
|
|
103
|
+
return actionSearchResult;
|
|
104
|
+
}
|
|
105
|
+
findAction(name) {
|
|
106
|
+
const actionSearchResult = this.doFindAction(name);
|
|
107
|
+
if (typeof actionSearchResult !== 'object') {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return actionSearchResult;
|
|
111
|
+
}
|
|
112
|
+
doFindAction(name) {
|
|
113
|
+
if (!this.actionInfo.length) {
|
|
114
|
+
return 'NO_ACTION_DEFINED';
|
|
115
|
+
}
|
|
99
116
|
if (name === undefined) {
|
|
100
117
|
return new action_1.SimpleAction(this.client, this.actionInfo[0]);
|
|
101
118
|
}
|
|
@@ -104,7 +121,7 @@ class BaseState extends BaseHeadState {
|
|
|
104
121
|
return new action_1.SimpleAction(this.client, action);
|
|
105
122
|
}
|
|
106
123
|
}
|
|
107
|
-
|
|
124
|
+
return 'NO_ACTION_FOR_THE_PROVIDED_NAME';
|
|
108
125
|
}
|
|
109
126
|
/**
|
|
110
127
|
* Returns all actions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-state.js","sourceRoot":"","sources":["../../src/state/base-state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-state.js","sourceRoot":"","sources":["../../src/state/base-state.ts"],"names":[],"mappings":"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"}
|
package/dist/state/hal.js
CHANGED
|
@@ -194,7 +194,7 @@ function parseHalForms(context, body) {
|
|
|
194
194
|
title: hf.title,
|
|
195
195
|
method: hf.method,
|
|
196
196
|
contentType: hf.contentType || 'application/json',
|
|
197
|
-
fields: hf.properties ? hf.properties.map(prop => parseHalField(prop)) : [],
|
|
197
|
+
fields: hf.properties ? hf.properties.map(prop => parseHalField(prop)).filter(prop => !!prop) : [],
|
|
198
198
|
};
|
|
199
199
|
});
|
|
200
200
|
}
|
|
@@ -353,6 +353,8 @@ function parseHalField(halField) {
|
|
|
353
353
|
label: halField.prompt,
|
|
354
354
|
value: !!halField.value,
|
|
355
355
|
};
|
|
356
|
+
default:
|
|
357
|
+
return undefined;
|
|
356
358
|
}
|
|
357
359
|
}
|
|
358
360
|
function isInlineOptions(options) {
|
package/dist/state/hal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hal.js","sourceRoot":"","sources":["../../src/state/hal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hal.js","sourceRoot":"","sources":["../../src/state/hal.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,12 @@ export type State<T = any> = {
|
|
|
46
46
|
* If the format provides a default action, the name may be omitted.
|
|
47
47
|
*/
|
|
48
48
|
action<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData>;
|
|
49
|
+
/**
|
|
50
|
+
* Find an action by name.
|
|
51
|
+
*
|
|
52
|
+
* If the format provides a default action, the name may be omitted.
|
|
53
|
+
*/
|
|
54
|
+
findAction<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> | undefined;
|
|
49
55
|
/**
|
|
50
56
|
* Returns all actions
|
|
51
57
|
*/
|
|
@@ -98,7 +104,7 @@ export type State<T = any> = {
|
|
|
98
104
|
* Some information in HEAD responses might be available, but many aren't.
|
|
99
105
|
* Notably, the body.
|
|
100
106
|
*/
|
|
101
|
-
export type HeadState = Omit<State, 'data' | 'action' | 'actions' | 'hasAction' | 'serializeBody' | 'getEmbedded' | 'client' | 'clone'>;
|
|
107
|
+
export type HeadState = Omit<State, 'data' | 'action' | 'findAction' | 'actions' | 'hasAction' | 'serializeBody' | 'getEmbedded' | 'client' | 'clone'>;
|
|
102
108
|
/**
|
|
103
109
|
* A 'StateFactory' is responsible for taking a Fetch Response, and returning
|
|
104
110
|
* an object that impements the State interface
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/state/interface.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/state/interface.ts"],"names":[],"mappings":";;AAqIA,0BAQC;AA5ID,kCAA+C;AAoI/C,SAAgB,OAAO,CAAC,KAA0B;IAEhD,OAAO,CACL,OAAQ,KAAa,CAAC,GAAG,KAAK,QAAQ;QACrC,KAAa,CAAC,KAAK,YAAY,YAAK;QACpC,KAAa,CAAC,OAAO,YAAY,OAAO,CAC1C,CAAC;AAEJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ketting",
|
|
3
|
-
"version": "8.0
|
|
3
|
+
"version": "8.1.0",
|
|
4
4
|
"description": "Opiniated HATEAOS / Rest client.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@types/node": "^18.7.14",
|
|
57
57
|
"@types/sax": "^1.2.1",
|
|
58
58
|
"chai": "^5.2.0",
|
|
59
|
-
"koa": "^
|
|
59
|
+
"koa": "^3.1.2",
|
|
60
60
|
"koa-bodyparser": "^4.3.0",
|
|
61
61
|
"koa-logger": "^3.2.1",
|
|
62
62
|
"koa-path-match": "^3.0.0",
|
package/src/action.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { State } from './state';
|
|
|
2
2
|
import * as qs from 'querystring';
|
|
3
3
|
import Client from './client';
|
|
4
4
|
import { Field } from './field';
|
|
5
|
+
import Resource from './resource';
|
|
5
6
|
|
|
6
7
|
export interface ActionInfo {
|
|
7
8
|
|
|
@@ -54,6 +55,17 @@ export interface Action<T extends Record<string, any> = Record<string, any>> ext
|
|
|
54
55
|
* Return a field by name.
|
|
55
56
|
*/
|
|
56
57
|
field(name: string): Field | undefined;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Execute the action or submit the form, then return the next resource.
|
|
61
|
+
*
|
|
62
|
+
* If a server responds with a 201 Status code and a Location header,
|
|
63
|
+
* it will automatically return the newly created resource.
|
|
64
|
+
*
|
|
65
|
+
* If the server responded with a 204 or 205, this function will return
|
|
66
|
+
* `this`.
|
|
67
|
+
*/
|
|
68
|
+
submitFollow(formData: T): Promise<Resource>;
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
export class SimpleAction<TFormData extends Record<string, any>> implements Action {
|
|
@@ -113,6 +125,44 @@ export class SimpleAction<TFormData extends Record<string, any>> implements Acti
|
|
|
113
125
|
|
|
114
126
|
const uri = new URL(this.uri);
|
|
115
127
|
|
|
128
|
+
const newFormData = this.validateForm(formData);
|
|
129
|
+
|
|
130
|
+
if (this.method === 'GET') {
|
|
131
|
+
uri.search = qs.stringify(newFormData);
|
|
132
|
+
const resource = this.client.go(uri.toString());
|
|
133
|
+
return resource.get();
|
|
134
|
+
}
|
|
135
|
+
const response = await this.fetchOrThrowWithBody(uri, newFormData);
|
|
136
|
+
const state = this.client.getStateForResponse(uri.toString(), response);
|
|
137
|
+
return state;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async submitFollow(formData: TFormData): Promise<Resource> {
|
|
141
|
+
const uri = new URL(this.uri);
|
|
142
|
+
|
|
143
|
+
const newFormData = this.validateForm(formData);
|
|
144
|
+
|
|
145
|
+
if (this.method === 'GET') {
|
|
146
|
+
uri.search = qs.stringify(newFormData);
|
|
147
|
+
return this.client.go(uri.toString());
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const response = await this.fetchOrThrowWithBody(uri, newFormData);
|
|
151
|
+
switch (response.status) {
|
|
152
|
+
case 201:
|
|
153
|
+
if (response.headers.has('location')) {
|
|
154
|
+
return this.client.go(response.headers.get('location')!);
|
|
155
|
+
}
|
|
156
|
+
throw new Error('Could not follow after a 201 request, because the server did not reply with a Location header. If you sent a Location header, check if your service is returning "Access-Control-Expose-Headers: Location".');
|
|
157
|
+
case 204 :
|
|
158
|
+
case 205 :
|
|
159
|
+
return this.client.go(uri.toString());
|
|
160
|
+
default:
|
|
161
|
+
throw new Error('Did not receive a 201, 204 or 205 status code so we could not follow to the next resource');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private validateForm(formData: TFormData): TFormData {
|
|
116
166
|
const newFormData: TFormData = {
|
|
117
167
|
...formData
|
|
118
168
|
};
|
|
@@ -132,33 +182,28 @@ export class SimpleAction<TFormData extends Record<string, any>> implements Acti
|
|
|
132
182
|
}
|
|
133
183
|
|
|
134
184
|
}
|
|
185
|
+
return newFormData;
|
|
186
|
+
}
|
|
135
187
|
|
|
136
|
-
|
|
137
|
-
uri.search = qs.stringify(newFormData);
|
|
138
|
-
const resource = this.client.go(uri.toString());
|
|
139
|
-
return resource.get();
|
|
140
|
-
}
|
|
188
|
+
private fetchOrThrowWithBody(uri: URL, formData: TFormData): Promise<Response> {
|
|
141
189
|
let body;
|
|
142
190
|
switch (this.contentType) {
|
|
143
191
|
case 'application/x-www-form-urlencoded' :
|
|
144
|
-
body = qs.stringify(
|
|
192
|
+
body = qs.stringify(formData);
|
|
145
193
|
break;
|
|
146
194
|
case 'application/json':
|
|
147
|
-
body = JSON.stringify(
|
|
195
|
+
body = JSON.stringify(formData);
|
|
148
196
|
break;
|
|
149
197
|
default :
|
|
150
198
|
throw new Error(`Serializing mimetype ${this.contentType} is not yet supported in actions`);
|
|
151
199
|
}
|
|
152
|
-
|
|
200
|
+
return this.client.fetcher.fetchOrThrow(uri.toString(), {
|
|
153
201
|
method: this.method,
|
|
154
202
|
body,
|
|
155
203
|
headers: {
|
|
156
204
|
'Content-Type': this.contentType
|
|
157
205
|
}
|
|
158
206
|
});
|
|
159
|
-
const state = this.client.getStateForResponse(uri.toString(), response);
|
|
160
|
-
return state;
|
|
161
|
-
|
|
162
207
|
}
|
|
163
208
|
|
|
164
209
|
field(name: string): Field | undefined {
|
package/src/follow-promise.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Resource from './resource';
|
|
2
2
|
import { LinkVariables } from './link';
|
|
3
|
+
import {State} from './state';
|
|
4
|
+
import {GetRequestOptions} from './types';
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* Base interface for both FollowOne and FollowAll
|
|
@@ -123,6 +125,15 @@ export class FollowPromiseOne<T = any> extends FollowPromise<Resource<T>> {
|
|
|
123
125
|
|
|
124
126
|
}
|
|
125
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Gets the current state of the resource.
|
|
130
|
+
*
|
|
131
|
+
* This function will return a State object.
|
|
132
|
+
*/
|
|
133
|
+
async get(getOptions?: GetRequestOptions): Promise<State<T>> {
|
|
134
|
+
return (await this).get(getOptions);
|
|
135
|
+
}
|
|
136
|
+
|
|
126
137
|
/**
|
|
127
138
|
* Follows a set of links immediately after following this link.
|
|
128
139
|
*
|
|
@@ -219,6 +230,15 @@ export class FollowPromiseMany<T = any> extends FollowPromise<Resource<T>[]> {
|
|
|
219
230
|
|
|
220
231
|
}
|
|
221
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Gets the current states of the resources.
|
|
235
|
+
*
|
|
236
|
+
* This function will return an array of State object.
|
|
237
|
+
*/
|
|
238
|
+
async get(getOptions?: GetRequestOptions): Promise<State<T>[]> {
|
|
239
|
+
return Promise.all((await this).map(resource => resource.get(getOptions)));
|
|
240
|
+
}
|
|
241
|
+
|
|
222
242
|
/**
|
|
223
243
|
* This function does the actual fetching, to obtained the url
|
|
224
244
|
* of the linked resource. It returns the Resource object.
|
package/src/state/base-state.ts
CHANGED
|
@@ -165,9 +165,31 @@ export class BaseState<T> extends BaseHeadState implements State<T> {
|
|
|
165
165
|
*/
|
|
166
166
|
action<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> {
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
const actionSearchResult = this.doFindAction(name);
|
|
169
|
+
if (actionSearchResult === 'NO_ACTION_DEFINED') {
|
|
169
170
|
throw new ActionNotFound('This State does not define any actions');
|
|
170
171
|
}
|
|
172
|
+
if (actionSearchResult === 'NO_ACTION_FOR_THE_PROVIDED_NAME') {
|
|
173
|
+
throw new ActionNotFound('This State defines no action');
|
|
174
|
+
}
|
|
175
|
+
return actionSearchResult;
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
findAction<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> | undefined {
|
|
180
|
+
|
|
181
|
+
const actionSearchResult = this.doFindAction(name);
|
|
182
|
+
if (typeof actionSearchResult !== 'object') {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
return actionSearchResult;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private doFindAction<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> | ActionNotFoundReason {
|
|
189
|
+
|
|
190
|
+
if (!this.actionInfo.length) {
|
|
191
|
+
return 'NO_ACTION_DEFINED';
|
|
192
|
+
}
|
|
171
193
|
if (name === undefined) {
|
|
172
194
|
return new SimpleAction(this.client, this.actionInfo[0]);
|
|
173
195
|
}
|
|
@@ -176,8 +198,7 @@ export class BaseState<T> extends BaseHeadState implements State<T> {
|
|
|
176
198
|
return new SimpleAction(this.client, action);
|
|
177
199
|
}
|
|
178
200
|
}
|
|
179
|
-
|
|
180
|
-
|
|
201
|
+
return 'NO_ACTION_FOR_THE_PROVIDED_NAME';
|
|
181
202
|
}
|
|
182
203
|
|
|
183
204
|
/**
|
|
@@ -255,3 +276,5 @@ export class BaseState<T> extends BaseHeadState implements State<T> {
|
|
|
255
276
|
}
|
|
256
277
|
|
|
257
278
|
}
|
|
279
|
+
|
|
280
|
+
type ActionNotFoundReason = 'NO_ACTION_DEFINED' | 'NO_ACTION_FOR_THE_PROVIDED_NAME';
|
package/src/state/hal.ts
CHANGED
|
@@ -264,13 +264,13 @@ function parseHalForms(context: string, body: hal.HalResource): ActionInfo[] {
|
|
|
264
264
|
title: hf.title,
|
|
265
265
|
method: hf.method,
|
|
266
266
|
contentType: hf.contentType || 'application/json',
|
|
267
|
-
fields: hf.properties ? hf.properties.map(prop => parseHalField(prop)) : [],
|
|
267
|
+
fields: hf.properties ? hf.properties.map(prop => parseHalField(prop)).filter(prop => !!prop) : [],
|
|
268
268
|
};
|
|
269
269
|
});
|
|
270
270
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
function parseHalField(halField: hal.HalFormsProperty): Field {
|
|
273
|
+
function parseHalField(halField: hal.HalFormsProperty): Field | undefined {
|
|
274
274
|
|
|
275
275
|
switch(halField.type) {
|
|
276
276
|
case undefined:
|
|
@@ -429,7 +429,8 @@ function parseHalField(halField: hal.HalFormsProperty): Field {
|
|
|
429
429
|
label: halField.prompt,
|
|
430
430
|
value: !!halField.value,
|
|
431
431
|
};
|
|
432
|
-
|
|
432
|
+
default:
|
|
433
|
+
return undefined;
|
|
433
434
|
}
|
|
434
435
|
|
|
435
436
|
}
|
package/src/state/interface.ts
CHANGED
|
@@ -56,6 +56,13 @@ export type State<T = any> = {
|
|
|
56
56
|
*/
|
|
57
57
|
action<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData>;
|
|
58
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Find an action by name.
|
|
61
|
+
*
|
|
62
|
+
* If the format provides a default action, the name may be omitted.
|
|
63
|
+
*/
|
|
64
|
+
findAction<TFormData extends Record<string, any> = any>(name?: string): Action<TFormData> | undefined;
|
|
65
|
+
|
|
59
66
|
/**
|
|
60
67
|
* Returns all actions
|
|
61
68
|
*/
|
|
@@ -116,7 +123,7 @@ export type State<T = any> = {
|
|
|
116
123
|
* Some information in HEAD responses might be available, but many aren't.
|
|
117
124
|
* Notably, the body.
|
|
118
125
|
*/
|
|
119
|
-
export type HeadState = Omit<State, 'data' | 'action' | 'actions' | 'hasAction' | 'serializeBody' | 'getEmbedded' | 'client' | 'clone'>;
|
|
126
|
+
export type HeadState = Omit<State, 'data' | 'action' | 'findAction' | 'actions' | 'hasAction' | 'serializeBody' | 'getEmbedded' | 'client' | 'clone'>;
|
|
120
127
|
|
|
121
128
|
/**
|
|
122
129
|
* A 'StateFactory' is responsible for taking a Fetch Response, and returning
|