@schorts/shared-kernel 2.1.0 → 2.2.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.
Files changed (36) hide show
  1. package/CHANGELOG +7 -1
  2. package/README.md +1 -0
  3. package/dist/cjs/http/fetch-http-provider.js +19 -9
  4. package/dist/cjs/http/fetch-http-provider.js.map +1 -1
  5. package/dist/cjs/http/http-interceptor.js +3 -0
  6. package/dist/cjs/http/http-interceptor.js.map +1 -0
  7. package/dist/cjs/http/index.js.map +1 -1
  8. package/dist/cjs/value-objects/date-value.js +30 -0
  9. package/dist/cjs/value-objects/date-value.js.map +1 -0
  10. package/dist/cjs/value-objects/index.js +3 -1
  11. package/dist/cjs/value-objects/index.js.map +1 -1
  12. package/dist/esm/http/fetch-http-provider.js +19 -9
  13. package/dist/esm/http/fetch-http-provider.js.map +1 -1
  14. package/dist/esm/http/http-interceptor.js +3 -0
  15. package/dist/esm/http/http-interceptor.js.map +1 -0
  16. package/dist/esm/http/index.js.map +1 -1
  17. package/dist/esm/value-objects/date-value.js +30 -0
  18. package/dist/esm/value-objects/date-value.js.map +1 -0
  19. package/dist/esm/value-objects/index.js +3 -1
  20. package/dist/esm/value-objects/index.js.map +1 -1
  21. package/dist/types/http/fetch-http-provider.d.ts +7 -1
  22. package/dist/types/http/fetch-http-provider.d.ts.map +1 -1
  23. package/dist/types/http/http-interceptor.d.ts +4 -0
  24. package/dist/types/http/http-interceptor.d.ts.map +1 -0
  25. package/dist/types/http/index.d.ts +1 -0
  26. package/dist/types/http/index.d.ts.map +1 -1
  27. package/dist/types/value-objects/date-value.d.ts +12 -0
  28. package/dist/types/value-objects/date-value.d.ts.map +1 -0
  29. package/dist/types/value-objects/index.d.ts +1 -0
  30. package/dist/types/value-objects/index.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/http/fetch-http-provider.ts +35 -12
  33. package/src/http/http-interceptor.ts +3 -0
  34. package/src/http/index.ts +1 -0
  35. package/src/value-objects/date-value.ts +30 -0
  36. package/src/value-objects/index.ts +2 -0
package/CHANGELOG CHANGED
@@ -5,7 +5,13 @@ 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
- ## [2.1.0] - 2025-10-09
8
+ ## [2.2.1] - 2025-10-10
9
+
10
+ ### Added
11
+
12
+ - Added `DateValue` to value-objects.
13
+
14
+ ## [2.2.0] - 2025-10-09
9
15
 
10
16
  ### Changed
11
17
 
package/README.md CHANGED
@@ -75,6 +75,7 @@ Translation keys are centralized in registries for discoverability and tooling,
75
75
  - **StringValue**
76
76
  - **UUIDValue**
77
77
  - **BooleanValue**
78
+ - **DateValue**
78
79
 
79
80
  Each value object enforces domain constraints and immutability, ensuring correctness at the boundary of your system.
80
81
 
