ng2-rest 21.0.49 → 21.0.52

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/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/package.json +1 -1
  3. package/browser-prod/fesm2022/ng2-rest-browser-prod.mjs.map +1 -1
  4. package/browser-prod/package.json +1 -1
  5. package/lib/build-info._auto-generated_.d.ts +1 -1
  6. package/lib/build-info._auto-generated_.js +1 -1
  7. package/lib/package.json +1 -1
  8. package/lib-esm/app.d.ts +0 -0
  9. package/lib-esm/app.electron.d.ts +0 -0
  10. package/lib-esm/app.electron.js +82 -0
  11. package/lib-esm/app.electron.js.map +1 -0
  12. package/lib-esm/app.hosts.d.ts +3 -0
  13. package/lib-esm/app.hosts.js +48 -0
  14. package/lib-esm/app.hosts.js.map +1 -0
  15. package/lib-esm/app.js +318 -0
  16. package/lib-esm/app.js.map +1 -0
  17. package/lib-esm/app.vscode.d.ts +0 -0
  18. package/lib-esm/app.vscode.js +47 -0
  19. package/lib-esm/app.vscode.js.map +1 -0
  20. package/lib-esm/cli.d.ts +1 -0
  21. package/lib-esm/cli.js +4 -0
  22. package/lib-esm/cli.js.map +1 -0
  23. package/lib-esm/index.d.ts +1 -0
  24. package/lib-esm/index.js +2 -0
  25. package/lib-esm/index.js.map +1 -0
  26. package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
  27. package/lib-esm/lib/build-info._auto-generated_.js +27 -0
  28. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
  29. package/lib-esm/lib/env/env.angular-node-app.d.ts +66 -0
  30. package/lib-esm/lib/env/env.angular-node-app.js +135 -0
  31. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
  32. package/lib-esm/lib/env/env.docs-webapp.d.ts +66 -0
  33. package/lib-esm/lib/env/env.docs-webapp.js +135 -0
  34. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
  35. package/lib-esm/lib/env/env.electron-app.d.ts +66 -0
  36. package/lib-esm/lib/env/env.electron-app.js +135 -0
  37. package/lib-esm/lib/env/env.electron-app.js.map +1 -0
  38. package/lib-esm/lib/env/env.mobile-app.d.ts +66 -0
  39. package/lib-esm/lib/env/env.mobile-app.js +135 -0
  40. package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
  41. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +66 -0
  42. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +135 -0
  43. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
  44. package/lib-esm/lib/env/env.vscode-plugin.d.ts +66 -0
  45. package/lib-esm/lib/env/env.vscode-plugin.js +135 -0
  46. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
  47. package/lib-esm/lib/env/index.d.ts +6 -0
  48. package/lib-esm/lib/env/index.js +7 -0
  49. package/lib-esm/lib/env/index.js.map +1 -0
  50. package/lib-esm/lib/index._auto-generated_.d.ts +0 -0
  51. package/lib-esm/lib/index._auto-generated_.js +6 -0
  52. package/lib-esm/lib/index._auto-generated_.js.map +1 -0
  53. package/lib-esm/lib/index.d.ts +3 -0
  54. package/lib-esm/lib/index.js +4 -0
  55. package/lib-esm/lib/index.js.map +1 -0
  56. package/lib-esm/lib/new-mapping-decode.test.d.ts +1 -0
  57. package/lib-esm/lib/new-mapping-decode.test.js +119 -0
  58. package/lib-esm/lib/new-mapping-decode.test.js.map +1 -0
  59. package/lib-esm/lib/new-mapping-encode.test.d.ts +1 -0
  60. package/lib-esm/lib/new-mapping-encode.test.js +229 -0
  61. package/lib-esm/lib/new-mapping-encode.test.js.map +1 -0
  62. package/lib-esm/lib/new-mapping.d.ts +55 -0
  63. package/lib-esm/lib/new-mapping.js +314 -0
  64. package/lib-esm/lib/new-mapping.js.map +1 -0
  65. package/lib-esm/lib/new-mapping.test.d.ts +1 -0
  66. package/lib-esm/lib/new-mapping.test.js +7 -0
  67. package/lib-esm/lib/new-mapping.test.js.map +1 -0
  68. package/lib-esm/lib/ng2-rest.d.ts +301 -0
  69. package/lib-esm/lib/ng2-rest.js +998 -0
  70. package/lib-esm/lib/ng2-rest.js.map +1 -0
  71. package/lib-esm/lib/start-cli.d.ts +1 -0
  72. package/lib-esm/lib/start-cli.js +31 -0
  73. package/lib-esm/lib/start-cli.js.map +1 -0
  74. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  75. package/lib-prod/build-info._auto-generated_.js +1 -1
  76. package/lib-prod/new-mapping.js.map +1 -1
  77. package/lib-prod/ng2-rest.js.map +1 -1
  78. package/lib-prod/package.json +1 -1
  79. package/package.json +1 -1
  80. package/src.js +4 -20
  81. package/websql/package.json +1 -1
  82. package/websql-prod/fesm2022/ng2-rest-websql-prod.mjs.map +1 -1
  83. package/websql-prod/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ export * from './env.angular-node-app';
