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.
Files changed (62) hide show
  1. package/README.md +258 -14
  2. package/esm2022/lib/auth/base-auth.service.mjs +47 -0
  3. package/esm2022/lib/auth/guards/index.mjs +3 -0
  4. package/esm2022/lib/auth/guards/logged-in.guard.mjs +14 -0
  5. package/esm2022/lib/auth/guards/logged-out.guard.mjs +14 -0
  6. package/esm2022/lib/auth/index.mjs +4 -0
  7. package/esm2022/lib/auth/models/base-auth-state.mjs +2 -0
  8. package/esm2022/lib/auth/models/index.mjs +4 -0
  9. package/esm2022/lib/auth/models/logged-in-auth-state.mjs +7 -0
  10. package/esm2022/lib/auth/models/login-state.type.mjs +2 -0
  11. package/esm2022/lib/auth/models/not-logged-in-auth-state.mjs +7 -0
  12. package/esm2022/lib/auth/models/pending-auth-state.mjs +7 -0
  13. package/esm2022/lib/dao/converted-http-base-dao.mjs +37 -0
  14. package/esm2022/lib/dao/converted-promise-http-base-dao.mjs +37 -0
  15. package/esm2022/lib/dao/converter.mjs +3 -0
  16. package/esm2022/lib/dao/dao-id.mjs +2 -0
  17. package/esm2022/lib/dao/http-base-dao-options.mjs +4 -0
  18. package/esm2022/lib/dao/http-base-dao.mjs +22 -0
  19. package/esm2022/lib/dao/index.mjs +8 -0
  20. package/esm2022/lib/dao/interfaces/identifiable.mjs +2 -0
  21. package/esm2022/lib/dao/interfaces/index.mjs +2 -0
  22. package/esm2022/lib/dao/internal/internal-http-base-dao.mjs +44 -0
  23. package/esm2022/lib/dao/promise-http-base-dao.mjs +23 -0
  24. package/esm2022/lib/forms/form-util.mjs +48 -4
  25. package/esm2022/lib/index.mjs +4 -1
  26. package/esm2022/lib/navigation/back-button.directive.mjs +3 -3
  27. package/esm2022/lib/util/index.mjs +3 -0
  28. package/esm2022/lib/util/is-nil.mjs +2 -0
  29. package/esm2022/lib/util/prepare-optional-string.mjs +8 -0
  30. package/esm2022/lib/util/remove-nil-values-recursively.mjs +33 -0
  31. package/fesm2022/angular-base-lib.mjs +339 -6
  32. package/fesm2022/angular-base-lib.mjs.map +1 -1
  33. package/lib/auth/base-auth.service.d.ts +24 -0
  34. package/lib/auth/guards/index.d.ts +2 -0
  35. package/lib/auth/guards/logged-in.guard.d.ts +2 -0
  36. package/lib/auth/guards/logged-out.guard.d.ts +2 -0
  37. package/lib/auth/index.d.ts +3 -0
  38. package/lib/auth/models/base-auth-state.d.ts +5 -0
  39. package/lib/auth/models/index.d.ts +5 -0
  40. package/lib/auth/models/logged-in-auth-state.d.ts +7 -0
  41. package/lib/auth/models/login-state.type.d.ts +1 -0
  42. package/lib/auth/models/not-logged-in-auth-state.d.ts +6 -0
  43. package/lib/auth/models/pending-auth-state.d.ts +6 -0
  44. package/lib/dao/converted-http-base-dao.d.ts +16 -0
  45. package/lib/dao/converted-promise-http-base-dao.d.ts +15 -0
  46. package/lib/dao/converter.d.ts +4 -0
  47. package/lib/dao/dao-id.d.ts +1 -0
  48. package/lib/dao/http-base-dao-options.d.ts +6 -0
  49. package/lib/dao/http-base-dao.d.ts +12 -0
  50. package/lib/dao/index.d.ts +8 -0
  51. package/lib/dao/interfaces/identifiable.d.ts +4 -0
  52. package/lib/dao/interfaces/index.d.ts +1 -0
  53. package/lib/dao/internal/internal-http-base-dao.d.ts +16 -0
  54. package/lib/dao/promise-http-base-dao.d.ts +11 -0
  55. package/lib/forms/form-util.d.ts +3 -1
  56. package/lib/index.d.ts +3 -0
  57. package/lib/navigation/back-button.directive.d.ts +1 -1
  58. package/lib/util/index.d.ts +2 -0
  59. package/lib/util/is-nil.d.ts +1 -0
  60. package/lib/util/prepare-optional-string.d.ts +1 -0
  61. package/lib/util/remove-nil-values-recursively.d.ts +1 -0
  62. 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
