@zajno/common 2.6.4 → 2.6.5
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 +6 -2
- package/cjs/api/builder.js.map +1 -1
- package/cjs/api/call.js +1 -1
- package/cjs/api/call.js.map +1 -1
- package/cjs/api/call.types.js +3 -0
- package/cjs/api/call.types.js.map +1 -0
- package/cjs/api/endpoint.js +4 -6
- package/cjs/api/endpoint.js.map +1 -1
- package/cjs/api/extensions/validation.js.map +1 -1
- package/cjs/api/helpers.js +4 -2
- package/cjs/api/helpers.js.map +1 -1
- package/cjs/dates/tz.js +19 -13
- package/cjs/dates/tz.js.map +1 -1
- package/cjs/structures/path/builder.js +2 -0
- package/cjs/structures/path/builder.js.map +1 -1
- package/esm/api/builder.js +6 -2
- package/esm/api/builder.js.map +1 -1
- package/esm/api/call.js +1 -1
- package/esm/api/call.js.map +1 -1
- package/esm/api/call.types.js +2 -0
- package/esm/api/call.types.js.map +1 -0
- package/esm/api/endpoint.js +4 -6
- package/esm/api/endpoint.js.map +1 -1
- package/esm/api/extensions/validation.js.map +1 -1
- package/esm/api/helpers.js +4 -2
- package/esm/api/helpers.js.map +1 -1
- package/esm/dates/tz.js +19 -13
- package/esm/dates/tz.js.map +1 -1
- package/esm/structures/path/builder.js +2 -0
- package/esm/structures/path/builder.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/api/builder.d.ts +3 -4
- package/types/api/call.d.ts +3 -48
- package/types/api/call.types.d.ts +52 -0
- package/types/api/endpoint.d.ts +10 -16
- package/types/api/endpoint.types.d.ts +15 -6
- package/types/api/extensions/validation.d.ts +3 -2
- package/types/api/helpers.d.ts +1 -1
- package/types/dates/tz.d.ts +14 -2
- package/types/structures/path/types.d.ts +18 -7
- package/types/types/misc.d.ts +1 -0
package/cjs/api/builder.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.buildApi = buildApi;
|
|
|
4
4
|
exports.createEndpointCallable = createEndpointCallable;
|
|
5
5
|
const endpoint_js_1 = require("./endpoint.js");
|
|
6
6
|
const assert_js_1 = require("../functions/assert.js");
|
|
7
|
+
const helpers_js_1 = require("./helpers.js");
|
|
7
8
|
/** Converts an composite API endpoints object to the same tree of functions */
|
|
8
9
|
function buildApi(api, caller) {
|
|
9
10
|
(0, assert_js_1.assert)(!!api && typeof api === 'object', 'API definition must be an object');
|
|
@@ -13,13 +14,16 @@ function buildApi(api, caller) {
|
|
|
13
14
|
}
|
|
14
15
|
return Object.entries(api).reduce((acc, [key, value]) => {
|
|
15
16
|
const next = value;
|
|
16
|
-
|
|
17
|
+
if (next != null && typeof next === 'object') {
|
|
18
|
+
acc[key] = buildApi(next, caller);
|
|
19
|
+
}
|
|
17
20
|
return acc;
|
|
18
21
|
}, {});
|
|
19
22
|
}
|
|
20
23
|
/** Partial application: binding an endpoint to callApi, so only input data and extra are passed to a newly created function. */
|
|
21
24
|
function createEndpointCallable(endpoint, caller) {
|
|
22
|
-
const
|
|
25
|
+
const path = (0, helpers_js_1.getTemplate)(endpoint).replaceAll('/', '_').replaceAll(':', '$') || 'root';
|
|
26
|
+
const name = `${endpoint.displayName || '?'}_${endpoint.method}_${path}`;
|
|
23
27
|
const fn = {
|
|
24
28
|
[name]: function (data, extra) { return caller(endpoint, data, extra); },
|
|
25
29
|
}[name]; // this sets the name of the function
|
package/cjs/api/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/api/builder.ts"],"names":[],"mappings":";;
|
|
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,CAAkC,CAAC;IACpG,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"}
|
package/cjs/api/call.js
CHANGED
|
@@ -12,7 +12,7 @@ function buildApiCaller(options) {
|
|
|
12
12
|
const queryInputs = {};
|
|
13
13
|
let queryStr = '';
|
|
14
14
|
// extract path inputs from data
|
|
15
|
-
const pathKeys = api.path
|
|
15
|
+
const pathKeys = api.path?.args;
|
|
16
16
|
if (resultInput && pathKeys?.length) {
|
|
17
17
|
for (const key of pathKeys) {
|
|
18
18
|
pathInputs[key] = resultInput[key];
|
package/cjs/api/call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.types.js","sourceRoot":"","sources":["../../../src/api/call.types.ts"],"names":[],"mappings":""}
|
package/cjs/api/endpoint.js
CHANGED
|
@@ -8,12 +8,11 @@ var ApiEndpoint;
|
|
|
8
8
|
/** Since we don't use class anymore, we need another way to determine an object to be an Endpoint instance. */
|
|
9
9
|
const ENDPOINT_OBJ_MARKER = '_ENDPOINT_OBJ_MARKER';
|
|
10
10
|
function isEndpoint(obj) {
|
|
11
|
-
return obj[ENDPOINT_OBJ_MARKER] === true;
|
|
11
|
+
return obj && obj[ENDPOINT_OBJ_MARKER] === true && 'method' in obj;
|
|
12
12
|
}
|
|
13
13
|
ApiEndpoint.isEndpoint = isEndpoint;
|
|
14
14
|
function createBase(displayName) {
|
|
15
15
|
const data = {
|
|
16
|
-
path: index_js_1.Path.Empty,
|
|
17
16
|
displayName,
|
|
18
17
|
method: methods_js_1.EndpointMethods.GET,
|
|
19
18
|
};
|
|
@@ -41,10 +40,9 @@ var ApiEndpoint;
|
|
|
41
40
|
data.method = methods_js_1.EndpointMethods.DELETE;
|
|
42
41
|
return res;
|
|
43
42
|
},
|
|
44
|
-
withPath(...
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
return res;
|
|
43
|
+
withPath(...p) {
|
|
44
|
+
const path = index_js_1.Path.construct(...p);
|
|
45
|
+
return Object.assign(res, { path });
|
|
48
46
|
},
|
|
49
47
|
withQuery(...queryKeys) {
|
|
50
48
|
data.queryKeys = queryKeys;
|
package/cjs/api/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/endpoint.ts"],"names":[],"mappings":";;;AAAA,0DAAmD;AACnD,6CAA+C;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":";;;
|
|
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"}
|
package/cjs/api/helpers.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.setDefaults = setDefaults;
|
|
|
5
5
|
exports.getPath = getPath;
|
|
6
6
|
exports.getTemplate = getTemplate;
|
|
7
7
|
exports.getFormattedDisplayName = getFormattedDisplayName;
|
|
8
|
+
const index_js_1 = require("../structures/path/index.js");
|
|
8
9
|
exports.DefaultSettings = {
|
|
9
10
|
templateArgPrefix: ':',
|
|
10
11
|
basePrefix: '/',
|
|
@@ -14,11 +15,12 @@ function setDefaults(settings) {
|
|
|
14
15
|
}
|
|
15
16
|
const getPrefix = (prefix) => typeof prefix === 'string' ? prefix : (prefix ? exports.DefaultSettings.basePrefix : false);
|
|
16
17
|
function getPath(endpoint, pathArgs, prefix = true) {
|
|
17
|
-
const path = endpoint.path;
|
|
18
|
+
const path = endpoint.path ?? index_js_1.Path.Empty;
|
|
18
19
|
return path.build(pathArgs || undefined, { addStart: getPrefix(prefix) });
|
|
19
20
|
}
|
|
20
21
|
function getTemplate(endpoint, prefix = true) {
|
|
21
|
-
|
|
22
|
+
const path = endpoint.path ?? index_js_1.Path.Empty;
|
|
23
|
+
return path.template(exports.DefaultSettings.templateArgPrefix, { addStart: getPrefix(prefix) });
|
|
22
24
|
}
|
|
23
25
|
function getFormattedDisplayName(endpoint) {
|
|
24
26
|
const template = getTemplate(endpoint);
|
package/cjs/api/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/helpers.ts"],"names":[],"mappings":";;;AAQA,kCAEC;AAKD,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/helpers.ts"],"names":[],"mappings":";;;AAQA,kCAEC;AAKD,0BAQC;AAED,kCAIC;AAED,0DAMC;AArCD,0DAAmD;AAGtC,QAAA,eAAe,GAAG;IAC3B,iBAAiB,EAAE,GAAoC;IACvD,UAAU,EAAE,GAAG;CAClB,CAAC;AAEF,SAAgB,WAAW,CAAC,QAAyC;IACjE,MAAM,CAAC,MAAM,CAAC,uBAAe,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,uBAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjI,SAAgB,OAAO,CACnB,QAAW,EACX,QAAsC,EACtC,SAA2B,IAAI;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAK,eAAI,CAAC,KAAuB,CAAC;IAE5D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,WAAW,CAA0B,QAAW,EAAE,SAA2B,IAAI;IAC7F,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAK,eAAI,CAAC,KAAuB,CAAC;IAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,uBAAe,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,SAAgB,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/cjs/dates/tz.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Timezones = void 0;
|
|
4
|
-
/**
|
|
4
|
+
/** Helpers for time zones, based on `Intl.DateTimeFormat` */
|
|
5
5
|
var Timezones;
|
|
6
6
|
(function (Timezones) {
|
|
7
7
|
Timezones.Current = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
8
8
|
Timezones.CurrentOffset = new Date().getTimezoneOffset();
|
|
9
9
|
// https://stackoverflow.com/a/64262840/9053142
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Get the offset in minutes for a given time zone and date. Uses Intl.DateTimeFormat
|
|
12
|
+
* to get the time zone name, then parses it to get the offset.
|
|
13
|
+
* @param timeZone time zone name, e.g. 'America/New_York', 'Europe/Kyiv', etc.
|
|
14
|
+
* @param date date to get the offset for. If not provided, uses the current date.
|
|
15
|
+
* @returns offset in minutes. Positive values are west of UTC, negative values are east of UTC.
|
|
16
|
+
*/
|
|
17
|
+
function getOffset(timeZone, date) {
|
|
13
18
|
const timeZoneName = Intl.DateTimeFormat('ia', {
|
|
14
19
|
timeZoneName: 'longOffset',
|
|
15
20
|
timeZone,
|
|
16
21
|
})
|
|
17
|
-
.formatToParts()
|
|
22
|
+
.formatToParts(date)
|
|
18
23
|
.find((i) => i.type === 'timeZoneName')
|
|
19
24
|
?.value;
|
|
20
25
|
const offset = timeZoneName?.slice(3);
|
|
@@ -34,16 +39,17 @@ var Timezones;
|
|
|
34
39
|
result *= -1;
|
|
35
40
|
}
|
|
36
41
|
return result;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
expect(Timezones.getOffset('Asia/Kolkata')).toBe(-270);
|
|
42
|
+
}
|
|
43
|
+
Timezones.getOffset = getOffset;
|
|
44
|
+
/** Returns a new date with the specified timezone offset applied.
|
|
45
|
+
*
|
|
46
|
+
* Usage case can be imagined like this: if your local wall clock shows time X,
|
|
47
|
+
* what your clock will show when another local wall clock in the specified timezone will be showing time X.
|
|
44
48
|
*/
|
|
45
49
|
function shiftToTimeZone(date, tz) {
|
|
46
|
-
const offset = typeof tz === 'number'
|
|
50
|
+
const offset = typeof tz === 'number'
|
|
51
|
+
? tz
|
|
52
|
+
: getOffset(tz, date);
|
|
47
53
|
const shifted = new Date(date.getTime() + offset * 60 * 1000);
|
|
48
54
|
return shifted;
|
|
49
55
|
}
|
package/cjs/dates/tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,IAAiB,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,yBAAT,SAAS,QAyDzB"}
|
|
@@ -76,6 +76,7 @@ function build(strings, ...params) {
|
|
|
76
76
|
template,
|
|
77
77
|
args: params,
|
|
78
78
|
as() { return this; },
|
|
79
|
+
asOptional() { return this; },
|
|
79
80
|
withDefaults(defaults) {
|
|
80
81
|
defaultOptions = defaults;
|
|
81
82
|
return this;
|
|
@@ -151,6 +152,7 @@ function construct(...inputs) {
|
|
|
151
152
|
},
|
|
152
153
|
args,
|
|
153
154
|
as() { return this; },
|
|
155
|
+
asOptional() { return this; },
|
|
154
156
|
withDefaults(defaults) {
|
|
155
157
|
outputs.forEach(o => o.withDefaults(defaults));
|
|
156
158
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/structures/path/builder.ts"],"names":[],"mappings":";;;AAkCA,
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/structures/path/builder.ts"],"names":[],"mappings":"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"}
|
package/esm/api/builder.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ApiEndpoint } from './endpoint.js';
|
|
2
2
|
import { assert } from '../functions/assert.js';
|
|
3
|
+
import { getTemplate } from './helpers.js';
|
|
3
4
|
/** Converts an composite API endpoints object to the same tree of functions */
|
|
4
5
|
export function buildApi(api, caller) {
|
|
5
6
|
assert(!!api && typeof api === 'object', 'API definition must be an object');
|
|
@@ -9,13 +10,16 @@ export function buildApi(api, caller) {
|
|
|
9
10
|
}
|
|
10
11
|
return Object.entries(api).reduce((acc, [key, value]) => {
|
|
11
12
|
const next = value;
|
|
12
|
-
|
|
13
|
+
if (next != null && typeof next === 'object') {
|
|
14
|
+
acc[key] = buildApi(next, caller);
|
|
15
|
+
}
|
|
13
16
|
return acc;
|
|
14
17
|
}, {});
|
|
15
18
|
}
|
|
16
19
|
/** Partial application: binding an endpoint to callApi, so only input data and extra are passed to a newly created function. */
|
|
17
20
|
export function createEndpointCallable(endpoint, caller) {
|
|
18
|
-
const
|
|
21
|
+
const path = getTemplate(endpoint).replaceAll('/', '_').replaceAll(':', '$') || 'root';
|
|
22
|
+
const name = `${endpoint.displayName || '?'}_${endpoint.method}_${path}`;
|
|
19
23
|
const fn = {
|
|
20
24
|
[name]: function (data, extra) { return caller(endpoint, data, extra); },
|
|
21
25
|
}[name]; // this sets the name of the function
|
package/esm/api/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/api/builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/api/builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgB3C,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CACpB,GAAS,EACT,MAAgC;IAEhC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC7E,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAE9E,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC,GAAG,EAAE,MAA0B,CAAkC,CAAC;IACpG,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,MAAM,UAAU,sBAAsB,CAIpC,QAAmB,EAAE,MAAe;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,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"}
|
package/esm/api/call.js
CHANGED
|
@@ -9,7 +9,7 @@ export function buildApiCaller(options) {
|
|
|
9
9
|
const queryInputs = {};
|
|
10
10
|
let queryStr = '';
|
|
11
11
|
// extract path inputs from data
|
|
12
|
-
const pathKeys = api.path
|
|
12
|
+
const pathKeys = api.path?.args;
|
|
13
13
|
if (resultInput && pathKeys?.length) {
|
|
14
14
|
for (const key of pathKeys) {
|
|
15
15
|
pathInputs[key] = resultInput[key];
|
package/esm/api/call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.types.js","sourceRoot":"","sources":["../../../src/api/call.types.ts"],"names":[],"mappings":""}
|
package/esm/api/endpoint.js
CHANGED
|
@@ -5,12 +5,11 @@ export var ApiEndpoint;
|
|
|
5
5
|
/** Since we don't use class anymore, we need another way to determine an object to be an Endpoint instance. */
|
|
6
6
|
const ENDPOINT_OBJ_MARKER = '_ENDPOINT_OBJ_MARKER';
|
|
7
7
|
function isEndpoint(obj) {
|
|
8
|
-
return obj[ENDPOINT_OBJ_MARKER] === true;
|
|
8
|
+
return obj && obj[ENDPOINT_OBJ_MARKER] === true && 'method' in obj;
|
|
9
9
|
}
|
|
10
10
|
ApiEndpoint.isEndpoint = isEndpoint;
|
|
11
11
|
function createBase(displayName) {
|
|
12
12
|
const data = {
|
|
13
|
-
path: Path.Empty,
|
|
14
13
|
displayName,
|
|
15
14
|
method: EndpointMethods.GET,
|
|
16
15
|
};
|
|
@@ -38,10 +37,9 @@ export var ApiEndpoint;
|
|
|
38
37
|
data.method = EndpointMethods.DELETE;
|
|
39
38
|
return res;
|
|
40
39
|
},
|
|
41
|
-
withPath(...
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
return res;
|
|
40
|
+
withPath(...p) {
|
|
41
|
+
const path = Path.construct(...p);
|
|
42
|
+
return Object.assign(res, { path });
|
|
45
43
|
},
|
|
46
44
|
withQuery(...queryKeys) {
|
|
47
45
|
data.queryKeys = queryKeys;
|
package/esm/api/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAwC/C,MAAM,KAAW,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,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,CAAsC,GAAG,CAAI;gBACjD,MAAM,IAAI,GAAG,IAAI,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,KAAX,WAAW,QA2G3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/extensions/validation.ts"],"names":[],"mappings":"AAUA,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,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,KAAxB,wBAAwB,QAwBxC"}
|
package/esm/api/helpers.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Path } from '../structures/path/index.js';
|
|
1
2
|
export const DefaultSettings = {
|
|
2
3
|
templateArgPrefix: ':',
|
|
3
4
|
basePrefix: '/',
|
|
@@ -7,11 +8,12 @@ export function setDefaults(settings) {
|
|
|
7
8
|
}
|
|
8
9
|
const getPrefix = (prefix) => typeof prefix === 'string' ? prefix : (prefix ? DefaultSettings.basePrefix : false);
|
|
9
10
|
export function getPath(endpoint, pathArgs, prefix = true) {
|
|
10
|
-
const path = endpoint.path;
|
|
11
|
+
const path = endpoint.path ?? Path.Empty;
|
|
11
12
|
return path.build(pathArgs || undefined, { addStart: getPrefix(prefix) });
|
|
12
13
|
}
|
|
13
14
|
export function getTemplate(endpoint, prefix = true) {
|
|
14
|
-
|
|
15
|
+
const path = endpoint.path ?? Path.Empty;
|
|
16
|
+
return path.template(DefaultSettings.templateArgPrefix, { addStart: getPrefix(prefix) });
|
|
15
17
|
}
|
|
16
18
|
export function getFormattedDisplayName(endpoint) {
|
|
17
19
|
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":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,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,IAAI,IAAK,IAAI,CAAC,KAAuB,CAAC;IAE5D,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,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAK,IAAI,CAAC,KAAuB,CAAC;IAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7F,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/dates/tz.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Helpers for time zones, based on `Intl.DateTimeFormat` */
|
|
2
2
|
export var Timezones;
|
|
3
3
|
(function (Timezones) {
|
|
4
4
|
Timezones.Current = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
5
5
|
Timezones.CurrentOffset = new Date().getTimezoneOffset();
|
|
6
6
|
// https://stackoverflow.com/a/64262840/9053142
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Get the offset in minutes for a given time zone and date. Uses Intl.DateTimeFormat
|
|
9
|
+
* to get the time zone name, then parses it to get the offset.
|
|
10
|
+
* @param timeZone time zone name, e.g. 'America/New_York', 'Europe/Kyiv', etc.
|
|
11
|
+
* @param date date to get the offset for. If not provided, uses the current date.
|
|
12
|
+
* @returns offset in minutes. Positive values are west of UTC, negative values are east of UTC.
|
|
13
|
+
*/
|
|
14
|
+
function getOffset(timeZone, date) {
|
|
10
15
|
const timeZoneName = Intl.DateTimeFormat('ia', {
|
|
11
16
|
timeZoneName: 'longOffset',
|
|
12
17
|
timeZone,
|
|
13
18
|
})
|
|
14
|
-
.formatToParts()
|
|
19
|
+
.formatToParts(date)
|
|
15
20
|
.find((i) => i.type === 'timeZoneName')
|
|
16
21
|
?.value;
|
|
17
22
|
const offset = timeZoneName?.slice(3);
|
|
@@ -31,16 +36,17 @@ export var Timezones;
|
|
|
31
36
|
result *= -1;
|
|
32
37
|
}
|
|
33
38
|
return result;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
expect(Timezones.getOffset('Asia/Kolkata')).toBe(-270);
|
|
39
|
+
}
|
|
40
|
+
Timezones.getOffset = getOffset;
|
|
41
|
+
/** Returns a new date with the specified timezone offset applied.
|
|
42
|
+
*
|
|
43
|
+
* Usage case can be imagined like this: if your local wall clock shows time X,
|
|
44
|
+
* what your clock will show when another local wall clock in the specified timezone will be showing time X.
|
|
41
45
|
*/
|
|
42
46
|
function shiftToTimeZone(date, tz) {
|
|
43
|
-
const offset = typeof tz === 'number'
|
|
47
|
+
const offset = typeof tz === 'number'
|
|
48
|
+
? tz
|
|
49
|
+
: getOffset(tz, date);
|
|
44
50
|
const shifted = new Date(date.getTime() + offset * 60 * 1000);
|
|
45
51
|
return shifted;
|
|
46
52
|
}
|
package/esm/dates/tz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tz.js","sourceRoot":"","sources":["../../../src/dates/tz.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,KAAW,SAAS,CAyDzB;AAzDD,WAAiB,SAAS;IAET,iBAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3D,uBAAa,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAE5D,+CAA+C;IAC/C;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAoB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC3C,YAAY,EAAE,YAAY;YAC1B,QAAQ;SACX,CAAC;aACG,aAAa,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YACvC,EAAE,KAAK,CAAC;QAEZ,MAAM,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IA7Be,mBAAS,YA6BxB,CAAA;IAED;;;;MAIE;IACF,SAAgB,eAAe,CAAC,IAAU,EAAE,EAAmB;QAC3D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,QAAQ;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,yBAAe,kBAO9B,CAAA;AACL,CAAC,EAzDgB,SAAS,KAAT,SAAS,QAyDzB"}
|
|
@@ -70,6 +70,7 @@ export function build(strings, ...params) {
|
|
|
70
70
|
template,
|
|
71
71
|
args: params,
|
|
72
72
|
as() { return this; },
|
|
73
|
+
asOptional() { return this; },
|
|
73
74
|
withDefaults(defaults) {
|
|
74
75
|
defaultOptions = defaults;
|
|
75
76
|
return this;
|
|
@@ -145,6 +146,7 @@ export function construct(...inputs) {
|
|
|
145
146
|
},
|
|
146
147
|
args,
|
|
147
148
|
as() { return this; },
|
|
149
|
+
asOptional() { return this; },
|
|
148
150
|
withDefaults(defaults) {
|
|
149
151
|
outputs.forEach(o => o.withDefaults(defaults));
|
|
150
152
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/structures/path/builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/structures/path/builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/tsconfig.cjs.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/call.types.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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/call.types.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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/call.types.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/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.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/timeout.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/types/api/builder.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { IEndpointInfo } from './endpoint.types.js';
|
|
2
2
|
import type { ApiCaller, GenericApiCaller } from './call.js';
|
|
3
|
-
|
|
4
|
-
export interface IEndpointCaller<T extends IEndpointInfo, TExtra extends object = Record<string, any>> extends ApiCaller<T, TExtra> {
|
|
3
|
+
export type IEndpointCaller<T extends IEndpointInfo, TExtra extends object = Record<string, any>> = ApiCaller<T, TExtra> & {
|
|
5
4
|
readonly Endpoint: T;
|
|
6
|
-
}
|
|
5
|
+
};
|
|
7
6
|
export type ApiDefinition = IEndpointInfo | {
|
|
8
7
|
[key: string]: ApiDefinition;
|
|
9
8
|
};
|
|
@@ -13,4 +12,4 @@ export type ApiRunner<T, TExtra extends Record<string, any>> = T extends IEndpoi
|
|
|
13
12
|
/** Converts an composite API endpoints object to the same tree of functions */
|
|
14
13
|
export declare function buildApi<TApi extends ApiDefinition, TExtra extends object = Record<string, any>>(api: TApi, caller: GenericApiCaller<TExtra>): ApiRunner<TApi, TExtra>;
|
|
15
14
|
/** 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
|
|
15
|
+
export declare function createEndpointCallable<TEndpoint extends IEndpointInfo, TCaller extends GenericApiCaller<TExtra>, TExtra extends object = Record<string, any>>(endpoint: TEndpoint, caller: TCaller): IEndpointCaller<TEndpoint, TExtra>;
|
package/types/api/call.d.ts
CHANGED
|
@@ -1,48 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { LogTypes } from './logging.js';
|
|
5
|
-
/** Request options to be used by call implementation (e.g. interceptor). Passed as separate object argument to the call method. */
|
|
6
|
-
export type RequestExtra<T> = {
|
|
7
|
-
headers?: IEndpointInfo.ExtractHeaders<T>;
|
|
8
|
-
log?: LogTypes<IEndpointInfo.ExtractIn<T>, IEndpointInfo.ExtractOut<T>>;
|
|
9
|
-
noLoader?: boolean;
|
|
10
|
-
};
|
|
11
|
-
export type RequestConfig<TIn> = {
|
|
12
|
-
method: EndpointMethods | string & Record<never, never>;
|
|
13
|
-
url: string;
|
|
14
|
-
data: TIn | null | undefined;
|
|
15
|
-
headers: AnyObject;
|
|
16
|
-
};
|
|
17
|
-
/** Compiled request config object passed to `request` implementation */
|
|
18
|
-
export type RequestConfigDetails<T extends IEndpointInfo = IEndpointInfo, TIn = IEndpointInfo.ExtractIn<T>, TExtra extends object = Record<string, any>> = RequestConfig<TIn> & {
|
|
19
|
-
_api: T;
|
|
20
|
-
_noLoader?: boolean;
|
|
21
|
-
_log?: LogTypes;
|
|
22
|
-
/** Additional data passed to the request implementation */
|
|
23
|
-
_extra?: TExtra;
|
|
24
|
-
};
|
|
25
|
-
type CallerOptions<TExtra extends object = Record<string, any>> = {
|
|
26
|
-
/** Request implementation */
|
|
27
|
-
request: <TIn, TOut>(config: RequestConfigDetails<IEndpointInfo, TIn, TExtra>) => Promise<{
|
|
28
|
-
data: TOut;
|
|
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
|
-
};
|
|
43
|
-
};
|
|
44
|
-
export type EndpointCallArgs<T extends IEndpointInfo> = IEndpointInfo.ExtractIn<T> | IEndpointInfo.ExtractPath<T> | IEndpointInfo.ExtractQuery<T>;
|
|
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>>;
|
|
48
|
-
export {};
|
|
1
|
+
import type { CallerOptions, GenericApiCaller } from './call.types.js';
|
|
2
|
+
export type * from './call.types.js';
|
|
3
|
+
export declare function buildApiCaller<TExtra extends object = Record<string, any>>(options: CallerOptions<TExtra>): GenericApiCaller<TExtra>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Path } from '../structures/path/index.js';
|
|
2
|
+
import type { AnyObject } from '../types/misc.js';
|
|
3
|
+
import type { IEndpointInfo } from './endpoint.types.js';
|
|
4
|
+
import type { LogTypes } from './logging.js';
|
|
5
|
+
import type { EndpointMethods } from './methods.js';
|
|
6
|
+
/** Request options to be used by call implementation (e.g. interceptor). Passed as separate object argument to the call method. */
|
|
7
|
+
export type RequestExtra<T> = {
|
|
8
|
+
headers?: IEndpointInfo.ExtractHeaders<T>;
|
|
9
|
+
log?: LogTypes<IEndpointInfo.ExtractIn<T>, IEndpointInfo.ExtractOut<T>>;
|
|
10
|
+
noLoader?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type RequestConfig<TIn> = {
|
|
13
|
+
method: EndpointMethods | string & Record<never, never>;
|
|
14
|
+
url: string;
|
|
15
|
+
data: TIn | null | undefined;
|
|
16
|
+
headers: AnyObject;
|
|
17
|
+
};
|
|
18
|
+
/** Compiled request config object passed to `request` implementation */
|
|
19
|
+
export type RequestConfigDetails<T extends IEndpointInfo = IEndpointInfo, TIn = IEndpointInfo.ExtractIn<T>, TExtra extends object = Record<string, any>> = RequestConfig<TIn> & {
|
|
20
|
+
_api: T;
|
|
21
|
+
_noLoader?: boolean;
|
|
22
|
+
_log?: LogTypes;
|
|
23
|
+
/** Additional data passed to the request implementation */
|
|
24
|
+
_extra?: TExtra;
|
|
25
|
+
};
|
|
26
|
+
export type CallerOptions<TExtra extends object = Record<string, any>> = {
|
|
27
|
+
/** Request implementation */
|
|
28
|
+
request: <TIn, TOut>(config: RequestConfigDetails<IEndpointInfo, TIn, TExtra>) => Promise<{
|
|
29
|
+
data: TOut;
|
|
30
|
+
}>;
|
|
31
|
+
hooks?: {
|
|
32
|
+
/**
|
|
33
|
+
* Called before config is created, to validate result input data.
|
|
34
|
+
* May throw to abort request. Use for input validation if needed.
|
|
35
|
+
*/
|
|
36
|
+
beforeConfig?: <T extends IEndpointInfo = IEndpointInfo>(api: T, body: IEndpointInfo.ExtractIn<T, object>, pathParams: IEndpointInfo.ExtractPath<T, object>, queryParams: IEndpointInfo.ExtractQuery<T, object>) => Promise<void> | void;
|
|
37
|
+
/**
|
|
38
|
+
* Called before request is sent.
|
|
39
|
+
* The config can be mutated or returned as updated object – in the latter case it will be merged into original config via `Object.assign`.
|
|
40
|
+
* This is useful for adding headers or modifying request data.
|
|
41
|
+
*/
|
|
42
|
+
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>;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export type EndpointCallArgs<T extends IEndpointInfo> = IEndpointInfo.ExtractIn<T, object> & IEndpointInfo.ExtractPath<T, object> & IEndpointInfo.ExtractQuery<T, object>;
|
|
46
|
+
type IEndpointNoArgs = IEndpointInfo.Base & (IEndpointInfo.IPath<Path.StaticBuilder> | IEndpointInfo.IPathAbstract) & IEndpointInfo.IIn<null> & IEndpointInfo.IQuery<Record<string, never>>;
|
|
47
|
+
export interface GenericApiCaller<TExtra extends object = Record<string, any>> {
|
|
48
|
+
<T extends IEndpointInfo>(api: T, data: EndpointCallArgs<T>, extra?: RequestExtra<T> & TExtra): Promise<IEndpointInfo.ExtractOut<T>>;
|
|
49
|
+
<T extends IEndpointNoArgs>(api: T, data?: null, extra?: RequestExtra<T> & TExtra): Promise<IEndpointInfo.ExtractOut<T>>;
|
|
50
|
+
}
|
|
51
|
+
export type ApiCaller<TEndpoint extends IEndpointInfo, TExtra extends object = Record<string, any>> = TEndpoint extends IEndpointNoArgs ? (data?: null, extra?: RequestExtra<TEndpoint> & TExtra) => Promise<IEndpointInfo.ExtractOut<TEndpoint>> : (data: EndpointCallArgs<TEndpoint>, extra?: RequestExtra<TEndpoint> & TExtra) => Promise<IEndpointInfo.ExtractOut<TEndpoint>>;
|
|
52
|
+
export {};
|
package/types/api/endpoint.d.ts
CHANGED
|
@@ -2,12 +2,6 @@ import { Path } from '../structures/path/index.js';
|
|
|
2
2
|
import { EndpointMethods } from './methods.js';
|
|
3
3
|
import type { IEndpointInfo } from './endpoint.types.js';
|
|
4
4
|
/** @import { buildApiCaller } from "./call" */
|
|
5
|
-
/** Not an ideal way to merge type because overlapping fields will be incorrectly overridden.
|
|
6
|
-
*
|
|
7
|
-
* Extractor types works okay unless there're no overlapping fields when extending endpoint type.
|
|
8
|
-
*
|
|
9
|
-
* That's a trade-off, because in case of `Omit` usage extractor type are still okay but chaining like with `asForm()` is broken. */
|
|
10
|
-
type Merge<T, K> = K & T;
|
|
11
5
|
export type { IEndpointInfo };
|
|
12
6
|
/**
|
|
13
7
|
* Defines REST API endpoint.
|
|
@@ -16,28 +10,28 @@ export type { IEndpointInfo };
|
|
|
16
10
|
*
|
|
17
11
|
* Basic definition {@link IEndpointInfo} which can be extended with additional properties and chaining mutation methods, see {@link IEndpointInfo.IForm} for example.
|
|
18
12
|
*/
|
|
19
|
-
export interface ApiEndpoint extends IEndpointInfo {
|
|
13
|
+
export interface ApiEndpoint extends IEndpointInfo.Base {
|
|
20
14
|
/** Applies specified HTTP method */
|
|
21
15
|
withMethod(method: EndpointMethods): this;
|
|
22
16
|
/** Applies GET HTTP method and specifies output type */
|
|
23
|
-
get<TOut>():
|
|
17
|
+
get<TOut>(): this & IEndpointInfo.IOut<TOut>;
|
|
24
18
|
/** Applies PUT HTTP method and specifies input and output types */
|
|
25
|
-
put<TIn extends object | null, TOut>():
|
|
19
|
+
put<TIn extends object | null, TOut>(): this & IEndpointInfo.IIn<TIn> & IEndpointInfo.IOut<TOut>;
|
|
26
20
|
/** Applies POST HTTP method and specifies input and output types */
|
|
27
|
-
post<TIn extends object | null, TOut>():
|
|
21
|
+
post<TIn extends object | null, TOut>(): this & IEndpointInfo.IIn<TIn> & IEndpointInfo.IOut<TOut>;
|
|
28
22
|
/** Applies DELETE HTTP method and specifies output type */
|
|
29
|
-
delete<TOut>():
|
|
23
|
+
delete<TOut>(): this & IEndpointInfo.IOut<TOut>;
|
|
30
24
|
/** Applies a type based on {@link Path.IBuilder} type by accepting arguments for {@link Path.construct} function */
|
|
31
|
-
withPath<P extends Path.BaseInput[]>(...path: P):
|
|
25
|
+
withPath<P extends readonly Path.BaseInput[]>(...path: P): this & IEndpointInfo.IPath<Path.CombineBuilders<P>>;
|
|
32
26
|
/** Applies query type and also store query keys to make api caller be able to distinguish which keys should be ejected from request body. */
|
|
33
|
-
withQuery<TQ extends object>(...queryKeys: (string & keyof TQ)[]):
|
|
27
|
+
withQuery<TQ extends object>(...queryKeys: (string & keyof TQ)[]): this & IEndpointInfo.IQuery<TQ>;
|
|
34
28
|
/** Applies error type, optionally stores error processor. */
|
|
35
|
-
withErrors<TErr>(errorProcessor?: (err: TErr) => void):
|
|
29
|
+
withErrors<TErr>(errorProcessor?: (err: TErr) => void): this & IEndpointInfo.IErrors<TErr>;
|
|
36
30
|
/** Applies headers type. */
|
|
37
|
-
withHeaders<THeads>(_headersMarker?: THeads):
|
|
31
|
+
withHeaders<THeads>(_headersMarker?: THeads): this & IEndpointInfo.IHeaders<THeads>;
|
|
38
32
|
}
|
|
39
33
|
export declare namespace ApiEndpoint {
|
|
40
|
-
function isEndpoint(obj: any): obj is
|
|
34
|
+
function isEndpoint(obj: any): obj is IEndpointInfo;
|
|
41
35
|
interface IBuilder<T extends ApiEndpoint = ApiEndpoint> {
|
|
42
36
|
(displayName?: string): T;
|
|
43
37
|
extend<TExt>(extender: (base: T) => T & TExt): IBuilder<T & TExt>;
|
|
@@ -4,7 +4,7 @@ import type { EndpointMethods } from './methods.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Definition of an abstract REST API endpoint.
|
|
6
6
|
*/
|
|
7
|
-
export interface IEndpointInfo extends IEndpointInfo.Base, IEndpointInfo.
|
|
7
|
+
export interface IEndpointInfo extends IEndpointInfo.Base, IEndpointInfo.IPathAbstract, IEndpointInfo.IErrors<any>, IEndpointInfo.IQuery<AnyObject> {
|
|
8
8
|
}
|
|
9
9
|
export declare namespace IEndpointInfo {
|
|
10
10
|
export type Base = {
|
|
@@ -21,13 +21,22 @@ export declare namespace IEndpointInfo {
|
|
|
21
21
|
/** Marker for defining output type. */
|
|
22
22
|
readonly out?: TOut;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Helper interface for defining abstract path builder.
|
|
26
|
+
*
|
|
27
|
+
* `IPath<TPath>` should be assignable to `IPathAbstract`
|
|
28
|
+
*/
|
|
29
|
+
export interface IPathAbstract {
|
|
30
|
+
/** Path builder with unknown args */
|
|
31
|
+
readonly path?: Path.IBuilder;
|
|
32
|
+
}
|
|
33
|
+
export interface IPath<TPath extends Path.IBuilder> {
|
|
25
34
|
/**
|
|
26
35
|
* Endpoint path, which can be static (just a string) or parametrized.
|
|
27
36
|
*
|
|
28
37
|
* See {@link Path}
|
|
29
38
|
*/
|
|
30
|
-
readonly path:
|
|
39
|
+
readonly path: TPath;
|
|
31
40
|
}
|
|
32
41
|
export type QueryKeysType = boolean | string | string[] | number | number[];
|
|
33
42
|
export type QueryArgs = Record<string, QueryKeysType>;
|
|
@@ -46,9 +55,9 @@ export declare namespace IEndpointInfo {
|
|
|
46
55
|
}
|
|
47
56
|
type Any = AnyObject;
|
|
48
57
|
type Empty = EmptyObjectNullable;
|
|
49
|
-
export type ExtractIn<T> = T extends IIn<infer TIn> ? Coalesce<TIn> :
|
|
50
|
-
export type ExtractPath<T> = T extends IPath<infer TPath extends
|
|
51
|
-
export type ExtractQuery<T> = T extends IQuery<infer TQuery extends QueryArgs> ? TQuery :
|
|
58
|
+
export type ExtractIn<T, F = Empty> = T extends IIn<infer TIn> ? Coalesce<TIn, F> : F;
|
|
59
|
+
export type ExtractPath<T, F = Empty> = T extends IPath<infer TPath extends Path.IBuilder> ? Path.ExtractObjectArgs<TPath, F> : F;
|
|
60
|
+
export type ExtractQuery<T, F = Empty> = T extends IQuery<infer TQuery extends QueryArgs> ? TQuery : F;
|
|
52
61
|
export type ExtractOut<T> = T extends IOut<infer TOut> ? TOut : never;
|
|
53
62
|
export type ExtractErrors<T> = T extends IErrors<infer TErrors> ? TErrors : Any;
|
|
54
63
|
export type ExtractHeaders<T> = T extends IHeaders<infer THeaders> ? THeaders : Any;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { AnyObject } from '../../types/misc.js';
|
|
1
2
|
import type { ApiEndpoint } from '../endpoint.js';
|
|
2
3
|
import type { IEndpointInfo } from '../endpoint.types.js';
|
|
3
4
|
export interface IEndpointInputValidation {
|
|
4
|
-
readonly validate?: IEndpointInputValidation.Validator<IEndpointInfo.ExtractIn<this>>;
|
|
5
|
+
readonly validate?: IEndpointInputValidation.Validator<IEndpointInfo.ExtractIn<this, AnyObject>>;
|
|
5
6
|
withValidation(validator: IEndpointInputValidation.Validator<IEndpointInfo.ExtractIn<this>>): this;
|
|
6
7
|
}
|
|
7
8
|
export declare namespace IEndpointInputValidation {
|
|
8
9
|
type Validator<TIn> = (input: TIn) => Promise<void> | void;
|
|
9
10
|
const extender: ApiEndpoint.IBuilderExtender<IEndpointInputValidation>;
|
|
10
11
|
function guard(api: IEndpointInfo): api is (IEndpointInfo & IEndpointInputValidation);
|
|
11
|
-
function tryValidate(api: IEndpointInfo, input:
|
|
12
|
+
function tryValidate(api: IEndpointInfo, input: AnyObject): void | Promise<void>;
|
|
12
13
|
}
|
package/types/api/helpers.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export declare const DefaultSettings: {
|
|
|
4
4
|
basePrefix: string;
|
|
5
5
|
};
|
|
6
6
|
export declare function setDefaults(settings: Partial<typeof DefaultSettings>): void;
|
|
7
|
-
export declare function getPath<T extends IEndpointInfo.
|
|
7
|
+
export declare function getPath<T extends IEndpointInfo.Base & IEndpointInfo.IPathAbstract>(endpoint: T, pathArgs: IEndpointInfo.ExtractPath<T>, prefix?: string | boolean): string;
|
|
8
8
|
export declare function getTemplate<T extends IEndpointInfo>(endpoint: T, prefix?: string | boolean): string;
|
|
9
9
|
export declare function getFormattedDisplayName(endpoint: IEndpointInfo): string;
|
package/types/dates/tz.d.ts
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Helpers for time zones, based on `Intl.DateTimeFormat` */
|
|
2
2
|
export declare namespace Timezones {
|
|
3
3
|
const Current: string;
|
|
4
4
|
const CurrentOffset: number;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Get the offset in minutes for a given time zone and date. Uses Intl.DateTimeFormat
|
|
7
|
+
* to get the time zone name, then parses it to get the offset.
|
|
8
|
+
* @param timeZone time zone name, e.g. 'America/New_York', 'Europe/Kyiv', etc.
|
|
9
|
+
* @param date date to get the offset for. If not provided, uses the current date.
|
|
10
|
+
* @returns offset in minutes. Positive values are west of UTC, negative values are east of UTC.
|
|
11
|
+
*/
|
|
12
|
+
function getOffset(timeZone: string, date?: Date | number): number;
|
|
13
|
+
/** Returns a new date with the specified timezone offset applied.
|
|
14
|
+
*
|
|
15
|
+
* Usage case can be imagined like this: if your local wall clock shows time X,
|
|
16
|
+
* what your clock will show when another local wall clock in the specified timezone will be showing time X.
|
|
17
|
+
*/
|
|
6
18
|
function shiftToTimeZone(date: Date, tz: string | number): Date;
|
|
7
19
|
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { LengthArray, Nullable } from '../../types/misc.js';
|
|
1
|
+
import type { EmptyObject, LengthArray, Nullable } from '../../types/misc.js';
|
|
2
2
|
import type { CombineOptions } from './utils.js';
|
|
3
3
|
export type ArgValue = string | number;
|
|
4
|
-
export type ObjectBuilderArgs<TArgs extends string> = Record<TArgs, ArgValue>;
|
|
4
|
+
export type ObjectBuilderArgs<TArgs extends string, TOptional = false, TFallback = EmptyObject> = string extends TArgs ? TFallback : true extends TOptional ? MakeOptional<Record<TArgs, ArgValue>> : Record<TArgs, ArgValue>;
|
|
5
5
|
export type BuilderArgs<TArgs extends string, L extends number = number> = LengthArray<ArgValue, L> | Record<TArgs, ArgValue>;
|
|
6
6
|
export type TemplatePrefixing = Nullable<string | ((key: string, index: number) => string)>;
|
|
7
|
+
type MakeOptional<T> = {
|
|
8
|
+
[P in keyof T]?: Nullable<T[P]>;
|
|
9
|
+
};
|
|
10
|
+
/** Internal, Don't use it directly */
|
|
7
11
|
interface BaseBuilder<A extends readonly string[], B, P = TemplatePrefixing> {
|
|
8
12
|
/**
|
|
9
13
|
* Builds the path using provided args.
|
|
@@ -45,17 +49,24 @@ export type TransformMap<A extends readonly string[]> = {
|
|
|
45
49
|
};
|
|
46
50
|
type EmptyBuilderArgs = [] | Record<PropertyKey, never>;
|
|
47
51
|
type ReadonlyArr<TArr extends ReadonlyArray<any>> = TArr extends ReadonlyArray<infer T> ? ReadonlyArray<T> : never;
|
|
48
|
-
export interface Builder<TArgs extends readonly string[]> extends BaseBuilder<ReadonlyArr<TArgs>, BuilderArgs<TArgs[number], TArgs['length']>> {
|
|
52
|
+
export interface Builder<TArgs extends readonly string[], TOptional = false> extends BaseBuilder<ReadonlyArr<TArgs>, true extends TOptional ? MakeOptional<BuilderArgs<TArgs[number], TArgs['length']>> : BuilderArgs<TArgs[number], TArgs['length']>> {
|
|
53
|
+
/** Marks input type for `build` to be `Partial`, so any/all arguments can be omitted.
|
|
54
|
+
*
|
|
55
|
+
* **Limitation**: will convert to optional ALL parameters if >=2 Builders combined via CombineBuilders
|
|
56
|
+
*/
|
|
57
|
+
asOptional(): Builder<TArgs, true>;
|
|
49
58
|
}
|
|
50
59
|
export interface StaticBuilder extends BaseBuilder<readonly [], EmptyBuilderArgs> {
|
|
51
60
|
}
|
|
52
|
-
export interface IBuilder extends BaseBuilder<readonly string[],
|
|
61
|
+
export interface IBuilder extends BaseBuilder<readonly string[], any> {
|
|
53
62
|
}
|
|
54
63
|
export type StaticInput = string | readonly string[];
|
|
55
64
|
export type BaseInput = StaticInput | BaseBuilder<any, any, any>;
|
|
56
|
-
export type Output<TInput> = TInput extends StaticBuilder ? StaticBuilder : (TInput extends Builder<infer TArgs> ? Builder<TArgs> : StaticBuilder);
|
|
65
|
+
export type Output<TInput> = TInput extends StaticBuilder ? StaticBuilder : (TInput extends Builder<infer TArgs, infer TOptional> ? Builder<TArgs, TOptional> : StaticBuilder);
|
|
57
66
|
export type SwitchBuilder<TArg extends readonly string[]> = [TArg] extends [never] ? StaticBuilder : ([] extends TArg ? StaticBuilder : (readonly string[] extends TArg ? IBuilder : Builder<TArg>));
|
|
58
67
|
export type ExtractArgs<T> = T extends Builder<infer TArgs> ? TArgs : readonly string[];
|
|
59
|
-
type
|
|
60
|
-
|
|
68
|
+
export type ExtractObjectArgs<T, F = EmptyObject> = T extends Builder<infer TArgs, infer O> ? ObjectBuilderArgs<TArgs[number], O, F> : F;
|
|
69
|
+
type LogicalOr<O1, O2> = true extends O1 ? true : true extends O2 ? true : false;
|
|
70
|
+
type CombineTwo<T1 extends BaseInput, T2 extends BaseInput> = Output<T1> extends StaticBuilder ? Output<T2> : (Output<T2> extends StaticBuilder ? Output<T1> : (Output<T1> extends Builder<infer Arr1, infer O1> ? (Output<T2> extends Builder<infer Arr2, infer O2> ? Builder<[...Arr1, ...Arr2], LogicalOr<O1, O2>> : never) : never));
|
|
71
|
+
export type CombineBuilders<T extends readonly BaseInput[]> = T extends readonly [infer T1 extends BaseInput, infer T2 extends BaseInput, ...infer Rest] ? (CombineTwo<T1, T2> extends infer C extends BaseBuilder<any, any, any> & BaseInput ? (Rest extends readonly BaseInput[] ? CombineBuilders<readonly [C, ...Rest]> : never) : never) : (T extends readonly [infer T1] ? Output<T1> : StaticBuilder);
|
|
61
72
|
export {};
|
package/types/types/misc.d.ts
CHANGED
|
@@ -34,4 +34,5 @@ export type PickNullable<T, K extends keyof T> = {
|
|
|
34
34
|
[P in K]?: Nullable<T[P]>;
|
|
35
35
|
};
|
|
36
36
|
export type EmptyObjectNullable = (EmptyObject | null | undefined);
|
|
37
|
+
export type IsNever<T, Y, N> = [T] extends [never] ? Y : N;
|
|
37
38
|
export type Coalesce<T, TReplace = EmptyObjectNullable> = [T] extends [never] | [null] | [undefined] ? TReplace : T;
|