angular-base-lib 17.0.1 → 17.0.3
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 +258 -14
- package/esm2022/lib/auth/base-auth.service.mjs +47 -0
- package/esm2022/lib/auth/guards/index.mjs +3 -0
- package/esm2022/lib/auth/guards/logged-in.guard.mjs +14 -0
- package/esm2022/lib/auth/guards/logged-out.guard.mjs +14 -0
- package/esm2022/lib/auth/index.mjs +4 -0
- package/esm2022/lib/auth/models/base-auth-state.mjs +2 -0
- package/esm2022/lib/auth/models/index.mjs +4 -0
- package/esm2022/lib/auth/models/logged-in-auth-state.mjs +7 -0
- package/esm2022/lib/auth/models/login-state.type.mjs +2 -0
- package/esm2022/lib/auth/models/not-logged-in-auth-state.mjs +7 -0
- package/esm2022/lib/auth/models/pending-auth-state.mjs +7 -0
- package/esm2022/lib/dao/converted-http-base-dao.mjs +37 -0
- package/esm2022/lib/dao/converted-promise-http-base-dao.mjs +37 -0
- package/esm2022/lib/dao/converter.mjs +3 -0
- package/esm2022/lib/dao/dao-id.mjs +2 -0
- package/esm2022/lib/dao/http-base-dao-options.mjs +4 -0
- package/esm2022/lib/dao/http-base-dao.mjs +22 -0
- package/esm2022/lib/dao/index.mjs +8 -0
- package/esm2022/lib/dao/interfaces/identifiable.mjs +2 -0
- package/esm2022/lib/dao/interfaces/index.mjs +2 -0
- package/esm2022/lib/dao/internal/internal-http-base-dao.mjs +44 -0
- package/esm2022/lib/dao/promise-http-base-dao.mjs +23 -0
- package/esm2022/lib/forms/form-util.mjs +48 -4
- package/esm2022/lib/index.mjs +4 -1
- package/esm2022/lib/navigation/back-button.directive.mjs +3 -3
- package/esm2022/lib/util/index.mjs +3 -0
- package/esm2022/lib/util/is-nil.mjs +2 -0
- package/esm2022/lib/util/prepare-optional-string.mjs +8 -0
- package/esm2022/lib/util/remove-nil-values-recursively.mjs +33 -0
- package/fesm2022/angular-base-lib.mjs +339 -6
- package/fesm2022/angular-base-lib.mjs.map +1 -1
- package/lib/auth/base-auth.service.d.ts +24 -0
- package/lib/auth/guards/index.d.ts +2 -0
- package/lib/auth/guards/logged-in.guard.d.ts +2 -0
- package/lib/auth/guards/logged-out.guard.d.ts +2 -0
- package/lib/auth/index.d.ts +3 -0
- package/lib/auth/models/base-auth-state.d.ts +5 -0
- package/lib/auth/models/index.d.ts +5 -0
- package/lib/auth/models/logged-in-auth-state.d.ts +7 -0
- package/lib/auth/models/login-state.type.d.ts +1 -0
- package/lib/auth/models/not-logged-in-auth-state.d.ts +6 -0
- package/lib/auth/models/pending-auth-state.d.ts +6 -0
- package/lib/dao/converted-http-base-dao.d.ts +16 -0
- package/lib/dao/converted-promise-http-base-dao.d.ts +15 -0
- package/lib/dao/converter.d.ts +4 -0
- package/lib/dao/dao-id.d.ts +1 -0
- package/lib/dao/http-base-dao-options.d.ts +6 -0
- package/lib/dao/http-base-dao.d.ts +12 -0
- package/lib/dao/index.d.ts +8 -0
- package/lib/dao/interfaces/identifiable.d.ts +4 -0
- package/lib/dao/interfaces/index.d.ts +1 -0
- package/lib/dao/internal/internal-http-base-dao.d.ts +16 -0
- package/lib/dao/promise-http-base-dao.d.ts +11 -0
- package/lib/forms/form-util.d.ts +3 -1
- package/lib/index.d.ts +3 -0
- package/lib/navigation/back-button.directive.d.ts +1 -1
- package/lib/util/index.d.ts +2 -0
- package/lib/util/is-nil.d.ts +1 -0
- package/lib/util/prepare-optional-string.d.ts +1 -0
- package/lib/util/remove-nil-values-recursively.d.ts +1 -0
- package/package.json +19 -2
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { DEFAULT_OPTIONS } from '../http-base-dao-options';
|
|
4
|
+
export class InternalHttpBaseDao {
|
|
5
|
+
constructor(routeUrl, options = {}) {
|
|
6
|
+
this.http = inject(HttpClient);
|
|
7
|
+
this.routeUrl = routeUrl;
|
|
8
|
+
this.options = {
|
|
9
|
+
...DEFAULT_OPTIONS,
|
|
10
|
+
...options
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
listInternal(customOptions = {}) {
|
|
14
|
+
return this.http.get(this.routeUrl, this.mergeCustomOptions(customOptions));
|
|
15
|
+
}
|
|
16
|
+
createInternal(data, customOptions = {}) {
|
|
17
|
+
if (!data) {
|
|
18
|
+
throw new Error('Entry must exist to be created');
|
|
19
|
+
}
|
|
20
|
+
return this.http.post(this.routeUrl, data, this.mergeCustomOptions(customOptions));
|
|
21
|
+
}
|
|
22
|
+
updateInternal(id, data, customOptions = {}) {
|
|
23
|
+
if (!id) {
|
|
24
|
+
throw new Error('Entry must exist to be updated');
|
|
25
|
+
}
|
|
26
|
+
return this.http.put(this.routeUrl + '/' + id, data, this.mergeCustomOptions(customOptions));
|
|
27
|
+
}
|
|
28
|
+
deleteInternal(id, customOptions = {}) {
|
|
29
|
+
if (!id) {
|
|
30
|
+
throw new Error('Entry must exist to be deleted');
|
|
31
|
+
}
|
|
32
|
+
return this.http.delete(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
|
|
33
|
+
}
|
|
34
|
+
readInternal(id, customOptions = {}) {
|
|
35
|
+
return this.http.get(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
|
|
36
|
+
}
|
|
37
|
+
mergeCustomOptions(customOptions) {
|
|
38
|
+
return {
|
|
39
|
+
...this.options,
|
|
40
|
+
...customOptions
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtaHR0cC1iYXNlLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1iYXNlL3NyYy9saWIvZGFvL2ludGVybmFsL2ludGVybmFsLWh0dHAtYmFzZS1kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQztBQUcvRSxNQUFNLE9BQWdCLG1CQUFtQjtJQUt2QyxZQUFzQixRQUFnQixFQUFFLFVBQThCLEVBQUU7UUFKckQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUszQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxlQUFlO1lBQ2xCLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDO0lBRVMsWUFBWSxDQUFDLGdCQUFvQyxFQUFFO1FBQzNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRVMsY0FBYyxDQUFDLElBQVksRUFBRSxnQkFBb0MsRUFBRTtRQUMzRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRVMsY0FBYyxDQUFDLEVBQVMsRUFBRSxJQUFZLEVBQUUsZ0JBQW9DLEVBQUU7UUFDdEYsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUssSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRVMsY0FBYyxDQUFDLEVBQVMsRUFBRSxnQkFBb0MsRUFBRTtRQUN4RSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVTLFlBQVksQ0FBQyxFQUFTLEVBQUUsZ0JBQW9DLEVBQUU7UUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGFBQWlDO1FBQzFELE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2YsR0FBRyxhQUFhO1NBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX09QVElPTlMsIEh0dHBCYXNlRGFvT3B0aW9ucyB9IGZyb20gJy4uL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5pbXBvcnQgeyBEYW9JZCB9IGZyb20gJy4uL2Rhby1pZCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnRlcm5hbEh0dHBCYXNlRGFvPFRJPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVVcmw6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iocm91dGVVcmw6IHN0cmluZywgb3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnJvdXRlVXJsID0gcm91dGVVcmw7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgbGlzdEludGVybmFsKGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUSVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VElbXT4odGhpcy5yb3V0ZVVybCwgdGhpcy5tZXJnZUN1c3RvbU9wdGlvbnMoY3VzdG9tT3B0aW9ucykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUludGVybmFsKGRhdGE6IG9iamVjdCwgY3VzdG9tT3B0aW9uczogSHR0cEJhc2VEYW9PcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFRJPiB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudHJ5IG11c3QgZXhpc3QgdG8gYmUgY3JlYXRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUST4odGhpcy5yb3V0ZVVybCwgZGF0YSwgdGhpcy5tZXJnZUN1c3RvbU9wdGlvbnMoY3VzdG9tT3B0aW9ucykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsKGlkOiBEYW9JZCwgZGF0YTogb2JqZWN0LCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VEk+IHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudHJ5IG11c3QgZXhpc3QgdG8gYmUgdXBkYXRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFRJPih0aGlzLnJvdXRlVXJsICsgJy8nICsgaWQsIGRhdGEsIHRoaXMubWVyZ2VDdXN0b21PcHRpb25zKGN1c3RvbU9wdGlvbnMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVJbnRlcm5hbChpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUST4ge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50cnkgbXVzdCBleGlzdCB0byBiZSBkZWxldGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFRJPih0aGlzLnJvdXRlVXJsICsgJy8nICsgaWQsIHRoaXMubWVyZ2VDdXN0b21PcHRpb25zKGN1c3RvbU9wdGlvbnMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkSW50ZXJuYWwoaWQ6IERhb0lkLCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VEk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUST4odGhpcy5yb3V0ZVVybCArICcvJyArIGlkLCB0aGlzLm1lcmdlQ3VzdG9tT3B0aW9ucyhjdXN0b21PcHRpb25zKSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tT3B0aW9ucyhjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMpOiBIdHRwQmFzZURhb09wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5jdXN0b21PcHRpb25zXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { firstValueFrom } from 'rxjs';
|
|
2
|
+
import { InternalHttpBaseDao } from './internal/internal-http-base-dao';
|
|
3
|
+
export class PromiseHttpBaseDao extends InternalHttpBaseDao {
|
|
4
|
+
constructor(routeUrl, options = {}) {
|
|
5
|
+
super(routeUrl, options);
|
|
6
|
+
}
|
|
7
|
+
list(customOptions = {}) {
|
|
8
|
+
return firstValueFrom(this.listInternal(customOptions));
|
|
9
|
+
}
|
|
10
|
+
create(data, customOptions = {}) {
|
|
11
|
+
return firstValueFrom(this.createInternal(data, customOptions));
|
|
12
|
+
}
|
|
13
|
+
update(id, data, customOptions = {}) {
|
|
14
|
+
return firstValueFrom(this.updateInternal(id, data, customOptions));
|
|
15
|
+
}
|
|
16
|
+
delete(id, customOptions = {}) {
|
|
17
|
+
return firstValueFrom(this.deleteInternal(id, customOptions));
|
|
18
|
+
}
|
|
19
|
+
read(id, customOptions = {}) {
|
|
20
|
+
return firstValueFrom(this.readInternal(id, customOptions));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS1odHRwLWJhc2UtZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9kYW8vcHJvbWlzZS1odHRwLWJhc2UtZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsTUFBTSxPQUFnQixrQkFBdUIsU0FBUSxtQkFBdUI7SUFDMUUsWUFBc0IsUUFBZ0IsRUFBRSxVQUE4QixFQUFFO1FBQ3RFLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBb0MsRUFBRTtRQUN6QyxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZLEVBQUUsZ0JBQW9DLEVBQUU7UUFDekQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVMsRUFBRSxJQUFZLEVBQUUsZ0JBQW9DLEVBQUU7UUFDcEUsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFTLEVBQUUsZ0JBQW9DLEVBQUU7UUFDdEQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVMsRUFBRSxnQkFBb0MsRUFBRTtRQUNwRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQmFzZURhb09wdGlvbnMgfSBmcm9tICcuL2h0dHAtYmFzZS1kYW8tb3B0aW9ucyc7XG5pbXBvcnQgeyBEYW9JZCB9IGZyb20gJy4vZGFvLWlkJztcbmltcG9ydCB7IEludGVybmFsSHR0cEJhc2VEYW8gfSBmcm9tICcuL2ludGVybmFsL2ludGVybmFsLWh0dHAtYmFzZS1kYW8nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvbWlzZUh0dHBCYXNlRGFvPFRJPiBleHRlbmRzIEludGVybmFsSHR0cEJhc2VEYW88VEk+IHtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJvdXRlVXJsOiBzdHJpbmcsIG9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocm91dGVVcmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGlzdChjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IFByb21pc2U8VElbXT4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmxpc3RJbnRlcm5hbChjdXN0b21PcHRpb25zKSk7XG4gIH1cblxuICBjcmVhdGUoZGF0YTogb2JqZWN0LCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IFByb21pc2U8VEk+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5jcmVhdGVJbnRlcm5hbChkYXRhLCBjdXN0b21PcHRpb25zKSk7XG4gIH1cblxuICB1cGRhdGUoaWQ6IERhb0lkLCBkYXRhOiBvYmplY3QsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUST4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLnVwZGF0ZUludGVybmFsKGlkLCBkYXRhLCBjdXN0b21PcHRpb25zKSk7XG4gIH1cblxuICBkZWxldGUoaWQ6IERhb0lkLCBjdXN0b21PcHRpb25zOiBIdHRwQmFzZURhb09wdGlvbnMgPSB7fSk6IFByb21pc2U8VEk+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5kZWxldGVJbnRlcm5hbChpZCwgY3VzdG9tT3B0aW9ucykpO1xuICB9XG5cbiAgcmVhZChpZDogRGFvSWQsIGN1c3RvbU9wdGlvbnM6IEh0dHBCYXNlRGFvT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUST4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlYWRJbnRlcm5hbChpZCwgY3VzdG9tT3B0aW9ucykpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,53 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { removeNullValuesRecursively } from '../util/remove-nil-values-recursively';
|
|
1
4
|
export class FormUtil {
|
|
2
|
-
static markAllControlsAsTouched(formGroup) {
|
|
5
|
+
static markAllControlsAsTouched(formGroup, recursive = true) {
|
|
3
6
|
Object.values(formGroup.controls).forEach((control) => {
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
if (recursive && control instanceof FormGroup) {
|
|
8
|
+
FormUtil.markAllControlsAsTouched(control);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
control.patchValue(control.value);
|
|
12
|
+
control.markAllAsTouched();
|
|
13
|
+
}
|
|
6
14
|
});
|
|
7
15
|
}
|
|
16
|
+
static getUpdatedFormData(objectToAdd, oldData, newData) {
|
|
17
|
+
for (const newKey in newData) {
|
|
18
|
+
const [, changed] = FormUtil.getDifferenceRecursively(oldData[newKey], newData[newKey]);
|
|
19
|
+
if (changed && newData[newKey]) {
|
|
20
|
+
objectToAdd[newKey] = removeNullValuesRecursively(newData[newKey]);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return objectToAdd;
|
|
24
|
+
}
|
|
25
|
+
static getDifferenceRecursively(oldData, newData) {
|
|
26
|
+
let changed = false;
|
|
27
|
+
let object = {};
|
|
28
|
+
if (typeof newData !== typeof oldData) {
|
|
29
|
+
changed = true;
|
|
30
|
+
object = newData;
|
|
31
|
+
}
|
|
32
|
+
else if (newData && typeof newData === 'object') {
|
|
33
|
+
const allKeys = new Set([...Object.keys(newData), ...Object.keys(oldData)]);
|
|
34
|
+
for (const newKey of allKeys) {
|
|
35
|
+
if (!newData[newKey] && !oldData[newKey]) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
// Check recursively
|
|
39
|
+
const [innerDiff, innerChanged] = FormUtil.getDifferenceRecursively(oldData[newKey], newData[newKey]);
|
|
40
|
+
if (innerChanged) {
|
|
41
|
+
changed = true;
|
|
42
|
+
object[newKey] = innerDiff;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (newData !== oldData) {
|
|
47
|
+
changed = true;
|
|
48
|
+
object = newData;
|
|
49
|
+
}
|
|
50
|
+
return [object, changed];
|
|
51
|
+
}
|
|
8
52
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9mb3Jtcy9mb3JtLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFcEYsTUFBTSxPQUFPLFFBQVE7SUFDbkIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQW9CLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ3JFLElBQUksU0FBUyxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBZ0IsRUFBRSxPQUFZLEVBQUUsT0FBWTtRQUNwRSxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQVksRUFBRSxPQUFZO1FBQ3hELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFFckIsSUFBSSxPQUFPLE9BQU8sS0FBSyxPQUFPLE9BQU8sRUFBRTtZQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTSxHQUFHLE9BQU8sQ0FBQztTQUNsQjthQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUN4QyxTQUFTO2lCQUNWO2dCQUVELG9CQUFvQjtnQkFDcEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLFlBQVksRUFBRTtvQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDZixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO2lCQUM1QjthQUNGO1NBQ0Y7YUFBTSxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7WUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLE1BQU0sR0FBRyxPQUFPLENBQUM7U0FDbEI7UUFFRCxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgcmVtb3ZlTnVsbFZhbHVlc1JlY3Vyc2l2ZWx5IH0gZnJvbSAnLi4vdXRpbC9yZW1vdmUtbmlsLXZhbHVlcy1yZWN1cnNpdmVseSc7XG5cbmV4cG9ydCBjbGFzcyBGb3JtVXRpbCB7XG4gIHN0YXRpYyBtYXJrQWxsQ29udHJvbHNBc1RvdWNoZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHJlY3Vyc2l2ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAocmVjdXJzaXZlICYmIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgRm9ybVV0aWwubWFya0FsbENvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2wpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBjb250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRVcGRhdGVkRm9ybURhdGEob2JqZWN0VG9BZGQ6IGFueSwgb2xkRGF0YTogYW55LCBuZXdEYXRhOiBhbnkpOiBhbnkge1xuICAgIGZvciAoY29uc3QgbmV3S2V5IGluIG5ld0RhdGEpIHtcbiAgICAgIGNvbnN0IFssIGNoYW5nZWRdID0gRm9ybVV0aWwuZ2V0RGlmZmVyZW5jZVJlY3Vyc2l2ZWx5KG9sZERhdGFbbmV3S2V5XSwgbmV3RGF0YVtuZXdLZXldKTtcbiAgICAgIGlmIChjaGFuZ2VkICYmIG5ld0RhdGFbbmV3S2V5XSkge1xuICAgICAgICBvYmplY3RUb0FkZFtuZXdLZXldID0gcmVtb3ZlTnVsbFZhbHVlc1JlY3Vyc2l2ZWx5KG5ld0RhdGFbbmV3S2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RUb0FkZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXREaWZmZXJlbmNlUmVjdXJzaXZlbHkob2xkRGF0YTogYW55LCBuZXdEYXRhOiBhbnkpOiBbYW55LCBib29sZWFuXSB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgb2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgbmV3RGF0YSAhPT0gdHlwZW9mIG9sZERhdGEpIHtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgb2JqZWN0ID0gbmV3RGF0YTtcbiAgICB9IGVsc2UgaWYgKG5ld0RhdGEgJiYgdHlwZW9mIG5ld0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBhbGxLZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMobmV3RGF0YSksIC4uLk9iamVjdC5rZXlzKG9sZERhdGEpXSk7XG4gICAgICBmb3IgKGNvbnN0IG5ld0tleSBvZiBhbGxLZXlzKSB7XG4gICAgICAgIGlmICghbmV3RGF0YVtuZXdLZXldICYmICFvbGREYXRhW25ld0tleV0pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIHJlY3Vyc2l2ZWx5XG4gICAgICAgIGNvbnN0IFtpbm5lckRpZmYsIGlubmVyQ2hhbmdlZF0gPSBGb3JtVXRpbC5nZXREaWZmZXJlbmNlUmVjdXJzaXZlbHkob2xkRGF0YVtuZXdLZXldLCBuZXdEYXRhW25ld0tleV0pO1xuICAgICAgICBpZiAoaW5uZXJDaGFuZ2VkKSB7XG4gICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgb2JqZWN0W25ld0tleV0gPSBpbm5lckRpZmY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5ld0RhdGEgIT09IG9sZERhdGEpIHtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgb2JqZWN0ID0gbmV3RGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gW29iamVjdCwgY2hhbmdlZF07XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/index.mjs
CHANGED
|
@@ -2,4 +2,7 @@ export * from './model-component';
|
|
|
2
2
|
export * from './navigation';
|
|
3
3
|
export * from './forms';
|
|
4
4
|
export * from './types';
|
|
5
|
-
|
|
5
|
+
export * from './util';
|
|
6
|
+
export * from './auth';
|
|
7
|
+
export * from './dao';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsLWNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9kYW8nO1xuIl19
|
|
@@ -9,16 +9,16 @@ export class BackButtonDirective {
|
|
|
9
9
|
this.navigation.back();
|
|
10
10
|
}
|
|
11
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: BackButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
12
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: BackButtonDirective, isStandalone: true, selector: "[
|
|
12
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: BackButtonDirective, isStandalone: true, selector: "[ngLibBackButton]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
|
|
13
13
|
}
|
|
14
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: BackButtonDirective, decorators: [{
|
|
15
15
|
type: Directive,
|
|
16
16
|
args: [{
|
|
17
|
-
selector: '[
|
|
17
|
+
selector: '[ngLibBackButton]',
|
|
18
18
|
standalone: true
|
|
19
19
|
}]
|
|
20
20
|
}], propDecorators: { onClick: [{
|
|
21
21
|
type: HostListener,
|
|
22
22
|
args: ['click']
|
|
23
23
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9uYXZpZ2F0aW9uL2JhY2stYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFLbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBTXpEO0lBSEMsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FOVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBS0MsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nTGliQmFja0J1dHRvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJhY2tCdXR0b25EaXJlY3RpdmUge1xuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRpb24uYmFjaygpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { prepareOptionalString } from './prepare-optional-string';
|
|
2
|
+
export { isNil } from './is-nil';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHByZXBhcmVPcHRpb25hbFN0cmluZyB9IGZyb20gJy4vcHJlcGFyZS1vcHRpb25hbC1zdHJpbmcnO1xuZXhwb3J0IHsgaXNOaWwgfSBmcm9tICcuL2lzLW5pbCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const isNil = (obj) => obj === null || obj === undefined;
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbmlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi91dGlsL2lzLW5pbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFZLEVBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc05pbCA9IChvYmo6IHVua25vd24pOiBib29sZWFuID0+IG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZDtcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const prepareOptionalString = (value) => {
|
|
2
|
+
if (value === null || value === '') {
|
|
3
|
+
// eslint-disable-next-line no-undefined
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
return value;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1vcHRpb25hbC1zdHJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL3V0aWwvcHJlcGFyZS1vcHRpb25hbC1zdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFnQyxFQUFzQixFQUFFO0lBQzVGLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2xDLHdDQUF3QztRQUN4QyxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHByZXBhcmVPcHRpb25hbFN0cmluZyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { isNil } from './is-nil';
|
|
3
|
+
export const removeNullValuesRecursively = (object) => {
|
|
4
|
+
if (Array.isArray(object)) {
|
|
5
|
+
const newObject = [];
|
|
6
|
+
for (const obj of object) {
|
|
7
|
+
newObject.push(removeNullValuesRecursively(obj));
|
|
8
|
+
}
|
|
9
|
+
return newObject;
|
|
10
|
+
}
|
|
11
|
+
else if (typeof object === 'object') {
|
|
12
|
+
const newObject = {};
|
|
13
|
+
for (const key in object) {
|
|
14
|
+
if (isNil(object[key])) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (typeof object[key] === 'object') {
|
|
18
|
+
const objectToSet = removeNullValuesRecursively(object[key]);
|
|
19
|
+
if (Object.keys(objectToSet)?.length) {
|
|
20
|
+
newObject[key] = objectToSet;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
newObject[key] = object[key];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return newObject;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return object;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLW5pbC12YWx1ZXMtcmVjdXJzaXZlbHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL3V0aWwvcmVtb3ZlLW5pbC12YWx1ZXMtcmVjdXJzaXZlbHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUFXLEVBQU8sRUFBRTtJQUM5RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDekIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sU0FBUyxDQUFDO0tBQ2xCO1NBQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDckMsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN0QixTQUFTO2FBQ1Y7WUFFRCxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDbkMsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUU7b0JBQ3BDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUM7aUJBQzlCO2FBQ0Y7aUJBQU07Z0JBQ0wsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QjtTQUNGO1FBRUQsT0FBTyxTQUFTLENBQUM7S0FDbEI7U0FBTTtRQUNMLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vaXMtbmlsJztcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU51bGxWYWx1ZXNSZWN1cnNpdmVseSA9IChvYmplY3Q6IGFueSk6IGFueSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICBjb25zdCBuZXdPYmplY3QgPSBbXTtcblxuICAgIGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdCkge1xuICAgICAgbmV3T2JqZWN0LnB1c2gocmVtb3ZlTnVsbFZhbHVlc1JlY3Vyc2l2ZWx5KG9iaikpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdPYmplY3Q7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBuZXdPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBpZiAoaXNOaWwob2JqZWN0W2tleV0pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9iamVjdFtrZXldID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBvYmplY3RUb1NldCA9IHJlbW92ZU51bGxWYWx1ZXNSZWN1cnNpdmVseShvYmplY3Rba2V5XSk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUb1NldCk/Lmxlbmd0aCkge1xuICAgICAgICAgIG5ld09iamVjdFtrZXldID0gb2JqZWN0VG9TZXQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld09iamVjdFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld09iamVjdDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG59O1xuIl19
|
|
@@ -3,6 +3,10 @@ import { inject, Injectable, Directive, HostListener } from '@angular/core';
|
|
|
3
3
|
import { Router, NavigationEnd } from '@angular/router';
|
|
4
4
|
import { Location } from '@angular/common';
|
|
5
5
|
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
+
import { FormGroup } from '@angular/forms';
|
|
7
|
+
import { BehaviorSubject, filter, firstValueFrom, map as map$1 } from 'rxjs';
|
|
8
|
+
import { map } from 'rxjs/operators';
|
|
9
|
+
import { HttpClient } from '@angular/common/http';
|
|
6
10
|
|
|
7
11
|
class NavigationService {
|
|
8
12
|
constructor() {
|
|
@@ -161,12 +165,12 @@ class BackButtonDirective {
|
|
|
161
165
|
this.navigation.back();
|
|
162
166
|
}
|
|
163
167
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: BackButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
164
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: BackButtonDirective, isStandalone: true, selector: "[
|
|
168
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: BackButtonDirective, isStandalone: true, selector: "[ngLibBackButton]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
|
|
165
169
|
}
|
|
166
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: BackButtonDirective, decorators: [{
|
|
167
171
|
type: Directive,
|
|
168
172
|
args: [{
|
|
169
|
-
selector: '[
|
|
173
|
+
selector: '[ngLibBackButton]',
|
|
170
174
|
standalone: true
|
|
171
175
|
}]
|
|
172
176
|
}], propDecorators: { onClick: [{
|
|
@@ -174,18 +178,347 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
|
174
178
|
args: ['click']
|
|
175
179
|
}] } });
|
|
176
180
|
|
|
181
|
+
const isNil = (obj) => obj === null || obj === undefined;
|
|
182
|
+
|
|
183
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
184
|
+
const removeNullValuesRecursively = (object) => {
|
|
185
|
+
if (Array.isArray(object)) {
|
|
186
|
+
const newObject = [];
|
|
187
|
+
for (const obj of object) {
|
|
188
|
+
newObject.push(removeNullValuesRecursively(obj));
|
|
189
|
+
}
|
|
190
|
+
return newObject;
|
|
191
|
+
}
|
|
192
|
+
else if (typeof object === 'object') {
|
|
193
|
+
const newObject = {};
|
|
194
|
+
for (const key in object) {
|
|
195
|
+
if (isNil(object[key])) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (typeof object[key] === 'object') {
|
|
199
|
+
const objectToSet = removeNullValuesRecursively(object[key]);
|
|
200
|
+
if (Object.keys(objectToSet)?.length) {
|
|
201
|
+
newObject[key] = objectToSet;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
newObject[key] = object[key];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return newObject;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return object;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
177
216
|
class FormUtil {
|
|
178
|
-
static markAllControlsAsTouched(formGroup) {
|
|
217
|
+
static markAllControlsAsTouched(formGroup, recursive = true) {
|
|
179
218
|
Object.values(formGroup.controls).forEach((control) => {
|
|
180
|
-
|
|
181
|
-
|
|
219
|
+
if (recursive && control instanceof FormGroup) {
|
|
220
|
+
FormUtil.markAllControlsAsTouched(control);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
control.patchValue(control.value);
|
|
224
|
+
control.markAllAsTouched();
|
|
225
|
+
}
|
|
182
226
|
});
|
|
183
227
|
}
|
|
228
|
+
static getUpdatedFormData(objectToAdd, oldData, newData) {
|
|
229
|
+
for (const newKey in newData) {
|
|
230
|
+
const [, changed] = FormUtil.getDifferenceRecursively(oldData[newKey], newData[newKey]);
|
|
231
|
+
if (changed && newData[newKey]) {
|
|
232
|
+
objectToAdd[newKey] = removeNullValuesRecursively(newData[newKey]);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return objectToAdd;
|
|
236
|
+
}
|
|
237
|
+
static getDifferenceRecursively(oldData, newData) {
|
|
238
|
+
let changed = false;
|
|
239
|
+
let object = {};
|
|
240
|
+
if (typeof newData !== typeof oldData) {
|
|
241
|
+
changed = true;
|
|
242
|
+
object = newData;
|
|
243
|
+
}
|
|
244
|
+
else if (newData && typeof newData === 'object') {
|
|
245
|
+
const allKeys = new Set([...Object.keys(newData), ...Object.keys(oldData)]);
|
|
246
|
+
for (const newKey of allKeys) {
|
|
247
|
+
if (!newData[newKey] && !oldData[newKey]) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
// Check recursively
|
|
251
|
+
const [innerDiff, innerChanged] = FormUtil.getDifferenceRecursively(oldData[newKey], newData[newKey]);
|
|
252
|
+
if (innerChanged) {
|
|
253
|
+
changed = true;
|
|
254
|
+
object[newKey] = innerDiff;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (newData !== oldData) {
|
|
259
|
+
changed = true;
|
|
260
|
+
object = newData;
|
|
261
|
+
}
|
|
262
|
+
return [object, changed];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const prepareOptionalString = (value) => {
|
|
267
|
+
if (value === null || value === '') {
|
|
268
|
+
// eslint-disable-next-line no-undefined
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
return value;
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
class PendingAuthState {
|
|
275
|
+
constructor() {
|
|
276
|
+
this.loginState = 'pending';
|
|
277
|
+
this.user = null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
class LoggedInAuthState {
|
|
282
|
+
constructor(user) {
|
|
283
|
+
this.loginState = 'logged-in';
|
|
284
|
+
this.user = user;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
class NotLoggedInAuthState {
|
|
289
|
+
constructor() {
|
|
290
|
+
this.loginState = 'logged-out';
|
|
291
|
+
this.user = null;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
class BaseAuthService {
|
|
296
|
+
get authState$() {
|
|
297
|
+
return this._authState$;
|
|
298
|
+
}
|
|
299
|
+
get loginState$() {
|
|
300
|
+
return this._loginState$;
|
|
301
|
+
}
|
|
302
|
+
get readyLoginState$() {
|
|
303
|
+
return this._readyLoginState$;
|
|
304
|
+
}
|
|
305
|
+
get readyAuthState$() {
|
|
306
|
+
return this._readyAuthState$;
|
|
307
|
+
}
|
|
308
|
+
get user$() {
|
|
309
|
+
return this._user$;
|
|
310
|
+
}
|
|
311
|
+
get readyUser$() {
|
|
312
|
+
return this._readyUser$;
|
|
313
|
+
}
|
|
314
|
+
get isLoggedIn$() {
|
|
315
|
+
return this._isLoggedIn$;
|
|
316
|
+
}
|
|
317
|
+
get loginRoute() {
|
|
318
|
+
return this.defaultLoginRoute;
|
|
319
|
+
}
|
|
320
|
+
constructor() {
|
|
321
|
+
this.authStateSubject = new BehaviorSubject(new PendingAuthState());
|
|
322
|
+
this.defaultLoginRoute = '/auth/login';
|
|
323
|
+
this._authState$ = this.authStateSubject.asObservable();
|
|
324
|
+
this._user$ = this._authState$.pipe(map((elem) => elem.user));
|
|
325
|
+
this._loginState$ = this._authState$.pipe(map((elem) => elem.loginState));
|
|
326
|
+
this._isLoggedIn$ = this._loginState$.pipe(map((state) => state === 'logged-in'));
|
|
327
|
+
this._readyAuthState$ = this._authState$.pipe(filter((elem) => elem.loginState !== 'pending'));
|
|
328
|
+
this._readyLoginState$ = this._readyAuthState$.pipe(map((elem) => elem.loginState));
|
|
329
|
+
this._readyUser$ = this._readyAuthState$.pipe(map((elem) => elem.user));
|
|
330
|
+
}
|
|
331
|
+
userLoggedIn(user) {
|
|
332
|
+
this.authStateSubject.next(new LoggedInAuthState(user));
|
|
333
|
+
}
|
|
334
|
+
userLoggedOut() {
|
|
335
|
+
this.authStateSubject.next(new NotLoggedInAuthState());
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
const loggedInGuardFn = () => {
|
|
340
|
+
const router = inject(Router);
|
|
341
|
+
return inject(BaseAuthService).readyAuthState$.pipe(map((state) => {
|
|
342
|
+
if (state.loginState === 'logged-in') {
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
return router.createUrlTree(['/auth/login']);
|
|
346
|
+
}));
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
const loggedOutGuardFn = () => {
|
|
350
|
+
const router = inject(Router);
|
|
351
|
+
return inject(BaseAuthService).readyLoginState$.pipe(map((state) => {
|
|
352
|
+
if (state !== 'logged-in') {
|
|
353
|
+
return true;
|
|
354
|
+
}
|
|
355
|
+
return router.createUrlTree(['/']);
|
|
356
|
+
}));
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
const DEFAULT_OPTIONS = {
|
|
360
|
+
withCredentials: true,
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
class InternalHttpBaseDao {
|
|
364
|
+
constructor(routeUrl, options = {}) {
|
|
365
|
+
this.http = inject(HttpClient);
|
|
366
|
+
this.routeUrl = routeUrl;
|
|
367
|
+
this.options = {
|
|
368
|
+
...DEFAULT_OPTIONS,
|
|
369
|
+
...options
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
listInternal(customOptions = {}) {
|
|
373
|
+
return this.http.get(this.routeUrl, this.mergeCustomOptions(customOptions));
|
|
374
|
+
}
|
|
375
|
+
createInternal(data, customOptions = {}) {
|
|
376
|
+
if (!data) {
|
|
377
|
+
throw new Error('Entry must exist to be created');
|
|
378
|
+
}
|
|
379
|
+
return this.http.post(this.routeUrl, data, this.mergeCustomOptions(customOptions));
|
|
380
|
+
}
|
|
381
|
+
updateInternal(id, data, customOptions = {}) {
|
|
382
|
+
if (!id) {
|
|
383
|
+
throw new Error('Entry must exist to be updated');
|
|
384
|
+
}
|
|
385
|
+
return this.http.put(this.routeUrl + '/' + id, data, this.mergeCustomOptions(customOptions));
|
|
386
|
+
}
|
|
387
|
+
deleteInternal(id, customOptions = {}) {
|
|
388
|
+
if (!id) {
|
|
389
|
+
throw new Error('Entry must exist to be deleted');
|
|
390
|
+
}
|
|
391
|
+
return this.http.delete(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
|
|
392
|
+
}
|
|
393
|
+
readInternal(id, customOptions = {}) {
|
|
394
|
+
return this.http.get(this.routeUrl + '/' + id, this.mergeCustomOptions(customOptions));
|
|
395
|
+
}
|
|
396
|
+
mergeCustomOptions(customOptions) {
|
|
397
|
+
return {
|
|
398
|
+
...this.options,
|
|
399
|
+
...customOptions
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
class HttpBaseDao extends InternalHttpBaseDao {
|
|
405
|
+
constructor(routeUrl, options = {}) {
|
|
406
|
+
super(routeUrl, options);
|
|
407
|
+
}
|
|
408
|
+
list(customOptions = {}) {
|
|
409
|
+
return this.listInternal(customOptions);
|
|
410
|
+
}
|
|
411
|
+
create(entry, customOptions = {}) {
|
|
412
|
+
return this.createInternal(entry, customOptions);
|
|
413
|
+
}
|
|
414
|
+
update(id, entry, customOptions = {}) {
|
|
415
|
+
return this.updateInternal(id, entry, customOptions);
|
|
416
|
+
}
|
|
417
|
+
delete(id, customOptions = {}) {
|
|
418
|
+
return this.deleteInternal(id, customOptions);
|
|
419
|
+
}
|
|
420
|
+
read(id, customOptions = {}) {
|
|
421
|
+
return this.readInternal(id, customOptions);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
class PromiseHttpBaseDao extends InternalHttpBaseDao {
|
|
426
|
+
constructor(routeUrl, options = {}) {
|
|
427
|
+
super(routeUrl, options);
|
|
428
|
+
}
|
|
429
|
+
list(customOptions = {}) {
|
|
430
|
+
return firstValueFrom(this.listInternal(customOptions));
|
|
431
|
+
}
|
|
432
|
+
create(data, customOptions = {}) {
|
|
433
|
+
return firstValueFrom(this.createInternal(data, customOptions));
|
|
434
|
+
}
|
|
435
|
+
update(id, data, customOptions = {}) {
|
|
436
|
+
return firstValueFrom(this.updateInternal(id, data, customOptions));
|
|
437
|
+
}
|
|
438
|
+
delete(id, customOptions = {}) {
|
|
439
|
+
return firstValueFrom(this.deleteInternal(id, customOptions));
|
|
440
|
+
}
|
|
441
|
+
read(id, customOptions = {}) {
|
|
442
|
+
return firstValueFrom(this.readInternal(id, customOptions));
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
class ConvertedHttpBaseDao extends InternalHttpBaseDao {
|
|
447
|
+
constructor(routeUrl, converter, options = {}) {
|
|
448
|
+
super(routeUrl, options);
|
|
449
|
+
this.converter = converter;
|
|
450
|
+
}
|
|
451
|
+
list(customOptions = {}) {
|
|
452
|
+
return this.listInternal(customOptions).pipe(this.mapServerInterfaceListToModelList);
|
|
453
|
+
}
|
|
454
|
+
create(entry, customOptions = {}) {
|
|
455
|
+
const createData = this.converter.toJson(entry);
|
|
456
|
+
return this.createInternal(createData, customOptions).pipe(this.mapServerInterfaceToModel);
|
|
457
|
+
}
|
|
458
|
+
update(id, entry, customOptions = {}) {
|
|
459
|
+
const updateData = this.converter.toJson(entry);
|
|
460
|
+
return this.updateInternal(id, updateData, customOptions).pipe(this.mapServerInterfaceToModel);
|
|
461
|
+
}
|
|
462
|
+
delete(id, customOptions = {}) {
|
|
463
|
+
return this.deleteInternal(id, customOptions).pipe(this.mapServerInterfaceToModel);
|
|
464
|
+
}
|
|
465
|
+
read(id, customOptions = {}) {
|
|
466
|
+
return this.readInternal(id, customOptions).pipe(this.mapServerInterfaceToModel);
|
|
467
|
+
}
|
|
468
|
+
mapServerInterfaceListToModelList(source$) {
|
|
469
|
+
return source$.pipe(map$1((list) => {
|
|
470
|
+
if (!list?.length) {
|
|
471
|
+
return [];
|
|
472
|
+
}
|
|
473
|
+
return list.map((elem) => this.converter.fromJson(elem));
|
|
474
|
+
}));
|
|
475
|
+
}
|
|
476
|
+
mapServerInterfaceToModel(source$) {
|
|
477
|
+
return source$.pipe(map$1((element) => this.converter.fromJson(element)));
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
class ConvertedPromiseHttpBaseDao extends InternalHttpBaseDao {
|
|
482
|
+
constructor(routeUrl, converter, options = {}) {
|
|
483
|
+
super(routeUrl, options);
|
|
484
|
+
this.converter = converter;
|
|
485
|
+
}
|
|
486
|
+
list(customOptions = {}) {
|
|
487
|
+
return firstValueFrom(this.listInternal(customOptions).pipe(this.mapServerInterfaceListToModelList.bind(this)));
|
|
488
|
+
}
|
|
489
|
+
create(entry, customOptions = {}) {
|
|
490
|
+
const createData = this.converter.toJson(entry);
|
|
491
|
+
return firstValueFrom(this.createInternal(createData, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
|
|
492
|
+
}
|
|
493
|
+
update(id, entry, customOptions = {}) {
|
|
494
|
+
const updateData = this.converter.toJson(entry);
|
|
495
|
+
return firstValueFrom(this.updateInternal(id, updateData, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
|
|
496
|
+
}
|
|
497
|
+
delete(id, customOptions = {}) {
|
|
498
|
+
return firstValueFrom(this.deleteInternal(id, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
|
|
499
|
+
}
|
|
500
|
+
read(id, customOptions = {}) {
|
|
501
|
+
return firstValueFrom(this.readInternal(id, customOptions).pipe(this.mapServerInterfaceToModel.bind(this)));
|
|
502
|
+
}
|
|
503
|
+
mapServerInterfaceListToModelList(source$) {
|
|
504
|
+
return source$.pipe(map$1((list) => {
|
|
505
|
+
if (!list?.length) {
|
|
506
|
+
return [];
|
|
507
|
+
}
|
|
508
|
+
return list.map((elem) => this.converter.fromJson(elem));
|
|
509
|
+
}));
|
|
510
|
+
}
|
|
511
|
+
mapServerInterfaceToModel(source$) {
|
|
512
|
+
return source$.pipe(map$1((element) => this.converter.fromJson(element)));
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
class Converter {
|
|
184
517
|
}
|
|
185
518
|
|
|
186
519
|
/**
|
|
187
520
|
* Generated bundle index. Do not edit.
|
|
188
521
|
*/
|
|
189
522
|
|
|
190
|
-
export { BackButtonDirective, BaseComponent, BaseModelComponent, BaseModelDetailComponent, BaseModelEditComponent, BaseModelListComponent, FormUtil, NavigationService };
|
|
523
|
+
export { BackButtonDirective, BaseAuthService, BaseComponent, BaseModelComponent, BaseModelDetailComponent, BaseModelEditComponent, BaseModelListComponent, ConvertedHttpBaseDao, ConvertedPromiseHttpBaseDao, Converter, DEFAULT_OPTIONS, FormUtil, HttpBaseDao, LoggedInAuthState, NavigationService, NotLoggedInAuthState, PendingAuthState, PromiseHttpBaseDao, isNil, loggedInGuardFn, loggedOutGuardFn, prepareOptionalString };
|
|
191
524
|
//# sourceMappingURL=angular-base-lib.mjs.map
|