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

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 (83) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +498 -45
  3. package/cjs/src/index.js +9 -7
  4. package/cjs/src/index.js.map +1 -1
  5. package/cjs/src/lib/json-api-angular.js +22 -18
  6. package/cjs/src/lib/json-api-angular.js.map +1 -1
  7. package/cjs/src/lib/json-api-js.js +31 -11
  8. package/cjs/src/lib/json-api-js.js.map +1 -1
  9. package/cjs/src/lib/service/atomic-operations.service.js +22 -16
  10. package/cjs/src/lib/service/atomic-operations.service.js.map +1 -1
  11. package/cjs/src/lib/service/fetch-inner-client.js +3 -3
  12. package/cjs/src/lib/service/fetch-inner-client.js.map +1 -1
  13. package/cjs/src/lib/service/index.js +3 -3
  14. package/cjs/src/lib/service/index.js.map +1 -1
  15. package/cjs/src/lib/service/json-api-sdk.service.js +55 -22
  16. package/cjs/src/lib/service/json-api-sdk.service.js.map +1 -1
  17. package/cjs/src/lib/service/json-api-utils.service.js +138 -59
  18. package/cjs/src/lib/service/json-api-utils.service.js.map +1 -1
  19. package/cjs/src/lib/types/entity-chain.js +3 -0
  20. package/cjs/src/lib/types/entity-chain.js.map +1 -0
  21. package/cjs/src/lib/types/index.js +10 -9
  22. package/cjs/src/lib/types/index.js.map +1 -1
  23. package/cjs/src/lib/utils/generate-atomic-body.js +21 -20
  24. package/cjs/src/lib/utils/generate-atomic-body.js.map +1 -1
  25. package/cjs/src/lib/utils/index.js +5 -5
  26. package/cjs/src/lib/utils/index.js.map +1 -1
  27. package/cjs/src/lib/utils/utils.js +42 -3
  28. package/cjs/src/lib/utils/utils.js.map +1 -1
  29. package/cjs/src/ngModule.js +8 -8
  30. package/cjs/src/ngModule.js.map +1 -1
  31. package/mjs/package.json +1 -0
  32. package/mjs/src/index.d.ts +4 -4
  33. package/mjs/src/index.js +3 -3
  34. package/mjs/src/index.js.map +1 -1
  35. package/mjs/src/lib/json-api-angular.d.ts +10 -12
  36. package/mjs/src/lib/json-api-angular.js +11 -7
  37. package/mjs/src/lib/json-api-angular.js.map +1 -1
  38. package/mjs/src/lib/json-api-js.d.ts +4 -4
  39. package/mjs/src/lib/json-api-js.js +26 -6
  40. package/mjs/src/lib/json-api-js.js.map +1 -1
  41. package/mjs/src/lib/service/atomic-operations.service.d.ts +7 -7
  42. package/mjs/src/lib/service/atomic-operations.service.js +21 -15
  43. package/mjs/src/lib/service/atomic-operations.service.js.map +1 -1
  44. package/mjs/src/lib/service/fetch-inner-client.d.ts +2 -2
  45. package/mjs/src/lib/service/fetch-inner-client.js +1 -1
  46. package/mjs/src/lib/service/fetch-inner-client.js.map +1 -1
  47. package/mjs/src/lib/service/index.d.ts +3 -3
  48. package/mjs/src/lib/service/index.js +3 -3
  49. package/mjs/src/lib/service/index.js.map +1 -1
  50. package/mjs/src/lib/service/json-api-sdk.service.d.ts +13 -8
  51. package/mjs/src/lib/service/json-api-sdk.service.js +51 -18
  52. package/mjs/src/lib/service/json-api-sdk.service.js.map +1 -1
  53. package/mjs/src/lib/service/json-api-utils.service.d.ts +6 -5
  54. package/mjs/src/lib/service/json-api-utils.service.js +132 -53
  55. package/mjs/src/lib/service/json-api-utils.service.js.map +1 -1
  56. package/mjs/src/lib/token/index.d.ts +1 -1
  57. package/mjs/src/lib/types/atomic-operation.d.ts +11 -11
  58. package/mjs/src/lib/types/atomic-type.d.ts +2 -2
  59. package/mjs/src/lib/types/config.d.ts +2 -2
  60. package/mjs/src/lib/types/entity-chain.d.ts +32 -0
  61. package/mjs/src/lib/types/entity-chain.js +1 -0
  62. package/mjs/src/lib/types/entity-chain.js.map +1 -0
  63. package/mjs/src/lib/types/http-inner-client.d.ts +3 -3
  64. package/mjs/src/lib/types/http-request-params.d.ts +3 -0
  65. package/mjs/src/lib/types/index.d.ts +10 -9
  66. package/mjs/src/lib/types/index.js +10 -9
  67. package/mjs/src/lib/types/index.js.map +1 -1
  68. package/mjs/src/lib/types/promise-json-api-sdk.d.ts +20 -9
  69. package/mjs/src/lib/types/query-params.d.ts +1 -1
  70. package/mjs/src/lib/utils/adapter-for-axios.d.ts +1 -1
  71. package/mjs/src/lib/utils/generate-atomic-body.d.ts +7 -7
  72. package/mjs/src/lib/utils/generate-atomic-body.js +19 -18
  73. package/mjs/src/lib/utils/generate-atomic-body.js.map +1 -1
  74. package/mjs/src/lib/utils/index.d.ts +5 -5
  75. package/mjs/src/lib/utils/index.js +5 -5
  76. package/mjs/src/lib/utils/index.js.map +1 -1
  77. package/mjs/src/lib/utils/utils.d.ts +20 -1
  78. package/mjs/src/lib/utils/utils.js +36 -1
  79. package/mjs/src/lib/utils/utils.js.map +1 -1
  80. package/mjs/src/ngModule.d.ts +3 -3
  81. package/mjs/src/ngModule.js +2 -2
  82. package/mjs/src/ngModule.js.map +1 -1
  83. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -1,5 +1,5 @@
