@fjell/client-api 4.4.1 → 4.4.3

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.
Files changed (71) hide show
  1. package/dist/AItemAPI.js +8 -1
  2. package/dist/AItemAPI.js.map +1 -1
  3. package/dist/CItemAPI.d.ts +12 -9
  4. package/dist/CItemAPI.js +4 -1
  5. package/dist/CItemAPI.js.map +1 -1
  6. package/dist/ClientApi.d.ts +12 -10
  7. package/dist/ClientApiOptions.d.ts +5 -0
  8. package/dist/PItemAPI.d.ts +13 -10
  9. package/dist/PItemAPI.js +16 -10
  10. package/dist/PItemAPI.js.map +1 -1
  11. package/dist/index.cjs +173 -73
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/ops/action.d.ts +2 -2
  14. package/dist/ops/action.js +6 -5
  15. package/dist/ops/action.js.map +1 -1
  16. package/dist/ops/all.d.ts +2 -2
  17. package/dist/ops/all.js +7 -6
  18. package/dist/ops/all.js.map +1 -1
  19. package/dist/ops/allAction.d.ts +2 -2
  20. package/dist/ops/allAction.js +6 -5
  21. package/dist/ops/allAction.js.map +1 -1
  22. package/dist/ops/allFacet.d.ts +5 -0
  23. package/dist/ops/allFacet.js +24 -0
  24. package/dist/ops/allFacet.js.map +1 -0
  25. package/dist/ops/create.d.ts +2 -2
  26. package/dist/ops/create.js +6 -5
  27. package/dist/ops/create.js.map +1 -1
  28. package/dist/ops/facet.d.ts +5 -0
  29. package/dist/ops/facet.js +34 -0
  30. package/dist/ops/facet.js.map +1 -0
  31. package/dist/ops/find.d.ts +2 -2
  32. package/dist/ops/find.js +10 -9
  33. package/dist/ops/find.js.map +1 -1
  34. package/dist/ops/findOne.d.ts +5 -0
  35. package/dist/ops/findOne.js +27 -0
  36. package/dist/ops/findOne.js.map +1 -0
  37. package/dist/ops/get.d.ts +2 -2
  38. package/dist/ops/get.js +6 -5
  39. package/dist/ops/get.js.map +1 -1
  40. package/dist/ops/index.js +6 -0
  41. package/dist/ops/index.js.map +1 -1
  42. package/dist/ops/one.d.ts +2 -2
  43. package/dist/ops/one.js +7 -6
  44. package/dist/ops/one.js.map +1 -1
  45. package/dist/ops/remove.d.ts +2 -2
  46. package/dist/ops/remove.js +6 -5
  47. package/dist/ops/remove.js.map +1 -1
  48. package/dist/ops/update.d.ts +2 -2
  49. package/dist/ops/update.js +6 -5
  50. package/dist/ops/update.js.map +1 -1
  51. package/dist/util/general.d.ts +4 -0
  52. package/package.json +6 -6
  53. package/src/AItemAPI.ts +17 -9
  54. package/src/CItemAPI.ts +22 -16
  55. package/src/ClientApi.ts +59 -54
  56. package/src/ClientApiOptions.ts +5 -0
  57. package/src/PItemAPI.ts +56 -42
  58. package/src/ops/action.ts +19 -23
  59. package/src/ops/all.ts +17 -19
  60. package/src/ops/allAction.ts +18 -21
  61. package/src/ops/allFacet.ts +46 -0
  62. package/src/ops/create.ts +21 -23
  63. package/src/ops/facet.ts +58 -0
  64. package/src/ops/find.ts +20 -23
  65. package/src/ops/findOne.ts +51 -0
  66. package/src/ops/get.ts +17 -20
  67. package/src/ops/index.ts +80 -61
  68. package/src/ops/one.ts +3 -5
  69. package/src/ops/remove.ts +17 -20
  70. package/src/ops/update.ts +17 -19
  71. package/src/util/general.ts +65 -0
package/dist/index.cjs CHANGED
@@ -8,74 +8,78 @@ const deepmerge = require('deepmerge');
8
8
 
9
9
  const LibLogger = Logging.getLogger('@fjell/client-api');
10
10
 