2
+ export * from './env.docs-webapp';
3
+ export * from './env.electron-app';
4
+ export * from './env.mobile-app';
5
+ export * from './env.npm-lib-and-cli-tool';
6
+ export * from './env.vscode-plugin';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
File without changes
@@ -0,0 +1,6 @@
1
+ // @ts-nocheck
2
+ // This file is auto-generated during init process. Do not modify.
3
+ // This is only placeholder.
4
+ // Use property "shouldGenerateAutogenIndexFile: true"
5
+ // in taon.jsonc to enable ts exports auto generation.
6
+ //# sourceMappingURL=index._auto-generated_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index._auto-generated_.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,cAAc;AACd,kEAAkE;AAClE,4BAA4B;AAC5B,uDAAuD;AACvD,uDAAuD"}
@@ -0,0 +1,3 @@
1
+ export * from './ng2-rest';
2
+ export * from './new-mapping';
3
+ export { startCli } from './start-cli';
@@ -0,0 +1,4 @@
1
+ export * from './ng2-rest';
2
+ export * from './new-mapping';
3
+ export { startCli } from './start-cli'; // @backend
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC,CAAC,WAAW"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,119 @@
1
+ import { CLASS } from 'typescript-class-helpers/lib';
2
+ import { DefaultMapping, DefaultModel, decodeMappingForHeaderJson, getMappingHeaderString, } from './new-mapping';
3
+ //#region test models
4
+ let Author = class Author {
5
+ name;
6
+ friend;
7
+ };
8
+ Author = __decorate([
9
+ CLASS.NAME('Author')
10
+ ], Author);
11
+ let AuthorNested = class AuthorNested {
12
+ name;
13
+ friend;
14
+ friendOther;
15
+ };
16
+ AuthorNested = __decorate([
17
+ DefaultMapping(() => ({
18
+ '': AuthorNested,
19
+ friend: AuthorNested,
20
+ friendOther: AuthorNested,
21
+ })),
22
+ CLASS.NAME('AuthorNested')
23
+ ], AuthorNested);
24
+ let DecoratedAuthor = class DecoratedAuthor extends Author {
25
+ };
26
+ DecoratedAuthor = __decorate([
27
+ CLASS.NAME('DecoratedAuthor'),
28
+ DefaultMapping(() => ({
29
+ '': DecoratedAuthor,
30
+ }))
31
+ ], DecoratedAuthor);
32
+ let Book = class Book {
33
+ fat;
34
+ author;
35
+ };
36
+ Book = __decorate([
37
+ CLASS.NAME('Book')
38
+ ], Book);
39
+ let DecoratedBook = class DecoratedBook extends Book {
40
+ };
41
+ DecoratedBook = __decorate([
42
+ CLASS.NAME('DecoratedBook'),
43
+ DefaultMapping(() => ({
44
+ '': Book,
45
+ author: Author,
46
+ }))
47
+ ], DecoratedBook);
48
+ let User = class User {
49
+ age;
50
+ book;
51
+ };
52
+ User = __decorate([
53
+ CLASS.NAME('User')
54
+ ], User);
55
+ let DecoratedUser = class DecoratedUser extends User {
56
+ get agePlusOne() {
57
+ return this.age + 1;
58
+ }
59
+ };
60
+ DecoratedUser = __decorate([
61
+ CLASS.NAME('DecoratedUser'),
62
+ DefaultMapping(() => ({
63
+ '': DecoratedUser,
64
+ book: Book,
65
+ 'book.author': Author,
66
+ })),
67
+ DefaultModel(() => ({
68
+ age: 18,
69
+ 'book.author.name': 'Unknown',
70
+ }))
71
+ ], DecoratedUser);
72
+ //#endregion
73
+ describe('decodeMappingForHeaderJson - nesed object', () => {
74
+ it('should generate mapping header nested recursive object', () => {
75
+ const nested = new AuthorNested();
76
+ nested.friend = nested;
77
+ const newFirend = new AuthorNested();
78
+ nested.friendOther = newFirend;
79
+ newFirend.friend = nested;
80
+ const mapping = decodeMappingForHeaderJson(nested);
81
+ // console.log({ mapping });
82
+ expect(mapping?.['']).toBe(CLASS.getName(AuthorNested));
83
+ expect(mapping?.['friend']).toBe(CLASS.getName(AuthorNested));
84
+ expect(mapping?.['friendOther']).toBe(CLASS.getName(AuthorNested));
85
+ });
86
+ });
87
+ describe('decodeMappingForHeaderJson - single', () => {
88
+ it('should generate mapping header for class', () => {
89
+ const mapping = decodeMappingForHeaderJson(DecoratedUser);
90
+ expect(mapping?.['']).toBe(CLASS.getName(DecoratedUser));
91
+ expect(mapping?.['book']).toBe(CLASS.getName(Book));
92
+ expect(mapping?.['book.author']).toBe(CLASS.getName(Author));
93
+ });
94
+ });
95
+ describe('decodeMappingForHeaderJson - array RLE', () => {
96
+ it('should RLE encode class array', () => {
97
+ const array = [DecoratedUser, DecoratedUser, null, null, Author, null];
98
+ const mapping = decodeMappingForHeaderJson(array);
99
+ expect(mapping?.['[]']).toEqual(['DecoratedUser#2', '#2', 'Author', '']);
100
+ });
101
+ });
102
+ describe('decodeMappingForHeaderJson - array RLE unfied', () => {
103
+ it('should RLE encode class unified array', () => {
104
+ const array = [DecoratedUser, DecoratedUser, null, null, Author, null];
105
+ const mapping = decodeMappingForHeaderJson(array, {
106
+ useFirstArrayItemClassNameForAllElements: true,
107
+ });
108
+ expect(mapping?.['']).toEqual('DecoratedUser');
109
+ });
110
+ });
111
+ describe('getMappingHeaderString', () => {
112
+ it('should stringify mapping', () => {
113
+ const header = getMappingHeaderString(DecoratedUser);
114
+ expect(typeof header).toBe('string');
115
+ const parsed = JSON.parse(header);
116
+ expect(parsed['']).toBe(CLASS.getName(DecoratedUser));
117
+ });
118
+ });
119
+ //# sourceMappingURL=new-mapping-decode.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-mapping-decode.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,229 @@
1
+ import { CLASS } from 'typescript-class-helpers/lib';
2
+ import { DefaultMapping, DefaultModel, encodeMapping, } from './new-mapping';
3
+ //#region test models
4
+ let SpecialClassWithEmptyName = class SpecialClassWithEmptyName {
5
+ name;
6
+ get nameWithPrefix() {
7
+ return `AAA${this.name}`;
8
+ }
9
+ };
10
+ SpecialClassWithEmptyName = __decorate([
11
+ CLASS.NAME('')
12
+ ], SpecialClassWithEmptyName);
13
+ let Author = class Author {
14
+ name;
15
+ };
16
+ Author = __decorate([
17
+ CLASS.NAME('Author')
18
+ ], Author);
19
+ let DecoratedAuthor = class DecoratedAuthor extends Author {
20
+ };
21
+ DecoratedAuthor = __decorate([
22
+ CLASS.NAME('DecoratedAuthor'),
23
+ DefaultMapping(() => ({
24
+ '': Author,
25
+ }))
26
+ ], DecoratedAuthor);
27
+ let Book = class Book {
28
+ fat;
29
+ author;
30
+ };
31
+ Book = __decorate([
32
+ CLASS.NAME('Book')
33
+ ], Book);
34
+ let DecoratedBook = class DecoratedBook extends Book {
35
+ };
36
+ DecoratedBook = __decorate([
37
+ CLASS.NAME('DecoratedBook'),
38
+ DefaultMapping(() => ({
39
+ '': Book,
40
+ author: Author,
41
+ }))
42
+ ], DecoratedBook);
43
+ let User = class User {
44
+ age;
45
+ book;
46
+ };
47
+ User = __decorate([
48
+ CLASS.NAME('User')
49
+ ], User);
50
+ let DecoratedUser = class DecoratedUser extends User {
51
+ get agePlusOne() {
52
+ return this.age + 1;
53
+ }
54
+ };
55
+ DecoratedUser = __decorate([
56
+ CLASS.NAME('DecoratedUser'),
57
+ DefaultMapping(() => ({
58
+ '': DecoratedUser,
59
+ book: Book,
60
+ 'book.author': Author,
61
+ })),
62
+ DefaultModel(() => ({
63
+ age: 18,
64
+ 'book.author.name': 'Unknown',
65
+ }))
66
+ ], DecoratedUser);
67
+ //#endregion
68
+ describe('encodeMapping - basic mapping', () => {
69
+ it('should map root object to class instance', () => {
70
+ const raw = { age: 33 };
71
+ const result = encodeMapping(raw, {
72
+ '': DecoratedUser,
73
+ });
74
+ expect(result).toBeInstanceOf(DecoratedUser);
75
+ expect(result.agePlusOne).toBe(34);
76
+ });
77
+ });
78
+ describe('encodeMapping - empty mapping', () => {
79
+ it('should skip mapping of object', () => {
80
+ const raw = { age: 33 };
81
+ const result = encodeMapping(raw, {
82
+ '': '',
83
+ });
84
+ expect(result).not.toBeInstanceOf(DecoratedUser);
85
+ expect(result.agePlusOne).toBe(undefined);
86
+ });
87
+ it('should skip mapping of object for array', () => {
88
+ const raw = [null, { age: 33 }];
89
+ const result = encodeMapping(raw, {
90
+ '[]': ['', 'DecoratedUser'],
91
+ });
92
+ expect(result[0]).toBeNull();
93
+ expect(result[1]).toBeInstanceOf(DecoratedUser);
94
+ });
95
+ it('should skip mapping empty array ', () => {
96
+ const raw = [null, { age: 33 }];
97
+ const result = encodeMapping(raw, {
98
+ '[]': [],
99
+ });
100
+ expect(result[0]).toBeNull();
101
+ expect(result[1]?.age).toBe(33);
102
+ });
103
+ it('should skip mapping empty array undefined ', () => {
104
+ const raw = [null, { age: 33 }];
105
+ const result = encodeMapping(raw, {
106
+ '[]': undefined,
107
+ });
108
+ expect(result[0]).toBeNull();
109
+ expect(result[1]?.age).toBe(33);
110
+ });
111
+ it('should skip mapping class with empty name ', () => {
112
+ expect(CLASS.getClassNameFromObjInstanceOrClassFn(SpecialClassWithEmptyName)).toBe('');
113
+ const raw = { name: 'anything' };
114
+ const result = encodeMapping(raw, {
115
+ '': SpecialClassWithEmptyName,
116
+ });
117
+ expect(result instanceof SpecialClassWithEmptyName).toBeFalsy();
118
+ expect(result).not.toBeInstanceOf(SpecialClassWithEmptyName);
119
+ expect(result.nameWithPrefix).toBeUndefined();
120
+ });
121
+ });
122
+ describe('encodeMapping - deep mapping', () => {
123
+ it('should map nested object using dot path', () => {
124
+ const raw = {
125
+ age: 20,
126
+ book: {
127
+ fat: true,
128
+ author: {
129
+ name: 'John',
130
+ },
131
+ },
132
+ };
133
+ const result = encodeMapping(raw, {
134
+ '': DecoratedUser,
135
+ book: Book,
136
+ 'book.author': Author,
137
+ });
138
+ expect(result.book).toBeInstanceOf(Book);
139
+ expect(result.book.author).toBeInstanceOf(Author);
140
+ expect(result.book.author.name).toBe('John');
141
+ });
142
+ });
143
+ describe('defaults', () => {
144
+ it('should apply object and path defaults', () => {
145
+ const raw = {};
146
+ const result = encodeMapping(raw, {
147
+ '': DecoratedUser,
148
+ book: Book,
149
+ 'book.author': Author,
150
+ });
151
+ expect(result.age).toBe(18);
152
+ expect(result.book?.author?.name).toBe('Unknown');
153
+ });
154
+ });
155
+ describe('encodeMapping - array header protocol', () => {
156
+ it('should decode RLE header and map array elements', () => {
157
+ const raw = [{ age: 10 }, { age: 20 }, null, { name: 'Author1' }];
158
+ const headerSchema = {
159
+ '[]': ['DecoratedUser#2', '#1', 'Author'],
160
+ };
161
+ const result = encodeMapping(raw, headerSchema);
162
+ expect(result[0]).toBeInstanceOf(DecoratedUser);
163
+ expect(result[1]).toBeInstanceOf(DecoratedUser);
164
+ expect(result[2]).toBeNull();
165
+ expect(result[3]).toBeInstanceOf(Author);
166
+ });
167
+ it('should decode RLE header and map array elements 2', () => {
168
+ const raw = [
169
+ { age: 10 },
170
+ { age: 20 },
171
+ null,
172
+ { name: 'Author1' },
173
+ undefined,
174
+ { age: 20 },
175
+ ];
176
+ const headerSchema = {
177
+ '[]': ['DecoratedUser#2', '#1', 'Author', '', 'DecoratedUser'],
178
+ };
179
+ const result = encodeMapping(raw, headerSchema);
180
+ expect(result[0]).toBeInstanceOf(DecoratedUser);
181
+ expect(result[1]).toBeInstanceOf(DecoratedUser);
182
+ expect(result[2]).toBeNull();
183
+ expect(result[3]).toBeInstanceOf(Author);
184
+ expect(result[4]).toBeUndefined();
185
+ expect(result[5]).toBeInstanceOf(DecoratedUser);
186
+ });
187
+ it('should decode header and map array elements when array is unified', () => {
188
+ const raw = [{ age: 10 }, { age: 20 }];
189
+ const headerSchema = {
190
+ '': 'DecoratedUser',
191
+ };
192
+ const result = encodeMapping(raw, headerSchema);
193
+ expect(result[0]).toBeInstanceOf(DecoratedUser);
194
+ expect(result[1]).toBeInstanceOf(DecoratedUser);
195
+ });
196
+ });
197
+ describe('deep mapping without direct rule on key', () => {
198
+ it('should still recurse and apply deep rules', () => {
199
+ const raw = {
200
+ book: {
201
+ author: {
202
+ name: 'X',
203
+ },
204
+ },
205
+ };
206
+ const result = encodeMapping(raw, {
207
+ '': DecoratedUser,
208
+ 'book.author': Author,
209
+ });
210
+ expect(result.book.author).toBeInstanceOf(Author);
211
+ expect(result.book.author.name).toBe('X');
212
+ });
213
+ it('should still recurse and apply deep rules but with string classnames', () => {
214
+ const raw = {
215
+ book: {
216
+ author: {
217
+ name: 'X',
218
+ },
219
+ },
220
+ };
221
+ const result = encodeMapping(raw, {
222
+ '': 'DecoratedUser',
223
+ 'book.author': 'Author',
224
+ });
225
+ expect(result.book.author).toBeInstanceOf(Author);
226
+ expect(result.book.author.name).toBe('X');
227
+ });
228
+ });
229
+ //# sourceMappingURL=new-mapping-encode.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-mapping-encode.test.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Circ } from 'json10/lib';
2
+ type DeepPartial<T> = {
3
+ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
4
+ };
5
+ export type ModelValue<T> = DeepPartial<T> | Partial<Record<MappingFrom<T>, any>>;
6
+ type Constructor<T = any> = new (...args: any[]) => T;
7
+ type DecrementDepth = [never, 0, 1, 2, 3, 4, 5];
8
+ type MappingFrom<T, Depth extends number = 5> = [Depth] extends [never] ? never : {
9
+ [K in keyof T & string]: T[K] extends Primitive ? K : T[K] extends Array<infer U> ? K | `${K}.${MappingFrom<U, DecrementDepth[Depth]>}` : K | `${K}.${MappingFrom<T[K], DecrementDepth[Depth]>}`;
10
+ }[keyof T & string];
11
+ /**
12
+ * Mapping schema that can be set from decorator
13
+ *
14
+ * @DefaultMapping(() => ({
15
+ * '': User,
16
+ * 'book': Book,
17
+ * 'book.author': Author,
18
+ * }))
19
+ * class User { }
20
+ *
21
+ */
22
+ export type EncodeSchema<T = any> = {
23
+ ''?: Constructor<T>;
24
+ } & {
25
+ [K in MappingFrom<T>]?: Constructor<any> | [Constructor<any>];
26
+ };
27
+ /**
28
+ * Mapping schema returned or sended inside http headers
29
+ */
30
+ export type EncodeSchemaString<T = any> = {
31
+ ''?: string;
32
+ '[]'?: string[];
33
+ } & {
34
+ [K in MappingFrom<T>]?: string | string[];
35
+ };
36
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined | Date | Function;
37
+ export declare function DefaultMapping<T>(mapping?: () => EncodeSchema<T>): (target: Constructor<T>) => void;
38
+ export declare function DefaultModel<T>(defaults?: () => ModelValue<T>): (target: Constructor<T>) => void;
39
+ export declare function getDefaultModel<T>(instanceOrClass: T | Constructor<T>): ModelValue<T> | undefined;
40
+ export declare function getDefaultMappingSingleObjOrClass<T>(instanceOrClass: T | Constructor<T>): EncodeSchema<T> | undefined;
41
+ /**
42
+ * This will be send in request header to later restore class mapping
43
+ */
44
+ export declare function getMappingHeaderString<T = any>(instanceOrClass: T | Constructor<T> | (T | Constructor<T>)[]): string;
45
+ /**
46
+ *
47
+ * @param instanceOrClass class instance or class object
48
+ * OR array of class instancess or class objects
49
+ * @returns Mapping object ready to be JSON.stringify
50
+ */
51
+ export declare function decodeMappingForHeaderJson<T>(instanceOrClass: T | Constructor<T> | (T | Constructor<T>)[], options?: {
52
+ useFirstArrayItemClassNameForAllElements?: boolean;
53
+ }): EncodeSchemaString<T>;
54
+ export declare const encodeMapping: <T>(input: any, schema: EncodeSchema | EncodeSchemaString, circular?: Circ[]) => T;
55
+ export {};