@@ -6,10 +6,14 @@ class FetchHTTPProvider {
6
6
  ongoingRequests = new Map();
7
7
  init;
8
8
  getAuthorization;
9
+ interceptors = [];
9
10
  constructor(getAuthorization, init) {
10
11
  this.getAuthorization = getAuthorization;
11
12
  this.init = init;
12
13
  }
14
+ useInterceptor(interceptor) {
15
+ this.interceptors.push(interceptor);
16
+ }
13
17
  get(url) {
14
18
  return this.request("GET", url);
15
19
  }
@@ -30,21 +34,27 @@ class FetchHTTPProvider {
30
34
  if (this.ongoingRequests.has(key)) {
31
35
  return this.ongoingRequests.get(key);
32
36
  }
33
- const init = {
37
+ const baseHeaders = this.init?.headers ?? {};
38
+ const authHeader = this.getAuthorization ? { Authorization: this.getAuthorization() } : {};
39
+ const contentTypeHeader = body !== undefined ? { "Content-Type": "application/json" } : {};
40
+ const headers = {
41
+ ...baseHeaders,
42
+ ...contentTypeHeader,
43
+ ...authHeader,
44
+ };
45
+ let init = {
34
46
  method,
35
47
  body: body !== undefined ? JSON.stringify(body) : null,
48
+ headers,
36
49
  };
37
- if (body !== undefined) {
38
- init.headers = { "Content-Type": "application/json" };
50
+ if (this.init?.credentials !== undefined) {
51
+ init.credentials = this.init.credentials;
39
52
  }
40
- if (this.getAuthorization) {
41
- init.headers = {
42
- ...(init.headers || {}),
43
- Authorization: this.getAuthorization(),
44
- };
53
+ for (const interceptor of this.interceptors) {
54
+ init = interceptor.intercept(init, url);
45
55
  }
46
56
  const request = (async () => {
47
- const response = await fetch(url.href, { ...init, ...(this.init || {}) });
57
+ const response = await fetch(url.href, init);
48
58
  if (!response) {
49
59
  throw new exceptions_1.HTTPException(0, undefined);
50
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=http-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-interceptor.js","sourceRoot":"","sources":["../../../src/http/http-interceptor.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":";;;AAEA,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":";;;AAGA,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateValue = void 0;
4
+ class DateValue {
5
+ valueType = "Date";
6
+ value;
7
+ beforeDate;
8
+ afterDate;
9
+ constructor(value, beforeDate, afterDate) {
10
+ this.value = value;
11
+ this.beforeDate = beforeDate;
12
+ this.afterDate = afterDate;
13
+ }
14
+ get isValid() {
15
+ if (this.beforeDate && this.value > this.beforeDate)
16
+ return false;
17
+ if (this.afterDate && this.value < this.afterDate)
18
+ return false;
19
+ return true;
20
+ }
21
+ equals(valueObject) {
22
+ if (!(valueObject instanceof DateValue))
23
+ return false;
24
+ if (!this.isValid || !valueObject.isValid)
25
+ return false;
26
+ return this.value.getTime() === valueObject.value.getTime();
27
+ }
28
+ }
29
+ exports.DateValue = DateValue;
30
+ //# sourceMappingURL=date-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-value.js","sourceRoot":"","sources":["../../../src/value-objects/date-value.ts"],"names":[],"mappings":";;;AAEA,MAAsB,SAAS;IACpB,SAAS,GAAG,MAAM,CAAC;IACnB,KAAK,CAAO;IACZ,UAAU,CAAmB;IAC7B,SAAS,CAAmB;IAErC,YAAY,KAAW,EAAE,UAAiB,EAAE,SAAgB;QAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAEhE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAoB;QACzB,IAAI,CAAC,CAAC,WAAW,YAAY,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAExD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CAGF;AA3BD,8BA2BC"}
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
17
+ exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
18
18
  var uuid_value_1 = require("./uuid-value");
19
19
  Object.defineProperty(exports, "UUIDValue", { enumerable: true, get: function () { return uuid_value_1.UUIDValue; } });
20
20
  var string_value_1 = require("./string-value");
@@ -33,5 +33,7 @@ var coordinates_value_1 = require("./coordinates-value");
33
33
  Object.defineProperty(exports, "CoordinatesValue", { enumerable: true, get: function () { return coordinates_value_1.CoordinatesValue; } });
34
34
  var boolean_value_1 = require("./boolean-value");
35
35
  Object.defineProperty(exports, "BooleanValue", { enumerable: true, get: function () { return boolean_value_1.BooleanValue; } });
36
+ var date_value_1 = require("./date-value");
37
+ Object.defineProperty(exports, "DateValue", { enumerable: true, get: function () { return date_value_1.DateValue; } });
36
38
  __exportStar(require("./exceptions"), exports);
37
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,+CAA6B"}
@@ -6,10 +6,14 @@ class FetchHTTPProvider {
6
6
  ongoingRequests = new Map();
7
7
  init;
8
8
  getAuthorization;
9
+ interceptors = [];
9
10
  constructor(getAuthorization, init) {
10
11
  this.getAuthorization = getAuthorization;
11
12
  this.init = init;
12
13
  }
14
+ useInterceptor(interceptor) {
15
+ this.interceptors.push(interceptor);
16
+ }
13
17
  get(url) {
14
18
  return this.request("GET", url);
15
19
  }
@@ -30,21 +34,27 @@ class FetchHTTPProvider {
30
34
  if (this.ongoingRequests.has(key)) {
31
35
  return this.ongoingRequests.get(key);
32
36
  }
33
- const init = {
37
+ const baseHeaders = this.init?.headers ?? {};
38
+ const authHeader = this.getAuthorization ? { Authorization: this.getAuthorization() } : {};
39
+ const contentTypeHeader = body !== undefined ? { "Content-Type": "application/json" } : {};
40
+ const headers = {
41
+ ...baseHeaders,
42
+ ...contentTypeHeader,
43
+ ...authHeader,
44
+ };
45
+ let init = {
34
46
  method,
35
47
  body: body !== undefined ? JSON.stringify(body) : null,
48
+ headers,
36
49
  };
37
- if (body !== undefined) {
38
- init.headers = { "Content-Type": "application/json" };
50
+ if (this.init?.credentials !== undefined) {
51
+ init.credentials = this.init.credentials;
39
52
  }
40
- if (this.getAuthorization) {
41
- init.headers = {
42
- ...(init.headers || {}),
43
- Authorization: this.getAuthorization(),
44
- };
53
+ for (const interceptor of this.interceptors) {
54
+ init = interceptor.intercept(init, url);
45
55
  }
46
56
  const request = (async () => {
47
- const response = await fetch(url.href, { ...init, ...(this.init || {}) });
57
+ const response = await fetch(url.href, init);
48
58
  if (!response) {
49
59
  throw new exceptions_1.HTTPException(0, undefined);
50
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-http-provider.js","sourceRoot":"","sources":["../../../src/http/fetch-http-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=http-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-interceptor.js","sourceRoot":"","sources":["../../../src/http/http-interceptor.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":";;;AAEA,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":";;;AAGA,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateValue = void 0;
4
+ class DateValue {
5
+ valueType = "Date";
6
+ value;
7
+ beforeDate;
8
+ afterDate;
9
+ constructor(value, beforeDate, afterDate) {
10
+ this.value = value;
11
+ this.beforeDate = beforeDate;
12
+ this.afterDate = afterDate;
13
+ }
14
+ get isValid() {
15
+ if (this.beforeDate && this.value > this.beforeDate)
16
+ return false;
17
+ if (this.afterDate && this.value < this.afterDate)
18
+ return false;
19
+ return true;
20
+ }
21
+ equals(valueObject) {
22
+ if (!(valueObject instanceof DateValue))
23
+ return false;
24
+ if (!this.isValid || !valueObject.isValid)
25
+ return false;
26
+ return this.value.getTime() === valueObject.value.getTime();
27
+ }
28
+ }
29
+ exports.DateValue = DateValue;
30
+ //# sourceMappingURL=date-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-value.js","sourceRoot":"","sources":["../../../src/value-objects/date-value.ts"],"names":[],"mappings":";;;AAEA,MAAsB,SAAS;IACpB,SAAS,GAAG,MAAM,CAAC;IACnB,KAAK,CAAO;IACZ,UAAU,CAAmB;IAC7B,SAAS,CAAmB;IAErC,YAAY,KAAW,EAAE,UAAiB,EAAE,SAAgB;QAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAEhE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAoB;QACzB,IAAI,CAAC,CAAC,WAAW,YAAY,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAExD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CAGF;AA3BD,8BA2BC"}
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
17
+ exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
18
18
  var uuid_value_1 = require("./uuid-value");
19
19
  Object.defineProperty(exports, "UUIDValue", { enumerable: true, get: function () { return uuid_value_1.UUIDValue; } });
20
20
  var string_value_1 = require("./string-value");
@@ -33,5 +33,7 @@ var coordinates_value_1 = require("./coordinates-value");
33
33
  Object.defineProperty(exports, "CoordinatesValue", { enumerable: true, get: function () { return coordinates_value_1.CoordinatesValue; } });
34
34
  var boolean_value_1 = require("./boolean-value");
35
35
  Object.defineProperty(exports, "BooleanValue", { enumerable: true, get: function () { return boolean_value_1.BooleanValue; } });
36
+ var date_value_1 = require("./date-value");
37
+ Object.defineProperty(exports, "DateValue", { enumerable: true, get: function () { return date_value_1.DateValue; } });
36
38
  __exportStar(require("./exceptions"), exports);
37
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,+CAA6B"}
@@ -1,9 +1,15 @@
1
1
  import type { HTTPProvider } from "./http-provider";
2
+ import type { HTTPInterceptor } from "./http-interceptor";
2
3
  export declare class FetchHTTPProvider implements HTTPProvider {
3
4
  private ongoingRequests;
4
5
  private readonly init;
5
6
  private readonly getAuthorization;
6
- constructor(getAuthorization?: () => string, init?: Pick<RequestInit, "credentials" | "headers">);
7
+ private readonly interceptors;
8
+ constructor(getAuthorization?: () => string, init?: {
9
+ credentials?: RequestCredentials;
10
+ headers?: HeadersInit;
11
+ });
12
+ useInterceptor(interceptor: HTTPInterceptor): void;
7
13
  get<ResponseType>(url: URL): Promise<ResponseType>;
8
14
  post<RequestBodySchema, ResponseType>(url: URL, body: RequestBodySchema): Promise<ResponseType>;
9
15
  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,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;IAmErB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,UAAU;CAWnB"}
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;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGP;IACd,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAGpD,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAC/B,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,kBAAkB,CAAC;QACjC,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;IAMH,cAAc,CAAC,WAAW,EAAE,eAAe;IAI3C,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;IA2ErB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,UAAU;CAWnB"}
@@ -0,0 +1,4 @@
1
+ export interface HTTPInterceptor {
2
+ intercept(init: RequestInit, url: URL): RequestInit;
3
+ }
4
+ //# sourceMappingURL=http-interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-interceptor.d.ts","sourceRoot":"","sources":["../../../src/http/http-interceptor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC;CACrD"}
@@ -1,4 +1,5 @@
1
1
  export type { HTTPProvider } from "./http-provider";
2
+ export type { HTTPInterceptor } from "./http-interceptor";
2
3
  export { HTTPException } from "./exceptions";
3
4
  export { FetchHTTPProvider } from "./fetch-http-provider";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ValueObject } from "./value-object";
2
+ export declare abstract class DateValue implements ValueObject {
3
+ readonly valueType = "Date";
4
+ readonly value: Date;
5
+ readonly beforeDate: Date | undefined;
6
+ readonly afterDate: Date | undefined;
7
+ constructor(value: Date, beforeDate?: Date, afterDate?: Date);
8
+ get isValid(): boolean;
9
+ equals(valueObject: unknown): boolean;
10
+ abstract readonly attributeName: string;
11
+ }
12
+ //# sourceMappingURL=date-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/date-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,SAAU,YAAW,WAAW;IACpD,QAAQ,CAAC,SAAS,UAAU;IAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;gBAEzB,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI;IAM5D,IAAI,OAAO,IAAI,OAAO,CAKrB;IAED,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAOrC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CACzC"}
@@ -8,5 +8,6 @@ export { SlugValue } from "./slug-value";
8
8
  export { IntegerValue } from "./integer-value";
9
9
  export { CoordinatesValue } from "./coordinates-value";
10
10
  export { BooleanValue } from "./boolean-value";
11
+ export { DateValue } from "./date-value";
11
12
  export * from "./exceptions";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,cAAc,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schorts/shared-kernel",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
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",
@@ -1,16 +1,31 @@
1
1
  import type { HTTPProvider } from "./http-provider";
2
2
  import { HTTPException } from "./exceptions";
3
+ import type { HTTPInterceptor } from "./http-interceptor";
3
4
 
4
5
  export class FetchHTTPProvider implements HTTPProvider {
5
6
  private ongoingRequests = new Map<string, Promise<any>>();
6
- private readonly init: Pick<RequestInit, "credentials" | "headers"> | undefined;
7
+ private readonly init: {
8
+ credentials?: RequestCredentials;
9
+ headers?: HeadersInit;
10
+ } | undefined;
7
11
  private readonly getAuthorization: (() => string) | undefined;
12
+ private readonly interceptors: HTTPInterceptor[] = [];
8
13
 
9
- constructor(getAuthorization?: () => string, init?: Pick<RequestInit, "credentials" | "headers">) {
14
+ constructor(
15
+ getAuthorization?: () => string,
16
+ init?: {
17
+ credentials?: RequestCredentials;
18
+ headers?: HeadersInit;
19
+ }
20
+ ) {
10
21
  this.getAuthorization = getAuthorization;
11
22
  this.init = init;
12
23
  }
13
24
 
25
+ useInterceptor(interceptor: HTTPInterceptor) {
26
+ this.interceptors.push(interceptor);
27
+ }
28
+
14
29
  get<ResponseType>(url: URL): Promise<ResponseType> {
15
30
  return this.request("GET", url);
16
31
  }
@@ -51,24 +66,32 @@ export class FetchHTTPProvider implements HTTPProvider {
51
66
  return this.ongoingRequests.get(key) as Promise<ResponseType>;
52
67
  }
53
68
 
54
- const init: RequestInit = {
69
+ const baseHeaders = this.init?.headers ?? {};
70
+ const authHeader = this.getAuthorization ? { Authorization: this.getAuthorization() } : {};
71
+ const contentTypeHeader = body !== undefined ? { "Content-Type": "application/json" } : {};
72
+
73
+ const headers: HeadersInit = {
74
+ ...baseHeaders,
75
+ ...contentTypeHeader,
76
+ ...authHeader,
77
+ };
78
+
79
+ let init: RequestInit = {
55
80
  method,
56
81
  body: body !== undefined ? JSON.stringify(body) : null,
82
+ headers,
57
83
  };
58
-
59
- if (body !== undefined) {
60
- init.headers = { "Content-Type": "application/json" };
84
+
85
+ if (this.init?.credentials !== undefined) {
86
+ init.credentials = this.init.credentials;
61
87
  }
62
88
 
63
- if (this.getAuthorization) {
64
- init.headers = {
65
- ...(init.headers || {}),
66
- Authorization: this.getAuthorization(),
67
- };
89
+ for (const interceptor of this.interceptors) {
90
+ init = interceptor.intercept(init, url);
68
91
  }
69
92
 
70
93
  const request = (async () => {
71
- const response = await fetch(url.href, { ...init, ...(this.init || {}) });
94
+ const response = await fetch(url.href, init);
72
95
 
73
96
  if (!response) {
74
97
  throw new HTTPException(0, undefined);
@@ -0,0 +1,3 @@
1
+ export interface HTTPInterceptor {
2
+ intercept(init: RequestInit, url: URL): RequestInit;
3
+ }
package/src/http/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type { HTTPProvider } from "./http-provider";
2
+ export type { HTTPInterceptor } from "./http-interceptor";
2
3
 
3
4
  export { HTTPException } from "./exceptions";
4
5
  export { FetchHTTPProvider } from "./fetch-http-provider";
@@ -0,0 +1,30 @@
1
+ import { ValueObject } from "./value-object";
2
+
3
+ export abstract class DateValue implements ValueObject {
4
+ readonly valueType = "Date";
5
+ readonly value: Date;
6
+ readonly beforeDate: Date | undefined;
7
+ readonly afterDate: Date | undefined;
8
+
9
+ constructor(value: Date, beforeDate?: Date, afterDate?: Date) {
10
+ this.value = value;
11
+ this.beforeDate = beforeDate;
12
+ this.afterDate = afterDate;
13
+ }
14
+
15
+ get isValid(): boolean {
16
+ if (this.beforeDate && this.value > this.beforeDate) return false;
17
+ if (this.afterDate && this.value < this.afterDate) return false;
18
+
19
+ return true;
20
+ }
21
+
22
+ equals(valueObject: unknown): boolean {
23
+ if (!(valueObject instanceof DateValue)) return false;
24
+ if (!this.isValid || !valueObject.isValid) return false;
25
+
26
+ return this.value.getTime() === valueObject.value.getTime();
27
+ }
28
+
29
+ abstract readonly attributeName: string;
30
+ }
@@ -9,4 +9,6 @@ export { SlugValue } from "./slug-value";
9
9
  export { IntegerValue } from "./integer-value";
10
10
  export { CoordinatesValue } from "./coordinates-value";
11
11
  export { BooleanValue } from "./boolean-value";
12
+ export { DateValue } from "./date-value";
13
+
12
14
  export * from "./exceptions";