@zajno/common 2.6.6 → 2.7.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.
Files changed (163) hide show
  1. package/cjs/api/builder.js +18 -11
  2. package/cjs/api/builder.js.map +1 -1
  3. package/cjs/api/call.config.js +77 -0
  4. package/cjs/api/call.config.js.map +1 -0
  5. package/cjs/api/call.js +16 -51
  6. package/cjs/api/call.js.map +1 -1
  7. package/cjs/api/call.types.js +2 -0
  8. package/cjs/api/call.types.js.map +1 -1
  9. package/cjs/api/config.js +43 -0
  10. package/cjs/api/config.js.map +1 -0
  11. package/cjs/api/endpoint.js +10 -0
  12. package/cjs/api/endpoint.js.map +1 -1
  13. package/cjs/api/extensions/contentType.js +9 -0
  14. package/cjs/api/extensions/contentType.js.map +1 -1
  15. package/cjs/api/extensions/endpointHooks.js +41 -0
  16. package/cjs/api/extensions/endpointHooks.js.map +1 -0
  17. package/cjs/api/extensions/index.js +1 -0
  18. package/cjs/api/extensions/index.js.map +1 -1
  19. package/cjs/api/extensions/validation.js +8 -0
  20. package/cjs/api/extensions/validation.js.map +1 -1
  21. package/cjs/api/hooks.js +56 -0
  22. package/cjs/api/hooks.js.map +1 -0
  23. package/cjs/api/index.js +2 -5
  24. package/cjs/api/index.js.map +1 -1
  25. package/cjs/api/interceptor.js +29 -0
  26. package/cjs/api/interceptor.js.map +1 -0
  27. package/cjs/api/logging.js +3 -3
  28. package/cjs/api/logging.js.map +1 -1
  29. package/cjs/functions/assert.js +18 -14
  30. package/cjs/functions/assert.js.map +1 -1
  31. package/cjs/functions/disposer.js +2 -2
  32. package/cjs/functions/disposer.js.map +1 -1
  33. package/cjs/functions/throttle.js +4 -4
  34. package/cjs/functions/throttle.js.map +1 -1
  35. package/cjs/logger/index.js +8 -18
  36. package/cjs/logger/index.js.map +1 -1
  37. package/cjs/logger/manager.js +14 -0
  38. package/cjs/logger/manager.js.map +1 -1
  39. package/cjs/logger/shared.js +18 -0
  40. package/cjs/logger/shared.js.map +1 -0
  41. package/cjs/models/LogicModel.js +2 -2
  42. package/cjs/models/LogicModel.js.map +1 -1
  43. package/cjs/observing/event.js +2 -2
  44. package/cjs/observing/event.js.map +1 -1
  45. package/cjs/observing/progressTracker.js +2 -2
  46. package/cjs/observing/progressTracker.js.map +1 -1
  47. package/cjs/structures/path/builder.helpers.js +180 -0
  48. package/cjs/structures/path/builder.helpers.js.map +1 -0
  49. package/cjs/structures/path/builder.js +21 -106
  50. package/cjs/structures/path/builder.js.map +1 -1
  51. package/cjs/structures/path/types.helpers.js +3 -0
  52. package/cjs/structures/path/types.helpers.js.map +1 -0
  53. package/cjs/structures/promiseCache.js +2 -2
  54. package/cjs/structures/promiseCache.js.map +1 -1
  55. package/cjs/structures/queue/parallel.js +2 -2
  56. package/cjs/structures/queue/parallel.js.map +1 -1
  57. package/cjs/structures/subscribersMap.js +2 -2
  58. package/cjs/structures/subscribersMap.js.map +1 -1
  59. package/esm/api/builder.js +17 -11
  60. package/esm/api/builder.js.map +1 -1
  61. package/esm/api/call.config.js +72 -0
  62. package/esm/api/call.config.js.map +1 -0
  63. package/esm/api/call.js +16 -51
  64. package/esm/api/call.js.map +1 -1
  65. package/esm/api/call.types.js +2 -0
  66. package/esm/api/call.types.js.map +1 -1
  67. package/esm/api/config.js +39 -0
  68. package/esm/api/config.js.map +1 -0
  69. package/esm/api/endpoint.js +10 -0
  70. package/esm/api/endpoint.js.map +1 -1
  71. package/esm/api/extensions/contentType.js +9 -0
  72. package/esm/api/extensions/contentType.js.map +1 -1
  73. package/esm/api/extensions/endpointHooks.js +38 -0
  74. package/esm/api/extensions/endpointHooks.js.map +1 -0
  75. package/esm/api/extensions/index.js +1 -0
  76. package/esm/api/extensions/index.js.map +1 -1
  77. package/esm/api/extensions/validation.js +8 -0
  78. package/esm/api/extensions/validation.js.map +1 -1
  79. package/esm/api/hooks.js +53 -0
  80. package/esm/api/hooks.js.map +1 -0
  81. package/esm/api/index.js +1 -2
  82. package/esm/api/index.js.map +1 -1
  83. package/esm/api/interceptor.js +26 -0
  84. package/esm/api/interceptor.js.map +1 -0
  85. package/esm/api/logging.js +3 -3
  86. package/esm/api/logging.js.map +1 -1
  87. package/esm/functions/assert.js +16 -13
  88. package/esm/functions/assert.js.map +1 -1
  89. package/esm/functions/disposer.js +1 -1
  90. package/esm/functions/disposer.js.map +1 -1
  91. package/esm/functions/throttle.js +1 -1
  92. package/esm/functions/throttle.js.map +1 -1
  93. package/esm/logger/index.js +6 -13
  94. package/esm/logger/index.js.map +1 -1
  95. package/esm/logger/manager.js +14 -0
  96. package/esm/logger/manager.js.map +1 -1
  97. package/esm/logger/shared.js +15 -0
  98. package/esm/logger/shared.js.map +1 -0
  99. package/esm/models/LogicModel.js +1 -1
  100. package/esm/models/LogicModel.js.map +1 -1
  101. package/esm/observing/event.js +1 -1
  102. package/esm/observing/event.js.map +1 -1
  103. package/esm/observing/progressTracker.js +1 -1
  104. package/esm/observing/progressTracker.js.map +1 -1
  105. package/esm/structures/path/builder.helpers.js +172 -0
  106. package/esm/structures/path/builder.helpers.js.map +1 -0
  107. package/esm/structures/path/builder.js +20 -104
  108. package/esm/structures/path/builder.js.map +1 -1
  109. package/esm/structures/path/types.helpers.js +2 -0
  110. package/esm/structures/path/types.helpers.js.map +1 -0
  111. package/esm/structures/promiseCache.js +1 -1
  112. package/esm/structures/promiseCache.js.map +1 -1
  113. package/esm/structures/queue/parallel.js +1 -1
  114. package/esm/structures/queue/parallel.js.map +1 -1
  115. package/esm/structures/subscribersMap.js +1 -1
  116. package/esm/structures/subscribersMap.js.map +1 -1
  117. package/package.json +1 -1
  118. package/tsconfig.cjs.tsbuildinfo +1 -1
  119. package/tsconfig.esm.tsbuildinfo +1 -1
  120. package/tsconfig.types.tsbuildinfo +1 -1
  121. package/types/api/builder.d.ts +5 -0
  122. package/types/api/call.config.d.ts +25 -0
  123. package/types/api/call.types.d.ts +28 -25
  124. package/types/api/config.d.ts +23 -0
  125. package/types/api/endpoint.d.ts +2 -0
  126. package/types/api/endpoint.types.d.ts +4 -1
  127. package/types/api/extensions/contentType.d.ts +7 -5
  128. package/types/api/extensions/endpointHooks.d.ts +16 -0
  129. package/types/api/extensions/index.d.ts +1 -0
  130. package/types/api/extensions/validation.d.ts +2 -0
  131. package/types/api/hooks.d.ts +27 -0
  132. package/types/api/index.d.ts +1 -3
  133. package/types/api/interceptor.d.ts +14 -0
  134. package/types/api/logging.d.ts +3 -3
  135. package/types/functions/assert.d.ts +5 -1
  136. package/types/functions/throttle.d.ts +1 -1
  137. package/types/logger/index.d.ts +8 -8
  138. package/types/logger/manager.d.ts +7 -0
  139. package/types/logger/shared.d.ts +15 -0
  140. package/types/models/LogicModel.d.ts +1 -1
  141. package/types/observing/event.d.ts +1 -1
  142. package/types/observing/progressTracker.d.ts +1 -1
  143. package/types/structures/path/builder.d.ts +5 -4
  144. package/types/structures/path/builder.helpers.d.ts +8 -0
  145. package/types/structures/path/types.d.ts +32 -27
  146. package/types/structures/path/types.helpers.d.ts +23 -0
  147. package/types/structures/promiseCache.d.ts +1 -1
  148. package/types/types/misc.d.ts +4 -0
  149. package/cjs/api/helpers.js +0 -32
  150. package/cjs/api/helpers.js.map +0 -1
  151. package/cjs/api/processor.js +0 -51
  152. package/cjs/api/processor.js.map +0 -1
  153. package/cjs/api/register.js +0 -25
  154. package/cjs/api/register.js.map +0 -1
  155. package/esm/api/helpers.js +0 -25
  156. package/esm/api/helpers.js.map +0 -1
  157. package/esm/api/processor.js +0 -46
  158. package/esm/api/processor.js.map +0 -1
  159. package/esm/api/register.js +0 -19
  160. package/esm/api/register.js.map +0 -1
  161. package/types/api/helpers.d.ts +0 -9
  162. package/types/api/processor.d.ts +0 -7
  163. package/types/api/register.d.ts +0 -7
