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 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
- if (this.method === 'GET') {
33
- uri.search = qs.stringify(newFormData);
34
- const resource = this.client.go(uri.toString());
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(newFormData);
70
+ body = qs.stringify(formData);
41
71
  break;
42
72
  case 'application/json':
43
- body = JSON.stringify(newFormData);
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
- const response = await this.client.fetcher.fetchOrThrow(uri.toString(), {
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);
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":";;;AACA,kCAAkC;AAyDlC,MAAa,YAAY;IAyCvB,YAAY,MAAc,EAAE,QAAoB;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,KAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,CAAqB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IAEH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAmB;QAE9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,MAAM,WAAW,GAAc;YAC7B,GAAG,QAAQ;SACZ,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAEhC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAE9B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,mEAAmE;oBACnE,oCAAoC;oBACnC,WAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACjD,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,iCAAiC,CAAC,CAAC;gBACtE,CAAC;YAEH,CAAC;QAEH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC;QACT,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,KAAK,mCAAmC;gBACtC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,kBAAkB;gBACrB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,WAAW,kCAAkC,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACtE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI;YACJ,OAAO,EAAE;gBACP,cAAc,EAAE,IAAI,CAAC,WAAW;aACjC;SACF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IAEf,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;CACF;AA5GD,oCA4GC;AAED,MAAa,cAAe,SAAQ,KAAK;CAAG;AAA5C,wCAA4C"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
@@ -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.
@@ -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":"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"}
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
  */
@@ -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
- if (!this.actionInfo.length) {
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
- throw new action_1.ActionNotFound('This State defines no action');
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) {
@@ -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":";;AA8HA,0BAQC;AArID,kCAA+C;AA6H/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"}
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.2",
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": "^2.13.1",
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
- if (this.method === 'GET') {
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(newFormData);
192
+ body = qs.stringify(formData);
145
193
  break;
146
194
  case 'application/json':
147
- body = JSON.stringify(newFormData);
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
- const response = await this.client.fetcher.fetchOrThrow(uri.toString(), {
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 {
@@ -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.
@@ -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
- if (!this.actionInfo.length) {
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
- throw new ActionNotFound('This State defines no action');
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
  }
@@ -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