ng2-rest 19.0.38 → 19.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/browser/fesm2022/ng2-rest.mjs +196 -127
- package/browser/fesm2022/ng2-rest.mjs.map +1 -1
- package/browser/lib/axios-interceptors.d.ts +23 -0
- package/browser/lib/index.d.ts +1 -0
- package/browser/lib/models.d.ts +14 -11
- package/browser/lib/other/simple-resource.d.ts +4 -4
- package/browser/lib/rest-request.d.ts +17 -9
- package/browser/lib/rest.class.d.ts +15 -15
- package/browser/package.json +1 -1
- package/lib/axios-interceptors.d.ts +22 -0
- package/lib/axios-interceptors.js +22 -0
- package/lib/axios-interceptors.js.map +1 -0
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/mapping.js +84 -75
- package/lib/mapping.js.map +1 -1
- package/lib/models.d.ts +15 -12
- package/lib/models.js +13 -14
- package/lib/models.js.map +1 -1
- package/lib/other/simple-resource.d.ts +4 -4
- package/lib/other/simple-resource.js +48 -35
- package/lib/other/simple-resource.js.map +1 -1
- package/lib/rest-request.d.ts +17 -9
- package/lib/rest-request.js +55 -27
- package/lib/rest-request.js.map +1 -1
- package/lib/rest.class.d.ts +15 -15
- package/lib/rest.class.js +48 -39
- package/lib/rest.class.js.map +1 -1
- package/package.json +1 -1
- package/websql/fesm2022/ng2-rest.mjs +196 -127
- package/websql/fesm2022/ng2-rest.mjs.map +1 -1
- package/websql/lib/axios-interceptors.d.ts +23 -0
- package/websql/lib/index.d.ts +1 -0
- package/websql/lib/models.d.ts +14 -11
- package/websql/lib/other/simple-resource.d.ts +4 -4
- package/websql/lib/rest-request.d.ts +17 -9
- package/websql/lib/rest.class.d.ts +15 -15
- 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>;
|
package/browser/lib/index.d.ts
CHANGED
|
@@ -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';
|
package/browser/lib/models.d.ts
CHANGED
|
@@ -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 {
|
|
5
|
-
import {
|
|
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 {
|
|
9
|
-
import {
|
|
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
|
|
45
|
-
|
|
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:
|
|
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:
|
|
77
|
-
delete:
|
|
78
|
-
jsonp:
|
|
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 {
|
|
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
|
-
|
|
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[],
|
|
23
|
-
head: (params?: Models.UrlParams[],
|
|
24
|
-
post: (item: TA, params?: Models.UrlParams[],
|
|
25
|
-
put: (item: TA, params?: Models.UrlParams[],
|
|
26
|
-
patch: (item: TA, params?: Models.UrlParams[],
|
|
27
|
-
delete: (params?: Models.UrlParams[],
|
|
28
|
-
jsonp: (params?: Models.UrlParams[],
|
|
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[],
|
|
31
|
-
head(params?: Models.UrlParams[],
|
|
32
|
-
post(item: T, params?: Models.UrlParams[],
|
|
33
|
-
put(item: T, params?: Models.UrlParams[],
|
|
34
|
-
patch(item: T, params?: Models.UrlParams[],
|
|
35
|
-
delete(params?: Models.UrlParams[],
|
|
36
|
-
jsonp(params?: Models.UrlParams[],
|
|
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
|
}
|
package/browser/package.json
CHANGED
|
@@ -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"}
|
|
@@ -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.
|
|
24
|
+
exports.CURRENT_PACKAGE_VERSION = '19.0.40';
|
|
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
|
|
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("
|
|
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 (
|
|
12
|
+
if (lib_2._.isUndefined(json)) {
|
|
13
13
|
return void 0;
|
|
14
14
|
}
|
|
15
|
-
let mapping = decodeFromDecorator(
|
|
15
|
+
let mapping = decodeFromDecorator(lib_2._.isArray(json) ? lib_2._.first(json) : json, !autodetect);
|
|
16
16
|
if (autodetect) {
|
|
17
|
-
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 (
|
|
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(
|
|
28
|
-
mapping =
|
|
27
|
+
const decoratorMapping = getModelsMapping(lib_3.CLASS.getBy(mapping['']));
|
|
28
|
+
mapping = lib_2._.merge(mapping, decoratorMapping);
|
|
29
29
|
}
|
|
30
30
|
let res;
|
|
31
|
-
if (
|
|
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 =
|
|
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 (!
|
|
46
|
+
if (!lib_2._.isFunction(entity) || entity === Object) {
|
|
47
47
|
return {};
|
|
48
48
|
}
|
|
49
|
-
const className =
|
|
49
|
+
const className = lib_3.CLASS.getName(entity);
|
|
50
50
|
// console.log(`getMaping for: '${className}' `)
|
|
51
|
-
let enityOWnMapping =
|
|
52
|
-
entity[
|
|
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 => !
|
|
56
|
+
.filter(m => !lib_2._.isUndefined(m['']) && m[''] !== className)
|
|
56
57
|
.map(m => m['']);
|
|
57
58
|
enityOWnMapping.reverse().forEach(m => {
|
|
58
|
-
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 =
|
|
63
|
-
const model = isArr ?
|
|
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 =
|
|
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
|
|
79
|
-
|
|
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.
|
|
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] =
|
|
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) {
|
|
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 (!
|
|
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 = !
|
|
152
|
+
const mainClassFn = !lib_2._.isArray(json) && lib_3.CLASS.getBy(mapping['']);
|
|
141
153
|
// console.log(mapping)
|
|
142
|
-
|
|
143
|
-
if (!
|
|
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 (!
|
|
146
|
-
const isArray =
|
|
157
|
+
if (!lib_2._.isUndefined(mapping[mappingPath])) {
|
|
158
|
+
const isArray = lib_2._.isArray(mapping[mappingPath]);
|
|
147
159
|
if (!isArray) {
|
|
148
|
-
const className = isArray
|
|
149
|
-
|
|
150
|
-
|
|
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(
|
|
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 =
|
|
160
|
-
|
|
173
|
+
const ref = lib_2._.get(json, c.circuralTargetPath);
|
|
174
|
+
lib_2._.set(json, c.pathToObj, ref);
|
|
161
175
|
});
|
|
162
|
-
if (
|
|
163
|
-
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 =
|
|
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 (
|
|
194
|
+
if (lib_2._.isArray(json[key])) {
|
|
181
195
|
json[key] = json[key].map(arrObj => {
|
|
182
|
-
const objMapping = getModelsMapping(
|
|
196
|
+
const objMapping = getModelsMapping(lib_3.CLASS.getBy(mapping[key]));
|
|
183
197
|
return setMapping(arrObj, objMapping);
|
|
184
198
|
});
|
|
185
199
|
}
|
|
186
|
-
else if (
|
|
187
|
-
const objMapping = getModelsMapping(
|
|
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(
|
|
203
|
-
const input =
|
|
204
|
-
if (!
|
|
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
|
-
|
|
219
|
+
lib_2._.set(json, lodasPath, res);
|
|
207
220
|
}
|
|
208
221
|
});
|
|
209
222
|
if (!mainClassFn) {
|
|
210
223
|
return json;
|
|
211
224
|
}
|
|
212
|
-
return
|
|
225
|
+
return lib_2._.merge(new mainClassFn(), json);
|
|
213
226
|
}
|
|
214
227
|
function DefaultModelWithMapping(defaultModelValues, mapping) {
|
|
215
228
|
return function (target) {
|
|
216
|
-
if (!
|
|
217
|
-
target[
|
|
229
|
+
if (!lib_2._.isArray(target[lib_3.SYMBOL.MODELS_MAPPING])) {
|
|
230
|
+
target[lib_3.SYMBOL.MODELS_MAPPING] = [];
|
|
218
231
|
}
|
|
219
|
-
target[
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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 (
|
|
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 (
|
|
249
|
+
if (lib_2._.isObject(defaultModelValues)) {
|
|
236
250
|
const toMerge = {};
|
|
237
|
-
const describedTarget =
|
|
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[
|
|
257
|
-
const propsToOmmit = Object
|
|
258
|
-
.
|
|
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
|
-
|
|
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
|
};
|