@@ -1,34 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remapApisStructure = remapApisStructure;
3
4
  exports.buildApi = buildApi;
4
5
  exports.createEndpointCallable = createEndpointCallable;
5
6
  const endpoint_js_1 = require("./endpoint.js");
6
7
  const assert_js_1 = require("../functions/assert.js");
7
- const helpers_js_1 = require("./helpers.js");
8
- /** Converts an composite API endpoints object to the same tree of functions */
9
- function buildApi(api, caller) {
10
- (0, assert_js_1.assert)(!!api && typeof api === 'object', 'API definition must be an object');
11
- (0, assert_js_1.assert)(!!caller && typeof caller === 'function', 'Caller must be a function');
12
- if (endpoint_js_1.ApiEndpoint.isEndpoint(api)) {
13
- return createEndpointCallable(api, caller);
8
+ /** Converts each endpoint in a nested structure to something via transformer */
9
+ function remapApisStructure(root, transformer) {
10
+ if (endpoint_js_1.ApiEndpoint.isEndpoint(root)) {
11
+ return transformer(root);
14
12
  }
15
- return Object.entries(api).reduce((acc, [key, value]) => {
13
+ return Object.entries(root).reduce((acc, [key, value]) => {
16
14
  const next = value;
17
15
  if (next != null && typeof next === 'object') {
18
- acc[key] = buildApi(next, caller);
16
+ acc[key] = remapApisStructure(next, transformer);
19
17
  }
20
18
  return acc;
21
19
  }, {});
22
20
  }
21
+ /** Converts an composite API endpoints object to the same tree of functions */
22
+ function buildApi(api, caller) {
23
+ (0, assert_js_1.assert)(!!api && typeof api === 'object', 'API definition must be an object');
24
+ (0, assert_js_1.assert)(!!caller && typeof caller === 'function', 'Caller must be a function');
25
+ return remapApisStructure(api, e => createEndpointCallable(e, caller));
26
+ }
23
27
  /** Partial application: binding an endpoint to callApi, so only input data and extra are passed to a newly created function. */
24
28
  function createEndpointCallable(endpoint, caller) {
25
- const path = (0, helpers_js_1.getTemplate)(endpoint).replaceAll('/', '_').replaceAll(':', '$') || 'root';
29
+ const path = caller.config.getTemplate(endpoint).replaceAll('/', '_').replaceAll(':', '$') || 'root';
26
30
  const name = `${endpoint.displayName || '?'}_${endpoint.method}_${path}`;
27
31
  const fn = {
28
32
  [name]: function (data, extra) { return caller(endpoint, data, extra); },
29
33
  }[name]; // this sets the name of the function
30
34
  const result = fn;
31
- Object.assign(result, { Endpoint: endpoint });
35
+ // Defining as getter to make readonly according to the interface
36
+ Object.defineProperty(result, 'Endpoint', {
37
+ get: () => endpoint,
38
+ });
32
39
  return result;
33
40
  }
34
41
  //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/api/builder.ts"],"names":[],"mappings":";;AAqBA,4BAkBC;AAGD,wDAeC;AAvDD,+CAA4C;AAC5C,sDAAgD;AAChD,6CAA2C;AAgB3C,+EAA+E;AAC/E,SAAgB,QAAQ,CACpB,GAAS,EACT,MAAgC;IAEhC,IAAA,kBAAM,EAAC,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC7E,IAAA,kBAAM,EAAC,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAE9E,IAAI,yBAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC,GAAG,EAAE,MAA0B,CAA4B,CAAC;IAC9F,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAA4C,CAA4B,CAAC;AAChF,CAAC;AAED,gIAAgI;AAChI,SAAgB,sBAAsB,CAIpC,QAAmB,EAAE,MAAe;IAClC,MAAM,IAAI,GAAG,IAAA,wBAAW,EAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC;IACvF,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAEzE,MAAM,EAAE,GAAG;QACP,CAAC,IAAI,CAAC,EAAE,UAAU,IAAiC,EAAE,KAA8B,IAAI,OAAO,MAAM,CAAY,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5I,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC;IAE9C,MAAM,MAAM,GAAG,EAAwC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/api/builder.ts"],"names":[],"mappings":";;AAoBA,gDAYC;AASD,4BAWC;AAGD,wDAoBC;AAzED,+CAA4C;AAC5C,sDAAgD;AAgBhD,gFAAgF;AAChF,SAAgB,kBAAkB,CAAsC,IAAU,EAAE,WAA4C;IAC5H,IAAI,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,IAAI,CAA+B,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAA+C,CAA+B,CAAC;AACtF,CAAC;AAQD,+EAA+E;AAC/E,SAAgB,QAAQ,CACpB,GAAS,EACT,MAAgC;IAEhC,IAAA,kBAAM,EAAC,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC7E,IAAA,kBAAM,EAAC,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAE9E,OAAO,kBAAkB,CACrB,GAAG,EACH,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAA0B,CAAC,CACvB,CAAC;AAC5C,CAAC;AAED,gIAAgI;AAChI,SAAgB,sBAAsB,CAIpC,QAAmB,EAAE,MAAe;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC;IACrG,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAEzE,MAAM,EAAE,GAAG;QACP,CAAC,IAAI,CAAC,EAAE,UAAU,IAAiC,EAAE,KAA8B,IAAI,OAAO,MAAM,CAAY,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5I,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC;IAE9C,MAAM,MAAM,GAAG,EAAwC,CAAC;IAExD,iEAAiE;IACjE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE;QACtC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ;KACtB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestMeta = void 0;
4
+ exports.createConfig = createConfig;
5
+ const config_js_1 = require("./config.js");
6
+ function createConfig(endpointsConfig, api, data, extra) {
7
+ const { headers, log = 'res', noLoader, ...restExtra } = extra || {};
8
+ const resultInput = data && { ...data };
9
+ const pathInputs = {};
10
+ const queryInputs = {};
11
+ let queryStr = '';
12
+ // extract path inputs from data
13
+ const pathKeys = api.path?.args;
14
+ if (resultInput && pathKeys?.length) {
15
+ for (const key of pathKeys) {
16
+ pathInputs[key] = resultInput[key];
17
+ delete resultInput[key];
18
+ }
19
+ }
20
+ // extract query inputs from data
21
+ const queryKeysExpected = api.queryKeys;
22
+ if (resultInput && queryKeysExpected?.length) {
23
+ let empty = true;
24
+ for (const key of queryKeysExpected) {
25
+ const v = resultInput[key];
26
+ if (v != null) {
27
+ queryInputs[key] = v;
28
+ empty = false;
29
+ }
30
+ delete resultInput[key];
31
+ }
32
+ // compile query string
33
+ if (!empty) {
34
+ const params = new URLSearchParams(queryInputs);
35
+ queryStr = '?' + params.toString();
36
+ }
37
+ }
38
+ const sendingData = resultInput && Object.keys(resultInput).length > 0
39
+ ? resultInput
40
+ : undefined;
41
+ const method = api.method || 'GET';
42
+ const config = {
43
+ method,
44
+ url: endpointsConfig.getPath(api, pathInputs) + queryStr,
45
+ data: sendingData || undefined,
46
+ headers: headers || {},
47
+ _meta: new RequestMeta(api, endpointsConfig, log, noLoader ?? method === 'GET', restExtra),
48
+ };
49
+ return {
50
+ config,
51
+ resultInput,
52
+ pathInputs,
53
+ queryInputs,
54
+ };
55
+ }
56
+ /**
57
+ * Request meta wrapped in a class for:
58
+ *
59
+ * - not being a plain object
60
+ * - being able to extend it in the future with helpful methods
61
+ */
62
+ class RequestMeta {
63
+ api;
64
+ pathsConfig;
65
+ log;
66
+ noLoader;
67
+ extra;
68
+ constructor(api, pathsConfig = new config_js_1.EndpointsPathsConfig(), log = 'res', noLoader = false, extra = {}) {
69
+ this.api = api;
70
+ this.pathsConfig = pathsConfig;
71
+ this.log = log;
72
+ this.noLoader = noLoader;
73
+ this.extra = extra;
74
+ }
75
+ }
76
+ exports.RequestMeta = RequestMeta;
77
+ //# sourceMappingURL=call.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.config.js","sourceRoot":"","sources":["../../../src/api/call.config.ts"],"names":[],"mappings":";;;AAMA,oCA4EC;AAhFD,2CAAmD;AAInD,SAAgB,YAAY,CACxB,eAAqC,EACrC,GAAM,EACN,IAAiC,EACjC,KAAgC;IAKhC,MAAM,EACF,OAAO,EACP,GAAG,GAAG,KAAK,EACX,QAAQ,EACR,GAAG,SAAS,EACf,GAAG,KAAK,IAAI,EAAE,CAAC;IAEhB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAoC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAW,EAAE,CAAC;IAE1B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IAChC,IAAI,WAAW,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,WAAW,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,KAAK,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;YAChD,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;QAClE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;IACnC,MAAM,MAAM,GAAmC;QAC3C,MAAM;QACN,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,UAA0C,CAAC,GAAG,QAAQ;QACxF,IAAI,EAAE,WAAW,IAAI,SAAS;QAC9B,OAAO,EAAE,OAAoB,IAAI,EAAE;QAEnC,KAAK,EAAE,IAAI,WAAW,CAClB,GAAG,EACH,eAAe,EACf,GAAG,EACH,QAAQ,IAAI,MAAgB,KAAK,KAAK,EACtC,SAAmB,CACtB;KACJ,CAAC;IAEF,OAAO;QACH,MAAM;QACN,WAAW;QACX,UAAU;QACV,WAAW;KACd,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAa,WAAW;IAEA;IACA;IACA;IACA;IACA;IALpB,YACoB,GAAM,EACN,cAAoC,IAAI,gCAAoB,EAAE,EAC9D,MAAgB,KAAK,EACrB,WAAoB,KAAK,EACzB,QAAgB,EAA8B;QAJ9C,QAAG,GAAH,GAAG,CAAG;QACN,gBAAW,GAAX,WAAW,CAAmD;QAC9D,QAAG,GAAH,GAAG,CAAkB;QACrB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,UAAK,GAAL,KAAK,CAAyC;IAGlE,CAAC;CACJ;AAVD,kCAUC"}
package/cjs/api/call.js CHANGED
@@ -1,68 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildApiCaller = buildApiCaller;
4
- const register_js_1 = require("./register.js");
5
- const helpers_js_1 = require("./helpers.js");
4
+ const config_js_1 = require("./config.js");
5
+ const hooks_js_1 = require("./hooks.js");
6
+ const call_config_js_1 = require("./call.config.js");
6
7
  function buildApiCaller(options) {
7
- const { request, hooks = {} } = options;
8
- return async function callApi(api, data, extra) {
9
- const { headers, log = 'res', noLoader, ...restExtra } = extra || {};
10
- const resultInput = data && { ...data };
11
- const pathInputs = {};
12
- const queryInputs = {};
13
- let queryStr = '';
14
- // extract path inputs from data
15
- const pathKeys = api.path?.args;
16
- if (resultInput && pathKeys?.length) {
17
- for (const key of pathKeys) {
18
- pathInputs[key] = resultInput[key];
19
- delete resultInput[key];
20
- }
21
- }
22
- // extract query inputs from data
23
- const queryKeysExpected = api.queryKeys;
24
- if (resultInput && queryKeysExpected?.length) {
25
- let empty = true;
26
- for (const key of queryKeysExpected) {
27
- const v = resultInput[key];
28
- if (v != null) {
29
- queryInputs[key] = v;
30
- empty = false;
31
- }
32
- delete resultInput[key];
33
- }
34
- // compile query string
35
- if (!empty) {
36
- const params = new URLSearchParams(queryInputs);
37
- queryStr = '?' + params.toString();
38
- }
39
- }
8
+ const { request, config: endpointsConfigSource, hooks: hooksSource = {}, } = options;
9
+ const hooks = hooks_js_1.CallerHooks.merge(hooksSource);
10
+ const endpointsConfig = new config_js_1.EndpointsPathsConfig(endpointsConfigSource);
11
+ const caller = async function callApi(api, data, extra) {
12
+ const { config, resultInput, pathInputs, queryInputs } = (0, call_config_js_1.createConfig)(endpointsConfig, api, data, extra);
40
13
  if (hooks.beforeConfig) {
41
14
  // copy all inputs to avoid mutation
42
15
  await hooks.beforeConfig(api, { ...resultInput }, { ...pathInputs }, { ...queryInputs });
43
16
  }
44
- const sendingData = resultInput && Object.keys(resultInput).length > 0
45
- ? resultInput
46
- : undefined;
47
- const method = api.method || 'GET';
48
- const config = {
49
- method,
50
- url: (0, helpers_js_1.getPath)(api, pathInputs) + queryStr,
51
- data: register_js_1.PreProcessors.process(api, sendingData) || undefined,
52
- headers: headers || {},
53
- _api: api,
54
- _noLoader: noLoader ?? method === 'GET',
55
- _log: log,
56
- _extra: restExtra,
57
- };
58
17
  if (hooks.beforeRequest) {
59
18
  const result = await hooks.beforeRequest(config);
60
19
  if (result && typeof result === 'object') {
61
20
  Object.assign(config, result);
62
21
  }
63
22
  }
64
- const response = await request(config);
65
- return register_js_1.PostProcessors.process(api, response?.data);
23
+ let response = await request(config);
24
+ if (response && hooks.afterResponse) {
25
+ response = await hooks.afterResponse(config, response) ?? response;
26
+ }
27
+ return response?.data;
66
28
  };
29
+ return Object.assign(caller, {
30
+ config: endpointsConfig,
31
+ });
67
32
  }
68
33
  //# sourceMappingURL=call.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":";;AAcA,wCA0FC;AAxGD,+CAA8D;AAG9D,6CAAuC;AAWvC,SAAgB,cAAc,CAA8C,OAA8B;IAEtG,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExC,OAAO,KAAK,UAAU,OAAO,CACzB,GAAM,EACN,IAAiC,EACjC,KAAgC;QAKhC,MAAM,EACF,OAAO,EACP,GAAG,GAAG,KAAK,EACX,QAAQ,EACR,GAAG,SAAS,EACf,GAAG,KAAK,IAAI,EAAE,CAAC;QAEhB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAoC,EAAE,CAAC;QACvD,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAW,EAAE,CAAC;QAE1B,gCAAgC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;QAChC,IAAI,WAAW,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,iCAAiC;QACjC,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;QACxC,IAAI,WAAW,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBAClC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,KAAK,GAAG,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;gBAChD,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,oCAAoC;YACpC,MAAM,KAAK,CAAC,YAAY,CACpB,GAAG,EACH,EAAE,GAAG,WAAW,EAAwC,EACxD,EAAE,GAAG,UAAU,EAA0C,EACzD,EAAE,GAAG,WAAW,EAA2C,CAC9D,CAAC;QACN,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;YAClE,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QACnC,MAAM,MAAM,GAAyC;YACjD,MAAM;YACN,GAAG,EAAE,IAAA,oBAAO,EAAC,GAAG,EAAE,UAA0C,CAAC,GAAG,QAAQ;YACxE,IAAI,EAAE,2BAAa,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,SAAS;YAC1D,OAAO,EAAE,OAAoB,IAAI,EAAE;YACnC,IAAI,EAAE,GAAG;YAET,SAAS,EAAE,QAAQ,IAAI,MAAgB,KAAK,KAAK;YACjD,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,SAAmB;SAC9B,CAAC;QAEF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAmB,CAAC;QACzD,OAAO,4BAAc,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":";;AAcA,wCAsDC;AA5DD,2CAAmD;AACnD,yCAAyC;AACzC,qDAAgD;AAIhD,SAAgB,cAAc,CAA8C,OAA8B;IAEtG,MAAM,EACF,OAAO,EACP,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,WAAW,GAAG,EAAE,GAC1B,GAAG,OAAO,CAAC;IAEZ,MAAM,KAAK,GAAG,sBAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,IAAI,gCAAoB,CAAC,qBAAqB,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,KAAK,UAAU,OAAO,CACjC,GAAM,EACN,IAAiC,EACjC,KAAgC;QAIhC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAA,6BAAY,EACjE,eAAe,EACf,GAAG,EACH,IAAI,EACJ,KAAK,CACR,CAAC;QAEF,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,oCAAoC;YACpC,MAAM,KAAK,CAAC,YAAY,CACpB,GAAG,EACH,EAAE,GAAG,WAAW,EAAwC,EACxD,EAAE,GAAG,UAAU,EAA0C,EACzD,EAAE,GAAG,WAAW,EAA2C,CAC9D,CAAC;QACN,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,GAAyB,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAClC,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC;QACvE,CAAC;QAED,OAAO,QAAQ,EAAE,IAAI,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,eAAe;KAC1B,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  ;
4
+ ;
5
+ ;
4
6
  //# sourceMappingURL=call.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call.types.js","sourceRoot":"","sources":["../../../src/api/call.types.ts"],"names":[],"mappings":";;AAgFC,CAAC"}
1
+ {"version":3,"file":"call.types.js","sourceRoot":"","sources":["../../../src/api/call.types.ts"],"names":[],"mappings":";;AAoBC,CAAC;AAqBD,CAAC;AAyCD,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultSettings = exports.EndpointsPathsConfig = void 0;
4
+ const index_js_1 = require("../structures/path/index.js");
5
+ class EndpointsPathsConfig {
6
+ templateArgPrefix = ':';
7
+ basePrefix = '/';
8
+ constructor(settings) {
9
+ if (settings) {
10
+ this.templateArgPrefix = settings.templateArgPrefix ?? this.templateArgPrefix;
11
+ this.basePrefix = settings.basePrefix ?? this.basePrefix;
12
+ }
13
+ }
14
+ getPath(endpoint, pathArgs, prefix = true) {
15
+ const path = endpoint.path ?? index_js_1.Path.Empty;
16
+ return path.build(pathArgs || undefined, { addStart: this.getPrefix(prefix) });
17
+ }
18
+ getTemplate(endpoint, prefix = true) {
19
+ const path = endpoint.path ?? index_js_1.Path.Empty;
20
+ return path.template(this.templateArgPrefix, { addStart: this.getPrefix(prefix) });
21
+ }
22
+ getFormattedDisplayName(endpoint) {
23
+ const template = this.getTemplate(endpoint);
24
+ const prefix = endpoint.displayName
25
+ ? `[${endpoint.displayName}] `
26
+ : '';
27
+ return prefix + template;
28
+ }
29
+ getEndpointsEqual(a, b) {
30
+ return a === b || (a == null && b == null) || (a != null && b != null
31
+ && a.method === b.method
32
+ && this.getTemplate(a) === this.getTemplate(b));
33
+ }
34
+ getPrefix(prefix) {
35
+ return typeof prefix === 'string'
36
+ ? prefix
37
+ : (prefix ? this.basePrefix : false);
38
+ }
39
+ }
40
+ exports.EndpointsPathsConfig = EndpointsPathsConfig;
41
+ /** @deprecated Be careful with using this shared instance. Don't be lazy and create your own! */
42
+ exports.DefaultSettings = new EndpointsPathsConfig();
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":";;;AAAA,0DAAmD;AAanD,MAAa,oBAAoB;IAEb,iBAAiB,GAA2B,GAAG,CAAC;IAChD,UAAU,GAAW,GAAG,CAAC;IAEzC,YAAY,QAAgC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;YAC9E,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QAC7D,CAAC;IACL,CAAC;IAEM,OAAO,CACV,QAAW,EACX,QAAsC,EACtC,SAAwB,IAAI;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAK,eAAI,CAAC,KAAuB,CAAC;QAE5D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAEM,WAAW,CAA0B,QAAW,EAAE,SAAwB,IAAI;QACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAK,eAAI,CAAC,KAAuB,CAAC;QAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAEM,uBAAuB,CAAC,QAAuB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW;YAC/B,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,IAAI;YAC9B,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,MAAM,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,iBAAiB,CAAC,CAA0B,EAAE,CAA0B;QAC3E,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAC1C,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;eACnB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;eACrB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACjD,CAAC;IACN,CAAC;IAEO,SAAS,CAAC,MAAqB;QACnC,OAAO,OAAO,MAAM,KAAK,QAAQ;YAC7B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACJ;AAjDD,oDAiDC;AAED,iGAAiG;AACpF,QAAA,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
@@ -55,6 +55,16 @@ var ApiEndpoint;
55
55
  withHeaders() {
56
56
  return res;
57
57
  },
58
+ finalize() {
59
+ const finalized = {};
60
+ Object.entries(res).forEach(([key, value]) => {
61
+ if (value != null && typeof value !== 'function') {
62
+ finalized[key] = value;
63
+ }
64
+ });
65
+ Object.freeze(finalized);
66
+ return finalized;
67
+ },
58
68
  };
59
69
  Object.assign(res, ext);
60
70
  return res;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/endpoint.ts"],"names":[],"mappings":";;;AAAA,0DAAmD;AACnD,6CAA+C;AAwC/C,IAAiB,WAAW,CA2G3B;AA3GD,WAAiB,WAAW;IAExB,+GAA+G;IAC/G,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;IAEnD,SAAgB,UAAU,CAAC,GAAQ;QAC/B,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,KAAK,IAAI,IAAI,QAAQ,IAAI,GAAG,CAAC;IACvE,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAED,SAAS,UAAU,CAAC,WAAoB;QAEpC,MAAM,IAAI,GAAG;YACT,WAAW;YACX,MAAM,EAAE,4BAAe,CAAC,GAAG;SAC9B,CAAC;QAED,IAAY,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;QAE1C,MAAM,GAAG,GAAG,IAAmB,CAAC;QAEhC,yBAAyB;QACzB,MAAM,GAAG,GAA2C;YAChD,UAAU,CAAC,MAAuB;gBAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,OAAO,GAAG,CAAC;YACf,CAAC;YACD,GAAG;gBACC,IAAI,CAAC,MAAM,GAAG,4BAAe,CAAC,GAAG,CAAC;gBAClC,OAAO,GAA6C,CAAC;YACzD,CAAC;YACD,GAAG;gBACC,IAAI,CAAC,MAAM,GAAG,4BAAe,CAAC,GAAG,CAAC;gBAClC,OAAO,GAAsE,CAAC;YAClF,CAAC;YACD,IAAI;gBACA,IAAI,CAAC,MAAM,GAAG,4BAAe,CAAC,IAAI,CAAC;gBACnC,OAAO,GAAsE,CAAC;YAClF,CAAC;YACD,MAAM;gBACF,IAAI,CAAC,MAAM,GAAG,4BAAe,CAAC,MAAM,CAAC;gBACrC,OAAO,GAA6C,CAAC;YACzD,CAAC;YAED,QAAQ,CAAsC,GAAG,CAAI;gBACjD,MAAM,IAAI,GAAG,eAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC,MAAM,CAChB,GAAG,EACH,EAAE,IAAI,EAAE,CACX,CAAC;YACN,CAAC;YAED,SAAS,CAAoB,GAAG,SAAgC;gBAC3D,IAA0C,CAAC,SAAS,GAAG,SAAS,CAAC;gBAClE,OAAO,GAA6C,CAAC;YACzD,CAAC;YAED,UAAU,CAAO,cAAoC;gBAChD,IAA6C,CAAC,cAAc,GAAG,cAAc,CAAC;gBAC/E,OAAO,GAAG,CAAC;YACf,CAAC;YAED,WAAW;gBACP,OAAO,GAAG,CAAC;YACf,CAAC;SACJ,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,OAAO,GAAG,CAAC;IACf,CAAC;IAkBD,SAAS,aAAa,CAClB,WAA4C,EAC5C,QAA6B;QAE7B,MAAM,GAAG,GAAG,UAAU,WAAoB;YACtC,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,CAAwB,CAAC;QAEzB,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE;YACtB,OAAO,aAAa,CAChB,GAAG,EACH,QAAQ,CACX,CAAC;QACN,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC;IACf,CAAC;IAEY,kBAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAEpD,CAAC,EA3GgB,WAAW,2BAAX,WAAW,QA2G3B"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/endpoint.ts"],"names":[],"mappings":"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"}
@@ -35,5 +35,14 @@ var IEndpointInputContentType;
35
35
  }
36
36
  }
37
37
  IEndpointInputContentType.tryApplyContentType = tryApplyContentType;
38
+ function createHooks() {
39
+ return {
40
+ beforeRequest: (config) => {
41
+ config.headers = config.headers || {};
42
+ tryApplyContentType(config._meta.api, config.headers);
43
+ },
44
+ };
45
+ }
46
+ IEndpointInputContentType.createHooks = createHooks;
38
47
  })(IEndpointInputContentType || (exports.IEndpointInputContentType = IEndpointInputContentType = {}));