11
- const logger$c = LibLogger.get('client-api', 'ops', 'all');
11
+ const logger$f = LibLogger.get('client-api', 'ops', 'all');
12
12
  const getAllOperation = (api, apiOptions, utilities)=>{
13
- const all = async (query = {}, options = {}, locations = [])=>{
14
- logger$c.default('all', {
15
- query,
16
- locations
17
- });
13
+ const all = async (query = {}, locations = [])=>{
18
14
  utilities.verifyLocations(locations);
19
15
  const loc = locations;
20
16
  const params = core.queryToParams(query);
21
- const requestOptions = Object.assign({}, options, {
17
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
22
18
  isAuthenticated: apiOptions.allAuthenticated,
23
19
  params
24
20
  });
21
+ logger$f.default('all', {
22
+ query,
23
+ locations,
24
+ requestOptions
25
+ });
25
26
  return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
26
27
  };
27
28
  return all;
28
29
  };
29
30
 
30
- const logger$b = LibLogger.get('client-api', 'ops', 'action');
31
+ const logger$e = LibLogger.get('client-api', 'ops', 'action');
31
32
  const getActionOperation = (api, apiOptions, utilities)=>{
32
- const action = async (ik, action, body = {}, options = {})=>{
33
- logger$b.default('action', {
33
+ const action = async (ik, action, body = {})=>{
34
+ const requestOptions = Object.assign({}, apiOptions.postOptions, {
35
+ isAuthenticated: apiOptions.writeAuthenticated
36
+ });
37
+ logger$e.default('action', {
34
38
  ik,
35
39
  action,
36
- body
37
- });
38
- const requestOptions = Object.assign({}, options, {
39
- isAuthenticated: apiOptions.writeAuthenticated
40
+ body,
41
+ requestOptions
40
42
  });
41
43
  return utilities.validatePK(await utilities.processOne(api.httpPost(`${utilities.getPath(ik)}/${action}`, body, requestOptions)));
42
44
  };
43
45
  return action;
44
46
  };
45
47
 
46
- const logger$a = LibLogger.get('client-api', 'ops', 'allAction');
48
+ const logger$d = LibLogger.get('client-api', 'ops', 'allAction');
47
49
  const getAllActionOperation = (api, apiOptions, utilities)=>{
48
- const allAction = async (action, body = {}, options = {}, locations = [])=>{
49
- logger$a.default('allAction', {
50
+ const allAction = async (action, body = {}, locations = [])=>{
51
+ const requestOptions = Object.assign({}, apiOptions.postOptions, {
52
+ isAuthenticated: apiOptions.writeAuthenticated
53
+ });
54
+ logger$d.default('allAction', {
50
55
  action,
51
56
  body,
52
- locations
57
+ locations,
58
+ requestOptions
53
59
  });
54
60
  utilities.verifyLocations(locations);
55
61
  const loc = locations;
56
- const requestOptions = Object.assign({}, options, {
57
- isAuthenticated: apiOptions.writeAuthenticated
58
- });
59
62
  // TODO: This should respond to either a single object, or multiple objects in an array.
60
63
  return utilities.validatePK(await utilities.processArray(api.httpPost(utilities.getPath(loc), body, requestOptions)));
61
64
  };
62
65
  return allAction;
63
66
  };
64
67
 
65
- const logger$9 = LibLogger.get('client-api', 'ops', 'one');
68
+ const logger$c = LibLogger.get('client-api', 'ops', 'one');
66
69
  const getOneOperation = (api, apiOptions, utilities)=>{
67
- const one = async (query = {}, options = {}, locations = [])=>{
68
- logger$9.default('one', {
69
- query,
70
- locations
71
- });
70
+ const one = async (query = {}, locations = [])=>{
72
71
  utilities.verifyLocations(locations);
73
72
  const loc = locations;
74
73
  const params = core.queryToParams(query);
75
- const requestOptions = Object.assign({}, options, {
74
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
76
75
  isAuthenticated: apiOptions.readAuthenticated,
77
76
  params
78
77
  });
78
+ logger$c.default('one', {
79
+ query,
80
+ locations,
81
+ requestOptions
82
+ });
79
83
  let item = null;
80
84
  const items = utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
81
85
  if (items.length > 0) {
@@ -86,85 +90,162 @@ const getOneOperation = (api, apiOptions, utilities)=>{
86
90
  return one;
87
91
  };
88
92
 
89
- const logger$8 = LibLogger.get('client-api', 'ops', 'create');
93
+ const logger$b = LibLogger.get('client-api', 'ops', 'create');
90
94
  const getCreateOperation = (api, apiOptions, utilities)=>{
91
- const create = async (item, options = {}, locations = [])=>{
92
- logger$8.default('create', {
95
+ const create = async (item, locations = [])=>{
96
+ const requestOptions = Object.assign({}, apiOptions.postOptions, {
97
+ isAuthenticated: apiOptions.writeAuthenticated
98
+ });
99
+ logger$b.default('create', {
93
100
  item,
94
- locations
101
+ locations,
102
+ requestOptions
95
103
  });
96
104
  utilities.verifyLocations(locations);
97
105
  const loc = locations;
98
- const requestOptions = Object.assign({}, options, {
99
- isAuthenticated: apiOptions.writeAuthenticated
100
- });
101
106
  const created = utilities.validatePK(await utilities.processOne(api.httpPost(utilities.getPath(loc), item, requestOptions)));
102
107
  return created;
103
108
  };
104
109
  return create;
105
110
  };
106
111
 
107
- const logger$7 = LibLogger.get('client-api', 'ops', 'update');
112
+ const logger$a = LibLogger.get('client-api', 'ops', 'update');
108
113
  const getUpdateOperation = (api, apiOptions, utilities)=>{
109
- const update = async (ik, item, options = {})=>{
110
- logger$7.default('update', {
111
- ik,
112
- item
113
- });
114
- const requestOptions = Object.assign({}, options, {
114
+ const update = async (ik, item)=>{
115
+ const requestOptions = Object.assign({}, apiOptions.putOptions, {
115
116
  isAuthenticated: apiOptions.writeAuthenticated
116
117
  });
118
+ logger$a.default('update', {
119
+ ik,
120
+ item,
121
+ requestOptions
122
+ });
117
123
  return utilities.validatePK(await utilities.processOne(api.httpPut(utilities.getPath(ik), item, requestOptions)));
118
124
  };
119
125
  return update;
120
126
  };
121
127
 
122
- const logger$6 = LibLogger.get('client-api', 'ops', 'get');
128
+ const logger$9 = LibLogger.get('client-api', 'ops', 'get');
123
129
  const getGetOperation = (api, apiOptions, utilities)=>{
124
- const get = async (ik, options = {})=>{
125
- logger$6.default('get', {
126
- ik
127
- });
128
- const requestOptions = Object.assign({}, options, {
130
+ const get = async (ik)=>{
131
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
129
132
  isAuthenticated: apiOptions.readAuthenticated
130
133
  });
134
+ logger$9.default('get', {
135
+ ik,
136
+ requestOptions
137
+ });
131
138
  return utilities.validatePK(await utilities.processOne(api.httpGet(utilities.getPath(ik), requestOptions)));
132
139
  };
133
140
  return get;
134
141
  };
135
142
 
136
- const logger$5 = LibLogger.get('client-api', 'ops', 'remove');
143
+ const logger$8 = LibLogger.get('client-api', 'ops', 'remove');
137
144
  const getRemoveOperation = (api, apiOptions, utilities)=>{
138
- const remove = async (ik, options = {})=>{
139
- logger$5.default('remove', {
140
- ik
141
- });
142
- const requestOptions = Object.assign({}, options, {
145
+ const remove = async (ik)=>{
146
+ const requestOptions = Object.assign({}, apiOptions.deleteOptions, {
143
147
  isAuthenticated: apiOptions.writeAuthenticated
144
148
  });
149
+ logger$8.default('remove', {
150
+ ik,
151
+ requestOptions
152
+ });
145
153
  return api.httpDelete(utilities.getPath(ik), requestOptions);
146
154
  };
147
155
  return remove;
148
156
  };
149
157
 
150
- const logger$4 = LibLogger.get('client-api', 'ops', 'find');
158
+ const logger$7 = LibLogger.get('client-api', 'ops', 'find');
151
159
  const getFindOperation = (api, apiOptions, utilities)=>{
152
- const find = async (finder, finderParams, options = {}, locations = [])=>{
153
- logger$4.default('find', {
160
+ const find = async (finder, finderParams = {}, locations = [])=>{
161
+ utilities.verifyLocations(locations);
162
+ const loc = locations;
163
+ const mergedParams = finderToParams(finder, finderParams);
164
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
165
+ isAuthenticated: apiOptions.allAuthenticated,
166
+ params: mergedParams
167
+ });
168
+ logger$7.default('find', {
154
169
  finder,
155
170
  finderParams,
156
- locations
171
+ locations,
172
+ requestOptions
157
173
  });
174
+ return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
175
+ };
176
+ return find;
177
+ };
178
+
179
+ const logger$6 = LibLogger.get('client-api', 'ops', 'find');
180
+ const getFindOneOperation = (api, apiOptions, utilities)=>{
181
+ const findOne = async (finder, finderParams = {}, locations = [])=>{
158
182
  utilities.verifyLocations(locations);
159
183
  const loc = locations;
160
184
  const params = finderToParams(finder, finderParams);
161
- const requestOptions = Object.assign({}, options, {
185
+ params.one = true;
186
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
162
187
  isAuthenticated: apiOptions.allAuthenticated,
163
188
  params
164
189
  });
165
- return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
190
+ logger$6.default('findOne', {
191
+ finder,
192
+ finderParams,
193
+ locations,
194
+ requestOptions
195
+ });
196
+ return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)))[0];
166
197
  };
167
- return find;
198
+ return findOne;
199
+ };
200
+
201
+ const logger$5 = LibLogger.get('client-api', 'ops', 'facet');
202
+ const getFacetOperation = (api, apiOptions, utilities)=>{
203
+ /**
204
+ * Executes a facet operation on an item.
205
+ *
206
+ * A facet is a piece of information that is related to an item - it represents
207
+ * a specific aspect or characteristic of the item. Unlike actions which may
208
+ * return items or perform operations, facets are informational queries that
209
+ * return data about a particular facet of an item.
210
+ *
211
+ * @param ik - The item key (composite or primary key) identifying the item
212
+ * @param facet - The name of the facet to query
213
+ * @param body - Optional request body for the facet operation
214
+ * @param options - Optional HTTP request options
215
+ * @returns Promise resolving to the facet data
216
+ */ const facet = async (ik, facet, params = {})=>{
217
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
218
+ isAuthenticated: apiOptions.writeAuthenticated,
219
+ params
220
+ });
221
+ logger$5.default('facet', {
222
+ ik,
223
+ facet,
224
+ requestOptions
225
+ });
226
+ return api.httpGet(`${utilities.getPath(ik)}/${facet}`, requestOptions);
227
+ };
228
+ return facet;
229
+ };
230
+
231
+ const logger$4 = LibLogger.get('client-api', 'ops', 'allFacet');
232
+ const getAllFacetOperation = (api, apiOptions, utilities)=>{
233
+ const allFacet = async (facet, params = {}, locations = [])=>{
234
+ const requestOptions = Object.assign({}, apiOptions.getOptions, {
235
+ isAuthenticated: apiOptions.writeAuthenticated,
236
+ params
237
+ });
238
+ logger$4.default('allFacet', {
239
+ facet,
240
+ locations,
241
+ requestOptions
242
+ });
243
+ utilities.verifyLocations(locations);
244
+ const loc = locations;
245
+ // TODO: This should respond to either a single object, or multiple objects in an array.
246
+ return api.httpGet(utilities.getPath(loc), requestOptions);
247
+ };
248
+ return allFacet;
168
249
  };
169
250
 
170
251
  const getOperations = (api, apiOptions, utilities)=>{
@@ -172,7 +253,10 @@ const getOperations = (api, apiOptions, utilities)=>{
172
253
  action: getActionOperation(api, apiOptions, utilities),
173
254
  all: getAllOperation(api, apiOptions, utilities),
174
255
  allAction: getAllActionOperation(api, apiOptions, utilities),
256
+ allFacet: getAllFacetOperation(api, apiOptions, utilities),
175
257
  create: getCreateOperation(api, apiOptions, utilities),
258
+ facet: getFacetOperation(api, apiOptions, utilities),
259
+ findOne: getFindOneOperation(api, apiOptions, utilities),
176
260
  find: getFindOperation(api, apiOptions, utilities),
177
261
  get: getGetOperation(api, apiOptions, utilities),
178
262
  one: getOneOperation(api, apiOptions, utilities),
@@ -345,7 +429,11 @@ const createAItemAPI = (api, pkType, pathNames, options)=>{
345
429
  const defaultOptions = {
346
430
  readAuthenticated: true,
347
431
  allAuthenticated: true,
348
- writeAuthenticated: true
432
+ writeAuthenticated: true,
433
+ getOptions: {},
434
+ postOptions: {},
435
+ putOptions: {},
436
+ deleteOptions: {}
349
437
  };
350
438
  if (options) {
351
439
  mergedOptions = Object.assign({}, defaultOptions, options);
@@ -358,8 +446,11 @@ const createAItemAPI = (api, pkType, pathNames, options)=>{
358
446
  action: operations.action,
359
447
  all: operations.all,
360
448
  allAction: operations.allAction,
449
+ allFacet: operations.allFacet,
361
450
  create: operations.create,
451
+ facet: operations.facet,
362
452
  find: operations.find,
453
+ findOne: operations.findOne,
363
454
  get: operations.get,
364
455
  one: operations.one,
365
456
  remove: operations.remove,
@@ -380,12 +471,15 @@ const createCItemApi = (api, type, pathNames, options)=>{
380
471
  action: aItemAPI.action,
381
472
  all: aItemAPI.all,
382
473
  allAction: aItemAPI.allAction,
474
+ allFacet: aItemAPI.allFacet,
383
475
  one: aItemAPI.one,
384
476
  get: aItemAPI.get,
385
477
  create: aItemAPI.create,
386
478
  remove: aItemAPI.remove,
387
479
  update: aItemAPI.update,
388
- find: aItemAPI.find
480
+ facet: aItemAPI.facet,
481
+ find: aItemAPI.find,
482
+ findOne: aItemAPI.findOne
389
483
  };
390
484
  };
391
485
 
@@ -399,26 +493,32 @@ const createPItemApi = (api, type, pathName, options)=>{
399
493
  const aItemAPI = createAItemAPI(api, type, [
400
494
  pathName
401
495
  ], options);
402
- const action = async (ik, action, body = {}, options = {})=>await aItemAPI.action(ik, action, body, options);
403
- const all = async (query = {}, options = {})=>await aItemAPI.all(query, options, []);
404
- const allAction = async (action, body = {}, options = {})=>await aItemAPI.allAction(action, body, options, []);
405
- const one = async (query = {}, options = {})=>await aItemAPI.one(query, options, []);
406
- const get = async (ik, options = {})=>await aItemAPI.get(ik, options);
407
- const create = async (item, options = {})=>await aItemAPI.create(item, options, []);
408
- const remove = async (ik, options = {})=>await aItemAPI.remove(ik, options);
409
- const update = async (ik, item, options = {})=>await aItemAPI.update(ik, item, options);
410
- const find = async (finder, finderParams, options = {})=>await aItemAPI.find(finder, finderParams, options, []);
496
+ const action = async (ik, action, body = {})=>await aItemAPI.action(ik, action, body);
497
+ const all = async (query = {})=>await aItemAPI.all(query, []);
498
+ const allAction = async (action, body = {})=>await aItemAPI.allAction(action, body, []);
499
+ const allFacet = async (facet, params = {})=>await aItemAPI.allFacet(facet, params);
500
+ const one = async (query = {})=>await aItemAPI.one(query, []);
501
+ const get = async (ik)=>await aItemAPI.get(ik);
502
+ const create = async (item)=>await aItemAPI.create(item, []);
503
+ const remove = async (ik)=>await aItemAPI.remove(ik);
504
+ const update = async (ik, item)=>await aItemAPI.update(ik, item);
505
+ const facet = async (ik, facet, params = {})=>await aItemAPI.facet(ik, facet, params);
506
+ const find = async (finder, finderParams = {})=>await aItemAPI.find(finder, finderParams);
507
+ const findOne = async (finder, finderParams = {})=>await aItemAPI.findOne(finder, finderParams);
411
508
  return {
412
509
  ...aItemAPI,
413
510
  action,
414
511
  all,
415
512
  allAction,
513
+ allFacet,
416
514
  one,
417
515
  get,
418
516
  create,
419
517
  remove,
420
518
  update,
421
- find
519
+ facet,
520
+ find,
521
+ findOne
422
522
  };
423
523
  };
424
524