@klerick/json-api-nestjs-sdk 10.0.0-beta.1 → 10.0.0-beta.11

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 (98) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.md +876 -0
  3. package/cjs/src/index.js +3 -1
  4. package/cjs/src/index.js.map +1 -1
  5. package/cjs/src/lib/json-api-angular.js +7 -3
  6. package/cjs/src/lib/json-api-angular.js.map +1 -1
  7. package/cjs/src/lib/json-api-js.js +24 -5
  8. package/cjs/src/lib/json-api-js.js.map +1 -1
  9. package/cjs/src/lib/service/atomic-operations.service.js.map +1 -1
  10. package/cjs/src/lib/service/fetch-inner-client.js +8 -2
  11. package/cjs/src/lib/service/fetch-inner-client.js.map +1 -1
  12. package/cjs/src/lib/service/json-api-sdk.service.js +49 -18
  13. package/cjs/src/lib/service/json-api-sdk.service.js.map +1 -1
  14. package/cjs/src/lib/service/json-api-utils.service.js +111 -49
  15. package/cjs/src/lib/service/json-api-utils.service.js.map +1 -1
  16. package/cjs/src/lib/types/entity-chain.js +3 -0
  17. package/cjs/src/lib/types/entity-chain.js.map +1 -0
  18. package/cjs/src/lib/types/index.js +1 -0
  19. package/cjs/src/lib/types/index.js.map +1 -1
  20. package/cjs/src/lib/utils/adapter-for-axios.js.map +1 -1
  21. package/cjs/src/lib/utils/generate-atomic-body.js +14 -2
  22. package/cjs/src/lib/utils/generate-atomic-body.js.map +1 -1
  23. package/cjs/src/lib/utils/http-params.js +1 -1
  24. package/cjs/src/lib/utils/http-params.js.map +1 -1
  25. package/cjs/src/lib/utils/utils.js +46 -2
  26. package/cjs/src/lib/utils/utils.js.map +1 -1
  27. package/cjs/src/ngModule.js.map +1 -1
  28. package/mjs/package.json +1 -75
  29. package/mjs/src/index.d.ts +2 -2
  30. package/mjs/src/index.js +1 -1
  31. package/mjs/src/index.js.map +1 -1
  32. package/mjs/src/lib/json-api-angular.d.ts +5 -7
  33. package/mjs/src/lib/json-api-angular.js +7 -3
  34. package/mjs/src/lib/json-api-angular.js.map +1 -1
  35. package/mjs/src/lib/json-api-js.d.ts +2 -2
  36. package/mjs/src/lib/json-api-js.js +23 -3
  37. package/mjs/src/lib/json-api-js.js.map +1 -1
  38. package/mjs/src/lib/service/atomic-operations.service.d.ts +2 -2
  39. package/mjs/src/lib/service/atomic-operations.service.js.map +1 -1
  40. package/mjs/src/lib/service/json-api-sdk.service.d.ts +8 -3
  41. package/mjs/src/lib/service/json-api-sdk.service.js +36 -12
  42. package/mjs/src/lib/service/json-api-sdk.service.js.map +1 -1
  43. package/mjs/src/lib/service/json-api-utils.service.d.ts +4 -3
  44. package/mjs/src/lib/service/json-api-utils.service.js +84 -33
  45. package/mjs/src/lib/service/json-api-utils.service.js.map +1 -1
  46. package/mjs/src/lib/types/atomic-operation.d.ts +4 -4
  47. package/mjs/src/lib/types/atomic-operation.js +0 -1
  48. package/mjs/src/lib/types/config.js +0 -1
  49. package/mjs/src/lib/types/entity-chain.d.ts +32 -0
  50. package/mjs/src/lib/types/entity-chain.js +1 -0
  51. package/mjs/src/lib/types/entity-chain.js.map +1 -0
  52. package/mjs/src/lib/types/http-inner-client.js +0 -1
  53. package/mjs/src/lib/types/http-request-params.js +0 -1
  54. package/mjs/src/lib/types/index.d.ts +1 -0
  55. package/mjs/src/lib/types/index.js +1 -0
  56. package/mjs/src/lib/types/index.js.map +1 -1
  57. package/mjs/src/lib/types/promise-json-api-sdk.d.ts +14 -3
  58. package/mjs/src/lib/types/promise-json-api-sdk.js +0 -1
  59. package/mjs/src/lib/types/query-params.d.ts +3 -3
  60. package/mjs/src/lib/types/utils.js +0 -1
  61. package/mjs/src/lib/utils/adapter-for-axios.d.ts +2 -2
  62. package/mjs/src/lib/utils/adapter-for-axios.js.map +1 -1
  63. package/mjs/src/lib/utils/generate-atomic-body.js +3 -0
  64. package/mjs/src/lib/utils/generate-atomic-body.js.map +1 -1
  65. package/mjs/src/lib/utils/utils.d.ts +19 -0
  66. package/mjs/src/lib/utils/utils.js +35 -0
  67. package/mjs/src/lib/utils/utils.js.map +1 -1
  68. package/mjs/src/ngModule.d.ts +1 -1
  69. package/mjs/src/ngModule.js.map +1 -1
  70. package/package.json +26 -27
  71. package/cjs/package.json +0 -73
  72. package/cjs/src/index.d.ts +0 -5
  73. package/cjs/src/lib/constants/index.d.ts +0 -1
  74. package/cjs/src/lib/json-api-angular.d.ts +0 -21
  75. package/cjs/src/lib/json-api-js.d.ts +0 -15
  76. package/cjs/src/lib/service/atomic-operations.service.d.ts +0 -22
  77. package/cjs/src/lib/service/fetch-inner-client.d.ts +0 -20
  78. package/cjs/src/lib/service/index.d.ts +0 -3
  79. package/cjs/src/lib/service/json-api-sdk.service.d.ts +0 -21
  80. package/cjs/src/lib/service/json-api-utils.service.d.ts +0 -28
  81. package/cjs/src/lib/token/index.d.ts +0 -4
  82. package/cjs/src/lib/types/atomic-operation.d.ts +0 -33
  83. package/cjs/src/lib/types/atomic-type.d.ts +0 -23
  84. package/cjs/src/lib/types/config.d.ts +0 -14
  85. package/cjs/src/lib/types/filter-operand.d.ts +0 -10
  86. package/cjs/src/lib/types/http-inner-client.d.ts +0 -19
  87. package/cjs/src/lib/types/http-request-params.d.ts +0 -20
  88. package/cjs/src/lib/types/index.d.ts +0 -9
  89. package/cjs/src/lib/types/promise-json-api-sdk.d.ts +0 -16
  90. package/cjs/src/lib/types/query-params.d.ts +0 -47
  91. package/cjs/src/lib/types/utils.d.ts +0 -6
  92. package/cjs/src/lib/utils/adapter-for-axios.d.ts +0 -3
  93. package/cjs/src/lib/utils/entity-array.d.ts +0 -9
  94. package/cjs/src/lib/utils/generate-atomic-body.d.ts +0 -22
  95. package/cjs/src/lib/utils/http-params.d.ts +0 -154
  96. package/cjs/src/lib/utils/index.d.ts +0 -5
  97. package/cjs/src/lib/utils/utils.d.ts +0 -4
  98. package/cjs/src/ngModule.d.ts +0 -4