39
48
  //# sourceMappingURL=contentType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentType.js","sourceRoot":"","sources":["../../../../src/api/extensions/contentType.ts"],"names":[],"mappings":";;;AAuBA,IAAiB,yBAAyB,CAiCzC;AAjCD,WAAiB,yBAAyB;IACzB,kCAAQ,GAA4D,CAAwB,IAAO,EAAE,EAAE;QAChH,MAAM,GAAG,GAAG;YACR,WAAW,EAAE,SAAS;YACtB,eAAe,CAAgC,WAAmB;gBAC9D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM;gBACF,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,eAAe;gBACX,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,YAAY;gBACR,IAAI,CAAC,WAAW,GAAG,mCAAmC,CAAC;gBACvD,OAAO,IAAI,CAAC;YAChB,CAAC;SACyB,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,SAAgB,KAAK,CAAC,GAAkB;QACpC,OAAO,aAAa,IAAI,GAAG,CAAC;IAChC,CAAC;IAFe,+BAAK,QAEpB,CAAA;IAED,SAAgB,mBAAmB,CAAC,GAAkB,EAAE,OAA+B;QACnF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;QAC9C,CAAC;IACL,CAAC;IAJe,6CAAmB,sBAIlC,CAAA;AACL,CAAC,EAjCgB,yBAAyB,yCAAzB,yBAAyB,QAiCzC"}
