@klerick/json-api-nestjs-sdk 10.0.0-beta.2
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 +58 -0
- package/README.md +154 -0
- package/cjs/package.json +55 -0
- package/cjs/src/index.d.ts +5 -0
- package/cjs/src/index.js +14 -0
- package/cjs/src/index.js.map +1 -0
- package/cjs/src/lib/constants/index.d.ts +1 -0
- package/cjs/src/lib/constants/index.js +5 -0
- package/cjs/src/lib/constants/index.js.map +1 -0
- package/cjs/src/lib/json-api-angular.d.ts +21 -0
- package/cjs/src/lib/json-api-angular.js +40 -0
- package/cjs/src/lib/json-api-angular.js.map +1 -0
- package/cjs/src/lib/json-api-js.d.ts +15 -0
- package/cjs/src/lib/json-api-js.js +48 -0
- package/cjs/src/lib/json-api-js.js.map +1 -0
- package/cjs/src/lib/service/atomic-operations.service.d.ts +22 -0
- package/cjs/src/lib/service/atomic-operations.service.js +86 -0
- package/cjs/src/lib/service/atomic-operations.service.js.map +1 -0
- package/cjs/src/lib/service/fetch-inner-client.d.ts +20 -0
- package/cjs/src/lib/service/fetch-inner-client.js +48 -0
- package/cjs/src/lib/service/fetch-inner-client.js.map +1 -0
- package/cjs/src/lib/service/index.d.ts +3 -0
- package/cjs/src/lib/service/index.js +7 -0
- package/cjs/src/lib/service/index.js.map +1 -0
- package/cjs/src/lib/service/json-api-sdk.service.d.ts +21 -0
- package/cjs/src/lib/service/json-api-sdk.service.js +168 -0
- package/cjs/src/lib/service/json-api-sdk.service.js.map +1 -0
- package/cjs/src/lib/service/json-api-utils.service.d.ts +28 -0
- package/cjs/src/lib/service/json-api-utils.service.js +245 -0
- package/cjs/src/lib/service/json-api-utils.service.js.map +1 -0
- package/cjs/src/lib/token/index.d.ts +4 -0
- package/cjs/src/lib/token/index.js +7 -0
- package/cjs/src/lib/token/index.js.map +1 -0
- package/cjs/src/lib/types/atomic-operation.d.ts +33 -0
- package/cjs/src/lib/types/atomic-operation.js +3 -0
- package/cjs/src/lib/types/atomic-operation.js.map +1 -0
- package/cjs/src/lib/types/atomic-type.d.ts +23 -0
- package/cjs/src/lib/types/atomic-type.js +4 -0
- package/cjs/src/lib/types/atomic-type.js.map +1 -0
- package/cjs/src/lib/types/config.d.ts +14 -0
- package/cjs/src/lib/types/config.js +3 -0
- package/cjs/src/lib/types/config.js.map +1 -0
- package/cjs/src/lib/types/filter-operand.d.ts +10 -0
- package/cjs/src/lib/types/filter-operand.js +4 -0
- package/cjs/src/lib/types/filter-operand.js.map +1 -0
- package/cjs/src/lib/types/http-inner-client.d.ts +19 -0
- package/cjs/src/lib/types/http-inner-client.js +3 -0
- package/cjs/src/lib/types/http-inner-client.js.map +1 -0
- package/cjs/src/lib/types/http-request-params.d.ts +20 -0
- package/cjs/src/lib/types/http-request-params.js +3 -0
- package/cjs/src/lib/types/http-request-params.js.map +1 -0
- package/cjs/src/lib/types/index.d.ts +9 -0
- package/cjs/src/lib/types/index.js +13 -0
- package/cjs/src/lib/types/index.js.map +1 -0
- package/cjs/src/lib/types/promise-json-api-sdk.d.ts +16 -0
- package/cjs/src/lib/types/promise-json-api-sdk.js +3 -0
- package/cjs/src/lib/types/promise-json-api-sdk.js.map +1 -0
- package/cjs/src/lib/types/query-params.d.ts +47 -0
- package/cjs/src/lib/types/query-params.js +4 -0
- package/cjs/src/lib/types/query-params.js.map +1 -0
- package/cjs/src/lib/types/utils.d.ts +6 -0
- package/cjs/src/lib/types/utils.js +3 -0
- package/cjs/src/lib/types/utils.js.map +1 -0
- package/cjs/src/lib/utils/adapter-for-axios.d.ts +3 -0
- package/cjs/src/lib/utils/adapter-for-axios.js +56 -0
- package/cjs/src/lib/utils/adapter-for-axios.js.map +1 -0
- package/cjs/src/lib/utils/entity-array.d.ts +9 -0
- package/cjs/src/lib/utils/entity-array.js +28 -0
- package/cjs/src/lib/utils/entity-array.js.map +1 -0
- package/cjs/src/lib/utils/generate-atomic-body.d.ts +22 -0
- package/cjs/src/lib/utils/generate-atomic-body.js +75 -0
- package/cjs/src/lib/utils/generate-atomic-body.js.map +1 -0
- package/cjs/src/lib/utils/http-params.d.ts +154 -0
- package/cjs/src/lib/utils/http-params.js +303 -0
- package/cjs/src/lib/utils/http-params.js.map +1 -0
- package/cjs/src/lib/utils/index.d.ts +5 -0
- package/cjs/src/lib/utils/index.js +9 -0
- package/cjs/src/lib/utils/index.js.map +1 -0
- package/cjs/src/lib/utils/utils.d.ts +4 -0
- package/cjs/src/lib/utils/utils.js +24 -0
- package/cjs/src/lib/utils/utils.js.map +1 -0
- package/cjs/src/ngModule.d.ts +4 -0
- package/cjs/src/ngModule.js +14 -0
- package/cjs/src/ngModule.js.map +1 -0
- package/mjs/package.json +57 -0
- package/mjs/src/index.d.ts +5 -0
- package/mjs/src/index.js +5 -0
- package/mjs/src/index.js.map +1 -0
- package/mjs/src/lib/constants/index.d.ts +1 -0
- package/mjs/src/lib/constants/index.js +2 -0
- package/mjs/src/lib/constants/index.js.map +1 -0
- package/mjs/src/lib/json-api-angular.d.ts +21 -0
- package/mjs/src/lib/json-api-angular.js +33 -0
- package/mjs/src/lib/json-api-angular.js.map +1 -0
- package/mjs/src/lib/json-api-js.d.ts +15 -0
- package/mjs/src/lib/json-api-js.js +44 -0
- package/mjs/src/lib/json-api-js.js.map +1 -0
- package/mjs/src/lib/service/atomic-operations.service.d.ts +22 -0
- package/mjs/src/lib/service/atomic-operations.service.js +85 -0
- package/mjs/src/lib/service/atomic-operations.service.js.map +1 -0
- package/mjs/src/lib/service/fetch-inner-client.d.ts +20 -0
- package/mjs/src/lib/service/fetch-inner-client.js +50 -0
- package/mjs/src/lib/service/fetch-inner-client.js.map +1 -0
- package/mjs/src/lib/service/index.d.ts +3 -0
- package/mjs/src/lib/service/index.js +4 -0
- package/mjs/src/lib/service/index.js.map +1 -0
- package/mjs/src/lib/service/json-api-sdk.service.d.ts +21 -0
- package/mjs/src/lib/service/json-api-sdk.service.js +174 -0
- package/mjs/src/lib/service/json-api-sdk.service.js.map +1 -0
- package/mjs/src/lib/service/json-api-utils.service.d.ts +28 -0
- package/mjs/src/lib/service/json-api-utils.service.js +253 -0
- package/mjs/src/lib/service/json-api-utils.service.js.map +1 -0
- package/mjs/src/lib/token/index.d.ts +4 -0
- package/mjs/src/lib/token/index.js +4 -0
- package/mjs/src/lib/token/index.js.map +1 -0
- package/mjs/src/lib/types/atomic-operation.d.ts +33 -0
- package/mjs/src/lib/types/atomic-operation.js +2 -0
- package/mjs/src/lib/types/atomic-operation.js.map +1 -0
- package/mjs/src/lib/types/atomic-type.d.ts +23 -0
- package/mjs/src/lib/types/atomic-type.js +2 -0
- package/mjs/src/lib/types/atomic-type.js.map +1 -0
- package/mjs/src/lib/types/config.d.ts +14 -0
- package/mjs/src/lib/types/config.js +2 -0
- package/mjs/src/lib/types/config.js.map +1 -0
- package/mjs/src/lib/types/filter-operand.d.ts +10 -0
- package/mjs/src/lib/types/filter-operand.js +2 -0
- package/mjs/src/lib/types/filter-operand.js.map +1 -0
- package/mjs/src/lib/types/http-inner-client.d.ts +19 -0
- package/mjs/src/lib/types/http-inner-client.js +2 -0
- package/mjs/src/lib/types/http-inner-client.js.map +1 -0
- package/mjs/src/lib/types/http-request-params.d.ts +20 -0
- package/mjs/src/lib/types/http-request-params.js +2 -0
- package/mjs/src/lib/types/http-request-params.js.map +1 -0
- package/mjs/src/lib/types/index.d.ts +9 -0
- package/mjs/src/lib/types/index.js +10 -0
- package/mjs/src/lib/types/index.js.map +1 -0
- package/mjs/src/lib/types/promise-json-api-sdk.d.ts +16 -0
- package/mjs/src/lib/types/promise-json-api-sdk.js +2 -0
- package/mjs/src/lib/types/promise-json-api-sdk.js.map +1 -0
- package/mjs/src/lib/types/query-params.d.ts +47 -0
- package/mjs/src/lib/types/query-params.js +2 -0
- package/mjs/src/lib/types/query-params.js.map +1 -0
- package/mjs/src/lib/types/utils.d.ts +6 -0
- package/mjs/src/lib/types/utils.js +2 -0
- package/mjs/src/lib/types/utils.js.map +1 -0
- package/mjs/src/lib/utils/adapter-for-axios.d.ts +3 -0
- package/mjs/src/lib/utils/adapter-for-axios.js +54 -0
- package/mjs/src/lib/utils/adapter-for-axios.js.map +1 -0
- package/mjs/src/lib/utils/entity-array.d.ts +9 -0
- package/mjs/src/lib/utils/entity-array.js +25 -0
- package/mjs/src/lib/utils/entity-array.js.map +1 -0
- package/mjs/src/lib/utils/generate-atomic-body.d.ts +22 -0
- package/mjs/src/lib/utils/generate-atomic-body.js +83 -0
- package/mjs/src/lib/utils/generate-atomic-body.js.map +1 -0
- package/mjs/src/lib/utils/http-params.d.ts +154 -0
- package/mjs/src/lib/utils/http-params.js +300 -0
- package/mjs/src/lib/utils/http-params.js.map +1 -0
- package/mjs/src/lib/utils/index.d.ts +5 -0
- package/mjs/src/lib/utils/index.js +6 -0
- package/mjs/src/lib/utils/index.js.map +1 -0
- package/mjs/src/lib/utils/utils.d.ts +4 -0
- package/mjs/src/lib/utils/utils.js +24 -0
- package/mjs/src/lib/utils/utils.js.map +1 -0
- package/mjs/src/ngModule.d.ts +4 -0
- package/mjs/src/ngModule.js +4 -0
- package/mjs/src/ngModule.js.map +1 -0
- package/package.json +74 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## 10.0.0-beta.0 (2025-05-21)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for json-api-nestjs-sdk to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
# 9.0.0 (2025-02-12)
|
|
6
|
+
|
|
7
|
+
This was a version bump only for json-api-nestjs-sdk to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
9
|
+
# 8.0.0 (2024-12-18)
|
|
10
|
+
|
|
11
|
+
### 🚀 Features
|
|
12
|
+
|
|
13
|
+
- **json-api-nestjs-sdk,nestjs-json-rpc-sdk:** Change export ([7953371](https://github.com/klerick/nestjs-json-api/commit/7953371))
|
|
14
|
+
- **nestjs-json-rpc-sdk:** Skip empty element in response ([28d3efc](https://github.com/klerick/nestjs-json-api/commit/28d3efc))
|
|
15
|
+
|
|
16
|
+
### 🩹 Fixes
|
|
17
|
+
|
|
18
|
+
- **json-api-nestjs-sdk:** Fix check for relation and add type for meta data ([9bbe9fd](https://github.com/klerick/nestjs-json-api/commit/9bbe9fd))
|
|
19
|
+
|
|
20
|
+
### ❤️ Thank You
|
|
21
|
+
|
|
22
|
+
- Alex H
|
|
23
|
+
|
|
24
|
+
## 7.0.1 (2024-04-21)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### 🩹 Fixes
|
|
28
|
+
|
|
29
|
+
- **json-api-nestjs:** Fix validate for patch method ([40b0303](https://github.com/klerick/nestjs-json-api/commit/40b0303))
|
|
30
|
+
|
|
31
|
+
- **json-api-nestjs:** Fix validate for patch method ([2caa2d8](https://github.com/klerick/nestjs-json-api/commit/2caa2d8))
|
|
32
|
+
|
|
33
|
+
- **json-api-nestjs:** Allow empty atributes for sdk ([c3cc4a5](https://github.com/klerick/nestjs-json-api/commit/c3cc4a5))
|
|
34
|
+
|
|
35
|
+
- **json-api-nestjs:** Allow empty atributes for sdk ([3101fca](https://github.com/klerick/nestjs-json-api/commit/3101fca))
|
|
36
|
+
|
|
37
|
+
- **json-api-nestjs-sdk:** Allow empty atrributes for sdk ([c4b2675](https://github.com/klerick/nestjs-json-api/commit/c4b2675))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### ❤️ Thank You
|
|
41
|
+
|
|
42
|
+
- Alex H
|
|
43
|
+
|
|
44
|
+
# 7.0.0 (2024-03-08)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### 🚀 Features
|
|
48
|
+
|
|
49
|
+
- ⚠️ **json-api-nestjs-sdk:** New version sdk for json api ([f65ca03](https://github.com/klerick/nestjs-json-api/commit/f65ca03))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
#### ⚠️ Breaking Changes
|
|
53
|
+
|
|
54
|
+
- **json-api-nestjs-sdk:** - add support native js
|
|
55
|
+
|
|
56
|
+
### ❤️ Thank You
|
|
57
|
+
|
|
58
|
+
- Alex H
|
package/README.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
<p align='center'>
|
|
2
|
+
<a href="https://www.npmjs.com/package/json-api-nestjs-sdk" target="_blank"><img src="https://img.shields.io/npm/v/json-api-nestjs-sdk.svg" alt="NPM Version" /></a>
|
|
3
|
+
<a href="https://www.npmjs.com/package/json-api-nestjs-sdk" target="_blank"><img src="https://img.shields.io/npm/l/json-api-nestjs-sdk.svg" alt="Package License" /></a>
|
|
4
|
+
<a href="https://www.npmjs.com/package/json-api-nestjs-sdk" target="_blank"><img src="https://img.shields.io/npm/dm/json-api-nestjs-sdk.svg" alt="NPM Downloads" /></a>
|
|
5
|
+
<a href="http://commitizen.github.io/cz-cli/" target="_blank"><img src="https://img.shields.io/badge/commitizen-friendly-brightgreen.svg" alt="Commitizen friendly" /></a>
|
|
6
|
+
<img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/klerick/02a4c98cf7008fea2af70dc2d50f4cb7/raw/json-api-nestjs-sdk.json" alt="Coverage Badge" />
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
# json-api-nestjs-sdk
|
|
10
|
+
|
|
11
|
+
The plugin of client for help work with JSON API over [json-api-nestjs](https://www.npmjs.com/package/json-api-nestjs)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash $
|
|
17
|
+
npm install @klerick/json-api-nestjs-sdk
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Example
|
|
21
|
+
|
|
22
|
+
Once the installation process is complete, we can import the **JsonApiJs**.
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import {
|
|
26
|
+
adapterForAxios,
|
|
27
|
+
FilterOperand,
|
|
28
|
+
JsonApiJs,
|
|
29
|
+
JsonSdkPromise,
|
|
30
|
+
} from '@klerick/json-api-nestjs-sdk';
|
|
31
|
+
import { faker } from '@faker-js/faker';
|
|
32
|
+
import axios from 'axios';
|
|
33
|
+
|
|
34
|
+
import {Users} from 'database'
|
|
35
|
+
|
|
36
|
+
const axiosAdapter = adapterForAxios(axios);
|
|
37
|
+
|
|
38
|
+
const jsonConfig: JsonConfig = {
|
|
39
|
+
adapter: axiosAdapter,
|
|
40
|
+
apiHost: 'http://localhost:3000',
|
|
41
|
+
apiPrefix: 'api',
|
|
42
|
+
dateFields: ['createdAt', 'updatedAt'],
|
|
43
|
+
operationUrl: 'operation',
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const jsonSdk = JsonApiJs(
|
|
47
|
+
jsonConfig,
|
|
48
|
+
true //by default all methods return Observable but you return promise
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
await jsonSdk.jonApiSdkService.getAll(Users, {
|
|
52
|
+
filter: {
|
|
53
|
+
target: {
|
|
54
|
+
id: { [FilterOperand.in]: usersId.map((i) => `${i}`) },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
include: ['addresses', 'comments', 'roles', 'manager'],
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
// Atomic Operation
|
|
62
|
+
|
|
63
|
+
const address = new Addresses();
|
|
64
|
+
|
|
65
|
+
address.city = faker.string.alpha(50);
|
|
66
|
+
address.state = faker.string.alpha(50);
|
|
67
|
+
address.country = faker.string.alpha(50);
|
|
68
|
+
address.id = 10000;
|
|
69
|
+
|
|
70
|
+
const manager = getUser();
|
|
71
|
+
manager.id = 10001;
|
|
72
|
+
manager.addresses = address;
|
|
73
|
+
|
|
74
|
+
const roles = new Roles();
|
|
75
|
+
roles.id = 10002;
|
|
76
|
+
roles.name = faker.string.alpha(50);
|
|
77
|
+
roles.key = faker.string.alpha(50);
|
|
78
|
+
|
|
79
|
+
const user = getUser();
|
|
80
|
+
user.addresses = address;
|
|
81
|
+
user.manager = manager;
|
|
82
|
+
user.roles = [roles];
|
|
83
|
+
|
|
84
|
+
const [addressPost, managerPost, rolesPost, userPost] = await jsonSdk
|
|
85
|
+
.atomicFactory()
|
|
86
|
+
.postOne(address)
|
|
87
|
+
.postOne(manager)
|
|
88
|
+
.postOne(roles)
|
|
89
|
+
.postOne(user)
|
|
90
|
+
.run();
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
or you can use Angular module:
|
|
95
|
+
```typescript
|
|
96
|
+
import {
|
|
97
|
+
provideJsonApi,
|
|
98
|
+
AtomicFactory,
|
|
99
|
+
JsonApiSdkService
|
|
100
|
+
} from '@klerick/json-api-nestjs-sdk/ngModule';
|
|
101
|
+
import {
|
|
102
|
+
provideHttpClient,
|
|
103
|
+
withFetch,
|
|
104
|
+
} from '@angular/common/http';
|
|
105
|
+
|
|
106
|
+
@Component({
|
|
107
|
+
standalone: true,
|
|
108
|
+
selector: 'nestjs-json-api-root',
|
|
109
|
+
templateUrl: './app.component.html',
|
|
110
|
+
styleUrl: './app.component.css',
|
|
111
|
+
})
|
|
112
|
+
export class AppComponent {
|
|
113
|
+
private JsonApiSdkService = inject(JsonApiSdkService);
|
|
114
|
+
private atomicFactory = inject(AtomicFactory);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const angularConfig: JsonSdkConfig = {
|
|
118
|
+
apiHost: 'http://localhost:4200',
|
|
119
|
+
idKey: 'id',
|
|
120
|
+
apiPrefix: 'api',
|
|
121
|
+
operationUrl: 'operation',
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
bootstrapApplication(AppComponent, {
|
|
125
|
+
providers: [
|
|
126
|
+
provideHttpClient(withFetch()),
|
|
127
|
+
provideJsonApi(angularConfig)
|
|
128
|
+
],
|
|
129
|
+
}).catch((err) =>
|
|
130
|
+
console.error(err)
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Configuration params
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
type JsonSdkConfig = {
|
|
141
|
+
apiHost: string; // url for api
|
|
142
|
+
apiPrefix?: string; // prefex for api - api/v1/....
|
|
143
|
+
idKey?: string; // name for id field
|
|
144
|
+
idIsNumber?: boolean; // use parseInt for id field
|
|
145
|
+
operationUrl?: string; // url for atomic operation
|
|
146
|
+
dateFields: string[] // array of dateField for create date object - ;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
type JsonConfig = JsonSdkConfig & {
|
|
150
|
+
adapter?: HttpInnerClient; // by default use fetch for http request but you can change it
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
* You can see interface of [HttpInnerClient](https://github.com/klerick/nestjs-json-api/blob/master/libs/json-api/json-api-nestjs-sdk/src/lib/types/http-inner-client.ts)
|
|
154
|
+
* More example you can see [here](https://github.com/klerick/nestjs-json-api/blob/master/apps/json-api-server-e2e/src/json-api/json-api-sdk) or [here](https://github.com/klerick/nestjs-json-api/blob/master/apps/json-api-front/src/app/app.component.ts)
|
package/cjs/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@klerick/json-api-nestjs-sdk",
|
|
3
|
+
"version": "10.0.0-beta.2",
|
|
4
|
+
"description": "Helper for client JsonAPi Plugin for NestJs",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"nestjs",
|
|
7
|
+
"nest",
|
|
8
|
+
"jsonapi",
|
|
9
|
+
"json-api",
|
|
10
|
+
"typeorm",
|
|
11
|
+
"microorm",
|
|
12
|
+
"CRUD"
|
|
13
|
+
],
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@angular/common": "^19.2.1",
|
|
16
|
+
"@angular/core": "^19.2.1",
|
|
17
|
+
"axios": "^1.6.0",
|
|
18
|
+
"change-case-commonjs": "^5.4.4",
|
|
19
|
+
"reflect-metadata": "^0.1.12 || ^0.2.0",
|
|
20
|
+
"rxjs": "^7.1.0",
|
|
21
|
+
"tslib": ">2.3.0"
|
|
22
|
+
},
|
|
23
|
+
"exports": {
|
|
24
|
+
"./package.json": "./package.json",
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./mjs/src/index.d.ts",
|
|
27
|
+
"node": "./cjs/src/index.js",
|
|
28
|
+
"require": "./cjs/src/index.js",
|
|
29
|
+
"module": "./mjs/src/index.js",
|
|
30
|
+
"default": "./mjs/src/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./ngModule": {
|
|
33
|
+
"types": "./mjs/src/ngModule.d.ts",
|
|
34
|
+
"node": "./cjs/src/ngModule.js",
|
|
35
|
+
"require": "./cjs/src/ngModule.js",
|
|
36
|
+
"module": "./mjs/src/ngModule.js",
|
|
37
|
+
"default": "./mjs/src/ngModule.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"main": "./cjs/src/index.js",
|
|
41
|
+
"module": "./mjs/src/index.js",
|
|
42
|
+
"types": "./mjs/src/index.d.ts",
|
|
43
|
+
"typesVersions": {
|
|
44
|
+
"*": {
|
|
45
|
+
"ngModule": [
|
|
46
|
+
"./mjs/src/ngModule.d.ts"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"@klerick/json-api-nestjs-shared": "1.0.0-beta.2",
|
|
52
|
+
"ts-toolbelt": "9.6.0"
|
|
53
|
+
},
|
|
54
|
+
"type": "commonjs"
|
|
55
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { FilterOperand, ResourceObject, QueryField, } from '@klerick/json-api-nestjs-shared';
|
|
2
|
+
export { JsonApiUtilsService, JsonApiSdkService } from './lib/service';
|
|
3
|
+
export * from './lib/json-api-js';
|
|
4
|
+
export { adapterForAxios } from './lib/utils';
|
|
5
|
+
export { AtomicOperations, Operands, QueryParams } from './lib/types';
|
package/cjs/src/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adapterForAxios = exports.JsonApiSdkService = exports.JsonApiUtilsService = exports.QueryField = exports.FilterOperand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
var json_api_nestjs_shared_1 = require("@klerick/json-api-nestjs-shared");
|
|
6
|
+
Object.defineProperty(exports, "FilterOperand", { enumerable: true, get: function () { return json_api_nestjs_shared_1.FilterOperand; } });
|
|
7
|
+
Object.defineProperty(exports, "QueryField", { enumerable: true, get: function () { return json_api_nestjs_shared_1.QueryField; } });
|
|
8
|
+
var service_1 = require("./lib/service");
|
|
9
|
+
Object.defineProperty(exports, "JsonApiUtilsService", { enumerable: true, get: function () { return service_1.JsonApiUtilsService; } });
|
|
10
|
+
Object.defineProperty(exports, "JsonApiSdkService", { enumerable: true, get: function () { return service_1.JsonApiSdkService; } });
|
|
11
|
+
tslib_1.__exportStar(require("./lib/json-api-js"), exports);
|
|
12
|
+
var utils_1 = require("./lib/utils");
|
|
13
|
+
Object.defineProperty(exports, "adapterForAxios", { enumerable: true, get: function () { return utils_1.adapterForAxios; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-sdk/src/index.ts"],"names":[],"mappings":";;;;AAAA,0EAIyC;AAHvC,uHAAA,aAAa,OAAA;AAEb,oHAAA,UAAU,OAAA;AAGZ,yCAAuE;AAA9D,8GAAA,mBAAmB,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAC/C,4DAAkC;AAClC,qCAA8C;AAArC,wGAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ID_KEY = "id";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/constants/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JsonSdkConfig } from './types';
|
|
2
|
+
import { JsonApiUtilsService, JsonApiSdkService, AtomicOperationsService } from './service';
|
|
3
|
+
export declare const getProviders: (config: JsonSdkConfig) => ({
|
|
4
|
+
provide: import("@angular/core").InjectionToken<import("./types").JsonApiSdkConfig>;
|
|
5
|
+
useValue: import("./types").JsonApiSdkConfig;
|
|
6
|
+
useFactory?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
provide: typeof JsonApiUtilsService;
|
|
9
|
+
useFactory: () => JsonApiUtilsService;
|
|
10
|
+
useValue?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
provide: typeof JsonApiSdkService;
|
|
13
|
+
useFactory: () => JsonApiSdkService;
|
|
14
|
+
useValue?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
provide: import("@angular/core").InjectionToken<import("./types").AtomicFactory>;
|
|
17
|
+
useFactory: () => () => AtomicOperationsService<unknown[]>;
|
|
18
|
+
useValue?: undefined;
|
|
19
|
+
})[];
|
|
20
|
+
export declare const provideJsonApi: (config: JsonSdkConfig) => import("@angular/core").EnvironmentProviders;
|
|
21
|
+
export { AtomicFactory, JSON_API_SDK_CONFIG } from './token';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JSON_API_SDK_CONFIG = exports.AtomicFactory = exports.provideJsonApi = exports.getProviders = void 0;
|
|
4
|
+
const core_1 = require("@angular/core");
|
|
5
|
+
const http_1 = require("@angular/common/http");
|
|
6
|
+
const token_1 = require("./token");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const service_1 = require("./service");
|
|
9
|
+
const getProviders = (config) => [
|
|
10
|
+
{
|
|
11
|
+
provide: token_1.JSON_API_SDK_CONFIG,
|
|
12
|
+
useValue: (0, utils_1.resultConfig)(config),
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
provide: service_1.JsonApiUtilsService,
|
|
16
|
+
useFactory: () => new service_1.JsonApiUtilsService((0, core_1.inject)(token_1.JSON_API_SDK_CONFIG)),
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
provide: service_1.JsonApiSdkService,
|
|
20
|
+
useFactory: () => new service_1.JsonApiSdkService((0, core_1.inject)(http_1.HttpClient), (0, core_1.inject)(service_1.JsonApiUtilsService), (0, core_1.inject)(token_1.JSON_API_SDK_CONFIG)),
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
provide: token_1.AtomicFactory,
|
|
24
|
+
useFactory: () => {
|
|
25
|
+
const jsonApiUtilsService = (0, core_1.inject)(service_1.JsonApiUtilsService);
|
|
26
|
+
const config = (0, core_1.inject)(token_1.JSON_API_SDK_CONFIG);
|
|
27
|
+
const httpClient = (0, core_1.inject)(http_1.HttpClient);
|
|
28
|
+
return () => {
|
|
29
|
+
return new service_1.AtomicOperationsService(jsonApiUtilsService, config, httpClient);
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
exports.getProviders = getProviders;
|
|
35
|
+
const provideJsonApi = (config) => (0, core_1.makeEnvironmentProviders)((0, exports.getProviders)(config));
|
|
36
|
+
exports.provideJsonApi = provideJsonApi;
|
|
37
|
+
var token_2 = require("./token");
|
|
38
|
+
Object.defineProperty(exports, "AtomicFactory", { enumerable: true, get: function () { return token_2.AtomicFactory; } });
|
|
39
|
+
Object.defineProperty(exports, "JSON_API_SDK_CONFIG", { enumerable: true, get: function () { return token_2.JSON_API_SDK_CONFIG; } });
|
|
40
|
+
//# sourceMappingURL=json-api-angular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-api-angular.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/json-api-angular.ts"],"names":[],"mappings":";;;AAAA,wCAAiE;AACjE,+CAAkD;AAElD,mCAA6D;AAC7D,mCAAuC;AACvC,uCAImB;AAEZ,MAAM,YAAY,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC;IACrD;QACE,OAAO,EAAE,2BAAmB;QAC5B,QAAQ,EAAE,IAAA,oBAAY,EAAC,MAAM,CAAC;KAC/B;IACD;QACE,OAAO,EAAE,6BAAmB;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,6BAAmB,CAAC,IAAA,aAAM,EAAC,2BAAmB,CAAC,CAAC;KACvE;IACD;QACE,OAAO,EAAE,2BAAiB;QAC1B,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,2BAAiB,CACnB,IAAA,aAAM,EAAkB,iBAAiB,CAAC,EAC1C,IAAA,aAAM,EAAC,6BAAmB,CAAC,EAC3B,IAAA,aAAM,EAAC,2BAAmB,CAAC,CAC5B;KACJ;IACD;QACE,OAAO,EAAE,qBAAa;QACtB,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,mBAAmB,GAAG,IAAA,aAAM,EAAC,6BAAmB,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAA,aAAM,EAAC,2BAAmB,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAA,aAAM,EAAkB,iBAAiB,CAAC,CAAC;YAE9D,OAAO,GAAG,EAAE;gBACV,OAAO,IAAI,iCAAuB,CAChC,mBAAmB,EACnB,MAAM,EACN,UAAU,CACX,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAlCW,QAAA,YAAY,gBAkCvB;AAEK,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAE,EAAE,CACtD,IAAA,+BAAwB,EAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC,CAAC;AADpC,QAAA,cAAc,kBACsB;AAEjD,iCAA6D;AAApD,sGAAA,aAAa,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AtomicFactory, AtomicFactoryPromise, JsonConfig, PromiseJsonApiSdkService } from './types';
|
|
2
|
+
import { JsonApiSdkService, JsonApiUtilsService } from './service';
|
|
3
|
+
export type JsonSdkPromise = {
|
|
4
|
+
jsonApiUtilsService: JsonApiUtilsService;
|
|
5
|
+
jonApiSdkService: PromiseJsonApiSdkService;
|
|
6
|
+
atomicFactory: AtomicFactoryPromise;
|
|
7
|
+
};
|
|
8
|
+
export type JsonSdkGeneral = {
|
|
9
|
+
jsonApiUtilsService: JsonApiUtilsService;
|
|
10
|
+
jonApiSdkService: JsonApiSdkService;
|
|
11
|
+
atomicFactory: AtomicFactory;
|
|
12
|
+
};
|
|
13
|
+
type JsonSdk<P extends boolean | undefined> = P extends true ? JsonSdkPromise : JsonSdkGeneral;
|
|
14
|
+
export declare function JsonApiJs<P extends true | boolean>(config: JsonConfig, returnPromise?: P): JsonSdk<P>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonApiJs = JsonApiJs;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const service_1 = require("./service");
|
|
7
|
+
const fetch_inner_client_1 = require("./service/fetch-inner-client");
|
|
8
|
+
const rxjs_1 = require("rxjs");
|
|
9
|
+
const jsonSdk = {};
|
|
10
|
+
function JsonApiJs(config, returnPromise) {
|
|
11
|
+
if (Object.keys(jsonSdk).length > 0)
|
|
12
|
+
return jsonSdk;
|
|
13
|
+
const { adapter } = config, jsonSdkConfig = tslib_1.__rest(config, ["adapter"]);
|
|
14
|
+
const resultJsonConfig = (0, utils_1.resultConfig)(jsonSdkConfig);
|
|
15
|
+
const jsonApiUtilsService = new service_1.JsonApiUtilsService(resultJsonConfig);
|
|
16
|
+
const httpInnerClient = adapter ? adapter : new fetch_inner_client_1.FetchInnerClient();
|
|
17
|
+
const jonApiSdkService = new service_1.JsonApiSdkService(httpInnerClient, jsonApiUtilsService, resultJsonConfig);
|
|
18
|
+
jsonSdk['jsonApiUtilsService'] = jsonApiUtilsService;
|
|
19
|
+
jsonSdk['jonApiSdkService'] = jonApiSdkService;
|
|
20
|
+
jsonSdk['atomicFactory'] = () => new service_1.AtomicOperationsService(jsonApiUtilsService, resultJsonConfig, httpInnerClient);
|
|
21
|
+
if (returnPromise) {
|
|
22
|
+
jsonSdk['jonApiSdkService'] = new Proxy(jonApiSdkService, {
|
|
23
|
+
get(target, p) {
|
|
24
|
+
return (...arg) => (0, rxjs_1.lastValueFrom)(target[p].apply(target, arg));
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
jsonSdk['atomicFactory'] = () => {
|
|
28
|
+
const proxy = new Proxy(new service_1.AtomicOperationsService(jsonApiUtilsService, resultJsonConfig, httpInnerClient), {
|
|
29
|
+
get(target, p) {
|
|
30
|
+
if (p === 'run') {
|
|
31
|
+
return () => (0, rxjs_1.lastValueFrom)(target.run());
|
|
32
|
+
}
|
|
33
|
+
if (typeof target[p] === 'function') {
|
|
34
|
+
return (...arg) => {
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
target[p](...arg);
|
|
37
|
+
return proxy;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return target[p];
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
return proxy;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return jsonSdk;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=json-api-js.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-api-js.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/json-api-js.ts"],"names":[],"mappings":";;AAmCA,8BAsEC;;AAjGD,mCAAuC;AACvC,uCAImB;AACnB,qEAAgE;AAChE,+BAAqC;AAkBrC,MAAM,OAAO,GAAG,EAAS,CAAC;AAE1B,SAAgB,SAAS,CACvB,MAAkB,EAClB,aAAiB;IAEjB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACpD,MAAM,EAAE,OAAO,KAAuB,MAAM,EAAxB,aAAa,kBAAK,MAAM,EAAtC,WAA6B,CAAS,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAC;IAErD,MAAM,mBAAmB,GAAG,IAAI,6BAAmB,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,qCAAgB,EAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,2BAAiB,CAC5C,eAAe,EACf,mBAAmB,EACnB,gBAAgB,CACjB,CAAC;IACF,OAAO,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,CAAC;IACrD,OAAO,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;IAC/C,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,EAAE,CAC9B,IAAI,iCAAuB,CACzB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,CAChB,CAAC;IAEJ,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,KAAK,CAAC,gBAAgB,EAAE;YACxD,GAAG,CAID,MAAS,EAAE,CAAI;gBACf,OAAO,CAAC,GAAG,GAAQ,EAAO,EAAE,CAC1B,IAAA,oBAAa,EAAE,MAAM,CAAC,CAAC,CAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,IAAI,iCAAuB,CACzB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,CAChB,EACD;gBACE,GAAG,CAID,MAAS,EAAE,CAAI;oBACf,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;wBAChB,OAAO,GAAG,EAAE,CAAC,IAAA,oBAAa,EAAC,MAAM,CAAC,GAAG,EAAE,CAAQ,CAAC;oBAClD,CAAC;oBAED,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;wBACpC,OAAO,CAAC,GAAG,GAAQ,EAAE,EAAE;4BACrB,aAAa;4BACb,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;4BAClB,OAAO,KAAK,CAAC;wBACf,CAAC,CAAC;oBACJ,CAAC;oBACD,OAAO,MAAM,CAAC,CAAC,CAAQ,CAAC;gBAC1B,CAAC;aACF,CACF,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { RelationKeys } from '@klerick/json-api-nestjs-shared';
|
|
3
|
+
import { JsonApiUtilsService } from './json-api-utils.service';
|
|
4
|
+
import { AtomicOperations, HttpInnerClient, JsonApiSdkConfig, ReturnIfArray } from '../types';
|
|
5
|
+
export declare class AtomicOperationsService<T extends unknown[]> implements AtomicOperations<T> {
|
|
6
|
+
private jsonApiUtilsService;
|
|
7
|
+
private jsonApiSdkConfig;
|
|
8
|
+
private httpInnerClient;
|
|
9
|
+
private generateAtomicBody;
|
|
10
|
+
constructor(jsonApiUtilsService: JsonApiUtilsService, jsonApiSdkConfig: JsonApiSdkConfig, httpInnerClient: HttpInnerClient);
|
|
11
|
+
private addBody;
|
|
12
|
+
run(): Observable<T>;
|
|
13
|
+
deleteOne<Entity extends object>(entity: Entity): AtomicOperations<[...T]>;
|
|
14
|
+
deleteOne<Entity extends object>(entity: Entity, skipEmpty: true): AtomicOperations<[...T]>;
|
|
15
|
+
deleteOne<Entity extends object>(entity: Entity, skipEmpty: false): AtomicOperations<[...T, 'EMPTY']>;
|
|
16
|
+
patchOne<Entity extends object>(entity: Entity): AtomicOperations<[...T, Entity]>;
|
|
17
|
+
postOne<Entity extends object>(entity: Entity): AtomicOperations<[...T, Entity]>;
|
|
18
|
+
deleteRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<T>;
|
|
19
|
+
patchRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
|
|
20
|
+
postRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
|
|
21
|
+
private setToBody;
|
|
22
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AtomicOperationsService = void 0;
|
|
4
|
+
const json_api_nestjs_shared_1 = require("@klerick/json-api-nestjs-shared");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
class AtomicOperationsService {
|
|
8
|
+
constructor(jsonApiUtilsService, jsonApiSdkConfig, httpInnerClient) {
|
|
9
|
+
this.jsonApiUtilsService = jsonApiUtilsService;
|
|
10
|
+
this.jsonApiSdkConfig = jsonApiSdkConfig;
|
|
11
|
+
this.httpInnerClient = httpInnerClient;
|
|
12
|
+
this.generateAtomicBody = [];
|
|
13
|
+
}
|
|
14
|
+
addBody(item) {
|
|
15
|
+
this.generateAtomicBody.push(item);
|
|
16
|
+
}
|
|
17
|
+
run() {
|
|
18
|
+
if (!this.jsonApiSdkConfig.operationUrl) {
|
|
19
|
+
throw new Error('Should be set operation url');
|
|
20
|
+
}
|
|
21
|
+
const atomicBody = this.generateAtomicBody.map((i) => i.getBody());
|
|
22
|
+
const body = {
|
|
23
|
+
[json_api_nestjs_shared_1.KEY_MAIN_INPUT_SCHEMA]: atomicBody,
|
|
24
|
+
};
|
|
25
|
+
const bodyWithoutDelete = atomicBody.filter((i) => i.op !== 'remove');
|
|
26
|
+
const operationUrl = this.jsonApiUtilsService.getUrlForResource(this.jsonApiSdkConfig.operationUrl);
|
|
27
|
+
const indexDeleteIfNotSkipEmpty = atomicBody
|
|
28
|
+
.reduce((acum, item, index) => {
|
|
29
|
+
if (item.op === 'remove' &&
|
|
30
|
+
!this.generateAtomicBody[index].isSkipEmpty) {
|
|
31
|
+
acum.push(index);
|
|
32
|
+
}
|
|
33
|
+
return acum;
|
|
34
|
+
}, [])
|
|
35
|
+
.sort((a, b) => a - b);
|
|
36
|
+
return this.httpInnerClient.post(operationUrl, body).pipe((0, operators_1.map)((r) => r[json_api_nestjs_shared_1.KEY_MAIN_OUTPUT_SCHEMA]), (0, operators_1.map)((r) => r.map((item, index) => bodyWithoutDelete[index].ref.relationship
|
|
37
|
+
? this.jsonApiUtilsService.getResultForRelation(item)
|
|
38
|
+
: this.jsonApiUtilsService.convertResponseData(item))), (0, operators_1.map)((r) => indexDeleteIfNotSkipEmpty.reduce((acc, index, currentIndex) => {
|
|
39
|
+
acc.splice(index + currentIndex, 0, 'EMPTY');
|
|
40
|
+
return acc;
|
|
41
|
+
}, [...r])));
|
|
42
|
+
}
|
|
43
|
+
deleteOne(entity, skipEmpty) {
|
|
44
|
+
return this.setToBody('deleteOne', entity, skipEmpty === undefined ? true : skipEmpty);
|
|
45
|
+
}
|
|
46
|
+
patchOne(entity) {
|
|
47
|
+
return this.setToBody('patchOne', entity);
|
|
48
|
+
}
|
|
49
|
+
postOne(entity) {
|
|
50
|
+
return this.setToBody('postOne', entity);
|
|
51
|
+
}
|
|
52
|
+
deleteRelationships(entity, relationType) {
|
|
53
|
+
return this.setToBody('deleteRelationships', entity, relationType);
|
|
54
|
+
}
|
|
55
|
+
patchRelationships(entity, relationType) {
|
|
56
|
+
return this.setToBody('patchRelationships', entity, relationType);
|
|
57
|
+
}
|
|
58
|
+
postRelationships(entity, relationType) {
|
|
59
|
+
return this.setToBody('postRelationships', entity, relationType);
|
|
60
|
+
}
|
|
61
|
+
setToBody(operationType, entity, relationType) {
|
|
62
|
+
const atomicBody = new utils_1.GenerateAtomicBody(this.jsonApiUtilsService, this.jsonApiSdkConfig);
|
|
63
|
+
if (typeof relationType === 'boolean') {
|
|
64
|
+
if (operationType === 'deleteOne') {
|
|
65
|
+
atomicBody[operationType](entity, relationType);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
switch (operationType) {
|
|
70
|
+
case 'postRelationships':
|
|
71
|
+
case 'patchRelationships':
|
|
72
|
+
case 'deleteRelationships':
|
|
73
|
+
if (relationType)
|
|
74
|
+
atomicBody[operationType](entity, relationType);
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
atomicBody[operationType](entity, true);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
this.addBody(atomicBody);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.AtomicOperationsService = AtomicOperationsService;
|
|
86
|
+
//# sourceMappingURL=atomic-operations.service.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ResourceObject, RelationKeys, ResourceObjectRelationships } from '@klerick/json-api-nestjs-shared';
|
|
3
|
+
import { ParamObject } from '../utils';
|
|
4
|
+
import { HttpInnerClient, PatchData, PostData, RelationBodyData, AtomicBody, AtomicResponse } from '../types';
|
|
5
|
+
export declare class FetchInnerClient implements HttpInnerClient {
|
|
6
|
+
delete(url: string, body?: RelationBodyData | RelationBodyData[]): Observable<void>;
|
|
7
|
+
get<T extends object, R extends 'object' | 'array' = 'object', IdKey extends string = string>(url: string, params?: {
|
|
8
|
+
params: ParamObject;
|
|
9
|
+
}): Observable<ResourceObject<T, R, null, IdKey>>;
|
|
10
|
+
get<T extends object, IdKey extends string, Rel extends RelationKeys<T, IdKey>>(url: string, params?: {
|
|
11
|
+
params: ParamObject;
|
|
12
|
+
}): Observable<ResourceObjectRelationships<T, IdKey, Rel>>;
|
|
13
|
+
patch<T extends object>(url: string, body: PatchData<T>): Observable<ResourceObject<T, 'object'>>;
|
|
14
|
+
patch<T extends object, IdKey extends string, Rel extends RelationKeys<T, IdKey>>(url: string, body: RelationBodyData | RelationBodyData[]): Observable<ResourceObjectRelationships<T, IdKey, Rel>>;
|
|
15
|
+
post<T extends object>(url: string, body: PostData<T>): Observable<ResourceObject<T>>;
|
|
16
|
+
post<T extends object[]>(url: string, body: AtomicBody): Observable<AtomicResponse<T>>;
|
|
17
|
+
post<T extends object, IdKey extends string, Rel extends RelationKeys<T, IdKey>>(url: string, body: RelationBodyData | RelationBodyData[]): Observable<ResourceObjectRelationships<T, IdKey, Rel>>;
|
|
18
|
+
private request;
|
|
19
|
+
private getResultUrl;
|
|
20
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchInnerClient = void 0;
|
|
4
|
+
const fetch_1 = require("rxjs/fetch");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
class FetchInnerClient {
|
|
7
|
+
delete(url, body) {
|
|
8
|
+
let requestInit = {
|
|
9
|
+
method: 'delete',
|
|
10
|
+
};
|
|
11
|
+
if (body) {
|
|
12
|
+
requestInit = Object.assign(Object.assign({}, requestInit), { body: JSON.stringify(body) });
|
|
13
|
+
}
|
|
14
|
+
return this.request(url, requestInit);
|
|
15
|
+
}
|
|
16
|
+
get(url, params) {
|
|
17
|
+
let filterParams = {};
|
|
18
|
+
if (params) {
|
|
19
|
+
({ params: filterParams } = params);
|
|
20
|
+
}
|
|
21
|
+
return this.request(this.getResultUrl(url, filterParams), {
|
|
22
|
+
method: 'get',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
patch(url, body) {
|
|
26
|
+
return this.request(url, {
|
|
27
|
+
method: 'patch',
|
|
28
|
+
body: JSON.stringify(body),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
post(url, body) {
|
|
32
|
+
return this.request(url, {
|
|
33
|
+
method: 'post',
|
|
34
|
+
body: JSON.stringify(body),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
request(url, initData) {
|
|
38
|
+
return (0, fetch_1.fromFetch)(url, Object.assign(Object.assign({}, initData), { selector: (r) => r.json() }));
|
|
39
|
+
}
|
|
40
|
+
getResultUrl(url, params) {
|
|
41
|
+
const paramsStr = new utils_1.HttpParams({ fromObject: params }).toString();
|
|
42
|
+
if (paramsStr.length === 0)
|
|
43
|
+
return url;
|
|
44
|
+
return new URL('?' + new utils_1.HttpParams({ fromObject: params }).toString(), url).toString();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.FetchInnerClient = FetchInnerClient;
|
|
48
|
+
//# sourceMappingURL=fetch-inner-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-inner-client.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/fetch-inner-client.ts"],"names":[],"mappings":";;;AACA,sCAAuC;AAMvC,oCAAmD;AAWnD,MAAa,gBAAgB;IAC3B,MAAM,CACJ,GAAW,EACX,IAA4C;QAE5C,IAAI,WAAW,GAAgB;YAC7B,MAAM,EAAE,QAAQ;SACjB,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,mCACN,WAAW,KACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAC3B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAO,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAkBD,GAAG,CAMD,GAAW,EACX,MAAgC;QAKhC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAGjB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE;YACtC,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAcD,KAAK,CAKH,GAAW,EACX,IAA0D;QAI1D,OAAO,IAAI,CAAC,OAAO,CAEjB,GAAG,EAAE;YACL,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAkBD,IAAI,CAKF,GAAW,EACX,IAAsE;QAMtE,OAAO,IAAI,CAAC,OAAO,CAOjB,GAAG,EAAE;YACL,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAI,GAAW,EAAE,QAAqB;QACnD,OAAO,IAAA,iBAAS,EAAI,GAAG,kCAClB,QAAQ,KACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IACzB,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,MAAmB;QACnD,MAAM,SAAS,GAAG,IAAI,kBAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACvC,OAAO,IAAI,GAAG,CACZ,GAAG,GAAG,IAAI,kBAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EACvD,GAAG,CACJ,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;CACF;AA/ID,4CA+IC"}
|