- control.patchValue(control.value);
5
- control.markAllAsTouched();
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9mb3Jtcy9mb3JtLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFFBQVE7SUFDbkIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQW9CO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUNyRSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVV0aWwge1xuICBzdGF0aWMgbWFya0FsbENvbnRyb2xzQXNUb3VjaGVkKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgY29udHJvbC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9mb3Jtcy9mb3JtLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFcEYsTUFBTSxPQUFPLFFBQVE7SUFDbkIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQW9CLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ3JFLElBQUksU0FBUyxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBZ0IsRUFBRSxPQUFZLEVBQUUsT0FBWTtRQUNwRSxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQVksRUFBRSxPQUFZO1FBQ3hELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFFckIsSUFBSSxPQUFPLE9BQU8sS0FBSyxPQUFPLE9BQU8sRUFBRTtZQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTSxHQUFHLE9BQU8sQ0FBQztTQUNsQjthQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUN4QyxTQUFTO2lCQUNWO2dCQUVELG9CQUFvQjtnQkFDcEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLFlBQVksRUFBRTtvQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDZixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO2lCQUM1QjthQUNGO1NBQ0Y7YUFBTSxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7WUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLE1BQU0sR0FBRyxPQUFPLENBQUM7U0FDbEI7UUFFRCxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgcmVtb3ZlTnVsbFZhbHVlc1JlY3Vyc2l2ZWx5IH0gZnJvbSAnLi4vdXRpbC9yZW1vdmUtbmlsLXZhbHVlcy1yZWN1cnNpdmVseSc7XG5cbmV4cG9ydCBjbGFzcyBGb3JtVXRpbCB7XG4gIHN0YXRpYyBtYXJrQWxsQ29udHJvbHNBc1RvdWNoZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHJlY3Vyc2l2ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAocmVjdXJzaXZlICYmIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgRm9ybVV0aWwubWFya0FsbENvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2wpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBjb250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRVcGRhdGVkRm9ybURhdGEob2JqZWN0VG9BZGQ6IGFueSwgb2xkRGF0YTogYW55LCBuZXdEYXRhOiBhbnkpOiBhbnkge1xuICAgIGZvciAoY29uc3QgbmV3S2V5IGluIG5ld0RhdGEpIHtcbiAgICAgIGNvbnN0IFssIGNoYW5nZWRdID0gRm9ybVV0aWwuZ2V0RGlmZmVyZW5jZVJlY3Vyc2l2ZWx5KG9sZERhdGFbbmV3S2V5XSwgbmV3RGF0YVtuZXdLZXldKTtcbiAgICAgIGlmIChjaGFuZ2VkICYmIG5ld0RhdGFbbmV3S2V5XSkge1xuICAgICAgICBvYmplY3RUb0FkZFtuZXdLZXldID0gcmVtb3ZlTnVsbFZhbHVlc1JlY3Vyc2l2ZWx5KG5ld0RhdGFbbmV3S2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RUb0FkZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXREaWZmZXJlbmNlUmVjdXJzaXZlbHkob2xkRGF0YTogYW55LCBuZXdEYXRhOiBhbnkpOiBbYW55LCBib29sZWFuXSB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgb2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgbmV3RGF0YSAhPT0gdHlwZW9mIG9sZERhdGEpIHtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgb2JqZWN0ID0gbmV3RGF0YTtcbiAgICB9IGVsc2UgaWYgKG5ld0RhdGEgJiYgdHlwZW9mIG5ld0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBhbGxLZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMobmV3RGF0YSksIC4uLk9iamVjdC5rZXlzKG9sZERhdGEpXSk7XG4gICAgICBmb3IgKGNvbnN0IG5ld0tleSBvZiBhbGxLZXlzKSB7XG4gICAgICAgIGlmICghbmV3RGF0YVtuZXdLZXldICYmICFvbGREYXRhW25ld0tleV0pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIHJlY3Vyc2l2ZWx5XG4gICAgICAgIGNvbnN0IFtpbm5lckRpZmYsIGlubmVyQ2hhbmdlZF0gPSBGb3JtVXRpbC5nZXREaWZmZXJlbmNlUmVjdXJzaXZlbHkob2xkRGF0YVtuZXdLZXldLCBuZXdEYXRhW25ld0tleV0pO1xuICAgICAgICBpZiAoaW5uZXJDaGFuZ2VkKSB7XG4gICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgb2JqZWN0W25ld0tleV0gPSBpbm5lckRpZmY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5ld0RhdGEgIT09IG9sZERhdGEpIHtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgb2JqZWN0ID0gbmV3RGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gW29iamVjdCwgY2hhbmdlZF07XG4gIH1cbn1cbiJdfQ==
@@ -2,4 +2,7 @@ export * from './model-component';
2
2
  export * from './navigation';
3
3
  export * from './forms';
4
4
  export * from './types';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYmFzZS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsLWNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
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: "[backButton]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
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: '[backButton]',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWJhc2Uvc3JjL2xpYi9uYXZpZ2F0aW9uL2JhY2stYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFLbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBTXpEO0lBSEMsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FOVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUtDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tiYWNrQnV0dG9uXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQmFja0J1dHRvbkRpcmVjdGl2ZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubmF2aWdhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiJdfQ==
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: "[backButton]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
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: '[backButton]',
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
- control.patchValue(control.value);
181
- control.markAllAsTouched();
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