1
+ {"version":3,"file":"contentType.js","sourceRoot":"","sources":["../../../../src/api/extensions/contentType.ts"],"names":[],"mappings":";;;AAwBA,IAAiB,yBAAyB,CA0CzC;AA1CD,WAAiB,yBAAyB;IACzB,kCAAQ,GAA4D,CAAwB,IAAO,EAAE,EAAE;QAChH,MAAM,GAAG,GAAG;YACR,WAAW,EAAE,SAAS;YACtB,eAAe,CAAgC,WAAmB;gBAC9D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM;gBACF,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,eAAe;gBACX,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,YAAY;gBACR,IAAI,CAAC,WAAW,GAAG,mCAAmC,CAAC;gBACvD,OAAO,IAAI,CAAC;YAChB,CAAC;SACyB,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,SAAgB,KAAK,CAAC,GAAkB;QACpC,OAAO,aAAa,IAAI,GAAG,CAAC;IAChC,CAAC;IAFe,+BAAK,QAEpB,CAAA;IAED,SAAgB,mBAAmB,CAAC,GAAkB,EAAE,OAA+B;QACnF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;QAC9C,CAAC;IACL,CAAC;IAJe,6CAAmB,sBAIlC,CAAA;IAED,SAAgB,WAAW;QACvB,OAAO;YACH,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;gBACtB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACtC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;SACJ,CAAC;IACN,CAAC;IAPe,qCAAW,cAO1B,CAAA;AACL,CAAC,EA1CgB,yBAAyB,yCAAzB,yBAAyB,QA0CzC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IEndpointHooks = void 0;
4
+ var IEndpointHooks;
5
+ (function (IEndpointHooks) {
6
+ IEndpointHooks.extender = (base) => {
7
+ const ext = {
8
+ hooks: undefined,
9
+ withHooks(hooks) {
10
+ this.hooks = hooks;
11
+ return this;
12
+ },
13
+ };
14
+ return Object.assign(base, ext);
15
+ };
16
+ function guard(api) {
17
+ return 'hooks' in api;
18
+ }
19
+ IEndpointHooks.guard = guard;
20
+ function createHooks() {
21
+ return {
22
+ beforeConfig: (api, body, pathParams, queryParams) => {
23
+ if (guard(api) && api.hooks?.beforeConfig) {
24
+ return api.hooks.beforeConfig(api, body, pathParams, queryParams);
25
+ }
26
+ },
27
+ beforeRequest: (config) => {
28
+ if (guard(config._meta.api) && config._meta.api.hooks?.beforeRequest) {
29
+ return config._meta.api.hooks.beforeRequest(config);
30
+ }
31
+ },
32
+ afterResponse: (config, response) => {
33
+ if (guard(config._meta.api) && config._meta.api.hooks?.afterResponse) {
34
+ return config._meta.api.hooks.afterResponse(config, response);
35
+ }
36
+ },
37
+ };
38
+ }
39
+ IEndpointHooks.createHooks = createHooks;
40
+ })(IEndpointHooks || (exports.IEndpointHooks = IEndpointHooks = {}));
41
+ //# sourceMappingURL=endpointHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpointHooks.js","sourceRoot":"","sources":["../../../../src/api/extensions/endpointHooks.ts"],"names":[],"mappings":";;;AAcA,IAAiB,cAAc,CAmC9B;AAnCD,WAAiB,cAAc;IACd,uBAAQ,GAAiD,CAAwB,IAAO,EAAE,EAAE;QACrG,MAAM,GAAG,GAAG;YACR,KAAK,EAAE,SAAS;YAChB,SAAS,CAAgC,KAAkB;gBACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,OAAO,IAAI,CAAC;YAChB,CAAC;SACc,CAAC;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,SAAgB,KAAK,CAAC,GAAkB;QACpC,OAAO,OAAO,IAAI,GAAG,CAAC;IAC1B,CAAC;IAFe,oBAAK,QAEpB,CAAA;IAED,SAAgB,WAAW;QACvB,OAAO;YACH,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;gBACjD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;oBACxC,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;YACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;gBACtB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;oBACnE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;YACD,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;gBAChC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;oBACnE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAA+B,CAAC;gBAChG,CAAC;YACL,CAAC;SACJ,CAAC;IACN,CAAC;IAlBe,0BAAW,cAkB1B,CAAA;AACL,CAAC,EAnCgB,cAAc,8BAAd,cAAc,QAmC9B"}
@@ -3,4 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./contentType.js"), exports);
5
5
  tslib_1.__exportStar(require("./validation.js"), exports);
6
+ tslib_1.__exportStar(require("./endpointHooks.js"), exports);
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,0DAAgC;AAChC,6DAAmC"}
@@ -23,5 +23,13 @@ var IEndpointInputValidation;
23
23
  }
