ngx-deep-equals-pure 1.0.0 → 2.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.
@@ -1,18 +1,18 @@
1
- import { NgModule } from '@angular/core';
2
- import { NgxDeepEqualsPureService } from './ngx-deep-equals-pure.service';
3
- import * as i0 from "@angular/core";
4
- export class NgxDeepEqualsPureModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: NgxDeepEqualsPureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.2", ngImport: i0, type: NgxDeepEqualsPureModule }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: NgxDeepEqualsPureModule, providers: [NgxDeepEqualsPureService] }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.2", ngImport: i0, type: NgxDeepEqualsPureModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- declarations: [],
13
- imports: [],
14
- exports: [],
15
- providers: [NgxDeepEqualsPureService]
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZXAtZXF1YWxzLXB1cmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRlZXAtZXF1YWxzLXB1cmUvc3JjL2xpYi9uZ3gtZGVlcC1lcXVhbHMtcHVyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLHVCQUF1QjtxSEFBdkIsdUJBQXVCO3NIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixhQUZ2QixDQUFDLHdCQUF3QixDQUFDOztrR0FFMUIsdUJBQXVCO2tCQU5uQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4RGVlcEVxdWFsc1B1cmVTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtZGVlcC1lcXVhbHMtcHVyZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtdLFxuICBwcm92aWRlcnM6IFtOZ3hEZWVwRXF1YWxzUHVyZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neERlZXBFcXVhbHNQdXJlTW9kdWxlIHsgfVxuIl19
1
+ import { NgModule } from '@angular/core';
2
+ import { NgxDeepEqualsPureService } from './ngx-deep-equals-pure.service';
3
+ import * as i0 from "@angular/core";
4
+ export class NgxDeepEqualsPureModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgxDeepEqualsPureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgxDeepEqualsPureModule }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgxDeepEqualsPureModule, providers: [NgxDeepEqualsPureService] }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgxDeepEqualsPureModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [],
13
+ imports: [],
14
+ exports: [],
15
+ providers: [NgxDeepEqualsPureService]
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZXAtZXF1YWxzLXB1cmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRlZXAtZXF1YWxzLXB1cmUvc3JjL2xpYi9uZ3gtZGVlcC1lcXVhbHMtcHVyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLHVCQUF1QjtxSEFBdkIsdUJBQXVCO3NIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixhQUZ2QixDQUFDLHdCQUF3QixDQUFDOztrR0FFMUIsdUJBQXVCO2tCQU5uQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hEZWVwRXF1YWxzUHVyZVNlcnZpY2UgfSBmcm9tICcuL25neC1kZWVwLWVxdWFscy1wdXJlLnNlcnZpY2UnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIGV4cG9ydHM6IFtdLFxyXG4gIHByb3ZpZGVyczogW05neERlZXBFcXVhbHNQdXJlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neERlZXBFcXVhbHNQdXJlTW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,177 +1,177 @@
1
- export class NgxDeepEqualsPureService {
2
- constructor() { }
3
- deepEquals(firstObject, secondObject) {
4
- if (firstObject === null && secondObject !== null) {
5
- return false;
6
- }
7
- else if (secondObject === null && firstObject !== null) {
8
- return false;
9
- }
10
- else if (Array.isArray(firstObject) === true) {
11
- if (Array.isArray(secondObject) === false) {
12
- return false;
13
- }
14
- else if (firstObject.length !== secondObject.length) {
15
- return false;
16
- }
17
- else {
18
- const firstArrays = new Set();
19
- const firstObjects = new Set();
20
- const firstValues = new Set();
21
- const firstFunctions = new Set();
22
- for (const value of firstObject) {
23
- if (Array.isArray(value) === true) {
24
- firstArrays.add(value);
25
- }
26
- else if (typeof value === 'object') {
27
- firstObjects.add(value);
28
- }
29
- else if (typeof value === 'function') {
30
- firstFunctions.add(JSON.stringify('' + value));
31
- }
32
- else {
33
- firstValues.add(value);
34
- }
35
- }
36
- const secondArrays = new Set();
37
- const secondObjects = new Set();
38
- const secondValues = new Set();
39
- const secondFunctions = new Set();
40
- for (const value of secondObject) {
41
- if (Array.isArray(value) === true) {
42
- secondArrays.add(value);
43
- }
44
- else if (typeof value === 'object') {
45
- secondObjects.add(value);
46
- }
47
- else if (typeof value === 'function') {
48
- secondFunctions.add(JSON.stringify('' + value));
49
- }
50
- else {
51
- secondValues.add(value);
52
- }
53
- }
54
- if (firstValues.size !== secondValues.size) {
55
- return false;
56
- }
57
- else {
58
- let match = true;
59
- for (const value of firstValues) {
60
- if (secondValues.has(value) === false) {
61
- match = false;
62
- break;
63
- }
64
- }
65
- if (match === false) {
66
- return false;
67
- }
68
- else if (firstObjects.size === secondObjects.size) {
69
- match = true;
70
- for (const value of firstObjects) {
71
- let hasMatch = false;
72
- for (const secondValue of secondObjects) {
73
- if (this.deepEquals(value, secondValue) === true) {
74
- hasMatch = true;
75
- break;
76
- }
77
- }
78
- if (hasMatch === false) {
79
- match = false;
80
- break;
81
- }
82
- }
83
- if (match === false) {
84
- return false;
85
- }
86
- else if (firstArrays.size === secondArrays.size) {
87
- match = true;
88
- for (const value of firstArrays) {
89
- let hasMatch = false;
90
- for (const secondValue of secondArrays) {
91
- if (this.deepEquals(value, secondValue) === true) {
92
- hasMatch = true;
93
- break;
94
- }
95
- }
96
- if (hasMatch === false) {
97
- match = false;
98
- break;
99
- }
100
- }
101
- if (match === false) {
102
- return false;
103
- }
104
- else if (firstFunctions.size === secondFunctions.size) {
105
- match = true;
106
- for (const value of firstFunctions) {
107
- if (secondFunctions.has(value) === false) {
108
- match = false;
109
- break;
110
- }
111
- }
112
- if (match === false) {
113
- return false;
114
- }
115
- else {
116
- return true;
117
- }
118
- }
119
- else {
120
- return false;
121
- }
122
- }
123
- else {
124
- return false;
125
- }
126
- }
127
- else {
128
- return false;
129
- }
130
- }
131
- }
132
- }
133
- else if (typeof firstObject === 'object' && firstObject !== null) {
134
- if (typeof secondObject !== 'object') {
135
- return false;
136
- }
137
- else {
138
- let match = true;
139
- if (Object.keys(firstObject).length === Object.keys(secondObject).length) {
140
- for (const [key, value] of Object.entries(firstObject)) {
141
- const secondValue = secondObject[key];
142
- match = this.deepEquals(value, secondValue);
143
- if (match === false) {
144
- break;
145
- }
146
- }
147
- }
148
- else {
149
- match = false;
150
- }
151
- return match;
152
- }
153
- }
154
- else {
155
- if (Array.isArray(secondObject) === true) {
156
- return false;
157
- }
158
- else if (typeof secondObject === 'object' && secondObject !== null) {
159
- return false;
160
- }
161
- else {
162
- if (typeof firstObject === 'function') {
163
- if (typeof secondObject === 'function') {
164
- return JSON.stringify('' + firstObject) === JSON.stringify('' + secondObject);
165
- }
166
- else {
167
- return false;
168
- }
169
- }
170
- else {
171
- return JSON.stringify(firstObject) === JSON.stringify(secondObject);
172
- }
173
- }
174
- }
175
- }
176
- }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZXAtZXF1YWxzLXB1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kZWVwLWVxdWFscy1wdXJlL3NyYy9saWIvbmd4LWRlZXAtZXF1YWxzLXB1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLGdCQUFnQixDQUFDO0lBRVYsVUFBVSxDQUFDLFdBQWdCLEVBQUUsWUFBaUI7UUFDbkQsSUFBSSxXQUFXLEtBQUssSUFBSSxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDakQsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQ3hELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzlDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3pDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JELE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0wsTUFBTSxXQUFXLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDN0MsTUFBTSxZQUFZLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDOUMsTUFBTSxXQUFXLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDN0MsTUFBTSxjQUFjLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFFaEQsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7b0JBQy9CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JB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ckU7YUFDRjtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE5neERlZXBFcXVhbHNQdXJlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBwdWJsaWMgZGVlcEVxdWFscyhmaXJzdE9iamVjdDogYW55LCBzZWNvbmRPYmplY3Q6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaXJzdE9iamVjdCA9PT0gbnVsbCAmJiBzZWNvbmRPYmplY3QgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNlY29uZE9iamVjdCA9PT0gbnVsbCAmJiBmaXJzdE9iamVjdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaXJzdE9iamVjdCkgPT09IHRydWUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlY29uZE9iamVjdCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoZmlyc3RPYmplY3QubGVuZ3RoICE9PSBzZWNvbmRPYmplY3QubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QXJyYXlzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xuICAgICAgICBjb25zdCBmaXJzdE9iamVjdHM6IFNldDxhbnk+ID0gbmV3IFNldDxhbnk+KCk7XG4gICAgICAgIGNvbnN0IGZpcnN0VmFsdWVzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xuICAgICAgICBjb25zdCBmaXJzdEZ1bmN0aW9uczogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGZpcnN0T2JqZWN0KSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpID09PSB0cnVlKSB7XG4gICAgICAgICAgICBmaXJzdEFycmF5cy5hZGQodmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZmlyc3RPYmplY3RzLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGZpcnN0RnVuY3Rpb25zLmFkZChKU09OLnN0cmluZ2lmeSgnJyArIHZhbHVlKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpcnN0VmFsdWVzLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2Vjb25kQXJyYXlzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xuICAgICAgICBjb25zdCBzZWNvbmRPYmplY3RzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xuICAgICAgICBjb25zdCBzZWNvbmRWYWx1ZXM6IFNldDxhbnk+ID0gbmV3IFNldDxhbnk+KCk7XG4gICAgICAgIGNvbnN0IHNlY29uZEZ1bmN0aW9uczogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHNlY29uZE9iamVjdCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2Vjb25kQXJyYXlzLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBzZWNvbmRPYmplY3RzLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHNlY29uZEZ1bmN0aW9ucy5hZGQoSlNPTi5zdHJpbmdpZnkoJycgKyB2YWx1ZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWNvbmRWYWx1ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlyc3RWYWx1ZXMuc2l6ZSAhPT0gc2Vjb25kVmFsdWVzLnNpemUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IG1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGZpcnN0VmFsdWVzKSB7XG4gICAgICAgICAgICBpZiAoc2Vjb25kVmFsdWVzLmhhcyh2YWx1ZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0T2JqZWN0cy5zaXplID09PSBzZWNvbmRPYmplY3RzLnNpemUpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZmlyc3RPYmplY3RzKSB7XG4gICAgICAgICAgICAgIGxldCBoYXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY29uZFZhbHVlIG9mIHNlY29uZE9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWVwRXF1YWxzKHZhbHVlLCBzZWNvbmRWYWx1ZSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIGhhc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChoYXNNYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdEFycmF5cy5zaXplID09PSBzZWNvbmRBcnJheXMuc2l6ZSkge1xuICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZmlyc3RBcnJheXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgaGFzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY29uZFZhbHVlIG9mIHNlY29uZEFycmF5cykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVlcEVxdWFscyh2YWx1ZSwgc2Vjb25kVmFsdWUpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc01hdGNoID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3RGdW5jdGlvbnMuc2l6ZSA9PT0gc2Vjb25kRnVuY3Rpb25zLnNpemUpIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaXJzdEZ1bmN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgaWYgKHNlY29uZEZ1bmN0aW9ucy5oYXModmFsdWUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpcnN0T2JqZWN0ID09PSAnb2JqZWN0JyAmJiBmaXJzdE9iamVjdCAhPT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiBzZWNvbmRPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHRydWU7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZpcnN0T2JqZWN0KS5sZW5ndGggPT09IE9iamVjdC5rZXlzKHNlY29uZE9iamVjdCkubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlyc3RPYmplY3QpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWNvbmRWYWx1ZSA9IHNlY29uZE9iamVjdFtrZXldO1xuXG4gICAgICAgICAgICBtYXRjaCA9IHRoaXMuZGVlcEVxdWFscyh2YWx1ZSwgc2Vjb25kVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWNvbmRPYmplY3QpID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlY29uZE9iamVjdCA9PT0gJ29iamVjdCcgJiYgc2Vjb25kT2JqZWN0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgZmlyc3RPYmplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHNlY29uZE9iamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KCcnICsgZmlyc3RPYmplY3QpID09PSBKU09OLnN0cmluZ2lmeSgnJyArIHNlY29uZE9iamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZpcnN0T2JqZWN0KSA9PT0gSlNPTi5zdHJpbmdpZnkoc2Vjb25kT2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
1
+ export class NgxDeepEqualsPureService {
2
+ constructor() { }
3
+ deepEquals(firstObject, secondObject) {
4
+ if (firstObject === null && secondObject !== null) {
5
+ return false;
6
+ }
7
+ else if (secondObject === null && firstObject !== null) {
8
+ return false;
9
+ }
10
+ else if (Array.isArray(firstObject) === true) {
11
+ if (Array.isArray(secondObject) === false) {
12
+ return false;
13
+ }
14
+ else if (firstObject.length !== secondObject.length) {
15
+ return false;
16
+ }
17
+ else {
18
+ const firstArrays = new Set();
19
+ const firstObjects = new Set();
20
+ const firstValues = new Set();
21
+ const firstFunctions = new Set();
22
+ for (const value of firstObject) {
23
+ if (Array.isArray(value) === true) {
24
+ firstArrays.add(value);
25
+ }
26
+ else if (typeof value === 'object') {
27
+ firstObjects.add(value);
28
+ }
29
+ else if (typeof value === 'function') {
30
+ firstFunctions.add(JSON.stringify('' + value));
31
+ }
32
+ else {
33
+ firstValues.add(value);
34
+ }
35
+ }
36
+ const secondArrays = new Set();
37
+ const secondObjects = new Set();
38
+ const secondValues = new Set();
39
+ const secondFunctions = new Set();
40
+ for (const value of secondObject) {
41
+ if (Array.isArray(value) === true) {
42
+ secondArrays.add(value);
43
+ }
44
+ else if (typeof value === 'object') {
45
+ secondObjects.add(value);
46
+ }
47
+ else if (typeof value === 'function') {
48
+ secondFunctions.add(JSON.stringify('' + value));
49
+ }
50
+ else {
51
+ secondValues.add(value);
52
+ }
53
+ }
54
+ if (firstValues.size !== secondValues.size) {
55
+ return false;
56
+ }
57
+ else {
58
+ let match = true;
59
+ for (const value of firstValues) {
60
+ if (secondValues.has(value) === false) {
61
+ match = false;
62
+ break;
63
+ }
64
+ }
65
+ if (match === false) {
66
+ return false;
67
+ }
68
+ else if (firstObjects.size === secondObjects.size) {
69
+ match = true;
70
+ for (const value of firstObjects) {
71
+ let hasMatch = false;
72
+ for (const secondValue of secondObjects) {
73
+ if (this.deepEquals(value, secondValue) === true) {
74
+ hasMatch = true;
75
+ break;
76
+ }
77
+ }
78
+ if (hasMatch === false) {
79
+ match = false;
80
+ break;
81
+ }
82
+ }
83
+ if (match === false) {
84
+ return false;
85
+ }
86
+ else if (firstArrays.size === secondArrays.size) {
87
+ match = true;
88
+ for (const value of firstArrays) {
89
+ let hasMatch = false;
90
+ for (const secondValue of secondArrays) {
91
+ if (this.deepEquals(value, secondValue) === true) {
92
+ hasMatch = true;
93
+ break;
94
+ }
95
+ }
96
+ if (hasMatch === false) {
97
+ match = false;
98
+ break;
99
+ }
100
+ }
101
+ if (match === false) {
102
+ return false;
103
+ }
104
+ else if (firstFunctions.size === secondFunctions.size) {
105
+ match = true;
106
+ for (const value of firstFunctions) {
107
+ if (secondFunctions.has(value) === false) {
108
+ match = false;
109
+ break;
110
+ }
111
+ }
112
+ if (match === false) {
113
+ return false;
114
+ }
115
+ else {
116
+ return true;
117
+ }
118
+ }
119
+ else {
120
+ return false;
121
+ }
122
+ }
123
+ else {
124
+ return false;
125
+ }
126
+ }
127
+ else {
128
+ return false;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ else if (typeof firstObject === 'object' && firstObject !== null) {
134
+ if (typeof secondObject !== 'object') {
135
+ return false;
136
+ }
137
+ else {
138
+ let match = true;
139
+ if (Object.keys(firstObject).length === Object.keys(secondObject).length) {
140
+ for (const [key, value] of Object.entries(firstObject)) {
141
+ const secondValue = secondObject[key];
142
+ match = this.deepEquals(value, secondValue);
143
+ if (match === false) {
144
+ break;
145
+ }
146
+ }
147
+ }
148
+ else {
149
+ match = false;
150
+ }
151
+ return match;
152
+ }
153
+ }
154
+ else {
155
+ if (Array.isArray(secondObject) === true) {
156
+ return false;
157
+ }
158
+ else if (typeof secondObject === 'object' && secondObject !== null) {
159
+ return false;
160
+ }
161
+ else {
162
+ if (typeof firstObject === 'function') {
163
+ if (typeof secondObject === 'function') {
164
+ return JSON.stringify('' + firstObject) === JSON.stringify('' + secondObject);
165
+ }
166
+ else {
167
+ return false;
168
+ }
169
+ }
170
+ else {
171
+ return JSON.stringify(firstObject) === JSON.stringify(secondObject);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZXAtZXF1YWxzLXB1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kZWVwLWVxdWFscy1wdXJlL3NyYy9saWIvbmd4LWRlZXAtZXF1YWxzLXB1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLGdCQUFnQixDQUFDO0lBRVYsVUFBVSxDQUFDLFdBQWdCLEVBQUUsWUFBaUI7UUFDbkQsSUFBSSxXQUFXLEtBQUssSUFBSSxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFBTSxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0RCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFdBQVcsR0FBYSxJQUFJLEdBQUcsRUFBTyxDQUFDO2dCQUM3QyxNQUFNLFlBQVksR0FBYSxJQUFJLEdBQUcsRUFBTyxDQUFDO2dCQUM5QyxNQUFNLFdBQVcsR0FBYSxJQUFJLEdBQUcsRUFBTyxDQUFDO2dCQUM3QyxNQUFNLGNBQWMsR0FBYSxJQUFJLEdBQUcsRUFBTyxDQUFDO2dCQUVoRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ2xDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7eUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDckMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQzt5QkFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUN2QyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ2pELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN6QixDQUFDO2dCQUNILENBQUM7Z0JBRUQsTUFBTSxZQUFZLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDOUMsTUFBTSxhQUFhLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDL0MsTUFBTSxZQUFZLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFDOUMsTUFBTSxlQUFlLEdBQWEsSUFBSSxHQUFHLEVBQU8sQ0FBQztnQkFFakQsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUNsQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixDQUFDO3lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3JDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNCLENBQUM7eUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDdkMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNDLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2pCLEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQzs0QkFDdEMsS0FBSyxHQUFHLEtBQUssQ0FBQzs0QkFDZCxNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDcEIsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQzt5QkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNwRCxLQUFLLEdBQUcsSUFBSSxDQUFDO3dCQUNiLEtBQUssTUFBTSxLQUFLLElBQUksWUFBWSxFQUFFLENBQUM7NEJBQ2pDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQzs0QkFDckIsS0FBSyxNQUFNLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQ0FDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQ0FDakQsUUFBUSxHQUFHLElBQUksQ0FBQztvQ0FDaEIsTUFBTTtnQ0FDUixDQUFDOzRCQUNILENBQUM7NEJBRUQsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7Z0NBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUM7Z0NBQ2QsTUFBTTs0QkFDUixDQUFDO3dCQUNILENBQUM7d0JBRUQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7NEJBQ3BCLE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7NkJBQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDbEQsS0FBSyxHQUFHLElBQUksQ0FBQzs0QkFDYixLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dDQUNoQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0NBQ3JCLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7b0NBQ3ZDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7d0NBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUM7d0NBQ2hCLE1BQU07b0NBQ1IsQ0FBQztnQ0FDSCxDQUFDO2dDQUVELElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO29DQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDO29DQUNkLE1BQU07Z0NBQ1IsQ0FBQzs0QkFDSCxDQUFDOzRCQUVELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO2dDQUNwQixPQUFPLEtBQUssQ0FBQzs0QkFDZixDQUFDO2lDQUFNLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3hELEtBQUssR0FBRyxJQUFJLENBQUM7Z0NBQ2IsS0FBSyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUUsQ0FBQztvQ0FDbkMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO3dDQUN6QyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dDQUNkLE1BQU07b0NBQ1IsQ0FBQztnQ0FDSCxDQUFDO2dDQUVELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO29DQUNwQixPQUFPLEtBQUssQ0FBQztnQ0FDZixDQUFDO3FDQUFNLENBQUM7b0NBQ04sT0FBTyxJQUFJLENBQUM7Z0NBQ2QsQ0FBQzs0QkFDSCxDQUFDO2lDQUFNLENBQUM7Z0NBQ04sT0FBTyxLQUFLLENBQUM7NEJBQ2YsQ0FBQzt3QkFDSCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sT0FBTyxLQUFLLENBQUM7d0JBQ2YsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkUsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUVqQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3pFLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7d0JBQ3ZELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFFdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3dCQUU1QyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQzs0QkFDcEIsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2hCLENBQUM7Z0JBRUQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3JFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLElBQUksT0FBTyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7b0JBQ2hGLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE5neERlZXBFcXVhbHNQdXJlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBkZWVwRXF1YWxzKGZpcnN0T2JqZWN0OiBhbnksIHNlY29uZE9iamVjdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZmlyc3RPYmplY3QgPT09IG51bGwgJiYgc2Vjb25kT2JqZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoc2Vjb25kT2JqZWN0ID09PSBudWxsICYmIGZpcnN0T2JqZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaXJzdE9iamVjdCkgPT09IHRydWUpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2Vjb25kT2JqZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmlyc3RPYmplY3QubGVuZ3RoICE9PSBzZWNvbmRPYmplY3QubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0QXJyYXlzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xyXG4gICAgICAgIGNvbnN0IGZpcnN0T2JqZWN0czogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcclxuICAgICAgICBjb25zdCBmaXJzdFZhbHVlczogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcclxuICAgICAgICBjb25zdCBmaXJzdEZ1bmN0aW9uczogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaXJzdE9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGZpcnN0QXJyYXlzLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgZmlyc3RPYmplY3RzLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBmaXJzdEZ1bmN0aW9ucy5hZGQoSlNPTi5zdHJpbmdpZnkoJycgKyB2YWx1ZSkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlyc3RWYWx1ZXMuYWRkKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNlY29uZEFycmF5czogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcclxuICAgICAgICBjb25zdCBzZWNvbmRPYmplY3RzOiBTZXQ8YW55PiA9IG5ldyBTZXQ8YW55PigpO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZFZhbHVlczogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcclxuICAgICAgICBjb25zdCBzZWNvbmRGdW5jdGlvbnM6IFNldDxhbnk+ID0gbmV3IFNldDxhbnk+KCk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygc2Vjb25kT2JqZWN0KSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgc2Vjb25kQXJyYXlzLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgc2Vjb25kT2JqZWN0cy5hZGQodmFsdWUpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgc2Vjb25kRnVuY3Rpb25zLmFkZChKU09OLnN0cmluZ2lmeSgnJyArIHZhbHVlKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWNvbmRWYWx1ZXMuYWRkKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaXJzdFZhbHVlcy5zaXplICE9PSBzZWNvbmRWYWx1ZXMuc2l6ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaXJzdFZhbHVlcykge1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kVmFsdWVzLmhhcyh2YWx1ZSkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmaXJzdE9iamVjdHMuc2l6ZSA9PT0gc2Vjb25kT2JqZWN0cy5zaXplKSB7XHJcbiAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaXJzdE9iamVjdHMpIHtcclxuICAgICAgICAgICAgICBsZXQgaGFzTWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY29uZFZhbHVlIG9mIHNlY29uZE9iamVjdHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZXBFcXVhbHModmFsdWUsIHNlY29uZFZhbHVlKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICBoYXNNYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGhhc01hdGNoID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG1hdGNoID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdEFycmF5cy5zaXplID09PSBzZWNvbmRBcnJheXMuc2l6ZSkge1xyXG4gICAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGZpcnN0QXJyYXlzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzTWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2Vjb25kVmFsdWUgb2Ygc2Vjb25kQXJyYXlzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZXBFcXVhbHModmFsdWUsIHNlY29uZFZhbHVlKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoYXNNYXRjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAobWF0Y2ggPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdEZ1bmN0aW9ucy5zaXplID09PSBzZWNvbmRGdW5jdGlvbnMuc2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaXJzdEZ1bmN0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoc2Vjb25kRnVuY3Rpb25zLmhhcyh2YWx1ZSkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaXJzdE9iamVjdCA9PT0gJ29iamVjdCcgJiYgZmlyc3RPYmplY3QgIT09IG51bGwpIHtcclxuICAgICAgaWYgKHR5cGVvZiBzZWNvbmRPYmplY3QgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBtYXRjaCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhmaXJzdE9iamVjdCkubGVuZ3RoID09PSBPYmplY3Qua2V5cyhzZWNvbmRPYmplY3QpLmxlbmd0aCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlyc3RPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZFZhbHVlID0gc2Vjb25kT2JqZWN0W2tleV07XHJcblxyXG4gICAgICAgICAgICBtYXRjaCA9IHRoaXMuZGVlcEVxdWFscyh2YWx1ZSwgc2Vjb25kVmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG1hdGNoID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1hdGNoID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlY29uZE9iamVjdCkgPT09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlY29uZE9iamVjdCA9PT0gJ29iamVjdCcgJiYgc2Vjb25kT2JqZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZmlyc3RPYmplY3QgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2Ygc2Vjb25kT2JqZWN0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSgnJyArIGZpcnN0T2JqZWN0KSA9PT0gSlNPTi5zdHJpbmdpZnkoJycgKyBzZWNvbmRPYmplY3QpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZmlyc3RPYmplY3QpID09PSBKU09OLnN0cmluZ2lmeShzZWNvbmRPYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRlZXAtZXF1YWxzLXB1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZGVlcC1lcXVhbHMtcHVyZS9zcmMvbmd4LWRlZXAtZXF1YWxzLXB1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,6 +1,6 @@
1
- /*
2
- * Public API Surface of ngx-deep-equals-pure
3
- */
4
- export * from './lib/ngx-deep-equals-pure.service';
5
- export * from './lib/ngx-deep-equals-pure.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1kZWVwLWVxdWFscy1wdXJlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtZGVlcC1lcXVhbHMtcHVyZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1kZWVwLWVxdWFscy1wdXJlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWRlZXAtZXF1YWxzLXB1cmUubW9kdWxlJztcbiJdfQ==
1
+ /*
2
+ * Public API Surface of ngx-deep-equals-pure
3
+ */
4
+ export * from './lib/ngx-deep-equals-pure.service';
5
+ export * from './lib/ngx-deep-equals-pure.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1kZWVwLWVxdWFscy1wdXJlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1kZWVwLWVxdWFscy1wdXJlXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWRlZXAtZXF1YWxzLXB1cmUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1kZWVwLWVxdWFscy1wdXJlLm1vZHVsZSc7XHJcbiJdfQ==