ng2-rest 19.0.37 → 19.0.39

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 (44) hide show
  1. package/browser/fesm2022/ng2-rest.mjs +195 -126
  2. package/browser/fesm2022/ng2-rest.mjs.map +1 -1
  3. package/browser/lib/axios-interceptors.d.ts +23 -0
  4. package/browser/lib/index.d.ts +1 -0
  5. package/browser/lib/models.d.ts +14 -11
  6. package/browser/lib/other/simple-resource.d.ts +4 -4
  7. package/browser/lib/rest-request.d.ts +17 -9
  8. package/browser/lib/rest.class.d.ts +15 -15
  9. package/browser/package.json +1 -1
  10. package/lib/axios-interceptors.d.ts +22 -0
  11. package/lib/axios-interceptors.js +22 -0
  12. package/lib/axios-interceptors.js.map +1 -0
  13. package/lib/build-info._auto-generated_.d.ts +1 -1
  14. package/lib/build-info._auto-generated_.js +1 -1
  15. package/lib/index.d.ts +1 -0
  16. package/lib/index.js +1 -0
  17. package/lib/index.js.map +1 -1
  18. package/lib/mapping.js +84 -75
  19. package/lib/mapping.js.map +1 -1
  20. package/lib/models.d.ts +15 -12
  21. package/lib/models.js +13 -14
  22. package/lib/models.js.map +1 -1
  23. package/lib/other/simple-resource.d.ts +4 -4
  24. package/lib/other/simple-resource.js +48 -35
  25. package/lib/other/simple-resource.js.map +1 -1
  26. package/lib/request-cache.js +9 -23
  27. package/lib/request-cache.js.map +1 -1
  28. package/lib/rest-request.d.ts +17 -9
  29. package/lib/rest-request.js +55 -27
  30. package/lib/rest-request.js.map +1 -1
  31. package/lib/rest.class.d.ts +15 -15
  32. package/lib/rest.class.js +47 -38
  33. package/lib/rest.class.js.map +1 -1
  34. package/package.json +1 -1
  35. package/tmp-environment.json +4 -6
  36. package/websql/fesm2022/ng2-rest.mjs +195 -126
  37. package/websql/fesm2022/ng2-rest.mjs.map +1 -1
  38. package/websql/lib/axios-interceptors.d.ts +23 -0
  39. package/websql/lib/index.d.ts +1 -0
  40. package/websql/lib/models.d.ts +14 -11
  41. package/websql/lib/other/simple-resource.d.ts +4 -4
  42. package/websql/lib/rest-request.d.ts +17 -9
  43. package/websql/lib/rest.class.d.ts +15 -15
  44. package/websql/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ // @ts-nocheck
2
+ import { AxiosRequestConfig, AxiosResponse } from 'axios';
3
+ import type express from 'express';
4
+ import { Observable } from 'rxjs';
5
+ export interface AxiosTaonHttpHandler<T = any> {
6
+ handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>>;
7
+ }
8
+ export interface TaonClientMiddlewareInterceptOptions<T = any> {
9
+ req: AxiosRequestConfig;
10
+ next: AxiosTaonHttpHandler<T>;
11
+ }
12
+ export interface TaonServerMiddlewareInterceptOptions<T = any> {
13
+ req: express.Request;
14
+ res: express.Response;
15
+ next: express.NextFunction;
16
+ }
17
+ export interface TaonAxiosClientInterceptor<T = any> {
18
+ intercept(client: TaonClientMiddlewareInterceptOptions<T>): Observable<AxiosResponse<T>>;
19
+ }
20
+ export declare class AxiosBackendHandler<T = any> implements AxiosTaonHttpHandler<T> {
21
+ handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>>;
22
+ }
23
+ export declare const buildInterceptorChain: <T = any>(interceptors: Array<TaonAxiosClientInterceptor<T>>, backend: AxiosTaonHttpHandler<T>) => AxiosTaonHttpHandler<T>;
@@ -6,5 +6,6 @@ export * from './rest.class';
6
6
  export * from './rest-headers';
7
7
  export * from './helpers';
8
8
  export * from './content-type';
9
+ export * from './axios-interceptors';
9
10
  export { SimpleResource } from './other/simple-resource';
10
11
  export { interpolateParamsToUrl } from './params';