24
24
  }
25
25
  IEndpointInputValidation.tryValidate = tryValidate;
26
+ function createHooks() {
27
+ return {
28
+ beforeConfig: (api, body) => {
29
+ return tryValidate(api, body);
30
+ },
31
+ };
32
+ }
33
+ IEndpointInputValidation.createHooks = createHooks;
26
34
  })(IEndpointInputValidation || (exports.IEndpointInputValidation = IEndpointInputValidation = {}));
27
35
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":";;;AAUA,IAAiB,wBAAwB,CAwBxC;AAxBD,WAAiB,wBAAwB;IAGxB,iCAAQ,GAA2D,CAAwB,IAAO,EAAE,EAAE;QAE/G,MAAM,GAAG,GAAG;YACR,QAAQ,EAAE,SAAS;YACnB,cAAc,CAA8B,QAA+C;gBACvF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAoC,CAAC;YAChD,CAAC;SACwB,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,SAAgB,KAAK,CAAC,GAAkB;QACpC,OAAO,UAAU,IAAI,GAAG,CAAC;IAC7B,CAAC;IAFe,8BAAK,QAEpB,CAAA;IAED,SAAgB,WAAW,CAAC,GAAkB,EAAE,KAAgB;QAC5D,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAJe,oCAAW,cAI1B,CAAA;AACL,CAAC,EAxBgB,wBAAwB,wCAAxB,wBAAwB,QAwBxC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":";;;AAWA,IAAiB,wBAAwB,CAgCxC;AAhCD,WAAiB,wBAAwB;IAGxB,iCAAQ,GAA2D,CAAwB,IAAO,EAAE,EAAE;QAE/G,MAAM,GAAG,GAAG;YACR,QAAQ,EAAE,SAAS;YACnB,cAAc,CAA8B,QAA+C;gBACvF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAoC,CAAC;YAChD,CAAC;SACwB,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,SAAgB,KAAK,CAAC,GAAkB;QACpC,OAAO,UAAU,IAAI,GAAG,CAAC;IAC7B,CAAC;IAFe,8BAAK,QAEpB,CAAA;IAED,SAAgB,WAAW,CAAC,GAAkB,EAAE,KAAgB;QAC5D,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAJe,oCAAW,cAI1B,CAAA;IAED,SAAgB,WAAW;QACvB,OAAO;YACH,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACxB,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC;SACJ,CAAC;IACN,CAAC;IANe,oCAAW,cAM1B,CAAA;AACL,CAAC,EAhCgB,wBAAwB,wCAAxB,wBAAwB,QAgCxC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallerHooks = void 0;
4
+ var CallerHooks;
5
+ (function (CallerHooks) {
6
+ // by default, no adapter, previous value is not affecting the next one
7
+ const Adapters = {
8
+ beforeRequest: async (prev, next, arg) => next(await prev ?? arg),
9
+ afterResponse: async (prev, next, config, response) => {
10
+ const nextResponse = await prev ?? response;
11
+ return next(config, nextResponse);
12
+ },
13
+ };
14
+ function merge(items) {
15
+ const result = {};
16
+ if (!items) {
17
+ return result;
18
+ }
19
+ if (!Array.isArray(items)) {
20
+ Object.assign(result, items);
21
+ return result;
22
+ }
23
+ const mergeOne = (key, value, adapter) => {
24
+ if (!value) {
25
+ return;
26
+ }
27
+ const current = result[key];
28
+ if (!current) {
29
+ result[key] = value;
30
+ return;
31
+ }
32
+ const prevHook = current;
33
+ const nextHook = value;
34
+ const res = async (...args) => {
35
+ const prev = await prevHook(...args);
36
+ if (!adapter) {
37
+ return nextHook(...args);
38
+ }
39
+ return adapter(prev, value, ...args);
40
+ };
41
+ result[key] = res;
42
+ };
43
+ items.forEach(item => {
44
+ Object.entries(item).forEach(([k, value]) => {
45
+ if (!value) {
46
+ return;
47
+ }
48
+ const key = k;
49
+ mergeOne(key, value, Adapters[key]);
50
+ });
51
+ });
52
+ return result;
53
+ }
54
+ CallerHooks.merge = merge;
55
+ })(CallerHooks || (exports.CallerHooks = CallerHooks = {}));
56
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/api/hooks.ts"],"names":[],"mappings":";;;AAwCA,IAAiB,WAAW,CAkF3B;AAlFD,WAAiB,WAAW;IAUxB,uEAAuE;IACvE,MAAM,QAAQ,GAA4B;QACtC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC;QACjE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAClD,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,QAAQ,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,EAAE,YAAmB,CAAC,CAAC;QAC7C,CAAC;KACJ,CAAC;IAEF,SAAgB,KAAK,CAAwB,KAA4D;QACrG,MAAM,MAAM,GAAwB,EAAG,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAClB,CAAC;QAKD,MAAM,QAAQ,GAAG,CACb,GAAM,EACN,KAAkB,EAClB,OAAmF,EACrF,EAAE;YACA,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,OAAO;YACX,CAAC;YAID,MAAM,QAAQ,GAAG,OAAmB,CAAC;YACrC,MAAM,QAAQ,GAAG,KAAiB,CAAC;YAEnC,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBAED,OAAO,OAAO,CACV,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,CACV,CAAC;YACN,CAAC,CAAC;YAEF,MAAM,CAAC,GAAG,CAAC,GAAG,GAAY,CAAC;QAC/B,CAAC,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,OAAO;gBACX,CAAC;gBAED,MAAM,GAAG,GAAG,CAAa,CAAC;gBAC1B,QAAQ,CAAC,GAAG,EAAE,KAAuB,EAAE,QAAQ,CAAC,GAAG,CAAoC,CAAC,CAAC;YAC7F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IA9De,iBAAK,QA8DpB,CAAA;AACL,CAAC,EAlFgB,WAAW,2BAAX,WAAW,QAkF3B"}
package/cjs/api/index.js CHANGED
@@ -1,20 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogTypes = exports.registerPreProcessor = exports.registerPostProcessor = exports.createEndpointCallable = exports.buildApi = exports.buildApiCaller = exports.EndpointMethods = exports.ApiEndpoint = void 0;
3
+ exports.LogTypes = exports.createEndpointCallable = exports.buildApi = exports.buildApiCaller = exports.EndpointMethods = exports.ApiEndpoint = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var endpoint_js_1 = require("./endpoint.js");
6
6
  Object.defineProperty(exports, "ApiEndpoint", { enumerable: true, get: function () { return endpoint_js_1.ApiEndpoint; } });
