@schorts/shared-kernel 5.4.3 → 6.0.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/README.md +1 -0
- package/dist/cjs/json-api/entity-json-api-mapper.js +25 -0
- package/dist/cjs/json-api/entity-json-api-mapper.js.map +1 -0
- package/dist/cjs/json-api/index.js +3 -1
- package/dist/cjs/json-api/index.js.map +1 -1
- package/dist/esm/json-api/entity-json-api-mapper.js +25 -0
- package/dist/esm/json-api/entity-json-api-mapper.js.map +1 -0
- package/dist/esm/json-api/index.js +3 -1
- package/dist/esm/json-api/index.js.map +1 -1
- package/dist/types/json-api/entity-json-api-mapper.d.ts +12 -0
- package/dist/types/json-api/entity-json-api-mapper.d.ts.map +1 -0
- package/dist/types/json-api/index.d.ts +1 -0
- package/dist/types/json-api/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -70,6 +70,7 @@ Translation keys are centralized in registries for discoverability and tooling,
|
|
|
70
70
|
|
|
71
71
|
- **JSONAPIConnector:** Connector for interacting with JSON:API-compliant endpoints.
|
|
72
72
|
- **URLCriteriaParser:** Utility for parsing JSON:API-style query parameters (`filter`, `sort`, `page[limit]`, `page[offset]`) into a type-safe `Criteria` object. Supports operators like `eq`, `ne`, `gt`, `lt`, `in`, `between`, and even geospatial filters (`geo_radius`). This enables seamless conversion from URL query strings into expressive domain queries.
|
|
73
|
+
- **EntityJSONAPIMapper:** Static utility for converting domain `Entity` instances into JSON:API-compliant payloads. Provides `mapEntity` for single resources and `mapEntities` for collections, ensuring attributes are serialized consistently with the JSON:API specification.
|
|
73
74
|
|
|
74
75
|
### 📬 Mail
|
|
75
76
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityJSONAPIMapper = void 0;
|
|
4
|
+
class EntityJSONAPIMapper {
|
|
5
|
+
type;
|
|
6
|
+
constructor(type) {
|
|
7
|
+
this.type = type;
|
|
8
|
+
}
|
|
9
|
+
mapEntity(entity) {
|
|
10
|
+
const attributes = entity.toPrimitives();
|
|
11
|
+
delete attributes.id;
|
|
12
|
+
return {
|
|
13
|
+
data: {
|
|
14
|
+
type: this.type,
|
|
15
|
+
id: entity.id.value,
|
|
16
|
+
attributes: attributes,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
mapEntities(entities) {
|
|
21
|
+
return { data: entities.map((e) => this.mapEntity(e).data) };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.EntityJSONAPIMapper = EntityJSONAPIMapper;
|
|
25
|
+
//# sourceMappingURL=entity-json-api-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-json-api-mapper.js","sourceRoot":"","sources":["../../../src/json-api/entity-json-api-mapper.ts"],"names":[],"mappings":";;;AAMA,MAAa,mBAAmB;IAEX;IADnB,YACmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;IAEL,SAAS,CAAC,MAAc;QACtB,MAAM,UAAU,GAAwB,MAAM,CAAC,YAAY,EAAE,CAAC;QAE9D,OAAO,UAAU,CAAC,EAAE,CAAC;QAErB,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,KAAe;gBAC7B,UAAU,EAAE,UAA+B;aAC5C;SACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAuB;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;CACF;AAtBD,kDAsBC"}
|
|
@@ -14,12 +14,14 @@ 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.URLCriteriaParser = exports.JSONAPIConnector = exports.URLCriteriaBuilder = void 0;
|
|
17
|
+
exports.EntityJSONAPIMapper = exports.URLCriteriaParser = exports.JSONAPIConnector = exports.URLCriteriaBuilder = void 0;
|
|
18
18
|
var url_criteria_builder_1 = require("./url-criteria-builder");
|
|
19
19
|
Object.defineProperty(exports, "URLCriteriaBuilder", { enumerable: true, get: function () { return url_criteria_builder_1.URLCriteriaBuilder; } });
|
|
20
20
|
var json_api_connector_1 = require("./json-api-connector");
|
|
21
21
|
Object.defineProperty(exports, "JSONAPIConnector", { enumerable: true, get: function () { return json_api_connector_1.JSONAPIConnector; } });
|
|
22
22
|
var url_criteria_parser_1 = require("./url-criteria-parser");
|
|
23
23
|
Object.defineProperty(exports, "URLCriteriaParser", { enumerable: true, get: function () { return url_criteria_parser_1.URLCriteriaParser; } });
|
|
24
|
+
var entity_json_api_mapper_1 = require("./entity-json-api-mapper");
|
|
25
|
+
Object.defineProperty(exports, "EntityJSONAPIMapper", { enumerable: true, get: function () { return entity_json_api_mapper_1.EntityJSONAPIMapper; } });
|
|
24
26
|
__exportStar(require("./exceptions"), exports);
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,+CAA6B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityJSONAPIMapper = void 0;
|
|
4
|
+
class EntityJSONAPIMapper {
|
|
5
|
+
type;
|
|
6
|
+
constructor(type) {
|
|
7
|
+
this.type = type;
|
|
8
|
+
}
|
|
9
|
+
mapEntity(entity) {
|
|
10
|
+
const attributes = entity.toPrimitives();
|
|
11
|
+
delete attributes.id;
|
|
12
|
+
return {
|
|
13
|
+
data: {
|
|
14
|
+
type: this.type,
|
|
15
|
+
id: entity.id.value,
|
|
16
|
+
attributes: attributes,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
mapEntities(entities) {
|
|
21
|
+
return { data: entities.map((e) => this.mapEntity(e).data) };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.EntityJSONAPIMapper = EntityJSONAPIMapper;
|
|
25
|
+
//# sourceMappingURL=entity-json-api-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-json-api-mapper.js","sourceRoot":"","sources":["../../../src/json-api/entity-json-api-mapper.ts"],"names":[],"mappings":";;;AAMA,MAAa,mBAAmB;IAEX;IADnB,YACmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;IAEL,SAAS,CAAC,MAAc;QACtB,MAAM,UAAU,GAAwB,MAAM,CAAC,YAAY,EAAE,CAAC;QAE9D,OAAO,UAAU,CAAC,EAAE,CAAC;QAErB,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,KAAe;gBAC7B,UAAU,EAAE,UAA+B;aAC5C;SACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAuB;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;CACF;AAtBD,kDAsBC"}
|
|
@@ -14,12 +14,14 @@ 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.URLCriteriaParser = exports.JSONAPIConnector = exports.URLCriteriaBuilder = void 0;
|
|
17
|
+
exports.EntityJSONAPIMapper = exports.URLCriteriaParser = exports.JSONAPIConnector = exports.URLCriteriaBuilder = void 0;
|
|
18
18
|
var url_criteria_builder_1 = require("./url-criteria-builder");
|
|
19
19
|
Object.defineProperty(exports, "URLCriteriaBuilder", { enumerable: true, get: function () { return url_criteria_builder_1.URLCriteriaBuilder; } });
|
|
20
20
|
var json_api_connector_1 = require("./json-api-connector");
|
|
21
21
|
Object.defineProperty(exports, "JSONAPIConnector", { enumerable: true, get: function () { return json_api_connector_1.JSONAPIConnector; } });
|
|
22
22
|
var url_criteria_parser_1 = require("./url-criteria-parser");
|
|
23
23
|
Object.defineProperty(exports, "URLCriteriaParser", { enumerable: true, get: function () { return url_criteria_parser_1.URLCriteriaParser; } });
|
|
24
|
+
var entity_json_api_mapper_1 = require("./entity-json-api-mapper");
|
|
25
|
+
Object.defineProperty(exports, "EntityJSONAPIMapper", { enumerable: true, get: function () { return entity_json_api_mapper_1.EntityJSONAPIMapper; } });
|
|
24
26
|
__exportStar(require("./exceptions"), exports);
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,+CAA6B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Entity as BaseEntity } from "../entities";
|
|
2
|
+
import { ValueObject } from "../value-objects";
|
|
3
|
+
import { Model as BaseModel } from "../models";
|
|
4
|
+
import { JSONAPIList } from "./json-api-list";
|
|
5
|
+
import { JSONAPISingle } from "./json-api-single";
|
|
6
|
+
export declare class EntityJSONAPIMapper<Model extends BaseModel, Entity extends BaseEntity<ValueObject, Model>> {
|
|
7
|
+
private readonly type;
|
|
8
|
+
constructor(type: string);
|
|
9
|
+
mapEntity(entity: Entity): JSONAPISingle<Model>;
|
|
10
|
+
mapEntities(entities: Array<Entity>): JSONAPIList<Model>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=entity-json-api-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-json-api-mapper.d.ts","sourceRoot":"","sources":["../../../src/json-api/entity-json-api-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,qBAAa,mBAAmB,CAAC,KAAK,SAAS,SAAS,EAAE,MAAM,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;IAEnG,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAG/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IAc/C,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;CAGzD"}
|
|
@@ -3,5 +3,6 @@ export type { JSONAPIList } from "./json-api-list";
|
|
|
3
3
|
export { URLCriteriaBuilder } from "./url-criteria-builder";
|
|
4
4
|
export { JSONAPIConnector } from "./json-api-connector";
|
|
5
5
|
export { URLCriteriaParser } from "./url-criteria-parser";
|
|
6
|
+
export { EntityJSONAPIMapper } from "./entity-json-api-mapper";
|
|
6
7
|
export * from "./exceptions";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-api/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,cAAc,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schorts/shared-kernel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.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",
|