@@ -1,13 +1,14 @@
1
1
  // @ts-nocheck
2
+ import { AxiosRequestConfig } from 'axios';
3
+ import { Circ } from 'json10/browser';
2
4
  import { Observable } from 'rxjs';
3
5
  import { Subject } from 'rxjs';
4
- import { RestHeaders } from './rest-headers';
5
- import { Rest } from './rest.class';
6
+ import { CoreModels } from 'tnp-core/browser';
7
+ import { Models as HelpersModels } from 'typescript-class-helpers/browser';
6
8
  import { Cookie } from './cookie';
7
9
  import { Mapping } from './mapping';
8
- import { Models as HelpersModels } from 'typescript-class-helpers/browser';
9
- import { Circ } from 'json10/browser';
10
- import { CoreModels } from 'tnp-core/browser';
10
+ import { RestHeaders } from './rest-headers';
11
+ import { Rest } from './rest.class';
11
12
  export declare namespace Models {
12
13
  export import HttpMethod = CoreModels.HttpMethod;
13
14
  export import ParamType = CoreModels.ParamType;
@@ -41,8 +42,10 @@ export declare namespace Models {
41
42
  type PromiseObservableMix<T> = Promise<T> & {
42
43
  observable: Observable<T>;
43
44
  };
44
- type MethodWithoutBody<E, T, R = PromiseObservableMix<E>> = (params?: UrlParams[], doNotSerializeParams?: boolean) => R;
45
- type MethodWithBody<E, T, R = PromiseObservableMix<E>> = (item?: T, params?: UrlParams[], doNotSerializeParams?: boolean) => R;
45
+ type Ng2RestAxiosRequestConfig = {
46
+ doNotSerializeParams?: boolean;
47
+ } & AxiosRequestConfig<any>;
48
+ type MethodWithBody<E, T, R = PromiseObservableMix<E>> = (item?: T, params?: UrlParams[], axiosOptions?: Ng2RestAxiosRequestConfig) => R;
46
49
  type ReplayData = {
47
50
  subject: Subject<any>;
48
51
  data: {
@@ -69,13 +72,13 @@ export declare namespace Models {
69
72
  headers: RestHeaders;
70
73
  }
71
74
  interface Ng2RestMethods<E, T> {
72
- get: MethodWithoutBody<E, T>;
75
+ get: MethodWithBody<E, T>;
73
76
  post: MethodWithBody<E, T>;
74
77
  put: MethodWithBody<E, T>;
75
78
  patch: MethodWithBody<E, T>;
76
- head: MethodWithoutBody<E, T>;
77
- delete: MethodWithoutBody<E, T>;
78
- jsonp: MethodWithoutBody<E, T>;
79
+ head: MethodWithBody<E, T>;
80
+ delete: MethodWithBody<E, T>;
81
+ jsonp: MethodWithBody<E, T>;
79
82
  }
80
83
  type MockController = (url: string, method: CoreModels.HttpMethod, headers?: RestHeaders, body?: any) => MockResponse;
81
84
  type MockHttp = MockResponse | MockController;
@@ -2,13 +2,13 @@
2
2
  import { Observable } from 'rxjs';
3
3
  import { Models } from '../models';
4
4
  export interface RestPromises<A, TA, QP extends Models.UrlParams> {
5
- get: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;
6
- head: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;
7
- query: (queryParams?: QP) => Observable<Models.HttpResponse<TA>>;
5
+ get: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;
6
+ head: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;
7
+ query: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<TA>>;
8
8
  put: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;
9
9
  patch: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;
10
10
  post: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;
11
- delete: (queryParams?: QP) => Observable<Models.HttpResponse<A> | any>;
11
+ delete: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A> | any>;
12
12
  }
13
13
  export interface Model<A, TA, RP extends Object, QP extends Models.UrlParams> {
14
14
  (restParams?: RP): RestPromises<A, TA, QP>;
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- import { AxiosRequestConfig } from 'axios';
2
+ import { TaonAxiosClientInterceptor } from './axios-interceptors';
3
3
  import { Models } from './models';
4
4
  import { RestHeaders } from './rest-headers';
5
5
  export declare class RestRequest {
@@ -7,17 +7,25 @@ export declare class RestRequest {
7
7
  private static jobId;
8
8
  private subjectInuUse;
9
9
  private meta;
10
- interceptors: Map<string, (config: AxiosRequestConfig<any>, interceptorName?: string) => Promise<AxiosRequestConfig<any>>>;
10
+ /**
11
+ * key is interceptorName (just to identify who is intercepting)
12
+ */
13
+ interceptors: Map<string, TaonAxiosClientInterceptor<any>>;
14
+ /**
15
+ * key is a joined string METHOD-expressPath.
16
+ * Example `GET-/api/users`
17
+ */
18
+ methodsInterceptors: Map<string, TaonAxiosClientInterceptor<any>>;
11
19
  private handlerResult;
12
20
  private req;
13
21
  private getReplay;
14
22
  private generalReq;
15
- get(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
16
- head(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
17
- delete(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
18
- post(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
19
- put(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
20
- patch(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
21
- jsonp(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp): Models.PromiseObservableMix<any>;
23
+ get(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
24
+ head(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
25
+ delete(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
26
+ post(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
27
+ put(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
28
+ patch(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
29
+ jsonp(url: string, body: string, headers: RestHeaders, meta: Models.MetaRequest, isArray: boolean, mockHttp: Models.MockHttp, axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<any>;
22
30
  private replaySubjects;
23
31
  }
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import { Models } from './models';
3
- import { RestRequest } from './rest-request';
4
3
  import { RestHeaders } from './rest-headers';
4
+ import { RestRequest } from './rest-request';
5
5
  export declare class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T, TA> {
6
6
  private request;
7
7
  private meta;
@@ -19,19 +19,19 @@ export declare class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T
19
19
  constructor(endpoint: string, request: RestRequest, meta: Models.MetaRequest, customContentType: RestHeaders);
20
20
  private req;
21
21
  array: {
22
- get: (params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
23
- head: (params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
24
- post: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
25
- put: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
26
- patch: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
27
- delete: (params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
28
- jsonp: (params?: Models.UrlParams[], doNotSerializeParams?: boolean) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
22
+ get: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
23
+ head: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
24
+ post: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
25
+ put: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
26
+ patch: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
27
+ delete: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
28
+ jsonp: (item: TA, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig) => Models.PromiseObservableMix<Models.HttpResponse<TA>>;
29
29
  };
30
- get(params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
31
- head(params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
32
- post(item: T, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
33
- put(item: T, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
34
- patch(item: T, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
35
- delete(params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
36
- jsonp(params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<T>>;
30
+ get(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
31
+ head(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
32
+ post(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
33
+ put(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
34
+ patch(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
35
+ delete(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
36
+ jsonp(item: T, params?: Models.UrlParams[], axiosOptions?: Models.Ng2RestAxiosRequestConfig): Models.PromiseObservableMix<Models.HttpResponse<T>>;
37
37
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng2-rest/browser",
3
- "version": "19.0.37",
3
+ "version": "19.0.39",
4
4
  "module": "fesm2022/ng2-rest.mjs",
5
5
  "typings": "index.d.ts",
6
6
  "exports": {
@@ -0,0 +1,22 @@
1
+ import { AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import type express from 'express';
3
+ import { Observable } from 'rxjs';
4
+ export interface AxiosTaonHttpHandler<T = any> {
5
+ handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>>;
6
+ }
7
+ export interface TaonClientMiddlewareInterceptOptions<T = any> {
8
+ req: AxiosRequestConfig;
9
+ next: AxiosTaonHttpHandler<T>;
10
+ }
11
+ export interface TaonServerMiddlewareInterceptOptions<T = any> {
12
+ req: express.Request;
13
+ res: express.Response;
14
+ next: express.NextFunction;
15
+ }
16
+ export interface TaonAxiosClientInterceptor<T = any> {
17
+ intercept(client: TaonClientMiddlewareInterceptOptions<T>): Observable<AxiosResponse<T>>;
18
+ }
19
+ export declare class AxiosBackendHandler<T = any> implements AxiosTaonHttpHandler<T> {
20
+ handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>>;
21
+ }
22
+ export declare const buildInterceptorChain: <T = any>(interceptors: Array<TaonAxiosClientInterceptor<T>>, backend: AxiosTaonHttpHandler<T>) => AxiosTaonHttpHandler<T>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildInterceptorChain = exports.AxiosBackendHandler = void 0;
4
+ const axios_1 = require("axios");
5
+ const rxjs_1 = require("rxjs");
6
+ // Optional helper for passing around context (browser/client)
7
+ // === Backend handler (last in chain) ===
8
+ class AxiosBackendHandler {
9
+ handle(req) {
10
+ // axios returns a Promise; wrap as Observable
11
+ return (0, rxjs_1.from)(axios_1.default.request(req));
12
+ }
13
+ }
14
+ exports.AxiosBackendHandler = AxiosBackendHandler;
15
+ // === Chain builder (request: forward order, response: reverse order) ===
16
+ const buildInterceptorChain = (interceptors, backend) => {
17
+ return interceptors.reduceRight((next, interceptor) => ({
18
+ handle: req => interceptor.intercept({ req, next }),
19
+ }), backend);
20
+ };
21
+ exports.buildInterceptorChain = buildInterceptorChain;
22
+ //# sourceMappingURL=axios-interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axios-interceptors.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;AAAA,iCAAiE;AAEjE,+BAAwD;AAuBxD,8DAA8D;AAE9D,0CAA0C;AAC1C,MAAa,mBAAmB;IAC9B,MAAM,CAAC,GAAuB;QAC5B,8CAA8C;QAC9C,OAAO,IAAA,WAAI,EAAC,eAAK,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;CACF;AALD,kDAKC;AAED,0EAA0E;AACnE,MAAM,qBAAqB,GAAG,CACnC,YAAkD,EAClD,OAAgC,EACP,EAAE;IAC3B,OAAO,YAAY,CAAC,WAAW,CAC7B,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KACpD,CAAC,EACF,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC"}
@@ -17,4 +17,4 @@ export declare const PROJECT_NPM_NAME = "ng2-rest";
17
17
  /**
18
18
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
19
19
  */
20
- export declare const CURRENT_PACKAGE_VERSION = "19.0.37";
20
+ export declare const CURRENT_PACKAGE_VERSION = "19.0.39";
@@ -21,6 +21,6 @@ exports.PROJECT_NPM_NAME = 'ng2-rest';
21
21
  /**
22
22
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
23
23
  */
24
- exports.CURRENT_PACKAGE_VERSION = '19.0.37';
24
+ exports.CURRENT_PACKAGE_VERSION = '19.0.39';
25
25
  // THIS FILE IS GENERATED - DO NOT MODIFY
26
26
  //# sourceMappingURL=build-info._auto-generated_.js.map
package/lib/index.d.ts CHANGED
@@ -5,5 +5,6 @@ export * from './rest.class';
5
5
  export * from './rest-headers';
6
6
  export * from './helpers';
7
7
  export * from './content-type';
8
+ export * from './axios-interceptors';
8
9
  export { SimpleResource } from './other/simple-resource';
9
10
  export { interpolateParamsToUrl } from './params';
package/lib/index.js CHANGED
@@ -22,6 +22,7 @@ __exportStar(require("./rest.class"), exports);
22
22
  __exportStar(require("./rest-headers"), exports);
23
23
  __exportStar(require("./helpers"), exports);
24
24
  __exportStar(require("./content-type"), exports);
25
+ __exportStar(require("./axios-interceptors"), exports);
25
26
  var simple_resource_1 = require("./other/simple-resource");
26
27
  Object.defineProperty(exports, "SimpleResource", { enumerable: true, get: function () { return simple_resource_1.SimpleResource; } });
27
28
  var params_1 = require("./params");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,4CAA0B;AAC1B,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,mCAAkD;AAAzC,gHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,4CAA0B;AAC1B,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,uDAAqC;AACrC,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,mCAAkD;AAAzC,gHAAA,sBAAsB,OAAA"}
package/lib/mapping.js CHANGED
@@ -1,34 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Mapping = void 0;
4
- const lib_1 = require("tnp-core/lib");
4
+ const node_stream_1 = require("node:stream"); // @backend
5
+ const lib_1 = require("lodash-walk-object/lib");
5
6
  const lib_2 = require("tnp-core/lib");
6
- const lib_3 = require("lodash-walk-object/lib");
7
- const lib_4 = require("typescript-class-helpers/lib");
7
+ const lib_3 = require("typescript-class-helpers/lib");
8
8
  var Mapping;
9
9
  (function (Mapping) {
10
10
  function decode(json, autodetect = false) {
11
11
  // console.log('DECODE isBrowser', HelpersLog.isBrowser)
12
- if (lib_1._.isUndefined(json)) {
12
+ if (lib_2._.isUndefined(json)) {
13
13
  return void 0;
14
14
  }
15
- let mapping = decodeFromDecorator(lib_1._.isArray(json) ? lib_1._.first(json) : json, !autodetect);
15
+ let mapping = decodeFromDecorator(lib_2._.isArray(json) ? lib_2._.first(json) : json, !autodetect);
16
16
  if (autodetect) {
17
- mapping = lib_1._.merge(getMappingNaive(json), mapping);
17
+ mapping = lib_2._.merge(getMappingNaive(json), mapping);
18
18
  }
19
19
  return mapping;
20
20
  }
21
21
  Mapping.decode = decode;
22
22
  function encode(json, mapping, circular = []) {
23
- if (lib_1._.isString(json) || lib_1._.isBoolean(json) || lib_1._.isNumber(json)) {
23
+ if (lib_2._.isString(json) || lib_2._.isBoolean(json) || lib_2._.isNumber(json)) {
24
24
  return json;
25
25
  }
26
26
  if (mapping['']) {
27
- const decoratorMapping = getModelsMapping(lib_4.CLASS.getBy(mapping['']));
28
- mapping = lib_1._.merge(mapping, decoratorMapping);
27
+ const decoratorMapping = getModelsMapping(lib_3.CLASS.getBy(mapping['']));
28
+ mapping = lib_2._.merge(mapping, decoratorMapping);
29
29
  }
30
30
  let res;
31
- if (lib_1._.isArray(circular) && circular.length > 0) {
31
+ if (lib_2._.isArray(circular) && circular.length > 0) {
32
32
  res = setMappingCirc(json, mapping, circular);
33
33
  }
34
34
  else {
@@ -38,34 +38,35 @@ var Mapping;
38
38
  }
39
39
  Mapping.encode = encode;
40
40
  function decodeFromDecorator(json, production = false) {
41
- const entityClass = lib_4.CLASS.getFromObject(json);
41
+ const entityClass = lib_3.CLASS.getFromObject(json);
42
42
  const mappings = getModelsMapping(entityClass);
43
43
  return mappings;
44
44
  }
45
45
  function getModelsMapping(entity) {
46
- if (!lib_1._.isFunction(entity) || entity === Object) {
46
+ if (!lib_2._.isFunction(entity) || entity === Object) {
47
47
  return {};
48
48
  }
49
- const className = lib_4.CLASS.getName(entity);
49
+ const className = lib_3.CLASS.getName(entity);
50
50
  // console.log(`getMaping for: '${className}' `)
51
- let enityOWnMapping = lib_1._.isArray(entity[lib_4.SYMBOL.MODELS_MAPPING]) ?
52
- entity[lib_4.SYMBOL.MODELS_MAPPING] : [{ '': className }];
51
+ let enityOWnMapping = lib_2._.isArray(entity[lib_3.SYMBOL.MODELS_MAPPING])
52
+ ? entity[lib_3.SYMBOL.MODELS_MAPPING]
53
+ : [{ '': className }];
53
54
  let res = {};
54
55
  let parents = enityOWnMapping
55
- .filter(m => !lib_1._.isUndefined(m['']) && m[''] !== className)
56
+ .filter(m => !lib_2._.isUndefined(m['']) && m[''] !== className)
56
57
  .map(m => m['']);
57
58
  enityOWnMapping.reverse().forEach(m => {
58
- m = lib_1._.cloneDeep(m);
59
+ m = lib_2._.cloneDeep(m);
59
60
  // console.log(`'${className}' m:`, m)
60
61
  Object.keys(m).forEach(key => {
61
62
  const v = m[key];
62
- const isArr = lib_1._.isArray(v);
63
- const model = isArr ? lib_1._.first(v) : v;
63
+ const isArr = lib_2._.isArray(v);
64
+ const model = isArr ? lib_2._.first(v) : v;
64
65
  if (parents.includes(model)) {
65
66
  m[key] = isArr ? [className] : className;
66
67
  }
67
68
  });
68
- res = lib_1._.merge(res, m);
69
+ res = lib_2._.merge(res, m);
69
70
  });
70
71
  res[''] = className;
71
72
  // console.log(`mapping for ${className} : ${JSON.stringify(res)}`)
@@ -75,19 +76,22 @@ var Mapping;
75
76
  function add(o, path, mapping = {}) {
76
77
  if (!o || Array.isArray(o) || typeof o !== 'object')
77
78
  return;
78
- const objectClassName = lib_4.CLASS.getName(Object.getPrototypeOf(o).constructor);
79
- const resolveClass = lib_4.CLASS.getBy(objectClassName);
79
+ const proptotypeObj = Object.getPrototypeOf(o);
80
+ if (!proptotypeObj) {
81
+ return;
82
+ }
83
+ const objectClassName = lib_3.CLASS.getName(proptotypeObj.constructor);
84
+ const resolveClass = lib_3.CLASS.getBy(objectClassName);
80
85
  if (!resolveClass) {
81
86
  if (objectClassName !== 'Object') {
82
- if (lib_2.Helpers.isBrowser) {
87
+ if (lib_2.UtilsOs.isBrowser) {
83
88
  console.error(`Cannot resolve class "${objectClassName}" while mapping.`);
84
89
  }
85
90
  }
86
91
  return;
87
92
  }
88
93
  if (!mapping[path])
89
- mapping[path] = lib_4.CLASS.getName(resolveClass);
90
- ;
94
+ mapping[path] = lib_3.CLASS.getName(resolveClass);
91
95
  }
92
96
  /**
93
97
  * USE ONLY IN DEVELOPMENT
@@ -97,6 +101,15 @@ var Mapping;
97
101
  * @param level
98
102
  */
99
103
  function getMappingNaive(c, path = '', mapping = {}, level = 0) {
104
+ if (c === null || c === undefined) {
105
+ return;
106
+ }
107
+ //#region @backend
108
+ if (c instanceof node_stream_1.Stream) {
109
+ return;
110
+ }
111
+ //#endregion
112
+ // console.log({c})
100
113
  if (Array.isArray(c)) {
101
114
  c.forEach(c => getMappingNaive(c, path, mapping, level));
102
115
  return mapping;
@@ -105,9 +118,10 @@ var Mapping;
105
118
  return;
106
119
  add(c, path, mapping);
107
120
  for (var p in c) {
108
- if (c.hasOwnProperty(p)) {
121
+ if (lib_2._.isFunction(c.hasOwnProperty) && c.hasOwnProperty(p)) {
109
122
  const v = c[p];
110
- if (Array.isArray(v) && v.length > 0) { // reducer as impovement
123
+ if (Array.isArray(v) && v.length > 0) {
124
+ // reducer as impovement
111
125
  v.forEach((elem, i) => {
112
126
  // const currentPaht = [`path[${i}]`, p].filter(c => c.trim() != '').join('.');
113
127
  const currentPaht = [path, p].filter(c => c.trim() != '').join('.');
@@ -124,43 +138,43 @@ var Mapping;
124
138
  return mapping;
125
139
  }
126
140
  function getMappingPathFrom(pathLodhas) {
127
- if (!lib_1._.isString(pathLodhas)) {
141
+ if (!lib_2._.isString(pathLodhas)) {
128
142
  return void 0;
129
143
  }
130
144
  const regex = /\[([0-9a-zA-Z]|\'|\")*\]/g;
131
- pathLodhas = pathLodhas
132
- .replace(regex, '')
133
- .replace('..', '.');
145
+ pathLodhas = pathLodhas.replace(regex, '').replace('..', '.');
134
146
  if (pathLodhas.startsWith('.')) {
135
147
  pathLodhas = pathLodhas.slice(1);
136
148
  }
137
149
  return pathLodhas;
138
150
  }
139
151
  function setMappingCirc(json, mapping = {}, circular = []) {
140
- const mainClassFn = !lib_1._.isArray(json) && lib_4.CLASS.getBy(mapping['']);
152
+ const mainClassFn = !lib_2._.isArray(json) && lib_3.CLASS.getBy(mapping['']);
141
153
  // console.log(mapping)
142
- lib_3.walk.Object(json, (v, lodashPath, changeValue) => {
143
- if (!lib_1._.isUndefined(v) && !lib_1._.isNull(v)) {
154
+ lib_1.walk.Object(json, (v, lodashPath, changeValue) => {
155
+ if (!lib_2._.isUndefined(v) && !lib_2._.isNull(v)) {
144
156
  const mappingPath = getMappingPathFrom(lodashPath);
145
- if (!lib_1._.isUndefined(mapping[mappingPath])) {
146
- const isArray = lib_1._.isArray(mapping[mappingPath]);
157
+ if (!lib_2._.isUndefined(mapping[mappingPath])) {
158
+ const isArray = lib_2._.isArray(mapping[mappingPath]);
147
159
  if (!isArray) {
148
- const className = isArray ? lib_1._.first(mapping[mappingPath]) : mapping[mappingPath];
149
- const classFN = lib_4.CLASS.getBy(className);
150
- if (lib_1._.isFunction(classFN)) {
160
+ const className = isArray
161
+ ? lib_2._.first(mapping[mappingPath])
162
+ : mapping[mappingPath];
163
+ const classFN = lib_3.CLASS.getBy(className);
164
+ if (lib_2._.isFunction(classFN)) {
151
165
  // console.log(`mapping: '${mappingPath}', lp: '${lodashPath}' class: '${className}' , set `, v.location)
152
- changeValue(lib_1._.merge(new classFN(), v));
166
+ changeValue(lib_2._.merge(new classFN(), v));
153
167
  }
154
168
  }
155
169
  }
156
170
  }
157
171
  });
158
172
  circular.forEach(c => {
159
- const ref = lib_1._.get(json, c.circuralTargetPath);
160
- lib_1._.set(json, c.pathToObj, ref);
173
+ const ref = lib_2._.get(json, c.circuralTargetPath);
174
+ lib_2._.set(json, c.pathToObj, ref);
161
175
  });
162
- if (lib_1._.isFunction(mainClassFn)) {
163
- json = lib_1._.merge(new mainClassFn(), json);
176
+ if (lib_2._.isFunction(mainClassFn)) {
177
+ json = lib_2._.merge(new mainClassFn(), json);
164
178
  }
165
179
  return json;
166
180
  }
@@ -171,20 +185,20 @@ var Mapping;
171
185
  return setMapping(j, mapping);
172
186
  });
173
187
  }
174
- const mainClassFn = lib_4.CLASS.getBy(mapping['']);
188
+ const mainClassFn = lib_3.CLASS.getBy(mapping['']);
175
189
  for (const key in json) {
176
190
  if (json.hasOwnProperty(key)) {
177
191
  // if (mainClassFn && mainClassFn.name === 'Project') {
178
192
  // // console.log(`OWn property: "${key}"`)
179
193
  // }
180
- if (lib_1._.isArray(json[key])) {
194
+ if (lib_2._.isArray(json[key])) {
181
195
  json[key] = json[key].map(arrObj => {
182
- const objMapping = getModelsMapping(lib_4.CLASS.getBy(mapping[key]));
196
+ const objMapping = getModelsMapping(lib_3.CLASS.getBy(mapping[key]));
183
197
  return setMapping(arrObj, objMapping);
184
198
  });
185
199
  }
186
- else if (lib_1._.isObject(json[key])) {
187
- const objMapping = getModelsMapping(lib_4.CLASS.getBy(mapping[key]));
200
+ else if (lib_2._.isObject(json[key])) {
201
+ const objMapping = getModelsMapping(lib_3.CLASS.getBy(mapping[key]));
188
202
  json[key] = setMapping(json[key], objMapping);
189
203
  }
190
204
  }
@@ -194,35 +208,35 @@ var Mapping;
194
208
  // }
195
209
  // }
196
210
  }
197
- Object
198
- .keys(mapping)
211
+ Object.keys(mapping)
199
212
  .filter(key => key !== '' && key.split('.').length >= 2)
200
213
  .forEach(lodasPath => {
201
214
  // console.log(`Loadsh path: ${lodasPath}`)
202
- const objMapping = getModelsMapping(lib_4.CLASS.getBy(mapping[lodasPath]));
203
- const input = lib_1._.get(json, lodasPath);
204
- if (!lib_1._.isUndefined(input)) {
215
+ const objMapping = getModelsMapping(lib_3.CLASS.getBy(mapping[lodasPath]));
216
+ const input = lib_2._.get(json, lodasPath);
217
+ if (!lib_2._.isUndefined(input)) {
205
218
  const res = setMapping(input, objMapping);
206
- lib_1._.set(json, lodasPath, res);
219
+ lib_2._.set(json, lodasPath, res);
207
220
  }
208
221
  });
209
222
  if (!mainClassFn) {
210
223
  return json;
211
224
  }
212
- return lib_1._.merge(new mainClassFn(), json);
225
+ return lib_2._.merge(new mainClassFn(), json);
213
226
  }
214
227
  function DefaultModelWithMapping(defaultModelValues, mapping) {
215
228
  return function (target) {
216
- if (!lib_1._.isArray(target[lib_4.SYMBOL.MODELS_MAPPING])) {
217
- target[lib_4.SYMBOL.MODELS_MAPPING] = [];
229
+ if (!lib_2._.isArray(target[lib_3.SYMBOL.MODELS_MAPPING])) {
230
+ target[lib_3.SYMBOL.MODELS_MAPPING] = [];
218
231
  }
219
- target[lib_4.SYMBOL.MODELS_MAPPING].push({ '': lib_4.CLASS.getName(target) });
220
- if (lib_1._.isObject(mapping)) {
221
- target[lib_4.SYMBOL.MODELS_MAPPING] = target[lib_4.SYMBOL.MODELS_MAPPING].concat(mapping);
222
- Object.keys(mapping)
223
- .forEach(key => {
232
+ target[lib_3.SYMBOL.MODELS_MAPPING].push({
233
+ '': lib_3.CLASS.getName(target),
234
+ });
235
+ if (lib_2._.isObject(mapping)) {
236
+ target[lib_3.SYMBOL.MODELS_MAPPING] = target[lib_3.SYMBOL.MODELS_MAPPING].concat(mapping);
237
+ Object.keys(mapping).forEach(key => {
224
238
  const v = mapping;
225
- if (lib_1._.isUndefined(v) || lib_1._.isFunction(v)) {
239
+ if (lib_2._.isUndefined(v) || lib_2._.isFunction(v)) {
226
240
  throw `
227
241
 
228
242
 
@@ -232,11 +246,9 @@ var Mapping;
232
246
  }
233
247
  });
234
248
  }
235
- if (lib_1._.isObject(defaultModelValues)) {
249
+ if (lib_2._.isObject(defaultModelValues)) {
236
250
  const toMerge = {};
237
- const describedTarget = lib_4.CLASS
238
- .describeProperites(target)
239
- .filter(prop => /^([a-zA-Z0-9]|\_|\#)+$/.test(prop));
251
+ const describedTarget = lib_3.CLASS.describeProperites(target).filter(prop => /^([a-zA-Z0-9]|\_|\#)+$/.test(prop));
240
252
  // console.log(`describedTarget: ${describedTarget} for ${target.name}`)
241
253
  describedTarget.forEach(propDefInConstr => {
242
254
  if (defaultModelValues[propDefInConstr]) {
@@ -253,15 +265,12 @@ var Mapping;
253
265
  }
254
266
  });
255
267
  // console.log(`merge "${JSON.stringify(target.prototype)}" with "${JSON.stringify(defaultModelValues)}"`)
256
- target[lib_4.SYMBOL.DEFAULT_MODEL] = lib_1._.merge(toMerge, defaultModelValues);
257
- const propsToOmmit = Object
258
- .keys(target[lib_4.SYMBOL.DEFAULT_MODEL])
259
- .filter(key => {
260
- const descriptor = Object
261
- .getOwnPropertyDescriptor(target.prototype, key);
268
+ target[lib_3.SYMBOL.DEFAULT_MODEL] = lib_2._.merge(toMerge, defaultModelValues);
269
+ const propsToOmmit = Object.keys(target[lib_3.SYMBOL.DEFAULT_MODEL]).filter(key => {
270
+ const descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);
262
271
  return !!descriptor;
263
272
  });
264
- lib_1._.merge(target.prototype, lib_1._.omit(target[lib_4.SYMBOL.DEFAULT_MODEL], propsToOmmit));
273
+ lib_2._.merge(target.prototype, lib_2._.omit(target[lib_3.SYMBOL.DEFAULT_MODEL], propsToOmmit));
265
274
  // console.log(`DEFAULT VALUE MERGE for ${target.name}`)
266
275
  }
267
276
  };