7
7
  var methods_js_1 = require("./methods.js");
8
8
  Object.defineProperty(exports, "EndpointMethods", { enumerable: true, get: function () { return methods_js_1.EndpointMethods; } });
9
- tslib_1.__exportStar(require("./helpers.js"), exports);
9
+ tslib_1.__exportStar(require("./config.js"), exports);
10
10
  var call_js_1 = require("./call.js");
11
11
  Object.defineProperty(exports, "buildApiCaller", { enumerable: true, get: function () { return call_js_1.buildApiCaller; } });
12
12
  var builder_js_1 = require("./builder.js");
13
13
  Object.defineProperty(exports, "buildApi", { enumerable: true, get: function () { return builder_js_1.buildApi; } });
14
14
  Object.defineProperty(exports, "createEndpointCallable", { enumerable: true, get: function () { return builder_js_1.createEndpointCallable; } });
15
- var register_js_1 = require("./register.js");
16
- Object.defineProperty(exports, "registerPostProcessor", { enumerable: true, get: function () { return register_js_1.registerPostProcessor; } });
17
- Object.defineProperty(exports, "registerPreProcessor", { enumerable: true, get: function () { return register_js_1.registerPreProcessor; } });
18
15
  var logging_js_1 = require("./logging.js");
19
16
  Object.defineProperty(exports, "LogTypes", { enumerable: true, get: function () { return logging_js_1.LogTypes; } });
