@zajno/common 2.5.0 → 2.6.1
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/cjs/async/arrays.js +1 -0
- package/cjs/async/arrays.js.map +1 -1
- package/cjs/async/misc.js +0 -6
- package/cjs/async/misc.js.map +1 -1
- package/cjs/async/timeout.js +1 -0
- package/cjs/async/timeout.js.map +1 -1
- package/cjs/fields/filter.js +0 -6
- package/cjs/fields/filter.js.map +1 -1
- package/cjs/fields/transfer.js +1 -0
- package/cjs/fields/transfer.js.map +1 -1
- package/cjs/functions/throttle.js +2 -2
- package/cjs/functions/throttle.js.map +1 -1
- package/cjs/localization/LocalizationManager.js +50 -0
- package/cjs/localization/LocalizationManager.js.map +1 -0
- package/cjs/localization/LocalizedValidationErrors.js +21 -0
- package/cjs/localization/LocalizedValidationErrors.js.map +1 -0
- package/cjs/localization/abstractions.js +3 -0
- package/cjs/localization/abstractions.js.map +1 -0
- package/cjs/localization/defaults/ValidationErrorsLocalization.js +26 -0
- package/cjs/localization/defaults/ValidationErrorsLocalization.js.map +1 -0
- package/cjs/localization/defaults/defaultShape.js +28 -0
- package/cjs/localization/defaults/defaultShape.js.map +1 -0
- package/cjs/localization/index.js +10 -0
- package/cjs/localization/index.js.map +1 -0
- 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/esm/async/arrays.js +1 -0
- package/esm/async/arrays.js.map +1 -1
- package/esm/async/misc.js +0 -4
- package/esm/async/misc.js.map +1 -1
- package/esm/async/timeout.js +1 -0
- package/esm/async/timeout.js.map +1 -1
- package/esm/fields/filter.js +0 -6
- package/esm/fields/filter.js.map +1 -1
- package/esm/fields/transfer.js +1 -0
- package/esm/fields/transfer.js.map +1 -1
- package/esm/functions/throttle.js +1 -1
- package/esm/functions/throttle.js.map +1 -1
- package/esm/localization/LocalizationManager.js +46 -0
- package/esm/localization/LocalizationManager.js.map +1 -0
- package/esm/localization/LocalizedValidationErrors.js +17 -0
- package/esm/localization/LocalizedValidationErrors.js.map +1 -0
- package/esm/localization/abstractions.js +2 -0
- package/esm/localization/abstractions.js.map +1 -0
- package/esm/localization/defaults/ValidationErrorsLocalization.js +23 -0
- package/esm/localization/defaults/ValidationErrorsLocalization.js.map +1 -0
- package/esm/localization/defaults/defaultShape.js +25 -0
- package/esm/localization/defaults/defaultShape.js.map +1 -0
- package/esm/localization/index.js +5 -0
- package/esm/localization/index.js.map +1 -0
- package/package.json +15 -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/types/async/misc.d.ts +0 -2
- package/types/fields/filter.d.ts +0 -4
- package/types/localization/LocalizationManager.d.ts +20 -0
- package/types/localization/LocalizedValidationErrors.d.ts +9 -0
- package/types/localization/abstractions.d.ts +12 -0
- package/types/localization/defaults/ValidationErrorsLocalization.d.ts +26 -0
- package/types/localization/defaults/defaultShape.d.ts +25 -0
- package/types/localization/index.d.ts +4 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalizationManager = void 0;
|
|
4
|
+
const event_js_1 = require("../observing/event.js");
|
|
5
|
+
class LocalizationManager {
|
|
6
|
+
_dataSource;
|
|
7
|
+
_currentLocale = null;
|
|
8
|
+
_currentStrings = null;
|
|
9
|
+
_defaultStrings;
|
|
10
|
+
_dependents = [];
|
|
11
|
+
_localeUpdatedEvent = new event_js_1.Event();
|
|
12
|
+
constructor(_dataSource, initialLocale, defaultLocale = null) {
|
|
13
|
+
this._dataSource = _dataSource;
|
|
14
|
+
this._defaultStrings = this.getStrings(defaultLocale || initialLocale);
|
|
15
|
+
this.useLocale(initialLocale);
|
|
16
|
+
}
|
|
17
|
+
get Locale() { return this._currentLocale; }
|
|
18
|
+
get Current() { return this._currentStrings; }
|
|
19
|
+
get localeUpdated() { return this._localeUpdatedEvent.expose(); }
|
|
20
|
+
useLocale(locale) {
|
|
21
|
+
this._currentLocale = locale;
|
|
22
|
+
this._currentStrings = this.getStrings(this._currentLocale) || this._defaultStrings;
|
|
23
|
+
this.updateDependencies();
|
|
24
|
+
this._localeUpdatedEvent.trigger(this._currentLocale);
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
useDependency(dep, remove = false) {
|
|
28
|
+
const i = this._dependents.indexOf(dep);
|
|
29
|
+
if (i < 0 && !remove) {
|
|
30
|
+
this._dependents.push(dep);
|
|
31
|
+
this.updateDependencies();
|
|
32
|
+
}
|
|
33
|
+
else if (i >= 0 && remove) {
|
|
34
|
+
this._dependents.splice(i, 1);
|
|
35
|
+
}
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
updateDependencies() {
|
|
39
|
+
const { _currentLocale: locale, _currentStrings: strings } = this;
|
|
40
|
+
if (!strings || !locale) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this._dependents.forEach(d => d.updateLocale(strings, locale));
|
|
44
|
+
}
|
|
45
|
+
getStrings(locale) {
|
|
46
|
+
return this._dataSource[locale];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.LocalizationManager = LocalizationManager;
|
|
50
|
+
//# sourceMappingURL=LocalizationManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalizationManager.js","sourceRoot":"","sources":["../../../src/localization/LocalizationManager.ts"],"names":[],"mappings":";;;AAEA,oDAA8C;AAE9C,MAAa,mBAAmB;IAUP;IATb,cAAc,GAAuB,IAAI,CAAC;IAC1C,eAAe,GAAoB,IAAI,CAAC;IAE/B,eAAe,CAAW;IAC1B,WAAW,GAAqD,EAAE,CAAC;IAEnE,mBAAmB,GAAG,IAAI,gBAAK,EAAe,CAAC;IAEhE,YACqB,WAA2C,EAC5D,aAA0B,EAC1B,gBAAoC,IAAI;QAFvB,gBAAW,GAAX,WAAW,CAAgC;QAI5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACnD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,eAAgB,CAAC,CAAC,CAAC;IACtD,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,MAAmB;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC;QACpF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,aAAa,CAAC,GAAmD,EAAE,MAAM,GAAG,KAAK;QACpF,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,kBAAkB;QACtB,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAClE,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;CACJ;AArDD,kDAqDC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalizedValidationErrors = void 0;
|
|
4
|
+
class LocalizedValidationErrors {
|
|
5
|
+
factory;
|
|
6
|
+
_strings = null;
|
|
7
|
+
constructor(factory) {
|
|
8
|
+
this.factory = factory;
|
|
9
|
+
}
|
|
10
|
+
get Errors() {
|
|
11
|
+
if (!this._strings) {
|
|
12
|
+
throw new Error('No strings provided, call updateLocale first');
|
|
13
|
+
}
|
|
14
|
+
return this._strings;
|
|
15
|
+
}
|
|
16
|
+
updateLocale(strings) {
|
|
17
|
+
this._strings = this.factory(strings);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.LocalizedValidationErrors = LocalizedValidationErrors;
|
|
21
|
+
//# sourceMappingURL=LocalizedValidationErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalizedValidationErrors.js","sourceRoot":"","sources":["../../../src/localization/LocalizedValidationErrors.ts"],"names":[],"mappings":";;;AAQA,MAAa,yBAAyB;IAKL;IAFrB,QAAQ,GAA4C,IAAI,CAAC;IAEjE,YAA6B,OAAmD;QAAnD,YAAO,GAAP,OAAO,CAA4C;IAAI,CAAC;IAErF,IAAW,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY,CAAC,OAAiB;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;CACJ;AAlBD,8DAkBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions.js","sourceRoot":"","sources":["../../../src/localization/abstractions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationErrorsLocalized = void 0;
|
|
4
|
+
const LocalizedValidationErrors_js_1 = require("../LocalizedValidationErrors.js");
|
|
5
|
+
const ValidationErrors_js_1 = require("../../validation/ValidationErrors.js");
|
|
6
|
+
function locationFactory(strings) {
|
|
7
|
+
return {
|
|
8
|
+
[ValidationErrors_js_1.ValidationErrors.None]: '',
|
|
9
|
+
[ValidationErrors_js_1.ValidationErrors.ShouldBeNonEmpty]: strings.Validation.Empty,
|
|
10
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidNameFormat]: strings.Validation.Name,
|
|
11
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidEmailFormat]: strings.Validation.Email,
|
|
12
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidPasswordFormat]: strings.Validation.Password,
|
|
13
|
+
[ValidationErrors_js_1.ValidationErrors.OnlyEnglishLetters]: strings.Validation.EnglishOnly,
|
|
14
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidPhoneFormat]: strings.Validation.Phone,
|
|
15
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidCreditCardFormat]: strings.Validation.CreditCard,
|
|
16
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidCreditCardExpiryDateFormat]: strings.Validation.CreditCardExpiryDate,
|
|
17
|
+
[ValidationErrors_js_1.ValidationErrors.InvalidCreditCardCvvFormat]: strings.Validation.CreditCardCvv,
|
|
18
|
+
[ValidationErrors_js_1.ValidationErrors.FirstName]: strings.Validation.FirstName,
|
|
19
|
+
[ValidationErrors_js_1.ValidationErrors.LastName]: strings.Validation.LastName,
|
|
20
|
+
[ValidationErrors_js_1.ValidationErrors.OnlyDigit]: strings.Validation.OnlyDigit,
|
|
21
|
+
[ValidationErrors_js_1.ValidationErrors.Website]: strings.Validation.Website,
|
|
22
|
+
[ValidationErrors_js_1.ValidationErrors.Linkedin]: strings.Validation.Linkedin,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.ValidationErrorsLocalized = new LocalizedValidationErrors_js_1.LocalizedValidationErrors(locationFactory);
|
|
26
|
+
//# sourceMappingURL=ValidationErrorsLocalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationErrorsLocalization.js","sourceRoot":"","sources":["../../../../src/localization/defaults/ValidationErrorsLocalization.ts"],"names":[],"mappings":";;;AAEA,kFAA4E;AAC5E,8EAAwE;AAExE,SAAS,eAAe,CAAC,OAAqB;IAC1C,OAAO;QACH,CAAC,sCAAgB,CAAC,IAAI,CAAC,EAAE,EAAE;QAC3B,CAAC,sCAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;QAC7D,CAAC,sCAAgB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;QAC7D,CAAC,sCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;QAC/D,CAAC,sCAAgB,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;QACrE,CAAC,sCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;QACrE,CAAC,sCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;QAC/D,CAAC,sCAAgB,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU;QACzE,CAAC,sCAAgB,CAAC,iCAAiC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB;QAC7F,CAAC,sCAAgB,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa;QAE/E,CAAC,sCAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;QAC1D,CAAC,sCAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;QACxD,CAAC,sCAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;QAC1D,CAAC,sCAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;QACtD,CAAC,sCAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;KAC3D,CAAC;AACN,CAAC;AAEY,QAAA,yBAAyB,GAAG,IAAI,wDAAyB,CAAiC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Strings = void 0;
|
|
4
|
+
exports.Strings = {
|
|
5
|
+
Ok: 'OK',
|
|
6
|
+
Cancel: 'Cancel',
|
|
7
|
+
Submit: 'Submit',
|
|
8
|
+
ForgotPassword: 'Forgot password?',
|
|
9
|
+
Validation: {
|
|
10
|
+
Empty: 'Value should be not empty',
|
|
11
|
+
Name: 'Invalid name format',
|
|
12
|
+
Email: 'Incorrect email',
|
|
13
|
+
Password: 'Must include at least 8 characters',
|
|
14
|
+
EnglishOnly: 'Only English letters supported',
|
|
15
|
+
Phone: 'Invalid phone number format: only digits allowed',
|
|
16
|
+
CreditCard: 'Invalid credit card number format',
|
|
17
|
+
CreditCardExpiryDate: 'Invalid expiry date format',
|
|
18
|
+
CreditCardCvv: 'Invalid CVV format',
|
|
19
|
+
PasswordsShouldMatch: 'Passwords should match',
|
|
20
|
+
FirstName: 'First name is required',
|
|
21
|
+
LastName: 'Last name is required',
|
|
22
|
+
OnlyDigit: 'Only digits are valid',
|
|
23
|
+
Website: 'Incorrect website',
|
|
24
|
+
Linkedin: 'Incorrect Linkedin link',
|
|
25
|
+
},
|
|
26
|
+
UnknownServerError: 'Something went wrong and we were not able to process your request. Please contact the administrator.',
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=defaultShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultShape.js","sourceRoot":"","sources":["../../../../src/localization/defaults/defaultShape.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG;IACnB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,kBAAkB;IAClC,UAAU,EAAE;QACR,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,oCAAoC;QAC9C,WAAW,EAAE,gCAAgC;QAC7C,KAAK,EAAE,kDAAkD;QACzD,UAAU,EAAE,mCAAmC;QAC/C,oBAAoB,EAAE,4BAA4B;QAClD,aAAa,EAAE,oBAAoB;QACnC,oBAAoB,EAAE,wBAAwB;QAC9C,SAAS,EAAE,wBAAwB;QACnC,QAAQ,EAAE,uBAAuB;QACjC,SAAS,EAAE,uBAAuB;QAClC,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,yBAAyB;KACtC;IACD,kBAAkB,EAAE,sGAAsG;CAC7H,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalizedValidationErrors = exports.LocalizationManager = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const LocalizationManager_js_1 = require("./LocalizationManager.js");
|
|
6
|
+
Object.defineProperty(exports, "LocalizationManager", { enumerable: true, get: function () { return LocalizationManager_js_1.LocalizationManager; } });
|
|
7
|
+
const LocalizedValidationErrors_js_1 = require("./LocalizedValidationErrors.js");
|
|
8
|
+
Object.defineProperty(exports, "LocalizedValidationErrors", { enumerable: true, get: function () { return LocalizedValidationErrors_js_1.LocalizedValidationErrors; } });
|
|
9
|
+
tslib_1.__exportStar(require("./abstractions.js"), exports);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/localization/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA+D;AAKtD,oGALA,4CAAmB,OAKA;AAJ5B,iFAA2E;AAI7C,0GAJrB,wDAAyB,OAIqB;AAFvD,4DAAkC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ApiEndpoint } from './endpoint.js';
|
|
2
|
+
import { assert } from '../functions/assert.js';
|
|
3
|
+
/** Converts an composite API endpoints object to the same tree of functions */
|
|
4
|
+
export function buildApi(api, caller) {
|
|
5
|
+
assert(!!api && typeof api === 'object', 'API definition must be an object');
|
|
6
|
+
assert(!!caller && typeof caller === 'function', 'Caller must be a function');
|
|
7
|
+
if (ApiEndpoint.isEndpoint(api)) {
|
|
8
|
+
return createEndpointCallable(api, caller);
|
|
9
|
+
}
|
|
10
|
+
return Object.entries(api).reduce((acc, [key, value]) => {
|
|
11
|
+
const next = value;
|
|
12
|
+
acc[key] = buildApi(next, caller);
|
|
13
|
+
return acc;
|
|
14
|
+
}, {});
|
|
15
|
+
}
|
|
16
|
+
/** Partial application: binding an endpoint to callApi, so only input data and extra are passed to a newly created function. */
|
|
17
|
+
export function createEndpointCallable(endpoint, caller) {
|
|
18
|
+
const name = `${endpoint.displayName || '?'}_${endpoint.method}_${endpoint.path.template()}`;
|
|
19
|
+
const fn = {
|
|
20
|
+
[name]: function (data, extra) { return caller(endpoint, data, extra); },
|
|
21
|
+
}[name]; // this sets the name of the function
|
|
22
|
+
const result = fn;
|
|
23
|
+
Object.assign(result, { Endpoint: endpoint });
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +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;AAgBhD,+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,KAAsB,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,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,GAAG,QAAQ,CAAC,WAAW,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE7F,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
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { PostProcessors, PreProcessors } from './register.js';
|
|
2
2
|
import { getPath } from './helpers.js';
|
|
3
3
|
export function buildApiCaller(options) {
|
|
4
|
-
const {
|
|
4
|
+
const { request, hooks = {} } = options;
|
|
5
5
|
return async function callApi(api, data, extra) {
|
|
6
6
|
const { headers, log = 'res', noLoader, ...restExtra } = extra || {};
|
|
7
7
|
const resultInput = data && { ...data };
|
|
8
8
|
const pathInputs = {};
|
|
9
|
+
const queryInputs = {};
|
|
9
10
|
let queryStr = '';
|
|
10
|
-
|
|
11
|
+
// extract path inputs from data
|
|
12
|
+
const pathKeys = api.path.args;
|
|
11
13
|
if (resultInput && pathKeys?.length) {
|
|
12
14
|
for (const key of pathKeys) {
|
|
13
15
|
pathInputs[key] = resultInput[key];
|
|
14
16
|
delete resultInput[key];
|
|
15
17
|
}
|
|
16
18
|
}
|
|
19
|
+
// extract query inputs from data
|
|
17
20
|
const queryKeysExpected = api.queryKeys;
|
|
18
21
|
if (resultInput && queryKeysExpected?.length) {
|
|
19
|
-
const queryInputs = {};
|
|
20
22
|
let empty = true;
|
|
21
23
|
for (const key of queryKeysExpected) {
|
|
22
24
|
const v = resultInput[key];
|
|
@@ -26,13 +28,15 @@ export function buildApiCaller(options) {
|
|
|
26
28
|
}
|
|
27
29
|
delete resultInput[key];
|
|
28
30
|
}
|
|
31
|
+
// compile query string
|
|
29
32
|
if (!empty) {
|
|
30
33
|
const params = new URLSearchParams(queryInputs);
|
|
31
34
|
queryStr = '?' + params.toString();
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
|
-
if (
|
|
35
|
-
|
|
37
|
+
if (hooks.beforeConfig) {
|
|
38
|
+
// copy all inputs to avoid mutation
|
|
39
|
+
await hooks.beforeConfig(api, { ...resultInput }, { ...pathInputs }, { ...queryInputs });
|
|
36
40
|
}
|
|
37
41
|
const sendingData = resultInput && Object.keys(resultInput).length > 0
|
|
38
42
|
? resultInput
|
|
@@ -48,8 +52,11 @@ export function buildApiCaller(options) {
|
|
|
48
52
|
_log: log,
|
|
49
53
|
_extra: restExtra,
|
|
50
54
|
};
|
|
51
|
-
if (
|
|
52
|
-
|
|
55
|
+
if (hooks.beforeRequest) {
|
|
56
|
+
const result = await hooks.beforeRequest(config);
|
|
57
|
+
if (result && typeof result === 'object') {
|
|
58
|
+
Object.assign(config, result);
|
|
59
|
+
}
|
|
53
60
|
}
|
|
54
61
|
const response = await request(config);
|
|
55
62
|
return PostProcessors.process(api, response?.data);
|
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;AAK9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/api/call.ts"],"names":[],"mappings":"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"}
|
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"}
|