@zajno/common 2.5.0 → 2.6.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/cjs/api/builder.js +30 -0
- package/cjs/api/builder.js.map +1 -0
- package/cjs/api/call.js +14 -7
- package/cjs/api/call.js.map +1 -1
- package/cjs/api/endpoint.js +65 -58
- package/cjs/api/endpoint.js.map +1 -1
- package/cjs/api/endpoint.types.js +0 -8
- package/cjs/api/endpoint.types.js.map +1 -1
- package/cjs/api/error.js +12 -0
- package/cjs/api/error.js.map +1 -1
- package/cjs/api/extensions/contentType.js +39 -0
- package/cjs/api/extensions/contentType.js.map +1 -0
- package/cjs/api/extensions/index.js +6 -0
- package/cjs/api/extensions/index.js.map +1 -0
- package/cjs/api/extensions/validation.js +27 -0
- package/cjs/api/extensions/validation.js.map +1 -0
- package/cjs/api/helpers.js +3 -2
- package/cjs/api/helpers.js.map +1 -1
- package/cjs/api/logging.js +23 -0
- package/cjs/api/logging.js.map +1 -1
- package/esm/api/builder.js +26 -0
- package/esm/api/builder.js.map +1 -0
- package/esm/api/call.js +14 -7
- package/esm/api/call.js.map +1 -1
- package/esm/api/endpoint.js +65 -57
- package/esm/api/endpoint.js.map +1 -1
- package/esm/api/endpoint.types.js +1 -7
- package/esm/api/endpoint.types.js.map +1 -1
- package/esm/api/error.js +12 -0
- package/esm/api/error.js.map +1 -1
- package/esm/api/extensions/contentType.js +36 -0
- package/esm/api/extensions/contentType.js.map +1 -0
- package/esm/api/extensions/index.js +3 -0
- package/esm/api/extensions/index.js.map +1 -0
- package/esm/api/extensions/validation.js +24 -0
- package/esm/api/extensions/validation.js.map +1 -0
- package/esm/api/helpers.js +3 -2
- package/esm/api/helpers.js.map +1 -1
- package/esm/api/logging.js +23 -0
- package/esm/api/logging.js.map +1 -1
- package/package.json +9 -16
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/api/builder.d.ts +16 -0
- package/types/api/call.d.ts +17 -4
- package/types/api/endpoint.d.ts +39 -30
- package/types/api/endpoint.types.d.ts +23 -12
- package/types/api/error.d.ts +2 -0
- package/types/api/extensions/contentType.d.ts +22 -0
- package/types/api/extensions/index.d.ts +2 -0
- package/types/api/extensions/validation.d.ts +12 -0
- package/types/api/helpers.d.ts +1 -1
- package/types/api/logging.d.ts +27 -1
package/esm/api/endpoint.js
CHANGED
|
@@ -1,65 +1,73 @@
|
|
|
1
1
|
import { Path } from '../structures/path/index.js';
|
|
2
2
|
import { EndpointMethods } from './methods.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
out;
|
|
10
|
-
queryKeys;
|
|
11
|
-
queryTemplate;
|
|
12
|
-
errorProcessor;
|
|
13
|
-
headers;
|
|
14
|
-
get pathBuilder() { return this.path.as(); }
|
|
15
|
-
static construct(method = EndpointMethods.GET, displayName) {
|
|
16
|
-
const res = new ApiEndpoint();
|
|
17
|
-
res.method = method;
|
|
18
|
-
res.displayName = displayName;
|
|
19
|
-
return res;
|
|
20
|
-
}
|
|
21
|
-
/** Creates an instance and applies 'GET' method for it. */
|
|
22
|
-
static get(displayName) {
|
|
23
|
-
return ApiEndpoint.construct(EndpointMethods.GET, displayName);
|
|
24
|
-
}
|
|
25
|
-
/** Creates an instance and applies 'POST' method for it. */
|
|
26
|
-
static post(displayName) {
|
|
27
|
-
return ApiEndpoint.construct(EndpointMethods.POST, displayName);
|
|
28
|
-
}
|
|
29
|
-
/** Creates an instance and applies 'DELETE' method for it. */
|
|
30
|
-
static delete(displayName) {
|
|
31
|
-
return ApiEndpoint.construct(EndpointMethods.DELETE, displayName);
|
|
3
|
+
export var ApiEndpoint;
|
|
4
|
+
(function (ApiEndpoint) {
|
|
5
|
+
/** Since we don't use class anymore, we need another way to determine an object to be an Endpoint instance. */
|
|
6
|
+
const ENDPOINT_OBJ_MARKER = '_ENDPOINT_OBJ_MARKER';
|
|
7
|
+
function isEndpoint(obj) {
|
|
8
|
+
return obj[ENDPOINT_OBJ_MARKER] === true;
|
|
32
9
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
10
|
+
ApiEndpoint.isEndpoint = isEndpoint;
|
|
11
|
+
function createBase(displayName) {
|
|
12
|
+
const data = {
|
|
13
|
+
path: Path.Empty,
|
|
14
|
+
displayName,
|
|
15
|
+
method: EndpointMethods.GET,
|
|
16
|
+
};
|
|
17
|
+
data[ENDPOINT_OBJ_MARKER] = true;
|
|
18
|
+
const res = data;
|
|
19
|
+
// only extension methods
|
|
20
|
+
const ext = {
|
|
21
|
+
withMethod(method) {
|
|
22
|
+
data.method = method;
|
|
23
|
+
return res;
|
|
24
|
+
},
|
|
25
|
+
get() {
|
|
26
|
+
data.method = EndpointMethods.GET;
|
|
27
|
+
return res;
|
|
28
|
+
},
|
|
29
|
+
put() {
|
|
30
|
+
data.method = EndpointMethods.PUT;
|
|
31
|
+
return res;
|
|
32
|
+
},
|
|
33
|
+
post() {
|
|
34
|
+
data.method = EndpointMethods.POST;
|
|
35
|
+
return res;
|
|
36
|
+
},
|
|
37
|
+
delete() {
|
|
38
|
+
data.method = EndpointMethods.DELETE;
|
|
39
|
+
return res;
|
|
40
|
+
},
|
|
41
|
+
withPath(...path) {
|
|
42
|
+
const p = Path.construct(...path);
|
|
43
|
+
data.path = p;
|
|
44
|
+
return res;
|
|
45
|
+
},
|
|
46
|
+
withQuery(...queryKeys) {
|
|
47
|
+
data.queryKeys = queryKeys;
|
|
48
|
+
return res;
|
|
49
|
+
},
|
|
50
|
+
withErrors(errorProcessor) {
|
|
51
|
+
data.errorProcessor = errorProcessor;
|
|
52
|
+
return res;
|
|
53
|
+
},
|
|
54
|
+
withHeaders() {
|
|
55
|
+
return res;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
Object.assign(res, ext);
|
|
38
59
|
return res;
|
|
39
60
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
function createBuilder(baseFactory, extender) {
|
|
62
|
+
const res = function (displayName) {
|
|
63
|
+
const baseRes = baseFactory(displayName);
|
|
64
|
+
return extender ? extender(baseRes) : baseRes;
|
|
65
|
+
};
|
|
66
|
+
res.extend = (extender) => {
|
|
67
|
+
return createBuilder(res, extender);
|
|
68
|
+
};
|
|
44
69
|
return res;
|
|
45
70
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const res = this;
|
|
49
|
-
res.errorProcessor = errorProcessor;
|
|
50
|
-
return res;
|
|
51
|
-
}
|
|
52
|
-
/** Applies headers type. */
|
|
53
|
-
withHeaders(_headersMarker) {
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
/** Marks this instance as one has to be sent as form.
|
|
57
|
-
*
|
|
58
|
-
* TODO: introduce more content types support.
|
|
59
|
-
*/
|
|
60
|
-
asForm() {
|
|
61
|
-
this.isForm = true;
|
|
62
|
-
return this;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
71
|
+
ApiEndpoint.create = createBuilder(createBase);
|
|
72
|
+
})(ApiEndpoint || (ApiEndpoint = {}));
|
|
65
73
|
//# sourceMappingURL=endpoint.js.map
|
package/esm/api/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/endpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA+C/C,MAAM,KAAW,WAAW,CAyG3B;AAzGD,WAAiB,WAAW;IAExB,+GAA+G;IAC/G,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;IAEnD,SAAgB,UAAU,CAAC,GAAQ;QAC/B,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC7C,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAED,SAAS,UAAU,CAAC,WAAoB;QAEpC,MAAM,IAAI,GAAG;YACT,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,WAAW;YACX,MAAM,EAAE,eAAe,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,eAAe,CAAC,GAAG,CAAC;gBAClC,OAAO,GAA6C,CAAC;YACzD,CAAC;YACD,GAAG;gBACC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;gBAClC,OAAO,GAAsE,CAAC;YAClF,CAAC;YACD,IAAI;gBACA,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;gBACnC,OAAO,GAAsE,CAAC;YAClF,CAAC;YACD,MAAM;gBACF,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;gBACrC,OAAO,GAA6C,CAAC;YACzD,CAAC;YAED,QAAQ,CAA6B,GAAG,IAAO;gBAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,OAAO,GAAmF,CAAC;YAC/F,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;AACpD,CAAC,EAzGgB,WAAW,KAAX,WAAW,QAyG3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.types.js","sourceRoot":"","sources":["../../../src/api/endpoint.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint.types.js","sourceRoot":"","sources":["../../../src/api/endpoint.types.ts"],"names":[],"mappings":""}
|
package/esm/api/error.js
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
This module is mostly an example of how an API error data structures may look like.
|
|
4
|
+
|
|
5
|
+
It implies that API endpoints have a standardized data structure for errors, and that the error handling is done in a centralized way.
|
|
6
|
+
|
|
7
|
+
`ApiErrorResponse` is a base DTO for errors in responses, can be a combination of an error code, message, and a cause.
|
|
8
|
+
|
|
9
|
+
`ApiError` is an Error class that can be thrown and caught, and is basically a wrapper around the `ApiErrorResponse` DTO.
|
|
10
|
+
|
|
11
|
+
*/
|
|
1
12
|
export var ApiErrorResponse;
|
|
2
13
|
(function (ApiErrorResponse) {
|
|
3
14
|
function create(code, message, cause) {
|
|
@@ -5,6 +16,7 @@ export var ApiErrorResponse;
|
|
|
5
16
|
}
|
|
6
17
|
ApiErrorResponse.create = create;
|
|
7
18
|
})(ApiErrorResponse || (ApiErrorResponse = {}));
|
|
19
|
+
/** An Error to be thrown as an API error, and be caught */
|
|
8
20
|
export class ApiError extends Error {
|
|
9
21
|
status;
|
|
10
22
|
code;
|
package/esm/api/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/api/error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/api/error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AAUF,MAAM,KAAW,gBAAgB,CAIhC;AAJD,WAAiB,gBAAgB;IAC7B,SAAgB,MAAM,CAA4C,IAAa,EAAE,OAAgB,EAAE,KAAc;QAC7G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IAFe,uBAAM,SAErB,CAAA;AACL,CAAC,EAJgB,gBAAgB,KAAhB,gBAAgB,QAIhC;AAED,2DAA2D;AAC3D,MAAM,OAAO,QAIX,SAAQ,KAAK;IAKS;IACA;IAJX,KAAK,CAAU;IAExB,YACoB,MAAc,EACd,IAAa,EAC7B,OAAe,EACf,KAAc;QAEd,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QALV,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QAK7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,YAAY,CACtB,MAAc,EACd,YAAqB;QAErB,MAAM,QAAQ,GAAG,YAAkD,CAAC;QACpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,QAAQ,CACf,MAAM,EACN,CAAC,EACD;gBACI,wDAAwD;gBACxD,QAAQ,EAAE,OAAO,IAAI,YAAY,QAAQ,CAAC,OAAO,EAAE;aACtD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;QACN,CAAC;QAED,OAAO,IAAI,QAAQ,CACf,MAAM,EACN,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,OAAO,IAAI,cAAc,EAClC,QAAQ,CAAC,KAAK,CACjB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export var IEndpointInputContentType;
|
|
2
|
+
(function (IEndpointInputContentType) {
|
|
3
|
+
IEndpointInputContentType.extender = (base) => {
|
|
4
|
+
const ext = {
|
|
5
|
+
contentType: undefined,
|
|
6
|
+
withContentType(contentType) {
|
|
7
|
+
this.contentType = contentType;
|
|
8
|
+
return this;
|
|
9
|
+
},
|
|
10
|
+
asJson() {
|
|
11
|
+
this.contentType = 'application/json';
|
|
12
|
+
return this;
|
|
13
|
+
},
|
|
14
|
+
asMultipartForm() {
|
|
15
|
+
this.contentType = 'multipart/form-data';
|
|
16
|
+
return this;
|
|
17
|
+
},
|
|
18
|
+
asUrlEncoded() {
|
|
19
|
+
this.contentType = 'application/x-www-form-urlencoded';
|
|
20
|
+
return this;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
return Object.assign(base, ext);
|
|
24
|
+
};
|
|
25
|
+
function guard(api) {
|
|
26
|
+
return 'contentType' in api;
|
|
27
|
+
}
|
|
28
|
+
IEndpointInputContentType.guard = guard;
|
|
29
|
+
function tryApplyContentType(api, headers) {
|
|
30
|
+
if (guard(api) && api.contentType) {
|
|
31
|
+
headers['Content-Type'] = api.contentType;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
IEndpointInputContentType.tryApplyContentType = tryApplyContentType;
|
|
35
|
+
})(IEndpointInputContentType || (IEndpointInputContentType = {}));
|
|
36
|
+
//# sourceMappingURL=contentType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contentType.js","sourceRoot":"","sources":["../../../../src/api/extensions/contentType.ts"],"names":[],"mappings":"AAuBA,MAAM,KAAW,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,KAAzB,yBAAyB,QAiCzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export var IEndpointInputValidation;
|
|
2
|
+
(function (IEndpointInputValidation) {
|
|
3
|
+
IEndpointInputValidation.extender = (base) => {
|
|
4
|
+
const ext = {
|
|
5
|
+
validate: undefined,
|
|
6
|
+
withValidation(validate) {
|
|
7
|
+
this.validate = validate;
|
|
8
|
+
return this;
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
return Object.assign(base, ext);
|
|
12
|
+
};
|
|
13
|
+
function guard(api) {
|
|
14
|
+
return 'validate' in api;
|
|
15
|
+
}
|
|
16
|
+
IEndpointInputValidation.guard = guard;
|
|
17
|
+
function tryValidate(api, input) {
|
|
18
|
+
if (guard(api) && api.validate) {
|
|
19
|
+
return api.validate(input);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
IEndpointInputValidation.tryValidate = tryValidate;
|
|
23
|
+
})(IEndpointInputValidation || (IEndpointInputValidation = {}));
|
|
24
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":"AASA,MAAM,KAAW,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,KAA6C;QACzF,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,KAAxB,wBAAwB,QAwBxC"}
|
package/esm/api/helpers.js
CHANGED
|
@@ -7,10 +7,11 @@ export function setDefaults(settings) {
|
|
|
7
7
|
}
|
|
8
8
|
const getPrefix = (prefix) => typeof prefix === 'string' ? prefix : (prefix ? DefaultSettings.basePrefix : false);
|
|
9
9
|
export function getPath(endpoint, pathArgs, prefix = true) {
|
|
10
|
-
|
|
10
|
+
const path = endpoint.path;
|
|
11
|
+
return path.build(pathArgs || undefined, { addStart: getPrefix(prefix) });
|
|
11
12
|
}
|
|
12
13
|
export function getTemplate(endpoint, prefix = true) {
|
|
13
|
-
return endpoint.
|
|
14
|
+
return endpoint.path.template(DefaultSettings.templateArgPrefix, { addStart: getPrefix(prefix) });
|
|
14
15
|
}
|
|
15
16
|
export function getFormattedDisplayName(endpoint) {
|
|
16
17
|
const template = getTemplate(endpoint);
|
package/esm/api/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/helpers.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,iBAAiB,EAAE,GAAoC;IACvD,UAAU,EAAE,GAAG;CAClB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAyC;IACjE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAGD,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjI,MAAM,UAAU,OAAO,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/helpers.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,iBAAiB,EAAE,GAAoC;IACvD,UAAU,EAAE,GAAG;CAClB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAyC;IACjE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAGD,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjI,MAAM,UAAU,OAAO,CACnB,QAAW,EACX,QAAsC,EACtC,SAA2B,IAAI;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAqB,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAA0B,QAAW,EAAE,SAA2B,IAAI;IAC7F,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW;QAC/B,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,IAAI;QAC9B,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,MAAM,GAAG,QAAQ,CAAC;AAC7B,CAAC"}
|
package/esm/api/logging.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { EndpointMethods } from './methods.js';
|
|
1
2
|
export var LogTypes;
|
|
2
3
|
(function (LogTypes) {
|
|
4
|
+
/**
|
|
5
|
+
* Get the enabled state of a log type.
|
|
6
|
+
* @param type Log type to check.
|
|
7
|
+
* @param dir Direction of log, either request or response.
|
|
8
|
+
*/
|
|
3
9
|
function getIsEnabled(type, dir) {
|
|
4
10
|
if (type) {
|
|
5
11
|
if (type === true || type === 'full' || type === dir) {
|
|
@@ -21,5 +27,22 @@ export var LogTypes;
|
|
|
21
27
|
return { enabled: false };
|
|
22
28
|
}
|
|
23
29
|
LogTypes.getIsEnabled = getIsEnabled;
|
|
30
|
+
function logCall(logger, cfg, dir, data) {
|
|
31
|
+
if (!cfg._api || (dir === 'req' && cfg._api.method === EndpointMethods.GET && cfg.data == null)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const info = LogTypes.getIsEnabled(cfg._log, dir);
|
|
35
|
+
if (!info.enabled) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const dataLogged = info.formatter
|
|
39
|
+
? info.formatter(data ?? cfg.data)
|
|
40
|
+
: (data ?? cfg.data);
|
|
41
|
+
const prefix = dir === 'req'
|
|
42
|
+
? 'REQ ====>'
|
|
43
|
+
: 'RES <====';
|
|
44
|
+
logger.log(prefix, cfg._api.method, cfg.url, dataLogged);
|
|
45
|
+
}
|
|
46
|
+
LogTypes.logCall = logCall;
|
|
24
47
|
})(LogTypes || (LogTypes = {}));
|
|
25
48
|
//# sourceMappingURL=logging.js.map
|
package/esm/api/logging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/api/logging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/api/logging.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAW/C,MAAM,KAAW,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,eAAe,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,KAAR,QAAQ,QAwExB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zajno/common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "Zajno's re-usable utilities for JS/TS projects",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -34,23 +34,10 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@
|
|
38
|
-
"@types/node": "^22.13.1",
|
|
39
|
-
"@vitest/coverage-istanbul": "^3.0.5",
|
|
40
|
-
"@zajno/eslint-config": "*",
|
|
41
|
-
"cpy-cli": "^5.0.0",
|
|
42
|
-
"eslint": "^9.20.0",
|
|
43
|
-
"fast-check": "^3.23.2",
|
|
44
|
-
"jest-extended": "^4.0.2",
|
|
45
|
-
"rimraf": "^6.0.1",
|
|
46
|
-
"scripty": "^2.1.1",
|
|
47
|
-
"ts-node": "^10.9.2",
|
|
48
|
-
"tslib": "^2.8.1",
|
|
49
|
-
"typescript": "^5.7.3",
|
|
50
|
-
"vitest": "^3.0.5"
|
|
37
|
+
"@zajno/eslint-config": "*"
|
|
51
38
|
},
|
|
52
39
|
"peerDependencies": {
|
|
53
|
-
"tslib": "^2.
|
|
40
|
+
"tslib": "^2.8"
|
|
54
41
|
},
|
|
55
42
|
"files": [
|
|
56
43
|
"LICENSE",
|
|
@@ -74,6 +61,12 @@
|
|
|
74
61
|
"require": "./cjs/api/index.js",
|
|
75
62
|
"default": "./cjs/api/index.js"
|
|
76
63
|
},
|
|
64
|
+
"./api/extensions": {
|
|
65
|
+
"types": "./types/api/extensions/index.d.ts",
|
|
66
|
+
"import": "./esm/api/extensions/index.js",
|
|
67
|
+
"require": "./cjs/api/extensions/index.js",
|
|
68
|
+
"default": "./cjs/api/extensions/index.js"
|
|
69
|
+
},
|
|
77
70
|
"./async": {
|
|
78
71
|
"types": "./types/async/index.d.ts",
|
|
79
72
|
"import": "./esm/async/index.js",
|
package/tsconfig.cjs.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
package/tsconfig.esm.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/singleton.ts","../src/lazy/types.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IEndpointInfo } from './endpoint.types.js';
|
|
2
|
+
import type { ApiCaller, GenericApiCaller } from './call.js';
|
|
3
|
+
import { ApiEndpoint } from './endpoint.js';
|
|
4
|
+
export interface IEndpointCaller<T extends IEndpointInfo, TExtra extends object = Record<string, any>> extends ApiCaller<T, TExtra> {
|
|
5
|
+
readonly Endpoint: T;
|
|
6
|
+
}
|
|
7
|
+
export type ApiDefinition = IEndpointInfo | {
|
|
8
|
+
[key: string]: ApiDefinition;
|
|
9
|
+
};
|
|
10
|
+
export type ApiRunner<T, TExtra extends Record<string, any>> = T extends IEndpointInfo ? IEndpointCaller<T, TExtra> : T extends Record<string, any> ? {
|
|
11
|
+
[K in keyof T]: ApiRunner<T[K], TExtra>;
|
|
12
|
+
} : never;
|
|
13
|
+
/** Converts an composite API endpoints object to the same tree of functions */
|
|
14
|
+
export declare function buildApi<TApi extends ApiDefinition, TExtra extends object = Record<string, any>>(api: TApi, caller: GenericApiCaller<TExtra>): ApiRunner<TApi, TExtra>;
|
|
15
|
+
/** Partial application: binding an endpoint to callApi, so only input data and extra are passed to a newly created function. */
|
|
16
|
+
export declare function createEndpointCallable<TEndpoint extends ApiEndpoint, TCaller extends GenericApiCaller<TExtra>, TExtra extends object = Record<string, any>>(endpoint: TEndpoint, caller: TCaller): IEndpointCaller<TEndpoint, TExtra>;
|
package/types/api/call.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { IEndpointInfo } from './endpoint.js';
|
|
|
3
3
|
import { EndpointMethods } from './methods.js';
|
|
4
4
|
import { LogTypes } from './logging.js';
|
|
5
5
|
/** Request options to be used by call implementation (e.g. interceptor). Passed as separate object argument to the call method. */
|
|
6
|
-
type
|
|
6
|
+
export type RequestExtra<T> = {
|
|
7
7
|
headers?: IEndpointInfo.ExtractHeaders<T>;
|
|
8
8
|
log?: LogTypes<IEndpointInfo.ExtractIn<T>, IEndpointInfo.ExtractOut<T>>;
|
|
9
9
|
noLoader?: boolean;
|
|
@@ -23,13 +23,26 @@ export type RequestConfigDetails<T extends IEndpointInfo = IEndpointInfo, TIn =
|
|
|
23
23
|
_extra?: TExtra;
|
|
24
24
|
};
|
|
25
25
|
type CallerOptions<TExtra extends object = Record<string, any>> = {
|
|
26
|
-
/** Additional hook before hading request config to implementation */
|
|
27
|
-
bodyValidation?: (api: IEndpointInfo, input: any) => Promise<void>;
|
|
28
26
|
/** Request implementation */
|
|
29
27
|
request: <TIn, TOut>(config: RequestConfigDetails<IEndpointInfo, TIn, TExtra>) => Promise<{
|
|
30
28
|
data: TOut;
|
|
31
29
|
}>;
|
|
30
|
+
hooks?: {
|
|
31
|
+
/**
|
|
32
|
+
* Called before config is created, to validate result input data.
|
|
33
|
+
* May throw to abort request. Use for input validation if needed.
|
|
34
|
+
*/
|
|
35
|
+
beforeConfig?: <T extends IEndpointInfo = IEndpointInfo>(api: T, body: IEndpointInfo.ExtractIn<T>, pathParams: IEndpointInfo.ExtractPath<T>, queryParams: IEndpointInfo.ExtractQuery<T>) => Promise<void> | void;
|
|
36
|
+
/**
|
|
37
|
+
* Called before request is sent.
|
|
38
|
+
* The config can be mutated or returned as updated object – in the latter case it will be merged into original config via `Object.assign`.
|
|
39
|
+
* This is useful for adding headers or modifying request data.
|
|
40
|
+
*/
|
|
41
|
+
beforeRequest?: <T extends IEndpointInfo = IEndpointInfo, TIn = IEndpointInfo.ExtractIn<T>, TExtra extends object = Record<string, any>>(config: RequestConfigDetails<T, TIn, TExtra>) => Promise<void> | void | Promise<RequestConfigDetails<T, TIn, TExtra>> | RequestConfigDetails<T, TIn, TExtra>;
|
|
42
|
+
};
|
|
32
43
|
};
|
|
33
44
|
export type EndpointCallArgs<T extends IEndpointInfo> = IEndpointInfo.ExtractIn<T> | IEndpointInfo.ExtractPath<T> | IEndpointInfo.ExtractQuery<T>;
|
|
34
|
-
export
|
|
45
|
+
export type GenericApiCaller<TExtra extends object = Record<string, any>> = ReturnType<typeof buildApiCaller<TExtra>>;
|
|
46
|
+
export type ApiCaller<TEndpoint extends IEndpointInfo, TExtra extends object = Record<string, any>> = (data: EndpointCallArgs<TEndpoint>, extra?: RequestExtra<TEndpoint> & TExtra) => Promise<IEndpointInfo.ExtractOut<TEndpoint>>;
|
|
47
|
+
export declare function buildApiCaller<TExtra extends object = Record<string, any>>(options: CallerOptions<TExtra>): <T extends IEndpointInfo>(api: T, data: EndpointCallArgs<T>, extra?: RequestExtra<T> & TExtra) => Promise<IEndpointInfo.ExtractOut<T>>;
|
|
35
48
|
export {};
|