20
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":";;;;AAGA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAEpB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AACxB,uDAA6B;AAE7B,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,2CAAgE;AAAvD,sGAAA,QAAQ,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AACzC,6CAA4E;AAAnE,oHAAA,qBAAqB,OAAA;AAAE,mHAAA,oBAAoB,OAAA;AACpD,2CAAwC;AAA/B,sGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":";;;;AACA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAEpB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AACxB,sDAA4B;AAE5B,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,2CAAgE;AAAvD,sGAAA,QAAQ,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AACzC,2CAAwC;AAA/B,sGAAA,QAAQ,OAAA"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInterceptor = createInterceptor;
4
+ const event_js_1 = require("../observing/event.js");
5
+ const hookKeys = ['beforeRequest', 'beforeConfig', 'afterResponse'];
6
+ const eventKeys = hookKeys.map(k => `intercept${k.charAt(0).toUpperCase() + k.slice(1)}`);
7
+ /**
8
+ * Experimental. Creates linked caller hooks and interception events.
9
+ *
10
+ * Use hooks to recieve events and events to subscribe to them externally.
11
+ */
12
+ function createInterceptor() {
13
+ const events = eventKeys.reduce((acc, key) => {
14
+ acc[key] = new event_js_1.Event();
15
+ return acc;
16
+ }, {});
17
+ const hooks = hookKeys.reduce((acc, key, index) => {
18
+ acc[key] = async (...args) => {
19
+ const event = events[eventKeys[index]];
20
+ await event.triggerAsync(args);
21
+ };
22
+ return acc;
23
+ }, {});
24
+ return {
25
+ hooks,
26
+ events,
27
+ };
28
+ }
29
+ //# sourceMappingURL=interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../../src/api/interceptor.ts"],"names":[],"mappings":";;AAcA,8CAmBC;AAjCD,oDAA2D;AAM3D,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,CAA0C,CAAC;AAC7G,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAsC,CAAC;AAE/H;;;;GAIG;AACH,SAAgB,iBAAiB;IAE7B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAK,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAA0B,CAAC,CAAC;IAE/B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAU,CAAC;YAChD,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAyB,CAAC,CAAC;IAE9B,OAAO;QACH,KAAK;QACL,MAAM;KACT,CAAC;AACN,CAAC"}
@@ -31,10 +31,10 @@ var LogTypes;
31
31
  }