1
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, JsonConfig, Filter, Includes, Sort, Pagination, Fields } from './lib/types';
2
+ export { JsonApiUtilsService, JsonApiSdkService } from './lib/service/index.js';
3
+ export * from './lib/json-api-js.js';
4
+ export { adapterForAxios, nullRef, emptyArrayRef } from './lib/utils/index.js';
5
+ export { AtomicOperations, Operands, QueryParams, JsonConfig, Filter, Includes, Sort, Pagination, Fields, EntityChain, PromiseEntityChain } from './lib/types/index.js';
package/mjs/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { FilterOperand, 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';
2
+ export { JsonApiUtilsService, JsonApiSdkService } from './lib/service/index.js';
3
+ export * from './lib/json-api-js.js';
4
+ export { adapterForAxios, nullRef, emptyArrayRef } from './lib/utils/index.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-sdk/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,GACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/json-api/json-api-nestjs-sdk/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,GACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChF,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,21 +1,19 @@
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;
1
+ import { JsonSdkConfig } from './types/index.js';
2
+ import { JsonApiUtilsService, JsonApiSdkService, AtomicOperationsService } from './service/index.js';
3
+ export type JsonSdkConfigFactory = () => JsonSdkConfig;
4
+ export type JsonSdkConfigOrFactory = JsonSdkConfig | JsonSdkConfigFactory;
5
+ export declare const getProviders: (configOrFactory: JsonSdkConfigOrFactory) => ({
6
+ provide: import("@angular/core").InjectionToken<import("./types/config.js").JsonApiSdkConfig>;
7
+ useFactory: () => import("./types/config.js").JsonApiSdkConfig;
7
8
  } | {
8
9
  provide: typeof JsonApiUtilsService;
9
10
  useFactory: () => JsonApiUtilsService;
10
- useValue?: undefined;
11
11
  } | {
12
12
  provide: typeof JsonApiSdkService;
13
13
  useFactory: () => JsonApiSdkService;
14
- useValue?: undefined;
15
14
  } | {
16
- provide: import("@angular/core").InjectionToken<import("./types").AtomicFactory>;
15
+ provide: import("@angular/core").InjectionToken<import("./types/atomic-operation.js").AtomicFactory>;
17
16
  useFactory: () => () => AtomicOperationsService<unknown[]>;
18
- useValue?: undefined;
19
17
  })[];
20
- export declare const provideJsonApi: (config: JsonSdkConfig) => import("@angular/core").EnvironmentProviders;
21
- export { AtomicFactory, JSON_API_SDK_CONFIG } from './token';
18
+ export declare const provideJsonApi: (configOrFactory: JsonSdkConfigOrFactory) => import("@angular/core").EnvironmentProviders;
19
+ export { AtomicFactory, JSON_API_SDK_CONFIG } from './token/index.js';
@@ -1,12 +1,16 @@
1
1
  import { inject, makeEnvironmentProviders } from '@angular/core';
2
2
  import { HttpClient } from '@angular/common/http';
3
- import { AtomicFactory, JSON_API_SDK_CONFIG } from './token';
4
- import { resultConfig } from './utils';
5
- import { JsonApiUtilsService, JsonApiSdkService, AtomicOperationsService, } from './service';
6
- export const getProviders = (config) => [
3
+ import { AtomicFactory, JSON_API_SDK_CONFIG } from './token/index.js';
4
+ import { resultConfig } from './utils/index.js';
5
+ import { JsonApiUtilsService, JsonApiSdkService, AtomicOperationsService, } from './service/index.js';
6
+ const isFactory = (config) => typeof config === 'function';
7
+ export const getProviders = (configOrFactory) => [
7
8
  {
8
9
  provide: JSON_API_SDK_CONFIG,
9
- useValue: resultConfig(config),
10
+ useFactory: () => {
11
+ const config = isFactory(configOrFactory) ? configOrFactory() : configOrFactory;
12
+ return resultConfig(config);
13
+ },
10
14
  },
11
15
  {
12
16
  provide: JsonApiUtilsService,
@@ -28,6 +32,6 @@ export const getProviders = (config) => [
28
32
  },
29
33
  },
30
34
  ];
31
- export const provideJsonApi = (config) => makeEnvironmentProviders(getProviders(config));
32
- export { AtomicFactory, JSON_API_SDK_CONFIG } from './token';
35
+ export const provideJsonApi = (configOrFactory) => makeEnvironmentProviders(getProviders(configOrFactory));
36
+ export { AtomicFactory, JSON_API_SDK_CONFIG } from './token/index.js';
33
37
  //# sourceMappingURL=json-api-angular.js.map
@@ -1 +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,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC;IACrD;QACE,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;KAC/B;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;KACvE;IACD;QACE,OAAO,EAAE,iBAAiB;QAC1B,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,iBAAiB,CACnB,MAAM,CAAkB,UAAiB,CAAC,EAC1C,MAAM,CAAC,mBAAmB,CAAC,EAC3B,MAAM,CAAC,mBAAmB,CAAC,CAC5B;KACJ;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAkB,UAAiB,CAAC,CAAC;YAE9D,OAAO,GAAG,EAAE;gBACV,OAAO,IAAI,uBAAuB,CAChC,mBAAmB,EACnB,MAAM,EACN,UAAU,CACX,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAE,EAAE,CACtD,wBAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
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,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAK5B,MAAM,SAAS,GAAG,CAAC,MAA8B,EAAkC,EAAE,CACnF,OAAO,MAAM,KAAK,UAAU,CAAC;AAE/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,eAAuC,EAAE,EAAE,CAAC;IACvE;QACE,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;YAChF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;KACF;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;KACvE;IACD;QACE,OAAO,EAAE,iBAAiB;QAC1B,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,iBAAiB,CACnB,MAAM,CAAkB,UAAiB,CAAC,EAC1C,MAAM,CAAC,mBAAmB,CAAC,EAC3B,MAAM,CAAC,mBAAmB,CAAC,CAC5B;KACJ;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAkB,UAAiB,CAAC,CAAC;YAE9D,OAAO,GAAG,EAAE;gBACV,OAAO,IAAI,uBAAuB,CAChC,mBAAmB,EACnB,MAAM,EACN,UAAU,CACX,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,eAAuC,EAAE,EAAE,CACxE,wBAAwB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,13 +1,13 @@
1
- import { AtomicFactory, AtomicFactoryPromise, JsonConfig, PromiseJsonApiSdkService } from './types';
2
- import { JsonApiSdkService, JsonApiUtilsService } from './service';
1
+ import { AtomicFactory, AtomicFactoryPromise, JsonConfig, PromiseJsonApiSdkService } from './types/index.js';
2
+ import { JsonApiSdkService, JsonApiUtilsService } from './service/index.js';
3
3
  export type JsonSdkPromise = {
4
4
  jsonApiUtilsService: JsonApiUtilsService;
5
- jonApiSdkService: PromiseJsonApiSdkService;
5
+ jsonApiSdkService: PromiseJsonApiSdkService;
6
6
  atomicFactory: AtomicFactoryPromise;
7
7
  };
8
8
  export type JsonSdkGeneral = {
9
9
  jsonApiUtilsService: JsonApiUtilsService;
10
- jonApiSdkService: JsonApiSdkService;
10
+ jsonApiSdkService: JsonApiSdkService;
11
11
  atomicFactory: AtomicFactory;
12
12
  };
13
13
  type JsonSdk<P extends boolean | undefined> = P extends true ? JsonSdkPromise : JsonSdkGeneral;
@@ -1,6 +1,6 @@
1
- import { resultConfig } from './utils';
2
- import { AtomicOperationsService, JsonApiSdkService, JsonApiUtilsService, } from './service';
3
- import { FetchInnerClient } from './service/fetch-inner-client';
1
+ import { resultConfig } from './utils/index.js';
2
+ import { AtomicOperationsService, JsonApiSdkService, JsonApiUtilsService, } from './service/index.js';
3
+ import { FetchInnerClient } from './service/fetch-inner-client.js';
4
4
  import { lastValueFrom } from 'rxjs';
5
5
  const jsonSdk = {};
6
6
  export function JsonApiJs(config, returnPromise) {
@@ -10,13 +10,33 @@ export function JsonApiJs(config, returnPromise) {
10
10
  const resultJsonConfig = resultConfig(jsonSdkConfig);
11
11
  const jsonApiUtilsService = new JsonApiUtilsService(resultJsonConfig);
12
12
  const httpInnerClient = adapter ? adapter : new FetchInnerClient();
13
- const jonApiSdkService = new JsonApiSdkService(httpInnerClient, jsonApiUtilsService, resultJsonConfig);
13
+ const jsonApiSdkService = new JsonApiSdkService(httpInnerClient, jsonApiUtilsService, resultJsonConfig);
14
14
  jsonSdk['jsonApiUtilsService'] = jsonApiUtilsService;
15
- jsonSdk['jonApiSdkService'] = jonApiSdkService;
15
+ jsonSdk['jsonApiSdkService'] = jsonApiSdkService;
16
16
  jsonSdk['atomicFactory'] = () => new AtomicOperationsService(jsonApiUtilsService, resultJsonConfig, httpInnerClient);
17
17
  if (returnPromise) {
18
- jsonSdk['jonApiSdkService'] = new Proxy(jonApiSdkService, {
18
+ jsonSdk['jsonApiSdkService'] = new Proxy(jsonApiSdkService, {
19
19
  get(target, p) {
20
+ // Special handling for entity() method - it returns EntityChain, not Observable
21
+ if (p === 'entity') {
22
+ return ((...args) => {
23
+ const result = target.entity(...args);
24
+ // If raw mode (third arg is true), return entity as-is
25
+ if (args[2] === true) {
26
+ return result;
27
+ }
28
+ // Chain mode - wrap chain methods to return Promise instead of Observable
29
+ return new Proxy(result, {
30
+ get(chainTarget, chainMethod) {
31
+ const fn = chainTarget[chainMethod];
32
+ if (typeof fn === 'function') {
33
+ return (...chainArgs) => lastValueFrom(fn.call(chainTarget, ...chainArgs));
34
+ }
35
+ return fn;
36
+ },
37
+ });
38
+ });
39
+ }
20
40
  return (...arg) => lastValueFrom(target[p].apply(target, arg));
21
41
  },
22
42
  });
@@ -1 +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":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAkBrC,MAAM,OAAO,GAAG,EAAS,CAAC;AAE1B,MAAM,UAAU,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,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC;IAC7C,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAErD,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,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,uBAAuB,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,aAAa,CAAE,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,uBAAuB,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,aAAa,CAAC,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"}
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":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
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';
3
+ import { JsonApiUtilsService } from './json-api-utils.service.js';
4
+ import { AtomicOperations, HttpInnerClient, JsonApiSdkConfig, ReturnIfArray } from '../types/index.js';
5
5
  export declare class AtomicOperationsService<T extends unknown[]> implements AtomicOperations<T> {
6
6
  private jsonApiUtilsService;
7
7
  private jsonApiSdkConfig;
@@ -13,10 +13,10 @@ export declare class AtomicOperationsService<T extends unknown[]> implements Ato
13
13
  deleteOne<Entity extends object>(entity: Entity): AtomicOperations<[...T]>;
14
14
  deleteOne<Entity extends object>(entity: Entity, skipEmpty: true): AtomicOperations<[...T]>;
15
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>]>;
16
+ patchOne<Entity extends object, OutputEntity extends Entity = Entity>(entity: Entity, meta?: Record<string, unknown>): AtomicOperations<[...T, OutputEntity]>;
17
+ postOne<Entity extends object, OutputEntity extends Entity = Entity>(entity: Entity, meta?: Record<string, unknown>): AtomicOperations<[...T, OutputEntity]>;
18
+ deleteRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): AtomicOperations<T>;
19
+ patchRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
20
+ postRelationships<Entity extends object, Rel extends RelationKeys<Entity>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): AtomicOperations<[...T, ReturnIfArray<Entity[Rel], string>]>;
21
21
  private setToBody;
22
22
  }
@@ -1,6 +1,6 @@
1
1
  import { KEY_MAIN_INPUT_SCHEMA, KEY_MAIN_OUTPUT_SCHEMA, } from '@klerick/json-api-nestjs-shared';
2
2
  import { map } from 'rxjs/operators';
3
- import { GenerateAtomicBody } from '../utils';
3
+ import { GenerateAtomicBody } from '../utils/index.js';
4
4
  export class AtomicOperationsService {
5
5
  jsonApiUtilsService;
6
6
  jsonApiSdkConfig;
@@ -43,22 +43,22 @@ export 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 GenerateAtomicBody(this.jsonApiUtilsService, this.jsonApiSdkConfig);
63
63
  if (typeof relationType === 'boolean') {
64
64
  if (operationType === 'deleteOne') {
@@ -71,11 +71,17 @@ export 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
- default:
77
- atomicBody[operationType](entity, true);
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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"}
@@ -1,7 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
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';
3
+ import { ParamObject } from '../utils/index.js';
4
+ import { HttpInnerClient, PatchData, PostData, RelationBodyData, AtomicBody, AtomicResponse } from '../types/index.js';
5
5
  export declare class FetchInnerClient implements HttpInnerClient {
6
6
  delete(url: string, body?: RelationBodyData | RelationBodyData[]): Observable<void>;
7
7
  get<T extends object, R extends 'object' | 'array' = 'object', IdKey extends string = string>(url: string, params?: {
@@ -1,5 +1,5 @@
1
1
  import { fromFetch } from 'rxjs/fetch';
2
- import { HttpParams } from '../utils';
2
+ import { HttpParams } from '../utils/index.js';
3
3
  export class FetchInnerClient {
4
4
  delete(url, body) {
5
5
  let requestInit = {
@@ -1 +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,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,OAAO,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AAWnD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CACJ,GAAW,EACX,IAA4C;QAE5C,IAAI,WAAW,GAAgB;YAC7B,MAAM,EAAE,QAAQ;SACjB,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,GAAG;gBACZ,GAAG,WAAW;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,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,SAAS,CAAI,GAAG,EAAE;YACvB,GAAG,QAAQ;YACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,MAAmB;QACnD,MAAM,SAAS,GAAG,IAAI,UAAU,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,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EACvD,GAAG,CACJ,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;CACF"}
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,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW5D,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CACJ,GAAW,EACX,IAA4C;QAE5C,IAAI,WAAW,GAAgB;YAC7B,MAAM,EAAE,QAAQ;SACjB,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,GAAG;gBACZ,GAAG,WAAW;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,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,SAAS,CAAI,GAAG,EAAE;YACvB,GAAG,QAAQ;YACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,MAAmB;QACnD,MAAM,SAAS,GAAG,IAAI,UAAU,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,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EACvD,GAAG,CACJ,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;CACF"}
@@ -1,3 +1,3 @@
1
- export * from './json-api-utils.service';
2
- export * from './atomic-operations.service';
3
- export * from './json-api-sdk.service';
1
+ export * from './json-api-utils.service.js';
2
+ export * from './atomic-operations.service.js';
3
+ export * from './json-api-sdk.service.js';
@@ -1,4 +1,4 @@
1
- export * from './json-api-utils.service';
2
- export * from './atomic-operations.service';
3
- export * from './json-api-sdk.service';
1
+ export * from './json-api-utils.service.js';
2
+ export * from './atomic-operations.service.js';
3
+ export * from './json-api-sdk.service.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-sdk/src/lib/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC"}
@@ -1,21 +1,26 @@
1
1
  import { RelationKeys, EntityClass } from '@klerick/json-api-nestjs-shared';
2
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';
3
+ import { HttpInnerClient, JsonApiSdkConfig, QueryParams, QueryParamsForOneItem, ReturnIfArray, EntityChain } from '../types/index.js';
4
+ import { EntityArray } from '../utils/index.js';
5
+ import { JsonApiUtilsService } from './json-api-utils.service.js';
6
6
  export declare class JsonApiSdkService {
7
7
  private http;
8
8
  private jsonApiUtilsService;
9
9
  private jsonApiSdkConfig;
10
10
  constructor(http: HttpInnerClient, jsonApiUtilsService: JsonApiUtilsService, jsonApiSdkConfig: JsonApiSdkConfig);
11
+ entity<E extends object, OutputE extends E = E>(typeName: string, data: E): EntityChain<E, OutputE>;
12
+ entity<E extends object>(typeName: string, data: E, raw: true): E;
11
13
  getList<Entity extends object, IdKey extends string = 'id'>(entity: EntityClass<Entity>, params?: QueryParams<Entity>): Observable<EntityArray<Entity>>;
14
+ getList<Entity extends object, IdKey extends string = 'id'>(typeName: string, params?: QueryParams<Entity>): Observable<EntityArray<Entity>>;
12
15
  getAll<Entity extends object>(entity: EntityClass<Entity>, params?: QueryParams<Entity>, push?: boolean): Observable<EntityArray<Entity>>;
16
+ getAll<Entity extends object>(typeName: string, params?: QueryParams<Entity>, push?: boolean): Observable<EntityArray<Entity>>;
13
17
  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>;
18
+ getOne<Entity extends object>(typeName: string, id: string | number, params?: QueryParamsForOneItem<Entity>): Observable<Entity>;
19
+ postOne<Entity extends object, OutputEntity extends Entity = Entity>(entity: Entity, meta?: Record<string, unknown>): Observable<OutputEntity>;
20
+ patchOne<Entity extends object, OutputEntity extends Entity = Entity>(entity: Entity, meta?: Record<string, unknown>): Observable<OutputEntity>;
16
21
  deleteOne<Entity extends object>(entity: Entity): Observable<void>;
17
22
  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>;
23
+ patchRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): Observable<ReturnIfArray<Entity[Rel], string>>;
24
+ postRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): Observable<ReturnIfArray<Entity[Rel], string>>;
25
+ deleteRelationships<Entity extends object, IdKey extends string, Rel extends RelationKeys<Entity, IdKey>>(entity: Entity, relationType: Rel, meta?: Record<string, unknown>): Observable<void>;
21
26
  }
@@ -1,6 +1,7 @@
1
1
  import { EMPTY, expand, reduce, throwError } from 'rxjs';
2
2
  import { map } from 'rxjs/operators';
3
- import { EntityArray, getTypeForReq } from '../utils';
3
+ import { EntityArray, getTypeForReq } from '../utils/index.js';
4
+ const AS_PLAIN_RESULT = Symbol('asPlainResult');
4
5
  export class JsonApiSdkService {
5
6
  http;
6
7
  jsonApiUtilsService;
@@ -10,16 +11,35 @@ export class JsonApiSdkService {
10
11
  this.jsonApiUtilsService = jsonApiUtilsService;
11
12
  this.jsonApiSdkConfig = jsonApiSdkConfig;
12
13
  }
13
- getList(entity, params) {
14
+ entity(typeName, data, raw) {
15
+ const instance = this.jsonApiUtilsService.createEntityInstance(typeName);
16
+ const entityObj = Object.assign(instance, data);
17
+ if (raw)
18
+ return entityObj;
19
+ // Mark for plain result when used via chain
20
+ Reflect.set(entityObj, AS_PLAIN_RESULT, true);
21
+ return new Proxy(this, {
22
+ get: (target, method) => {
23
+ const fn = target[method];
24
+ if (typeof fn === 'function') {
25
+ return (...args) => fn.call(target, entityObj, ...args);
26
+ }
27
+ return fn;
28
+ },
29
+ });
30
+ }
31
+ getList(entityOrTypeName, params) {
32
+ const asPlain = typeof entityOrTypeName === 'string';
33
+ const name = asPlain ? entityOrTypeName : entityOrTypeName.name;
14
34
  const query = this.jsonApiUtilsService.getQueryStringParams(params);
15
35
  return this.http
16
- .get(this.jsonApiUtilsService.getUrlForResource(entity.name), {
36
+ .get(this.jsonApiUtilsService.getUrlForResource(name), {
17
37
  params: query.toObject(),
18
38
  })
19
39
  .pipe(map((result) => {
20
40
  const resource = params
21
- ? this.jsonApiUtilsService.convertResponseData(result, params.include)
22
- : this.jsonApiUtilsService.convertResponseData(result);
41
+ ? this.jsonApiUtilsService.convertResponseData(result, params.include, asPlain)
42
+ : this.jsonApiUtilsService.convertResponseData(result, undefined, asPlain);
23
43
  const { totalItems, pageSize, pageNumber } = Object.assign({
24
44
  totalItems: 0,
25
45
  pageNumber: 0,
@@ -32,8 +52,8 @@ export class JsonApiSdkService {
32
52
  });
33
53
  }));
34
54
  }
35
- getAll(entity, params, push = true) {
36
- const request = this.getList(entity, params).pipe(expand((r) => {
55
+ getAll(entityOrTypeName, params, push = true) {
56
+ const request = this.getList(entityOrTypeName, params).pipe(expand((r) => {
37
57
  if (r.pageNumber * r.pageSize >= r.totalItems) {
38
58
  return EMPTY;
39
59
  }
@@ -46,7 +66,7 @@ export class JsonApiSdkService {
46
66
  },
47
67
  },
48
68
  };
49
- return this.getList(entity, newParams);
69
+ return this.getList(entityOrTypeName, newParams);
50
70
  }));
51
71
  if (!push) {
52
72
  return request.pipe(reduce((acum, item) => {
@@ -63,18 +83,21 @@ export class JsonApiSdkService {
63
83
  }
64
84
  return request;
65
85
  }
66
- getOne(entity, id, params) {
86
+ getOne(entityOrTypeName, id, params) {
67
87
  if (!id) {
68
88
  return throwError(() => new Error('Id for resource is required'));
69
89
  }
90
+ const asPlain = typeof entityOrTypeName === 'string';
91
+ const name = asPlain ? entityOrTypeName : entityOrTypeName.name;
70
92
  const query = this.jsonApiUtilsService.getQueryStringParams(params);
71
93
  return this.http
72
- .get(`${this.jsonApiUtilsService.getUrlForResource(entity.name)}/${id}`, {
94
+ .get(`${this.jsonApiUtilsService.getUrlForResource(name)}/${id}`, {
73
95
  params: query.toObject(),
74
96
  })
75
- .pipe(map((result) => this.jsonApiUtilsService.convertResponseData(result, params?.include)));
97
+ .pipe(map((result) => this.jsonApiUtilsService.convertResponseData(result, params?.include, asPlain)));
76
98
  }
77
- postOne(entity) {
99
+ postOne(entity, meta) {
100
+ const asPlain = Reflect.has(entity, AS_PLAIN_RESULT);
78
101
  const { attributes, relationships } = this.jsonApiUtilsService.generateBody(entity);
79
102
  const body = {
80
103
  data: {
@@ -82,22 +105,29 @@ export class JsonApiSdkService {
82
105
  attributes,
83
106
  ...(Object.keys(relationships).length > 0 ? { relationships } : {}),
84
107
  },
108
+ ...(meta ? { meta } : {}),
85
109
  };
110
+ const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
111
+ if (id) {
112
+ Reflect.set(body.data, 'id', String(id));
113
+ }
86
114
  return this.http
87
115
  .post(this.jsonApiUtilsService.getUrlForResource(entity.constructor.name), body)
88
- .pipe(map((r) => this.jsonApiUtilsService.convertResponseData(r)));
116
+ .pipe(map((r) => this.jsonApiUtilsService.convertResponseData(r, (Object.keys(relationships).length > 0 ? Object.keys(relationships) : undefined), asPlain)));
89
117
  }
90
- patchOne(entity) {
118
+ patchOne(entity, meta) {
91
119
  const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
92
120
  if (!id) {
93
121
  return throwError(() => new Error('Resource params should be instance of resource with id params'));
94
122
  }
123
+ const asPlain = Reflect.has(entity, AS_PLAIN_RESULT);
95
124
  const { attributes, relationships } = this.jsonApiUtilsService.generateBody(entity);
96
125
  const body = {
97
126
  data: {
98
127
  id: String(id),
99
128
  type: getTypeForReq(entity.constructor.name),
100
129
  },
130
+ ...(meta ? { meta } : {}),
101
131
  };
102
132
  if (Object.keys(relationships).length > 0) {
103
133
  Reflect.set(body.data, 'relationships', relationships);
@@ -107,7 +137,7 @@ export class JsonApiSdkService {
107
137
  }
108
138
  return this.http
109
139
  .patch(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}`, body)
110
- .pipe(map((r) => this.jsonApiUtilsService.convertResponseData(r)));
140
+ .pipe(map((r) => this.jsonApiUtilsService.convertResponseData(r, (Object.keys(relationships).length > 0 ? Object.keys(relationships) : undefined), asPlain)));
111
141
  }
112
142
  deleteOne(entity) {
113
143
  const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
@@ -125,7 +155,7 @@ export class JsonApiSdkService {
125
155
  .get(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`)
126
156
  .pipe(map((result) => this.jsonApiUtilsService.getResultForRelation(result)));
127
157
  }
128
- patchRelationships(entity, relationType) {
158
+ patchRelationships(entity, relationType, meta) {
129
159
  const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
130
160
  if (!id) {
131
161
  return throwError(() => new Error('Resource params should be instance of resource with id params'));
@@ -135,12 +165,13 @@ export class JsonApiSdkService {
135
165
  }
136
166
  const body = {
137
167
  data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
168
+ ...(meta ? { meta } : {}),
138
169
  };
139
170
  return this.http
140
171
  .patch(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)
141
172
  .pipe(map((result) => this.jsonApiUtilsService.getResultForRelation(result)));
142
173
  }
143
- postRelationships(entity, relationType) {
174
+ postRelationships(entity, relationType, meta) {
144
175
  const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
145
176
  if (!id) {
146
177
  return throwError(() => new Error('Resource params should be instance of resource with id params'));
@@ -150,12 +181,13 @@ export class JsonApiSdkService {
150
181
  }
151
182
  const body = {
152
183
  data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
184
+ ...(meta ? { meta } : {}),
153
185
  };
154
186
  return this.http
155
187
  .post(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)
156
188
  .pipe(map((result) => this.jsonApiUtilsService.getResultForRelation(result)));
157
189
  }
158
- deleteRelationships(entity, relationType) {
190
+ deleteRelationships(entity, relationType, meta) {
159
191
  const id = Reflect.get(entity, this.jsonApiSdkConfig.idKey);
160
192
  if (!id) {
161
193
  return throwError(() => new Error('Resource params should be instance of resource with id params'));
@@ -165,6 +197,7 @@ export class JsonApiSdkService {
165
197
  }
166
198
  const body = {
167
199
  data: this.jsonApiUtilsService.generateRelationshipsBody(entity[relationType]),
200
+ ...(meta ? { meta } : {}),
168
201
  };
169
202
  return this.http
170
203
  .delete(`${this.jsonApiUtilsService.getUrlForResource(entity.constructor.name)}/${id}/relationships/${String(relationType)}`, body)