@klerick/json-api-nestjs-sdk 10.0.0-beta.13 → 10.0.0-beta.15
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.md +20 -0
- package/README.md +240 -8
- package/cjs/src/lib/service/atomic-operations.service.js +20 -14
- package/cjs/src/lib/service/atomic-operations.service.js.map +1 -1
- package/cjs/src/lib/service/json-api-sdk.service.js +10 -5
- package/cjs/src/lib/service/json-api-sdk.service.js.map +1 -1
- package/cjs/src/lib/service/json-api-utils.service.js +35 -15
- package/cjs/src/lib/service/json-api-utils.service.js.map +1 -1
- package/cjs/src/lib/utils/generate-atomic-body.js +18 -17
- package/cjs/src/lib/utils/generate-atomic-body.js.map +1 -1
- package/mjs/src/lib/service/atomic-operations.service.d.ts +5 -5
- package/mjs/src/lib/service/atomic-operations.service.js +20 -14
- package/mjs/src/lib/service/atomic-operations.service.js.map +1 -1
- package/mjs/src/lib/service/json-api-sdk.service.d.ts +5 -5
- package/mjs/src/lib/service/json-api-sdk.service.js +10 -5
- package/mjs/src/lib/service/json-api-sdk.service.js.map +1 -1
- package/mjs/src/lib/service/json-api-utils.service.js +35 -15
- package/mjs/src/lib/service/json-api-utils.service.js.map +1 -1
- package/mjs/src/lib/types/atomic-operation.d.ts +10 -10
- package/mjs/src/lib/types/atomic-type.d.ts +1 -1
- package/mjs/src/lib/types/entity-chain.d.ts +5 -5
- package/mjs/src/lib/types/http-request-params.d.ts +3 -0
- package/mjs/src/lib/types/promise-json-api-sdk.d.ts +5 -5
- package/mjs/src/lib/utils/generate-atomic-body.d.ts +5 -5
- package/mjs/src/lib/utils/generate-atomic-body.js +18 -17
- package/mjs/src/lib/utils/generate-atomic-body.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## 10.0.0-beta.15 (2026-02-16)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **json-api-nestjs-sdk:** add `meta` support to all relevant operations and update tests and documentation for JSON:API compliance ([cd80b93](https://github.com/klerick/nestjs-json-api/commit/cd80b93))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Alex H
|
|
10
|
+
|
|
11
|
+
## 10.0.0-beta.14 (2026-02-11)
|
|
12
|
+
|
|
13
|
+
### 🩹 Fixes
|
|
14
|
+
|
|
15
|
+
- **json-api-nestjs-sdk:** replace `tmpId` with `lid` in atomic operation logic and tests for JSON:API spec compliance ([fa7ad1d](https://github.com/klerick/nestjs-json-api/commit/fa7ad1d))
|
|
16
|
+
|
|
17
|
+
### ❤️ Thank You
|
|
18
|
+
|
|
19
|
+
- Alex H
|
|
20
|
+
|
|
1
21
|
## 10.0.0-beta.13 (2026-02-05)
|
|
2
22
|
|
|
3
23
|
### 🚀 Features
|
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ Type-safe TypeScript/JavaScript client for consuming [JSON:API](https://jsonapi.
|
|
|
16
16
|
- 🔍 **Advanced Filtering** - Rich query builder with operators (eq, ne, in, like, gt, lt, etc.)
|
|
17
17
|
- 📦 **Relationship Handling** - Easy include, sparse fieldsets, and relationship management
|
|
18
18
|
- ⚡ **Atomic Operations** - Batch multiple operations in a single request with rollback support
|
|
19
|
+
- 📤 **Meta Support** - Pass additional business logic data with requests (JSON:API spec compliant)
|
|
19
20
|
- 🌐 **Multiple HTTP Clients** - Works with Axios, Fetch API, and Angular HttpClient
|
|
20
21
|
- 📄 **Pagination & Sorting** - Built-in support for pagination and multi-field sorting
|
|
21
22
|
- 🔄 **Observable or Promise** - Choose your async style (RxJS Observable or native Promise)
|
|
@@ -46,6 +47,10 @@ Type-safe TypeScript/JavaScript client for consuming [JSON:API](https://jsonapi.
|
|
|
46
47
|
- [Including Relationships](#including-relationships)
|
|
47
48
|
- [Sparse Fieldsets](#sparse-fieldsets)
|
|
48
49
|
- [Atomic Operations](#-atomic-operations)
|
|
50
|
+
- [Meta Support](#-meta-support)
|
|
51
|
+
- [Regular Operations with Meta](#regular-operations-with-meta)
|
|
52
|
+
- [Entity Chain with Meta](#entity-chain-with-meta)
|
|
53
|
+
- [Atomic Operations with Meta](#atomic-operations-with-meta)
|
|
49
54
|
- [Examples](#-examples)
|
|
50
55
|
|
|
51
56
|
|
|
@@ -835,28 +840,255 @@ const result = await jsonSdk
|
|
|
835
840
|
// result[3] - array of all comment IDs after addition
|
|
836
841
|
```
|
|
837
842
|
|
|
838
|
-
### Using
|
|
843
|
+
### Using Local Identifiers (lid)
|
|
839
844
|
|
|
840
|
-
|
|
845
|
+
Create and reference resources within the same atomic request using local identifiers (`lid`). This allows you to establish relationships between resources being created in a single batch operation.
|
|
841
846
|
|
|
847
|
+
**How it works:**
|
|
848
|
+
1. Assign a temporary ID to the resource (any unique value - number or string)
|
|
849
|
+
2. Reference this ID in relationships of other resources in the same request
|
|
850
|
+
3. Server automatically replaces temporary IDs with real database IDs
|
|
851
|
+
|
|
852
|
+
**Example - Numeric lid:**
|
|
842
853
|
```typescript
|
|
843
854
|
const address = new Addresses();
|
|
844
855
|
address.city = 'Boston';
|
|
845
|
-
address.id = 10000; // Temporary ID
|
|
856
|
+
address.id = 10000; // Temporary ID (lid)
|
|
846
857
|
|
|
847
858
|
const user = new Users();
|
|
848
859
|
user.firstName = 'Alice';
|
|
849
|
-
user.addresses = address; // Reference by
|
|
860
|
+
user.addresses = address; // Reference resource by temporary ID
|
|
850
861
|
|
|
851
862
|
const [createdAddress, createdUser] = await jsonSdk
|
|
852
863
|
.atomicFactory()
|
|
853
|
-
.postOne(address)
|
|
864
|
+
.postOne(address) // First operation: create address with lid=10000
|
|
865
|
+
.postOne(user) // Second operation: reference address via lid
|
|
866
|
+
.run();
|
|
867
|
+
|
|
868
|
+
// Server assigns real IDs and maintains relationships
|
|
869
|
+
console.log(createdAddress.id); // Real ID (e.g., 42)
|
|
870
|
+
console.log(createdUser.addresses.id); // Same real ID (42)
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
**Example - UUID lid (for entities with UUID primary keys):**
|
|
874
|
+
```typescript
|
|
875
|
+
const book1 = new BookList();
|
|
876
|
+
book1.id = '550e8400-e29b-41d4-a716-446655440000'; // Temporary UUID (lid)
|
|
877
|
+
book1.title = 'TypeScript Handbook';
|
|
878
|
+
|
|
879
|
+
const book2 = new BookList();
|
|
880
|
+
book2.id = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; // Another temporary UUID (lid)
|
|
881
|
+
book2.title = 'Advanced Node.js';
|
|
882
|
+
|
|
883
|
+
const user = new Users();
|
|
884
|
+
user.firstName = 'John';
|
|
885
|
+
user.books = [book1, book2]; // Reference both books by their temporary UUIDs
|
|
886
|
+
|
|
887
|
+
const [createdBook1, createdBook2, createdUser] = await jsonSdk
|
|
888
|
+
.atomicFactory()
|
|
889
|
+
.postOne(book1)
|
|
890
|
+
.postOne(book2)
|
|
854
891
|
.postOne(user)
|
|
855
892
|
.run();
|
|
856
893
|
|
|
857
|
-
//
|
|
858
|
-
|
|
859
|
-
console.log(
|
|
894
|
+
// All temporary IDs are used as actual IDs (for UUID fields)
|
|
895
|
+
// or replaced with real IDs (for autoincrement fields)
|
|
896
|
+
console.log(createdBook1.id); // UUID from lid
|
|
897
|
+
console.log(createdBook2.id); // UUID from lid
|
|
898
|
+
console.log(createdUser.books.map(b => b.id)); // Both book UUIDs
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
**Important notes:**
|
|
902
|
+
- Local identifiers (lid) are only valid within a single atomic request
|
|
903
|
+
- The SDK automatically handles lid assignment in the request body
|
|
904
|
+
- For numeric IDs: lid is replaced with the actual database-generated ID
|
|
905
|
+
- For UUID IDs: lid can be used as the actual ID (if server has `allowSetId: true`)
|
|
906
|
+
|
|
907
|
+
---
|
|
908
|
+
|
|
909
|
+
## 📤 Meta Support
|
|
910
|
+
|
|
911
|
+
The SDK supports passing `meta` objects with requests to send additional business logic data that doesn't belong to the entity itself, according to [JSON:API specification](https://jsonapi.org/format/#document-meta).
|
|
912
|
+
|
|
913
|
+
### Regular Operations with Meta
|
|
914
|
+
|
|
915
|
+
```typescript
|
|
916
|
+
// POST with meta
|
|
917
|
+
const newUser = new Users();
|
|
918
|
+
newUser.firstName = 'John';
|
|
919
|
+
newUser.lastName = 'Doe';
|
|
920
|
+
newUser.login = 'johndoe';
|
|
921
|
+
|
|
922
|
+
const createdUser = await jsonSdk.jsonApiSdkService.postOne(newUser, {
|
|
923
|
+
source: 'import',
|
|
924
|
+
batchId: '12345'
|
|
925
|
+
});
|
|
926
|
+
|
|
927
|
+
// Request body:
|
|
928
|
+
{
|
|
929
|
+
"data": {
|
|
930
|
+
"type": "users",
|
|
931
|
+
"attributes": { "firstName": "John", "lastName": "Doe", "login": "johndoe" }
|
|
932
|
+
},
|
|
933
|
+
"meta": {
|
|
934
|
+
"source": "import",
|
|
935
|
+
"batchId": "12345"
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
// PATCH with meta
|
|
940
|
+
user.firstName = 'Jane';
|
|
941
|
+
const updatedUser = await jsonSdk.jsonApiSdkService.patchOne(user, {
|
|
942
|
+
updatedBy: 'admin',
|
|
943
|
+
reason: 'name correction'
|
|
944
|
+
});
|
|
945
|
+
|
|
946
|
+
// Relationship operations with meta
|
|
947
|
+
await jsonSdk.jsonApiSdkService.postRelationships(user, 'roles', {
|
|
948
|
+
addedBy: 'admin',
|
|
949
|
+
timestamp: Date.now()
|
|
950
|
+
});
|
|
951
|
+
|
|
952
|
+
await jsonSdk.jsonApiSdkService.patchRelationships(user, 'roles', {
|
|
953
|
+
source: 'sync',
|
|
954
|
+
syncId: 'abc123'
|
|
955
|
+
});
|
|
956
|
+
|
|
957
|
+
await jsonSdk.jsonApiSdkService.deleteRelationships(user, 'roles', {
|
|
958
|
+
removedBy: 'admin',
|
|
959
|
+
reason: 'access revoked'
|
|
960
|
+
});
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
**Important:** `deleteOne()` does NOT support meta because HTTP DELETE for resources has no body according to JSON:API spec. However, `deleteRelationships()` DOES support meta because relationship deletion endpoints use a request body.
|
|
964
|
+
|
|
965
|
+
### Entity Chain with Meta
|
|
966
|
+
|
|
967
|
+
```typescript
|
|
968
|
+
// Chain mode - Observable
|
|
969
|
+
const user = await jsonSdk.jsonApiSdkService
|
|
970
|
+
.entity('Users', {
|
|
971
|
+
firstName: 'John',
|
|
972
|
+
lastName: 'Doe',
|
|
973
|
+
login: 'johndoe'
|
|
974
|
+
})
|
|
975
|
+
.postOne({ source: 'mobile-app', version: '2.0' });
|
|
976
|
+
|
|
977
|
+
// Update with meta
|
|
978
|
+
await jsonSdk.jsonApiSdkService
|
|
979
|
+
.entity('Users', { id: 1, firstName: 'Jane' })
|
|
980
|
+
.patchOne({ updatedBy: 'user-123' });
|
|
981
|
+
|
|
982
|
+
// Relationship operations with meta
|
|
983
|
+
await jsonSdk.jsonApiSdkService
|
|
984
|
+
.entity('Users', user)
|
|
985
|
+
.patchRelationships('roles', { operation: 'bulk-update' });
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
### Atomic Operations with Meta
|
|
989
|
+
|
|
990
|
+
Each operation in an atomic request can have its own meta:
|
|
991
|
+
|
|
992
|
+
```typescript
|
|
993
|
+
const address1 = new Addresses();
|
|
994
|
+
address1.id = 999; // Local identifier (lid)
|
|
995
|
+
address1.city = 'New York';
|
|
996
|
+
|
|
997
|
+
const address2 = new Addresses();
|
|
998
|
+
address2.id = 1000; // Local identifier (lid)
|
|
999
|
+
address2.city = 'Boston';
|
|
1000
|
+
|
|
1001
|
+
const user1 = new Users();
|
|
1002
|
+
user1.firstName = 'Alice';
|
|
1003
|
+
user1.addresses = address1;
|
|
1004
|
+
|
|
1005
|
+
const user2 = new Users();
|
|
1006
|
+
user2.firstName = 'Bob';
|
|
1007
|
+
user2.addresses = address2;
|
|
1008
|
+
|
|
1009
|
+
const [addr1, addr2, createdUser1, createdUser2] = await jsonSdk
|
|
1010
|
+
.atomicFactory()
|
|
1011
|
+
.postOne(address1)
|
|
1012
|
+
.postOne(address2)
|
|
1013
|
+
.postOne(user1, { source: 'import', priority: 'high' }) // User 1 with meta
|
|
1014
|
+
.postOne(user2, { source: 'import', priority: 'normal' }) // User 2 with different meta
|
|
1015
|
+
.run();
|
|
1016
|
+
|
|
1017
|
+
// Request body:
|
|
1018
|
+
{
|
|
1019
|
+
"atomic:operations": [
|
|
1020
|
+
{
|
|
1021
|
+
"op": "add",
|
|
1022
|
+
"ref": { "type": "addresses", "lid": "999" },
|
|
1023
|
+
"data": { "type": "addresses", "attributes": { "city": "New York" } }
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
"op": "add",
|
|
1027
|
+
"ref": { "type": "addresses", "lid": "1000" },
|
|
1028
|
+
"data": { "type": "addresses", "attributes": { "city": "Boston" } }
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"op": "add",
|
|
1032
|
+
"ref": { "type": "users" },
|
|
1033
|
+
"data": {
|
|
1034
|
+
"type": "users",
|
|
1035
|
+
"attributes": { "firstName": "Alice" },
|
|
1036
|
+
"relationships": { "addresses": { "data": { "type": "addresses", "id": "999" } } }
|
|
1037
|
+
},
|
|
1038
|
+
"meta": { "source": "import", "priority": "high" } // Meta for operation 3
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
"op": "add",
|
|
1042
|
+
"ref": { "type": "users" },
|
|
1043
|
+
"data": {
|
|
1044
|
+
"type": "users",
|
|
1045
|
+
"attributes": { "firstName": "Bob" },
|
|
1046
|
+
"relationships": { "addresses": { "data": { "type": "addresses", "id": "1000" } } }
|
|
1047
|
+
},
|
|
1048
|
+
"meta": { "source": "import", "priority": "normal" } // Meta for operation 4
|
|
1049
|
+
}
|
|
1050
|
+
]
|
|
1051
|
+
}
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
### Meta with Entity Chain in Atomic Operations
|
|
1055
|
+
|
|
1056
|
+
```typescript
|
|
1057
|
+
const addressEntity = jsonSdk.jsonApiSdkService.entity('Addresses', {
|
|
1058
|
+
id: 999,
|
|
1059
|
+
city: 'New York'
|
|
1060
|
+
}, true);
|
|
1061
|
+
|
|
1062
|
+
const userEntity = jsonSdk.jsonApiSdkService.entity('Users', {
|
|
1063
|
+
firstName: 'Alice',
|
|
1064
|
+
addresses: jsonSdk.jsonApiSdkService.entity('Addresses', { id: 999 }, true)
|
|
1065
|
+
}, true);
|
|
1066
|
+
|
|
1067
|
+
const [createdAddress, createdUser] = await jsonSdk
|
|
1068
|
+
.atomicFactory()
|
|
1069
|
+
.postOne(addressEntity)
|
|
1070
|
+
.postOne(userEntity, { source: 'import', batchId: '12345' })
|
|
1071
|
+
.run();
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
### Operations WITHOUT Meta Support
|
|
1075
|
+
|
|
1076
|
+
The following operations do NOT accept meta parameter:
|
|
1077
|
+
|
|
1078
|
+
```typescript
|
|
1079
|
+
// ❌ deleteOne - HTTP DELETE has no body
|
|
1080
|
+
await jsonSdk.jsonApiSdkService.deleteOne(user);
|
|
1081
|
+
// Cannot pass meta here
|
|
1082
|
+
|
|
1083
|
+
// ❌ deleteOne in atomic operations
|
|
1084
|
+
await jsonSdk.atomicFactory()
|
|
1085
|
+
.deleteOne(user) // No meta parameter
|
|
1086
|
+
.run();
|
|
1087
|
+
|
|
1088
|
+
// ✅ But deleteRelationships DOES support meta (has body)
|
|
1089
|
+
await jsonSdk.jsonApiSdkService.deleteRelationships(user, 'roles', {
|
|
1090
|
+
removedBy: 'admin'
|
|
1091
|
+
});
|
|
860
1092
|
```
|
|
861
1093
|
|
|
862
1094
|
---
|
|
@@ -43,22 +43,22 @@ class AtomicOperationsService {
|
|
|
43
43
|
deleteOne(entity, skipEmpty) {
|
|
44
44
|
return this.setToBody('deleteOne', entity, skipEmpty === undefined ? true : skipEmpty);
|
|
45
45
|
}
|
|
46
|
-
patchOne(entity) {
|
|
47
|
-
return this.setToBody('patchOne', entity);
|
|
46
|
+
patchOne(entity, meta) {
|
|
47
|
+
return this.setToBody('patchOne', entity, meta);
|
|
48
48
|
}
|
|
49
|
-
postOne(entity) {
|
|
50
|
-
return this.setToBody('postOne', entity);
|
|
49
|
+
postOne(entity, meta) {
|
|
50
|
+
return this.setToBody('postOne', entity, meta);
|
|
51
51
|
}
|
|
52
|
-
deleteRelationships(entity, relationType) {
|
|
53
|
-
return this.setToBody('deleteRelationships', entity, relationType);
|
|
52
|
+
deleteRelationships(entity, relationType, meta) {
|
|
53
|
+
return this.setToBody('deleteRelationships', entity, relationType, meta);
|
|
54
54
|
}
|
|
55
|
-
patchRelationships(entity, relationType) {
|
|
56
|
-
return this.setToBody('patchRelationships', entity, relationType);
|
|
55
|
+
patchRelationships(entity, relationType, meta) {
|
|
56
|
+
return this.setToBody('patchRelationships', entity, relationType, meta);
|
|
57
57
|
}
|
|
58
|
-
postRelationships(entity, relationType) {
|
|
59
|
-
return this.setToBody('postRelationships', entity, relationType);
|
|
58
|
+
postRelationships(entity, relationType, meta) {
|
|
59
|
+
return this.setToBody('postRelationships', entity, relationType, meta);
|
|
60
60
|
}
|
|
61
|
-
setToBody(operationType, entity, relationType) {
|
|
61
|
+
setToBody(operationType, entity, relationType, meta) {
|
|
62
62
|
const atomicBody = new utils_1.GenerateAtomicBody(this.jsonApiUtilsService, this.jsonApiSdkConfig);
|
|
63
63
|
if (typeof relationType === 'boolean') {
|
|
64
64
|
if (operationType === 'deleteOne') {
|
|
@@ -71,11 +71,17 @@ class AtomicOperationsService {
|
|
|
71
71
|
case 'patchRelationships':
|
|
72
72
|
case 'deleteRelationships':
|
|
73
73
|
if (relationType)
|
|
74
|
-
atomicBody[operationType](entity, relationType);
|
|
74
|
+
atomicBody[operationType](entity, relationType, meta);
|
|
75
75
|
break;
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
case 'postOne':
|
|
77
|
+
case 'patchOne': {
|
|
78
|
+
// For postOne/patchOne, relationType parameter contains meta (3rd param)
|
|
79
|
+
const metaForEntity = typeof relationType === 'object' && relationType !== null && !Array.isArray(relationType)
|
|
80
|
+
? relationType
|
|
81
|
+
: meta;
|
|
82
|
+
atomicBody[operationType](entity, metaForEntity);
|
|
78
83
|
break;
|
|
84
|
+
}
|
|
79
85
|
}
|
|
80
86
|
}
|
|
81
87
|
this.addBody(atomicBody);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-operations.service.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/atomic-operations.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"atomic-operations.service.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/atomic-operations.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,7 +96,7 @@ class JsonApiSdkService {
|
|
|
96
96
|
})
|
|
97
97
|
.pipe((0, operators_1.map)((result) => this.jsonApiUtilsService.convertResponseData(result, params?.include, asPlain)));
|
|
98
98
|
}
|
|
99
|
-
postOne(entity) {
|
|
99
|
+
postOne(entity, meta) {
|
|
100
100
|
const asPlain = Reflect.has(entity, AS_PLAIN_RESULT);
|
|
101
101
|
const { attributes, relationships } = this.jsonApiUtilsService.generateBody(entity);
|
|
102
102
|
const body = {
|
|
@@ -105,6 +105,7 @@ class JsonApiSdkService {
|
|
|
105
105
|
attributes,
|
|
106
106
|
...(Object.keys(relationships).length > 0 ? { relationships } : {}),
|
|
107
107
|
},
|
|
108
|
+
...(meta ? { meta } : {}),
|
|
108
109
|
};
|
|
109
110
|
const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
|
|
110
111
|
if (id) {
|
|
@@ -114,7 +115,7 @@ class JsonApiSdkService {
|
|
|
114
115
|
.post(this.jsonApiUtilsService.getUrlForResource(entity.constructor.name), body)
|
|
115
116
|
.pipe((0, operators_1.map)((r) => this.jsonApiUtilsService.convertResponseData(r, (Object.keys(relationships).length > 0 ? Object.keys(relationships) : undefined), asPlain)));
|
|
116
117
|
}
|
|
117
|
-
patchOne(entity) {
|
|
118
|
+
patchOne(entity, meta) {
|
|
118
119
|
const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
|
|
119
120
|
if (!id) {
|
|
120
121
|
return (0, rxjs_1.throwError)(() => new Error('Resource params should be instance of resource with id params'));
|
|
@@ -126,6 +127,7 @@ class JsonApiSdkService {
|
|
|
126
127
|
id: String(id),
|
|
127
128
|
type: (0, utils_1.getTypeForReq)(entity.constructor.name),
|
|
128
129
|
},
|
|
130
|
+
...(meta ? { meta } : {}),
|
|
129
131
|
};
|
|
130
132
|
if (Object.keys(relationships).length > 0) {
|
|
131
133
|
Reflect.set(body.data, 'relationships', relationships);
|
|
@@ -153,7 +155,7 @@ class JsonApiSdkService {
|
|
|
153
155
|
.get(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`)
|
|
154
156
|
.pipe((0, operators_1.map)((result) => this.jsonApiUtilsService.getResultForRelation(result)));
|
|
155
157
|
}
|
|
156
|
-
patchRelationships(entity, relationType) {
|
|
158
|
+
patchRelationships(entity, relationType, meta) {
|
|
157
159
|
const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
|
|
158
160
|
if (!id) {
|
|
159
161
|
return (0, rxjs_1.throwError)(() => new Error('Resource params should be instance of resource with id params'));
|
|
@@ -163,12 +165,13 @@ class JsonApiSdkService {
|
|
|
163
165
|
}
|
|
164
166
|
const body = {
|
|
165
167
|
data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
|
|
168
|
+
...(meta ? { meta } : {}),
|
|
166
169
|
};
|
|
167
170
|
return this.http
|
|
168
171
|
.patch(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)
|
|
169
172
|
.pipe((0, operators_1.map)((result) => this.jsonApiUtilsService.getResultForRelation(result)));
|
|
170
173
|
}
|
|
171
|
-
postRelationships(entity, relationType) {
|
|
174
|
+
postRelationships(entity, relationType, meta) {
|
|
172
175
|
const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
|
|
173
176
|
if (!id) {
|
|
174
177
|
return (0, rxjs_1.throwError)(() => new Error('Resource params should be instance of resource with id params'));
|
|
@@ -178,12 +181,13 @@ class JsonApiSdkService {
|
|
|
178
181
|
}
|
|
179
182
|
const body = {
|
|
180
183
|
data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
|
|
184
|
+
...(meta ? { meta } : {}),
|
|
181
185
|
};
|
|
182
186
|
return this.http
|
|
183
187
|
.post(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)
|
|
184
188
|
.pipe((0, operators_1.map)((result) => this.jsonApiUtilsService.getResultForRelation(result)));
|
|
185
189
|
}
|
|
186
|
-
deleteRelationships(entity, relationType) {
|
|
190
|
+
deleteRelationships(entity, relationType, meta) {
|
|
187
191
|
const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
|
|
188
192
|
if (!id) {
|
|
189
193
|
return (0, rxjs_1.throwError)(() => new Error('Resource params should be instance of resource with id params'));
|
|
@@ -193,6 +197,7 @@ class JsonApiSdkService {
|
|
|
193
197
|
}
|
|
194
198
|
const body = {
|
|
195
199
|
data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
|
|
200
|
+
...(meta ? { meta } : {}),
|
|
196
201
|
};
|
|
197
202
|
return this.http
|
|
198
203
|
.delete(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-api-sdk.service.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/json-api-sdk.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"json-api-sdk.service.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/json-api-sdk.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,7 +122,7 @@ class JsonApiUtilsService {
|
|
|
122
122
|
const result = [];
|
|
123
123
|
for (const dataItem of arrayData) {
|
|
124
124
|
let id = dataItem[this.jsonApiSdkConfig.idKey];
|
|
125
|
-
if (this.jsonApiSdkConfig.idIsNumber) {
|
|
125
|
+
if (this.jsonApiSdkConfig.idIsNumber && /^\d+$/.test(String(id))) {
|
|
126
126
|
const idNumber = parseInt(id, 10);
|
|
127
127
|
id = isNaN(idNumber) ? id : idNumber;
|
|
128
128
|
}
|
|
@@ -206,7 +206,7 @@ class JsonApiUtilsService {
|
|
|
206
206
|
if (!item || !item['id'])
|
|
207
207
|
return;
|
|
208
208
|
let id = item['id'];
|
|
209
|
-
if (this.jsonApiSdkConfig.idIsNumber) {
|
|
209
|
+
if (this.jsonApiSdkConfig.idIsNumber && /^\d+$/.test(String(id))) {
|
|
210
210
|
const idNumber = parseInt(id, 10);
|
|
211
211
|
id = isNaN(idNumber) ? id : idNumber;
|
|
212
212
|
}
|
|
@@ -222,10 +222,11 @@ class JsonApiUtilsService {
|
|
|
222
222
|
const relatedIncluded = included.find((includedItem) => includedItem.type === item.type && includedItem.id === item.id);
|
|
223
223
|
if (!relatedIncluded)
|
|
224
224
|
return;
|
|
225
|
+
const rawId = relatedIncluded[this.jsonApiSdkConfig.idKey];
|
|
225
226
|
const entityObject = {
|
|
226
|
-
[this.jsonApiSdkConfig.idKey]: this.jsonApiSdkConfig.idIsNumber
|
|
227
|
-
? parseInt(
|
|
228
|
-
:
|
|
227
|
+
[this.jsonApiSdkConfig.idKey]: this.jsonApiSdkConfig.idIsNumber && /^\d+$/.test(String(rawId))
|
|
228
|
+
? parseInt(rawId, 10)
|
|
229
|
+
: rawId,
|
|
229
230
|
...Object.entries(relatedIncluded.attributes || []).reduce((acum, [key, val]) => {
|
|
230
231
|
if (this.jsonApiSdkConfig.dateFields.includes(key)) {
|
|
231
232
|
const date = new Date(String(val));
|
|
@@ -270,18 +271,30 @@ class JsonApiUtilsService {
|
|
|
270
271
|
data = [];
|
|
271
272
|
}
|
|
272
273
|
else if (Array.isArray(val)) {
|
|
273
|
-
data = val.map((i) =>
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
data = val.map((i) => {
|
|
275
|
+
const relationId = i[constants_1.ID_KEY];
|
|
276
|
+
if (relationId === undefined || relationId === null) {
|
|
277
|
+
throw new Error(`Entity '${i.constructor.name}' used in relationship '${String(key)}' must have an id. ` +
|
|
278
|
+
`For atomic operations with temporary IDs, set the id property before using the entity in relationships.`);
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
type: (0, utils_1.getTypeForReq)(i.constructor.name),
|
|
282
|
+
id: relationId.toString(),
|
|
283
|
+
};
|
|
284
|
+
});
|
|
277
285
|
}
|
|
278
286
|
else {
|
|
279
|
-
|
|
287
|
+
const relationId = val[constants_1.ID_KEY];
|
|
288
|
+
if (relationId !== undefined && relationId !== null) {
|
|
280
289
|
data = {
|
|
281
290
|
type: (0, utils_1.getTypeForReq)(val.constructor.name),
|
|
282
|
-
id:
|
|
291
|
+
id: relationId.toString(),
|
|
283
292
|
};
|
|
284
293
|
}
|
|
294
|
+
else if (relationId === undefined) {
|
|
295
|
+
throw new Error(`Entity '${val.constructor.name}' used in relationship '${String(key)}' must have an id. ` +
|
|
296
|
+
`For atomic operations with temporary IDs, set the id property before using the entity in relationships.`);
|
|
297
|
+
}
|
|
285
298
|
else {
|
|
286
299
|
data = null;
|
|
287
300
|
}
|
|
@@ -302,10 +315,17 @@ class JsonApiUtilsService {
|
|
|
302
315
|
}
|
|
303
316
|
}
|
|
304
317
|
generateRelationshipsBody(relationshipEntity) {
|
|
305
|
-
const generateRelationObj = (relation) =>
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
318
|
+
const generateRelationObj = (relation) => {
|
|
319
|
+
const relationId = Reflect.get(relation, this.jsonApiSdkConfig.idKey);
|
|
320
|
+
if (relationId === undefined || relationId === null) {
|
|
321
|
+
throw new Error(`Entity '${relation.constructor.name}' used in relationship operation must have an id. ` +
|
|
322
|
+
`For atomic operations with temporary IDs, set the id property before using the entity.`);
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
id: String(relationId),
|
|
326
|
+
type: (0, utils_1.getTypeForReq)(relation.constructor.name),
|
|
327
|
+
};
|
|
328
|
+
};
|
|
309
329
|
return Array.isArray(relationshipEntity)
|
|
310
330
|
? relationshipEntity.map((item) => generateRelationObj(item))
|
|
311
331
|
: generateRelationObj(relationshipEntity);
|