@schorts/shared-kernel 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +16 -0
- package/README.md +4 -0
- package/dist/cjs/http/fetch-http-provider.js +10 -2
- package/dist/cjs/http/fetch-http-provider.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/result/index.js +6 -0
- package/dist/cjs/result/index.js.map +1 -0
- package/dist/cjs/result/result.js +33 -0
- package/dist/cjs/result/result.js.map +1 -0
- package/dist/esm/http/fetch-http-provider.js +10 -2
- package/dist/esm/http/fetch-http-provider.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/result/index.js +6 -0
- package/dist/esm/result/index.js.map +1 -0
- package/dist/esm/result/result.js +33 -0
- package/dist/esm/result/result.js.map +1 -0
- package/dist/types/http/fetch-http-provider.d.ts +2 -1
- package/dist/types/http/fetch-http-provider.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/result/index.d.ts +2 -0
- package/dist/types/result/index.d.ts.map +1 -0
- package/dist/types/result/result.d.ts +13 -0
- package/dist/types/result/result.d.ts.map +1 -0
- package/package.json +16 -6
- package/src/http/fetch-http-provider.ts +12 -3
- package/src/index.ts +2 -0
- package/src/result/index.ts +1 -0
- package/src/result/result.ts +35 -0
package/CHANGELOG
CHANGED
|
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.3.0] - 2025-10-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added `Result` to have more controlled results in application services.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Added missed exports for `i18n` module.
|
|
17
|
+
|
|
18
|
+
## [1.2.3] - 2025-10-03
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- Added to constructor of the `FetchHTTPProvider` the possibility to receive a function to fetch the `Authorization`.
|
|
23
|
+
|
|
8
24
|
## [1.2.2] - 2025-10-03
|
|
9
25
|
|
|
10
26
|
### Added
|
package/README.md
CHANGED
|
@@ -50,6 +50,10 @@ Translation keys are centralized in registries for discoverability and tooling,
|
|
|
50
50
|
|
|
51
51
|
- **BaseModel:** Base class for serializable, type-safe models.
|
|
52
52
|
|
|
53
|
+
### 🎯 Result
|
|
54
|
+
|
|
55
|
+
- **Result:** Type-safe wrapper for success/failure outcomes. Encapsulates either a value or an error, enforcing disciplined error handling without exceptions. Includes static factories (`success`, `error`), accessors (`getValue`, `getError`), and guards (`isSuccess`, `isFailure`).
|
|
56
|
+
|
|
53
57
|
### 🛠 Persistence
|
|
54
58
|
|
|
55
59
|
- **DAO:** Generic interface defining data access operations for domain entities.
|
|
@@ -5,7 +5,9 @@ const exceptions_1 = require("./exceptions");
|
|
|
5
5
|
class FetchHTTPProvider {
|
|
6
6
|
ongoingRequests = new Map();
|
|
7
7
|
init;
|
|
8
|
-
|
|
8
|
+
getAuthorization;
|
|
9
|
+
constructor(getAuthorization, init) {
|
|
10
|
+
this.getAuthorization = getAuthorization;
|
|
9
11
|
this.init = init;
|
|
10
12
|
}
|
|
11
13
|
get(url) {
|
|
@@ -35,8 +37,14 @@ class FetchHTTPProvider {
|
|
|
35
37
|
if (body !== undefined) {
|
|
36
38
|
init.headers = { "Content-Type": "application/json" };
|
|
37
39
|
}
|
|
40
|
+
if (this.getAuthorization) {
|
|
41
|
+
init.headers = {
|
|
42
|
+
...(init.headers || {}),
|
|
43
|
+
Authorization: this.getAuthorization(),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
38
46
|
const request = (async () => {
|
|
39
|
-
const response = await fetch(url.href, { ...init, ...this.init });
|
|
47
|
+
const response = await fetch(url.href, { ...init, ...(this.init || {}) });
|
|
40
48
|
if (!response) {
|
|
41
49
|
throw new exceptions_1.HTTPException("Fetch returned undefined", 0);
|
|
42
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":";;;AACA,6CAA6C;AAE7C,MAAa,iBAAiB;IACpB,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IACzC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -21,9 +21,11 @@ __exportStar(require("./domain-events"), exports);
|
|
|
21
21
|
__exportStar(require("./entities"), exports);
|
|
22
22
|
__exportStar(require("./formatters"), exports);
|
|
23
23
|
__exportStar(require("./http"), exports);
|
|
24
|
+
__exportStar(require("./i18n"), exports);
|
|
24
25
|
__exportStar(require("./json-api"), exports);
|
|
25
26
|
__exportStar(require("./messages"), exports);
|
|
26
27
|
__exportStar(require("./models"), exports);
|
|
28
|
+
__exportStar(require("./result"), exports);
|
|
27
29
|
__exportStar(require("./state-manager"), exports);
|
|
28
30
|
__exportStar(require("./unit-of-work"), exports);
|
|
29
31
|
__exportStar(require("./utils"), exports);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Result = void 0;
|
|
4
|
+
var result_1 = require("./result");
|
|
5
|
+
Object.defineProperty(exports, "Result", { enumerable: true, get: function () { return result_1.Result; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/result/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Result = void 0;
|
|
4
|
+
class Result {
|
|
5
|
+
success;
|
|
6
|
+
value;
|
|
7
|
+
error;
|
|
8
|
+
constructor(success, value, error) {
|
|
9
|
+
this.success = success;
|
|
10
|
+
this.value = value;
|
|
11
|
+
this.error = error;
|
|
12
|
+
}
|
|
13
|
+
static success(value) {
|
|
14
|
+
return new Result(true, value);
|
|
15
|
+
}
|
|
16
|
+
static error(error) {
|
|
17
|
+
return new Result(false, undefined, error);
|
|
18
|
+
}
|
|
19
|
+
isSuccess() {
|
|
20
|
+
return this.success;
|
|
21
|
+
}
|
|
22
|
+
isFailure() {
|
|
23
|
+
return !this.isSuccess();
|
|
24
|
+
}
|
|
25
|
+
getValue() {
|
|
26
|
+
return this.value;
|
|
27
|
+
}
|
|
28
|
+
getError() {
|
|
29
|
+
return this.error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Result = Result;
|
|
33
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/result/result.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IACA,OAAO,CAAU;IACjB,KAAK,CAAmB;IACxB,KAAK,CAAoB;IAE1C,YAAoB,OAAgB,EAAE,KAAY,EAAE,KAAa;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAAO,CAAO,KAAW;QAC9B,OAAO,IAAI,MAAM,CAAO,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAK,CAAO,KAAY;QAC7B,OAAO,IAAI,MAAM,CAAO,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;QACP,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAlCD,wBAkCC"}
|
|
@@ -5,7 +5,9 @@ const exceptions_1 = require("./exceptions");
|
|
|
5
5
|
class FetchHTTPProvider {
|
|
6
6
|
ongoingRequests = new Map();
|
|
7
7
|
init;
|
|
8
|
-
|
|
8
|
+
getAuthorization;
|
|
9
|
+
constructor(getAuthorization, init) {
|
|
10
|
+
this.getAuthorization = getAuthorization;
|
|
9
11
|
this.init = init;
|
|
10
12
|
}
|
|
11
13
|
get(url) {
|
|
@@ -35,8 +37,14 @@ class FetchHTTPProvider {
|
|
|
35
37
|
if (body !== undefined) {
|
|
36
38
|
init.headers = { "Content-Type": "application/json" };
|
|
37
39
|
}
|
|
40
|
+
if (this.getAuthorization) {
|
|
41
|
+
init.headers = {
|
|
42
|
+
...(init.headers || {}),
|
|
43
|
+
Authorization: this.getAuthorization(),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
38
46
|
const request = (async () => {
|
|
39
|
-
const response = await fetch(url.href, { ...init, ...this.init });
|
|
47
|
+
const response = await fetch(url.href, { ...init, ...(this.init || {}) });
|
|
40
48
|
if (!response) {
|
|
41
49
|
throw new exceptions_1.HTTPException("Fetch returned undefined", 0);
|
|
42
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":";;;AACA,6CAA6C;AAE7C,MAAa,iBAAiB;IACpB,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IACzC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -21,9 +21,11 @@ __exportStar(require("./domain-events"), exports);
|
|
|
21
21
|
__exportStar(require("./entities"), exports);
|
|
22
22
|
__exportStar(require("./formatters"), exports);
|
|
23
23
|
__exportStar(require("./http"), exports);
|
|
24
|
+
__exportStar(require("./i18n"), exports);
|
|
24
25
|
__exportStar(require("./json-api"), exports);
|
|
25
26
|
__exportStar(require("./messages"), exports);
|
|
26
27
|
__exportStar(require("./models"), exports);
|
|
28
|
+
__exportStar(require("./result"), exports);
|
|
27
29
|
__exportStar(require("./state-manager"), exports);
|
|
28
30
|
__exportStar(require("./unit-of-work"), exports);
|
|
29
31
|
__exportStar(require("./utils"), exports);
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB;AACxB,kDAAgC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Result = void 0;
|
|
4
|
+
var result_1 = require("./result");
|
|
5
|
+
Object.defineProperty(exports, "Result", { enumerable: true, get: function () { return result_1.Result; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/result/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Result = void 0;
|
|
4
|
+
class Result {
|
|
5
|
+
success;
|
|
6
|
+
value;
|
|
7
|
+
error;
|
|
8
|
+
constructor(success, value, error) {
|
|
9
|
+
this.success = success;
|
|
10
|
+
this.value = value;
|
|
11
|
+
this.error = error;
|
|
12
|
+
}
|
|
13
|
+
static success(value) {
|
|
14
|
+
return new Result(true, value);
|
|
15
|
+
}
|
|
16
|
+
static error(error) {
|
|
17
|
+
return new Result(false, undefined, error);
|
|
18
|
+
}
|
|
19
|
+
isSuccess() {
|
|
20
|
+
return this.success;
|
|
21
|
+
}
|
|
22
|
+
isFailure() {
|
|
23
|
+
return !this.isSuccess();
|
|
24
|
+
}
|
|
25
|
+
getValue() {
|
|
26
|
+
return this.value;
|
|
27
|
+
}
|
|
28
|
+
getError() {
|
|
29
|
+
return this.error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Result = Result;
|
|
33
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/result/result.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IACA,OAAO,CAAU;IACjB,KAAK,CAAmB;IACxB,KAAK,CAAoB;IAE1C,YAAoB,OAAgB,EAAE,KAAY,EAAE,KAAa;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAAO,CAAO,KAAW;QAC9B,OAAO,IAAI,MAAM,CAAO,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAK,CAAO,KAAY;QAC7B,OAAO,IAAI,MAAM,CAAO,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;QACP,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAlCD,wBAkCC"}
|
|
@@ -2,7 +2,8 @@ import type { HTTPProvider } from "./http-provider";
|
|
|
2
2
|
export declare class FetchHTTPProvider implements HTTPProvider {
|
|
3
3
|
private ongoingRequests;
|
|
4
4
|
private readonly init;
|
|
5
|
-
|
|
5
|
+
private readonly getAuthorization;
|
|
6
|
+
constructor(getAuthorization?: () => string, init?: Pick<RequestInit, "credentials" | "headers">);
|
|
6
7
|
get<ResponseType>(url: URL): Promise<ResponseType>;
|
|
7
8
|
post<RequestBodySchema, ResponseType>(url: URL, body: RequestBodySchema): Promise<ResponseType>;
|
|
8
9
|
put<RequestBodySchema, ResponseType>(url: URL, body: RequestBodySchema): Promise<ResponseType>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-http-provider.d.ts","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch-http-provider.d.ts","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2D;IAChF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;gBAElD,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;IAKhG,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlD,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAClC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,YAAY,CAAC;IAIxB,GAAG,CAAC,iBAAiB,EAAE,YAAY,EACjC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,YAAY,CAAC;IAIxB,KAAK,CAAC,iBAAiB,EAAE,YAAY,EACnC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,YAAY,CAAC;IAIxB,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;YAIvC,OAAO;IAyErB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,UAAU;CAWnB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,9 +5,11 @@ export * from "./domain-events";
|
|
|
5
5
|
export * from "./entities";
|
|
6
6
|
export * from "./formatters";
|
|
7
7
|
export * from "./http";
|
|
8
|
+
export * from "./i18n";
|
|
8
9
|
export * from "./json-api";
|
|
9
10
|
export * from "./messages";
|
|
10
11
|
export * from "./models";
|
|
12
|
+
export * from "./result";
|
|
11
13
|
export * from "./state-manager";
|
|
12
14
|
export * from "./unit-of-work";
|
|
13
15
|
export * from "./utils";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/result/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class Result<Type> {
|
|
2
|
+
private readonly success;
|
|
3
|
+
private readonly value;
|
|
4
|
+
private readonly error;
|
|
5
|
+
private constructor();
|
|
6
|
+
static success<Type>(value: Type): Result<Type>;
|
|
7
|
+
static error<Type>(error: Error): Result<Type>;
|
|
8
|
+
isSuccess(): boolean;
|
|
9
|
+
isFailure(): boolean;
|
|
10
|
+
getValue(): Type | undefined;
|
|
11
|
+
getError(): Error | undefined;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/result/result.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM,CAAC,IAAI;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,OAAO;IAMP,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IAI9C,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,IAAI,GAAG,SAAS;IAI5B,QAAQ,IAAI,KAAK,GAAG,SAAS;CAG9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schorts/shared-kernel",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "A modular, type-safe foundation for building expressive, maintainable applications. This package provides core abstractions for domain modeling, HTTP integration, authentication, state management, and more — designed to be framework-agnostic and highly extensible.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -46,6 +46,11 @@
|
|
|
46
46
|
"require": "./dist/cjs/http/index.js",
|
|
47
47
|
"types": "./dist/types/http/index.d.ts"
|
|
48
48
|
},
|
|
49
|
+
"./i18n": {
|
|
50
|
+
"import": "./dist/esm/i18n/index.js",
|
|
51
|
+
"require": "./dist/cjs/i18n/index.js",
|
|
52
|
+
"types": "./dist/types/i18n/index.d.ts"
|
|
53
|
+
},
|
|
49
54
|
"./json-api": {
|
|
50
55
|
"import": "./dist/esm/json-api/index.js",
|
|
51
56
|
"require": "./dist/cjs/json-api/index.js",
|
|
@@ -61,6 +66,16 @@
|
|
|
61
66
|
"require": "./dist/cjs/models/index.js",
|
|
62
67
|
"types": "./dist/types/models/index.d.ts"
|
|
63
68
|
},
|
|
69
|
+
"./result": {
|
|
70
|
+
"import": "./dist/esm/result/index.js",
|
|
71
|
+
"require": "./dist/cjs/result/index.js",
|
|
72
|
+
"types": "./dist/types/result/index.d.ts"
|
|
73
|
+
},
|
|
74
|
+
"./state-manager": {
|
|
75
|
+
"import": "./dist/esm/state-manager/index.js",
|
|
76
|
+
"require": "./dist/cjs/state-manager/index.js",
|
|
77
|
+
"types": "./dist/types/state-manager/index.d.ts"
|
|
78
|
+
},
|
|
64
79
|
"./unit-of-work": {
|
|
65
80
|
"import": "./dist/esm/unit-of-work/index.js",
|
|
66
81
|
"require": "./dist/cjs/unit-of-work/index.js",
|
|
@@ -71,11 +86,6 @@
|
|
|
71
86
|
"require": "./dist/cjs/utils/index.js",
|
|
72
87
|
"types": "./dist/types/utils/index.d.ts"
|
|
73
88
|
},
|
|
74
|
-
"./state-manager": {
|
|
75
|
-
"import": "./dist/esm/state-manager/index.js",
|
|
76
|
-
"require": "./dist/cjs/state-manager/index.js",
|
|
77
|
-
"types": "./dist/types/state-manager/index.d.ts"
|
|
78
|
-
},
|
|
79
89
|
"./value-objects": {
|
|
80
90
|
"import": "./dist/esm/value-objects/index.js",
|
|
81
91
|
"require": "./dist/cjs/value-objects/index.js",
|
|
@@ -3,9 +3,11 @@ import { HTTPException } from "./exceptions";
|
|
|
3
3
|
|
|
4
4
|
export class FetchHTTPProvider implements HTTPProvider {
|
|
5
5
|
private ongoingRequests = new Map<string, Promise<any>>();
|
|
6
|
-
private readonly init: Pick<RequestInit, "credentials" | "headers"
|
|
6
|
+
private readonly init: Pick<RequestInit, "credentials" | "headers"> | undefined;
|
|
7
|
+
private readonly getAuthorization: (() => string) | undefined;
|
|
7
8
|
|
|
8
|
-
constructor(init
|
|
9
|
+
constructor(getAuthorization?: () => string, init?: Pick<RequestInit, "credentials" | "headers">) {
|
|
10
|
+
this.getAuthorization = getAuthorization;
|
|
9
11
|
this.init = init;
|
|
10
12
|
}
|
|
11
13
|
|
|
@@ -58,8 +60,15 @@ export class FetchHTTPProvider implements HTTPProvider {
|
|
|
58
60
|
init.headers = { "Content-Type": "application/json" };
|
|
59
61
|
}
|
|
60
62
|
|
|
63
|
+
if (this.getAuthorization) {
|
|
64
|
+
init.headers = {
|
|
65
|
+
...(init.headers || {}),
|
|
66
|
+
Authorization: this.getAuthorization(),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
61
70
|
const request = (async () => {
|
|
62
|
-
const response = await fetch(url.href, { ...init, ...this.init });
|
|
71
|
+
const response = await fetch(url.href, { ...init, ...(this.init || {}) });
|
|
63
72
|
|
|
64
73
|
if (!response) {
|
|
65
74
|
throw new HTTPException("Fetch returned undefined", 0);
|
package/src/index.ts
CHANGED
|
@@ -5,9 +5,11 @@ export * from "./domain-events";
|
|
|
5
5
|
export * from "./entities";
|
|
6
6
|
export * from "./formatters";
|
|
7
7
|
export * from "./http";
|
|
8
|
+
export * from "./i18n";
|
|
8
9
|
export * from "./json-api";
|
|
9
10
|
export * from "./messages";
|
|
10
11
|
export * from "./models";
|
|
12
|
+
export * from "./result";
|
|
11
13
|
export * from "./state-manager";
|
|
12
14
|
export * from "./unit-of-work";
|
|
13
15
|
export * from "./utils";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Result } from "./result";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export class Result<Type> {
|
|
2
|
+
private readonly success: boolean;
|
|
3
|
+
private readonly value: Type | undefined;
|
|
4
|
+
private readonly error: Error | undefined;
|
|
5
|
+
|
|
6
|
+
private constructor(success: boolean, value?: Type, error?: Error) {
|
|
7
|
+
this.success = success;
|
|
8
|
+
this.value = value;
|
|
9
|
+
this.error = error;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static success<Type>(value: Type): Result<Type> {
|
|
13
|
+
return new Result<Type>(true, value);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static error<Type>(error: Error): Result<Type> {
|
|
17
|
+
return new Result<Type>(false, undefined, error);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
isSuccess(): boolean {
|
|
21
|
+
return this.success;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
isFailure(): boolean {
|
|
25
|
+
return !this.isSuccess();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getValue(): Type | undefined {
|
|
29
|
+
return this.value;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getError(): Error | undefined {
|
|
33
|
+
return this.error;
|
|
34
|
+
}
|
|
35
|
+
}
|