@@ -1,4 +1,23 @@
1
1
  import { JsonApiSdkConfig, JsonSdkConfig } from '../types';
2
+ /**
3
+ * Marker for null relationship.
4
+ * Returns null for TypeScript but object with Symbol marker for runtime.
5
+ */
6
+ export declare function nullRef(): null;
7
+ /**
8
+ * Checks if value is a nullRef marker
9
+ */
10
+ export declare function isNullRef(val: unknown): boolean;
11
+ /**
12
+ * Marker for empty array relationship.
13
+ * Returns empty array for TypeScript but object with Symbol marker for runtime.
14
+ * Use this to explicitly clear all items from a to-many relationship.
15
+ */
16
+ export declare function emptyArrayRef<T = unknown>(): T[];
17
+ /**
18
+ * Checks if value is an emptyArrayRef marker
19
+ */
20
+ export declare function isEmptyArrayRef(val: unknown): boolean;
2
21
  export declare function isRelation(val: any): boolean;
3
22
  export declare function getTypeForReq(str: string): string;
4
23
  export declare function resultConfig(partialConfig: JsonSdkConfig): JsonApiSdkConfig;
@@ -1,6 +1,41 @@
1
1
  import { kebabCase } from 'change-case-commonjs';
2
2
  import { ID_KEY } from '../constants';