32
32
  LogTypes.getIsEnabled = getIsEnabled;
33
33
  function logCall(logger, cfg, dir, data) {
34
- if (!cfg._api || (dir === 'req' && cfg._api.method === methods_js_1.EndpointMethods.GET && cfg.data == null)) {
34
+ if (!cfg._meta.api || (dir === 'req' && cfg._meta.api.method === methods_js_1.EndpointMethods.GET && cfg.data == null)) {
35
35
  return;
36
36
  }
37
- const info = LogTypes.getIsEnabled(cfg._log, dir);
37
+ const info = LogTypes.getIsEnabled(cfg._meta.log, dir);
38
38
  if (!info.enabled) {
39
39
  return;
40
40
  }
@@ -44,7 +44,7 @@ var LogTypes;
44
44
  const prefix = dir === 'req'
45
45
  ? 'REQ ====>'
46
46
  : 'RES <====';
47
- logger.log(prefix, cfg._api.method, cfg.url, dataLogged);
47
+ logger.log(prefix, cfg._meta.api.method, cfg.url, dataLogged);
48
48
  }
49
49
  LogTypes.logCall = logCall;
50
50
  })(LogTypes || (exports.LogTypes = LogTypes = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/api/logging.ts"],"names":[],"mappings":";;;AAGA,6CAA+C;AAW/C,IAAiB,QAAQ,CAwExB;AAxED,WAAiB,QAAQ;IAIrB;;;;MAIE;IACF,SAAgB,YAAY,CAAc,IAAwB,EAAE,GAAQ;QACxE,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC7B,CAAC;gBAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC5B,OAAO;wBACH,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,GAAG;qBACjB,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAtBe,qBAAY,eAsB3B,CAAA;IAmBD,SAAgB,OAAO,CAAC,MAAe,EAAE,GAAyB,EAAE,GAAiB,EAAE,IAAc;QACjG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,4BAAe,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YAC9F,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,GAAG,KAAK,KAAK;YACxB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,CAAC;QAElB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAnBe,gBAAO,UAmBtB,CAAA;AAGL,CAAC,EAxEgB,QAAQ,wBAAR,QAAQ,QAwExB"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/api/logging.ts"],"names":[],"mappings":";;;AAGA,6CAA+C;AAW/C,IAAiB,QAAQ,CAwExB;AAxED,WAAiB,QAAQ;IAIrB;;;;MAIE;IACF,SAAgB,YAAY,CAAc,IAAwB,EAAE,GAAQ;QACxE,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC7B,CAAC;gBAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC5B,OAAO;wBACH,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,GAAG;qBACjB,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAtBe,qBAAY,eAsB3B,CAAA;IAmBD,SAAgB,OAAO,CAAC,MAAe,EAAE,GAAmB,EAAE,GAAiB,EAAE,IAAc;QAC3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,4BAAe,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACxG,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,GAAG,KAAK,KAAK;YACxB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,CAAC;QAElB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAnBe,gBAAO,UAmBtB,CAAA;AAGL,CAAC,EAxEgB,QAAQ,wBAAR,QAAQ,QAwExB"}