3
+ const NULL_REF = Symbol('null-ref');
4
+ const EMPTY_ARRAY_REF = Symbol('empty-array-ref');
5
+ /**
6
+ * Marker for null relationship.
7
+ * Returns null for TypeScript but object with Symbol marker for runtime.
8
+ */
9
+ export function nullRef() {
10
+ return { [NULL_REF]: true };
11
+ }
12
+ /**
13
+ * Checks if value is a nullRef marker
14
+ */
15
+ export function isNullRef(val) {
16
+ return val !== null && typeof val === 'object' && NULL_REF in val;
17
+ }
18
+ /**
19
+ * Marker for empty array relationship.
20
+ * Returns empty array for TypeScript but object with Symbol marker for runtime.
21
+ * Use this to explicitly clear all items from a to-many relationship.
22
+ */
23
+ export function emptyArrayRef() {
24
+ return { [EMPTY_ARRAY_REF]: true };
25
+ }
26
+ /**
27
+ * Checks if value is an emptyArrayRef marker
28
+ */
29
+ export function isEmptyArrayRef(val) {
30
+ return val !== null && typeof val === 'object' && EMPTY_ARRAY_REF in val;
31
+ }
3
32
  export function isRelation(val) {
33
+ // nullRef is a special case - it's a relationship that should be null
34
+ if (isNullRef(val))
35
+ return true;
36
+ // emptyArrayRef is a special case - it's a to-many relationship that should be empty
37
+ if (isEmptyArrayRef(val))
38
+ return true;
4
39
  const result = !(val === null ||
5
40
  !val ||
6
41
  ['String', 'Boolean', 'Number', 'Date'].includes(val.constructor.name));
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,MAAM,MAAM,GAAG,CAAC,CACd,GAAG,KAAK,IAAI;QACZ,CAAC,GAAG;QACJ,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CACvE,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,MAAM,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,aAA4B;IACvD,OAAO;QACL,GAAG,aAAa;QAChB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QACzD,UAAU,EACR,aAAa,CAAC,UAAU,KAAK,SAAS;YACpC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU;QAChC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAqB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAoB,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,eAAe,IAAI,GAAG,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,sEAAsE;IACtE,IAAI,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,qFAAqF;IACrF,IAAI,eAAe,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,CAAC,CACd,GAAG,KAAK,IAAI;QACZ,CAAC,GAAG;QACJ,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CACvE,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,MAAM,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,aAA4B;IACvD,OAAO;QACL,GAAG,aAAa;QAChB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QACzD,UAAU,EACR,aAAa,CAAC,UAAU,KAAK,SAAS;YACpC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU;QAChC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KACrE,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { FilterOperand, ResourceObject } from '@klerick/json-api-nestjs-shared';
2
- export { AtomicFactory, provideJsonApi, JSON_API_SDK_CONFIG, getProviders, } from './lib/json-api-angular';
2
+ export { AtomicFactory, provideJsonApi, JSON_API_SDK_CONFIG, getProviders, JsonSdkConfigFactory, JsonSdkConfigOrFactory, } from './lib/json-api-angular';
3
3
  export { JsonApiUtilsService, JsonApiSdkService } from './lib/service';
4
4
  export { AtomicOperations, JsonSdkConfig } from './lib/types';
@@ -1 +1 @@
1
- {"version":3,"file":"ngModule.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-sdk/src/ngModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"ngModule.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-sdk/src/ngModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,YAAY,GAGb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,21 +1,6 @@
1
1
  {
2
2
  "name": "@klerick/json-api-nestjs-sdk",
3
- "version": "10.0.0-beta.1",
4
- "license": "MIT",
5
- "private": false,
6
- "contributors": [
7
- {
8
- "email": "klerick666@gmain.com",
9
- "name": "Aleksandr Kharkovey"
10
- }
11
- ],
12
- "repository": {
13
- "type": "git",
14
- "url": "https://github.com/klerick/nestjs-json-api.git"
15
- },
16
- "engines": {
17
- "node": ">= 20.0.0"
18
- },
3
+ "version": "10.0.0-beta.11",
19
4
  "description": "Helper for client JsonAPi Plugin for NestJs",
20
5
  "keywords": [
21
6
  "nestjs",
@@ -27,12 +12,13 @@
27
12
  "CRUD"
28
13
  ],
29
14
  "dependencies": {
30
- "@angular/common": "^19.2.1",
31
- "@angular/core": "^19.2.1",
15
+ "@klerick/json-api-nestjs-shared": "^1.0.0-beta.7"
16
+ },
17
+ "peerDependencies": {
32
18
  "axios": "^1.6.0",
33
- "change-case-commonjs": "^5.4.4",
34
- "reflect-metadata": "^0.1.12 || ^0.2.0",
35
- "rxjs": "^7.1.0",
19
+ "@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
20
+ "@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
21
+ "rxjs": "^7.0.0",
36
22
  "tslib": ">2.3.0"
37
23
  },
38
24
  "exports": {
@@ -62,12 +48,25 @@
62
48
  ]
63
49
  }
64
50
  },
65
- "publishConfig": {
66
- "access": "public"
51
+ "type": "commonjs",
52
+ "license": "MIT",
53
+ "contributors": [
54
+ {
55
+ "email": "klerick666@gmain.com",
56
+ "name": "Aleksandr Kharkovey"
57
+ }
58
+ ],
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/klerick/nestjs-json-api.git"
67
62
  },
68
- "peerDependencies": {
69
- "@klerick/json-api-nestjs-shared": "1.0.0-beta.1",
70
- "ts-toolbelt": "9.6.0"
63
+ "engines": {
64
+ "node": ">= 20.0.0"
71
65
  },
72
- "type": "commonjs"
66
+ "files": [
67
+ "**/*"
68
+ ],
69
+ "publishConfig": {
70
+ "access": "public"
71
+ }
73
72
  }
package/cjs/package.json DELETED
@@ -1,73 +0,0 @@
1
- {
2
- "name": "@klerick/json-api-nestjs-sdk",
3
- "version": "10.0.0-beta.1",
4
- "license": "MIT",
5
- "private": false,
6
- "contributors": [
7
- {
8
- "email": "klerick666@gmain.com",
9
- "name": "Aleksandr Kharkovey"
10
- }
11
- ],
12
- "repository": {
13
- "type": "git",
14
- "url": "https://github.com/klerick/nestjs-json-api.git"
15
- },
16
- "engines": {
17
- "node": ">= 20.0.0"
18
- },
19
- "description": "Helper for client JsonAPi Plugin for NestJs",
20
- "keywords": [
21
- "nestjs",
22
- "nest",
23
- "jsonapi",
24
- "json-api",
25
- "typeorm",
26
- "microorm",
27
- "CRUD"
28
- ],
29
- "dependencies": {
30
- "@angular/common": "^19.2.1",
31
- "@angular/core": "^19.2.1",
32
- "axios": "^1.6.0",
33
- "change-case-commonjs": "^5.4.4",
34
- "reflect-metadata": "^0.1.12 || ^0.2.0",
35
- "rxjs": "^7.1.0",
36
- "tslib": ">2.3.0"
37
- },
38
- "exports": {
39
- "./package.json": "./package.json",
40
- ".": {
41
- "types": "./mjs/src/index.d.ts",
42
- "node": "./cjs/src/index.js",
43
- "require": "./cjs/src/index.js",
44
- "module": "./mjs/src/index.js",
45
- "default": "./mjs/src/index.js"
46
- },
47
- "./ngModule": {
48
- "types": "./mjs/src/ngModule.d.ts",
49
- "node": "./cjs/src/ngModule.js",
50
- "require": "./cjs/src/ngModule.js",
51
- "module": "./mjs/src/ngModule.js",
52
- "default": "./mjs/src/ngModule.js"
53
- }
54
- },
55
- "main": "./cjs/src/index.js",
56
- "module": "./mjs/src/index.js",
57
- "types": "./mjs/src/index.d.ts",
58
- "typesVersions": {
59
- "*": {
60
- "ngModule": [
61
- "./mjs/src/ngModule.d.ts"
62
- ]
63
- }
64
- },
65
- "publishConfig": {
66
- "access": "public"
67
- },
68
- "peerDependencies": {
69
- "@klerick/json-api-nestjs-shared": "1.0.0-beta.1",
70
- "ts-toolbelt": "9.6.0"
71
- },
72
- "type": "commonjs"
73
- }
@@ -1,5 +0,0 @@
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';
@@ -1 +0,0 @@
1
- export declare const ID_KEY = "id";
@@ -1,21 +0,0 @@
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';
@@ -1,15 +0,0 @@
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 {};
@@ -1,22 +0,0 @@
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
- }
@@ -1,20 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export * from './json-api-utils.service';
2
- export * from './atomic-operations.service';
3
- export * from './json-api-sdk.service';
@@ -1,21 +0,0 @@
1
- import { RelationKeys, EntityClass } from '@klerick/json-api-nestjs-shared';
2
- import { Observable } from 'rxjs';
3
- import { HttpInnerClient, JsonApiSdkConfig, QueryParams, QueryParamsForOneItem, ReturnIfArray } from '../types';
4
- import { EntityArray } from '../utils';
5
- import { JsonApiUtilsService } from './json-api-utils.service';
6
- export declare class JsonApiSdkService {
7
- private http;
8
- private jsonApiUtilsService;
9
- private jsonApiSdkConfig;
10
- constructor(http: HttpInnerClient, jsonApiUtilsService: JsonApiUtilsService, jsonApiSdkConfig: JsonApiSdkConfig);
11
- getList<Entity extends object, IdKey extends string = 'id'>(entity: EntityClass<Entity>, params?: QueryParams<Entity>): Observable<EntityArray<Entity>>;
12
- getAll<Entity extends object>(entity: EntityClass<Entity>, params?: QueryParams<Entity>, push?: boolean): Observable<EntityArray<Entity>>;
13
- getOne<Entity extends object>(entity: EntityClass<Entity>, id: string | number, params?: QueryParamsForOneItem<Entity>): Observable<Entity>;
14
- postOne<Entity extends object>(entity: Entity): Observable<Entity>;
15
- patchOne<Entity extends object>(entity: Entity): Observable<Entity>;
16
- deleteOne<Entity extends object>(entity: Entity): Observable<void>;
17
- getRelationships<Entity extends object, IdKey extends string = 'id', Rel extends RelationKeys<Entity, IdKey> = RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Observable<ReturnIfArray<Entity[Rel], string>>;
18
- patchRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Observable<ReturnIfArray<Entity[Rel], string>>;
19
- postRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Observable<ReturnIfArray<Entity[Rel], string>>;
20
- deleteRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Observable<void>;
21
- }
@@ -1,28 +0,0 @@
1
- import { RelationKeys, MainData, ResourceObject, ResourceObjectRelationships } from '@klerick/json-api-nestjs-shared';
2
- import { JsonApiSdkConfig, QueryParams, Relationships, ReturnIfArray } from '../types';
3
- import { HttpParams } from '../utils';
4
- type RelationData = MainData;
5
- export declare class JsonApiUtilsService {
6
- private jsonApiSdkConfig;
7
- constructor(jsonApiSdkConfig: JsonApiSdkConfig);
8
- getUrlForResource(resource: string): string;
9
- getQueryStringParams<Entity>(params?: QueryParams<Entity>): HttpParams;
10
- private getIncludeParam;
11
- private getSortParam;
12
- private getPageParam;
13
- private getFieldParam;
14
- private getFilterParam;
15
- convertResponseData<E extends object>(body: ResourceObject<E>, includeEntity?: QueryParams<E>['include']): E;
16
- convertResponseData<E extends object, IdKey extends string>(body: ResourceObject<E, 'array', null, IdKey>, includeEntity?: QueryParams<E>['include']): E[];
17
- convertResponseData<E extends object, IdKey extends string>(body: ResourceObject<E, 'object', null, IdKey>, includeEntity?: QueryParams<E>['include']): E;
18
- convertResponseData<E extends object, IdKey extends string>(body: ResourceObject<E, 'array', null, IdKey>, includeEntity?: QueryParams<E>['include']): E[];
19
- createEntityInstance<E>(name: string): E;
20
- private findIncludeEntity;
21
- generateBody<E extends object>(entity: E): {
22
- attributes: {} | undefined;
23
- relationships: Relationships<E>;
24
- };
25
- getResultForRelation<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(body: ResourceObjectRelationships<Entity, IdKey, Rel>): ReturnIfArray<Entity[Rel], string>;
26
- generateRelationshipsBody<RelationshipEntity extends object>(relationshipEntity: RelationshipEntity | RelationshipEntity[]): RelationData | RelationData[];
27
- }
28
- export {};
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { JsonApiSdkConfig, AtomicFactory as TypeAtomicFactory } from '../types';
3
- export declare const JSON_API_SDK_CONFIG: InjectionToken<JsonApiSdkConfig>;
4
- export declare const AtomicFactory: InjectionToken<TypeAtomicFactory>;
@@ -1,33 +0,0 @@
1
- import { RelationKeys } from '@klerick/json-api-nestjs-shared';
2
- import { Observable } from 'rxjs';
3
- import { ReturnIfArray } from './utils';
4
- export interface AtomicRunGeneral<T extends unknown[]> {
5
- run(): Observable<T>;
6
- }
7
- export interface AtomicRunPromise<T extends unknown[]> {
8
- run(): Promise<T>;
9
- }
10
- export interface AtomicMainOperations<T extends unknown[]> {
11
- postOne<Entity extends object>(entity: Entity): AtomicOperations<[...T, Entity]>;
12
- patchOne<Entity extends object>(entity: Entity): AtomicOperations<[...T, Entity]>;
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
- patchRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
17
- postRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
18
- deleteRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperations<[...T]>;
19
- }
20
- export interface AtomicMainOperationsPromise<T extends unknown[]> {
21
- postOne<Entity extends object>(entity: Entity): AtomicOperationsPromise<[...T, Entity]>;
22
- patchOne<Entity extends object>(entity: Entity): AtomicOperationsPromise<[...T, Entity]>;
23
- deleteOne<Entity extends object>(entity: Entity): AtomicOperationsPromise<[...T]>;
24
- patchRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperationsPromise<[...T, ReturnIfArray<Entity[Rel], string>]>;
25
- postRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperationsPromise<[...T, ReturnIfArray<Entity[Rel], string>]>;
26
- deleteRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel): AtomicOperationsPromise<[...T]>;
27
- }
28
- export interface AtomicOperations<T extends unknown[]> extends AtomicMainOperations<T>, AtomicRunGeneral<T> {
29
- }
30
- export interface AtomicOperationsPromise<T extends unknown[]> extends AtomicMainOperationsPromise<T>, AtomicRunPromise<T> {
31
- }
32
- export type AtomicFactory = () => AtomicOperations<[]>;
33
- export type AtomicFactoryPromise = () => AtomicOperationsPromise<[]>;
@@ -1,23 +0,0 @@
1
- import { KEY_MAIN_INPUT_SCHEMA, KEY_MAIN_OUTPUT_SCHEMA, Operation, ResourceObject } from '@klerick/json-api-nestjs-shared';
2
- import { AtomicMainOperations } from './atomic-operation';
3
- export type BodyType = {
4
- op: Operation;
5
- ref: {
6
- type: string;
7
- id?: string;
8
- relationship?: string;
9
- tmpId?: string;
10
- };
11
- data?: any;
12
- };
13
- export type AtomicBody = {
14
- [KEY_MAIN_INPUT_SCHEMA]: BodyType[];
15
- };
16
- export type AtomicResponse<R extends unknown[]> = {
17
- [KEY_MAIN_OUTPUT_SCHEMA]: {
18
- [K in keyof R]: R[K] extends object ? ResourceObject<R[K]> : never;
19
- };
20
- };
21
- export type AtomicVoidOperation = {
22
- [K in keyof AtomicMainOperations<[]>]: (...arg: any) => void;
23
- };
@@ -1,14 +0,0 @@
1
- import { PartialByKeys } from './utils';
2
- import { HttpInnerClient } from './http-inner-client';
3
- export type JsonApiSdkConfig = {
4
- apiHost: string;
5
- apiPrefix?: string;
6
- idKey: string;
7
- idIsNumber?: boolean;
8
- operationUrl?: string;
9
- dateFields: string[];
10
- };
11
- export type JsonSdkConfig = PartialByKeys<JsonApiSdkConfig, 'idKey' | 'apiPrefix' | 'idIsNumber' | 'dateFields' | 'operationUrl'>;
12
- export type JsonConfig = JsonSdkConfig & {
13
- adapter?: HttpInnerClient;
14
- };
@@ -1,10 +0,0 @@
1
- import { FilterOperand } from '@klerick/json-api-nestjs-shared';
2
- export type FilterOperandForString = Exclude<FilterOperand, FilterOperand.in | FilterOperand.nin | FilterOperand.some>;
3
- export type Operands = {
4
- [P in FilterOperand]?: P extends FilterOperandForString ? string : string[];
5
- };
6
- export type OperandsRelation = {
7
- [FilterOperand.eq]: null;
8
- } | {
9
- [FilterOperand.ne]: null;
10
- };
@@ -1,19 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { RelationKeys, ResourceObject, ResourceObjectRelationships } from '@klerick/json-api-nestjs-shared';
3
- import { ParamObject } from '../utils';
4
- import { PostData, PatchData, RelationBodyData } from './http-request-params';
5
- import { AtomicBody, AtomicResponse } from './atomic-type';
6
- export interface HttpInnerClient {
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
- post<T extends object>(url: string, body: PostData<T>): Observable<ResourceObject<T>>;
14
- post<T extends unknown[]>(url: string, body: AtomicBody): Observable<AtomicResponse<T>>;
15
- post<T extends object, IdKey extends string, Rel extends RelationKeys<T, IdKey>>(url: string, body: RelationBodyData | RelationBodyData[]): Observable<ResourceObjectRelationships<T, IdKey, Rel>>;
16
- patch<T extends object>(url: string, body: PatchData<T>): Observable<ResourceObject<T>>;
17
- patch<T extends object, IdKey extends string, Rel extends RelationKeys<T, IdKey>>(url: string, body: RelationBodyData | RelationBodyData[]): Observable<ResourceObjectRelationships<T, IdKey, Rel>>;
18
- delete(url: string, body?: RelationBodyData | RelationBodyData[]): Observable<void>;
19
- }
@@ -1,20 +0,0 @@
1
- import { MainData, BaseAttribute, RelationKeys, BaseMainData } from '@klerick/json-api-nestjs-shared';
2
- export type Relationships<Entity extends object, IdKey extends string = 'id'> = {
3
- [P in RelationKeys<Entity, IdKey>]?: BaseMainData<Entity, IdKey, P>;
4
- };
5
- export type BaseRelationships<Entity extends object, IdKey extends string = 'id'> = {
6
- relationships?: Relationships<Entity, IdKey>;
7
- };
8
- type PostMainData<T = string> = Omit<MainData<T>, 'id'> & {
9
- id?: string;
10
- };
11
- export type PostData<T extends object, IdKey extends string = 'id'> = {
12
- data: PostMainData & BaseAttribute<T, IdKey> & BaseRelationships<T, IdKey>;
13
- };
14
- export type PatchData<T extends object, IdKey extends string = 'id'> = {
15
- data: MainData & BaseAttribute<T, IdKey> & BaseRelationships<T, IdKey>;
16
- };
17
- export type RelationBodyData = {
18
- data: MainData | MainData[];
19
- };
20
- export {};
@@ -1,9 +0,0 @@
1
- export * from './http-inner-client';
2
- export * from './http-request-params';
3
- export * from './atomic-type';
4
- export * from './atomic-operation';
5
- export * from './utils';
6
- export * from './config';
7
- export * from './query-params';
8
- export * from './promise-json-api-sdk';
9
- export * from './filter-operand';
@@ -1,16 +0,0 @@
1
- import { EntityClass, RelationKeys } from '@klerick/json-api-nestjs-shared';
2
- import { QueryParams, QueryParamsForOneItem } from './query-params';
3
- import { EntityArray } from '../utils';
4
- import { ReturnIfArray } from './utils';
5
- export interface PromiseJsonApiSdkService {
6
- getList<Entity extends object>(entity: EntityClass<Entity>, params?: QueryParams<Entity>): Promise<EntityArray<Entity>>;
7
- getAll<Entity extends object>(entity: EntityClass<Entity>, params?: QueryParams<Entity>): Promise<EntityArray<Entity>>;
8
- getOne<Entity extends object>(entity: EntityClass<Entity>, id: string | number, params?: QueryParamsForOneItem<Entity>): Promise<Entity>;
9
- postOne<Entity extends object>(entity: Entity): Promise<Entity>;
10
- patchOne<Entity extends object>(entity: Entity): Promise<Entity>;
11
- deleteOne<Entity extends object>(entity: Entity): Promise<void>;
12
- getRelationships<Entity extends object, IdKey extends string = 'id', Rel extends RelationKeys<Entity, IdKey> = RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Promise<ReturnIfArray<Entity[Rel], string>>;
13
- patchRelationships<Entity extends object, IdKey extends string = 'id', Rel extends RelationKeys<Entity, IdKey> = RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Promise<ReturnIfArray<Entity[Rel], string>>;
14
- postRelationships<Entity extends object, IdKey extends string = 'id', Rel extends RelationKeys<Entity, IdKey> = RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Promise<ReturnIfArray<Entity[Rel], string>>;
15
- deleteRelationships<Entity extends object, IdKey extends string = 'id', Rel extends RelationKeys<Entity, IdKey> = RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel): Promise<void>;
16
- }
@@ -1,47 +0,0 @@
1
- import { QueryField, RelationKeys, PropertyKeys, TypeOfArray } from '@klerick/json-api-nestjs-shared';
2
- import { Operands, OperandsRelation } from './filter-operand';
3
- export type SortType = 'ASC' | 'DESC';
4
- export type Includes<T> = RelationKeys<T>[];
5
- type TargetField<E> = {
6
- target?: PropertyKeys<E>[];
7
- };
8
- type RelationField<E> = {
9
- [K in RelationKeys<E>]?: PropertyKeys<TypeOfArray<E[K]>>[];
10
- };
11
- type SortForEntity<E> = {
12
- [K in PropertyKeys<E>]?: SortType;
13
- };
14
- type TargetSort<E> = {
15
- target?: SortForEntity<E>;
16
- };
17
- type RelationSort<E> = {
18
- [K in RelationKeys<E>]?: SortForEntity<TypeOfArray<E[K]>>;
19
- };
20
- type Sort<E> = TargetSort<E> & RelationSort<E>;
21
- type Fields<E> = TargetField<E> & RelationField<E>;
22
- export type Pagination = {
23
- number: number;
24
- size: number;
25
- };
26
- type TargetRelationFilter<E> = {
27
- [P in RelationKeys<E>]?: OperandsRelation;
28
- };
29
- type EntityFilter<E> = {
30
- [K in PropertyKeys<E>]?: Operands;
31
- };
32
- type TargetFilter<E> = {
33
- target: EntityFilter<E> & TargetRelationFilter<E>;
34
- };
35
- type RelationFilter<E> = {
36
- [K in RelationKeys<E>]?: EntityFilter<TypeOfArray<E[K]>>;
37
- };
38
- export type Filter<T> = TargetFilter<T> & RelationFilter<T>;
39
- export type QueryParams<E> = {
40
- [QueryField.filter]?: Filter<E>;
41
- [QueryField.include]?: Includes<E>;
42
- [QueryField.sort]?: Sort<E>;
43
- [QueryField.page]?: Pagination;
44
- [QueryField.fields]?: Fields<E>;
45
- };
46
- export type QueryParamsForOneItem<T> = Pick<QueryParams<T>, QueryField.include | QueryField.filter | QueryField.fields>;
47
- export {};
@@ -1,6 +0,0 @@
1
- export type ReturnIfArray<I, O> = I extends unknown[] ? O[] : O;
2
- export type PartialByKeys<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>;
3
- export type FunctionProperty<T, K extends keyof T> = T[K] extends (...args: any) => any ? T[K] : never;
4
- export type FunctionPropertyNames<T> = {
5
- [K in keyof T]: T[K] extends (...args: any) => any ? K : never;
6
- }[keyof T];
@@ -1,3 +0,0 @@
1
- import { Axios } from 'axios';
2
- import { HttpInnerClient } from '../types';
3
- export declare function adapterForAxios(axios: Axios): HttpInnerClient;
@@ -1,9 +0,0 @@
1
- import { PageProps } from '@klerick/json-api-nestjs-shared';
2
- export declare class EntityArray<T> extends Array<T> {
3
- private pageProps;
4
- constructor(items: T[], pageProps: PageProps);
5
- static get [Symbol.species](): ArrayConstructor;
6
- get totalItems(): number;
7
- get pageSize(): number;
8
- get pageNumber(): number;
9
- }