@acorex/modules 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/auth/README.md +3 -0
- package/auth/index.d.ts +3 -0
- package/auth/lib/account/account.module.d.ts +8 -0
- package/auth/lib/account/app-chooser/app-chooser-list.component.d.ts +11 -0
- package/auth/lib/account/app-chooser/app-chooser-slot.component.d.ts +12 -0
- package/auth/lib/account/app-chooser/app-chooser.component.d.ts +13 -0
- package/auth/lib/account/profile/profile-slot.component.d.ts +16 -0
- package/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +10 -0
- package/auth/lib/account/tenant-chooser/tenant-chooser.component.d.ts +21 -0
- package/auth/lib/auth.config.d.ts +23 -0
- package/auth/lib/auth.module.d.ts +14 -0
- package/auth/lib/auth.routes.d.ts +2 -0
- package/auth/lib/error-handler.d.ts +10 -0
- package/auth/lib/forgot/password/password.component.d.ts +11 -0
- package/auth/lib/forgot/routes.d.ts +3 -0
- package/auth/lib/login/login.module.d.ts +7 -0
- package/auth/lib/login/password/password.component.d.ts +22 -0
- package/auth/lib/register/email/email.component.d.ts +5 -0
- package/auth/lib/register/register.module.d.ts +7 -0
- package/auth/lib/register/result/result.component.d.ts +5 -0
- package/auth/lib/shared/layouts/blank/blank.layout.d.ts +8 -0
- package/auth/lib/shared/layouts/master/master.layout.d.ts +7 -0
- package/auth/lib/shared/services/idle.service.d.ts +17 -0
- package/auth/lib/shared/services/index.d.ts +1 -0
- package/auth/lib/store/auth.effects.d.ts +18 -0
- package/auth/lib/store/index.d.ts +1 -0
- package/auth/lib/two-factor/two-factor-code/two-factor-code.component.d.ts +8 -0
- package/auth/lib/two-factor/two-factor.module.d.ts +7 -0
- package/backend/README.md +4 -0
- package/backend/index.d.ts +2 -0
- package/backend/lib/auth/oidc/application.loader.d.ts +16 -0
- package/backend/lib/auth/oidc/feature.loader.d.ts +5 -0
- package/backend/lib/auth/oidc/index.d.ts +5 -0
- package/backend/lib/auth/oidc/oidc.strategy.d.ts +19 -0
- package/backend/lib/auth/oidc/permission.loader.d.ts +5 -0
- package/backend/lib/auth/oidc/signincallback.component.d.ts +13 -0
- package/backend/lib/auth/oidc/tenant.loader.d.ts +16 -0
- package/backend/lib/auth/oidc/usermanager.service.d.ts +12 -0
- package/backend/lib/auth/userpass/application.loader.d.ts +6 -0
- package/backend/lib/auth/userpass/index.d.ts +4 -0
- package/backend/lib/auth/userpass/permission.loader.d.ts +5 -0
- package/backend/lib/auth/userpass/tenant.loader.d.ts +6 -0
- package/backend/lib/auth/userpass/userpass.strategy.d.ts +12 -0
- package/backend/lib/backend.configs.d.ts +99 -0
- package/backend/lib/backend.module.d.ts +8 -0
- package/backend/lib/data/api/data-provider.d.ts +21 -0
- package/esm2022/acorex-modules.mjs +5 -0
- package/esm2022/auth/acorex-modules-auth.mjs +5 -0
- package/esm2022/auth/index.mjs +4 -0
- package/esm2022/auth/lib/account/account.module.mjs +106 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +31 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +41 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +62 -0
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +56 -0
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +26 -0
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +81 -0
- package/esm2022/auth/lib/auth.config.mjs +22 -0
- package/esm2022/auth/lib/auth.module.mjs +45 -0
- package/esm2022/auth/lib/auth.routes.mjs +38 -0
- package/esm2022/auth/lib/error-handler.mjs +41 -0
- package/esm2022/auth/lib/forgot/password/password.component.mjs +56 -0
- package/esm2022/auth/lib/forgot/routes.mjs +7 -0
- package/esm2022/auth/lib/login/login.module.mjs +53 -0
- package/esm2022/auth/lib/login/password/password.component.mjs +99 -0
- package/esm2022/auth/lib/register/email/email.component.mjs +42 -0
- package/esm2022/auth/lib/register/register.module.mjs +59 -0
- package/esm2022/auth/lib/register/result/result.component.mjs +33 -0
- package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +15 -0
- package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +21 -0
- package/esm2022/auth/lib/shared/services/idle.service.mjs +42 -0
- package/esm2022/auth/lib/shared/services/index.mjs +2 -0
- package/esm2022/auth/lib/store/auth.effects.mjs +90 -0
- package/esm2022/auth/lib/store/index.mjs +3 -0
- package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +37 -0
- package/esm2022/auth/lib/two-factor/two-factor.module.mjs +42 -0
- package/esm2022/backend/acorex-modules-backend.mjs +5 -0
- package/esm2022/backend/index.mjs +3 -0
- package/esm2022/backend/lib/auth/oidc/application.loader.mjs +47 -0
- package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +7 -0
- package/esm2022/backend/lib/auth/oidc/index.mjs +6 -0
- package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +77 -0
- package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +7 -0
- package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +26 -0
- package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +41 -0
- package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +35 -0
- package/esm2022/backend/lib/auth/userpass/application.loader.mjs +30 -0
- package/esm2022/backend/lib/auth/userpass/index.mjs +5 -0
- package/esm2022/backend/lib/auth/userpass/permission.loader.mjs +12 -0
- package/esm2022/backend/lib/auth/userpass/tenant.loader.mjs +26 -0
- package/esm2022/backend/lib/auth/userpass/userpass.strategy.mjs +40 -0
- package/esm2022/backend/lib/backend.configs.mjs +3 -0
- package/esm2022/backend/lib/backend.module.mjs +106 -0
- package/esm2022/backend/lib/data/api/data-provider.mjs +67 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/notification/acorex-modules-notification.mjs +5 -0
- package/esm2022/notification/index.mjs +2 -0
- package/esm2022/notification/lib/notification.module.mjs +16 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs +484 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs +70 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs +18 -0
- package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs +45 -0
- package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs +71 -0
- package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs +37 -0
- package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs +72 -0
- package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs +110 -0
- package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs +77 -0
- package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs +36 -0
- package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs +9 -0
- package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs +84 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs +60 -0
- package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +19 -0
- package/fesm2022/acorex-modules-auth.mjs.map +1 -0
- package/fesm2022/acorex-modules-backend.mjs +488 -0
- package/fesm2022/acorex-modules-backend.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification.mjs +23 -0
- package/fesm2022/acorex-modules-notification.mjs.map +1 -0
- package/fesm2022/acorex-modules.mjs +6 -0
- package/fesm2022/acorex-modules.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/notification/README.md +4 -0
- package/notification/index.d.ts +1 -0
- package/notification/lib/notification.module.d.ts +6 -0
- package/package.json +44 -0
@@ -0,0 +1,488 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { InjectionToken, inject, Injectable, Inject, Injector, Component, NgModule } from '@angular/core';
|
3
|
+
import * as i1$1 from '@acorex/modules/auth';
|
4
|
+
import { AXM_AUTH_CONFIG_TOKEN, AXMAuthModule } from '@acorex/modules/auth';
|
5
|
+
import * as i2$1 from '@acorex/platform/auth';
|
6
|
+
import { AXP_TENANT_LOADER, AXP_APPLICATION_LOADER, AXP_PERMISSION_LOADER, AXP_FEATURE_LOADER, AXPAuthModule } from '@acorex/platform/auth';
|
7
|
+
import { AXPTextLogoConfig, AXPDataProvider } from '@acorex/platform/common';
|
8
|
+
import * as i2 from '@angular/router';
|
9
|
+
import { ROUTES } from '@angular/router';
|
10
|
+
import * as i1 from '@angular/common/http';
|
11
|
+
import { HttpParams } from '@angular/common/http';
|
12
|
+
import { firstValueFrom, map, of, delay } from 'rxjs';
|
13
|
+
import { UserManager, WebStorageStateStore } from 'oidc-client-ts';
|
14
|
+
|
15
|
+
const AXM_BACKEND_CONFIG_TOKEN = new InjectionToken('AXM_BACKEND_CONFIG_TOKEN');
|
16
|
+
|
17
|
+
class AXMBackendDataProvider {
|
18
|
+
constructor(http) {
|
19
|
+
this.http = http;
|
20
|
+
this.configs = inject(AXM_BACKEND_CONFIG_TOKEN);
|
21
|
+
this.mainUrl = this.configs.baseUrl;
|
22
|
+
}
|
23
|
+
insertOne(entity, entityItem) {
|
24
|
+
console.log('inserting....', entity.name, entityItem);
|
25
|
+
const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
|
26
|
+
return firstValueFrom(this.http.post(url, entityItem));
|
27
|
+
}
|
28
|
+
insertMany(entity, entityList) {
|
29
|
+
const promises = entityList.map((entity) => {
|
30
|
+
const url = `${this.mainUrl}/${entity.module}/${entity.name}`;
|
31
|
+
return firstValueFrom(this.http.post(url, entity));
|
32
|
+
});
|
33
|
+
return Promise.all(promises);
|
34
|
+
}
|
35
|
+
getOne(entity, id) {
|
36
|
+
const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
|
37
|
+
return firstValueFrom(this.http.get(url));
|
38
|
+
}
|
39
|
+
getMany(entity, params) {
|
40
|
+
console.log('@REMOTE getMany', entity.name, params);
|
41
|
+
let httpParams = new HttpParams()
|
42
|
+
.set('Skip', params?.skip?.toString() ?? '0')
|
43
|
+
.set('Take', params?.take?.toString() ?? '10');
|
44
|
+
if (params?.sort && params?.sort.length > 0) {
|
45
|
+
const sortParam = params?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');
|
46
|
+
httpParams = httpParams.set('$orderby', sortParam);
|
47
|
+
}
|
48
|
+
return firstValueFrom(this.http.get(`${this.mainUrl}/${entity.module}/${entity.name}`, { params: httpParams })).then((response) => {
|
49
|
+
return {
|
50
|
+
total: response.totalCount,
|
51
|
+
items: response.items,
|
52
|
+
};
|
53
|
+
});
|
54
|
+
}
|
55
|
+
updateOne(entity, id, data) {
|
56
|
+
const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
|
57
|
+
return firstValueFrom(this.http.put(url, data));
|
58
|
+
}
|
59
|
+
deleteOne(entity, id) {
|
60
|
+
console.log('deleteOne', entity.name, id);
|
61
|
+
const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;
|
62
|
+
return firstValueFrom(this.http.delete(url));
|
63
|
+
}
|
64
|
+
getFirst(entity) {
|
65
|
+
// return this.getMany(entity.name).then((res) => res.items[0]);
|
66
|
+
return new Promise((resolve) => resolve(true));
|
67
|
+
}
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
69
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, providedIn: 'root' }); }
|
70
|
+
}
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendDataProvider, decorators: [{
|
72
|
+
type: Injectable,
|
73
|
+
args: [{
|
74
|
+
providedIn: 'root',
|
75
|
+
}]
|
76
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
77
|
+
|
78
|
+
class AXMOidcApplicationLoader {
|
79
|
+
constructor(http) {
|
80
|
+
this.http = http;
|
81
|
+
this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
|
82
|
+
this.apiGetApps = `${this.configs.apiResourceUrl}/applications/GetListByTenantId`;
|
83
|
+
this.apiSetApp = `${this.configs.apiResourceUrl}/SetApplication`;
|
84
|
+
}
|
85
|
+
getList() {
|
86
|
+
return this.http.get(this.apiGetApps).pipe(map((response) => {
|
87
|
+
console.log('response', response);
|
88
|
+
return response.items.map((item) => this.mapToAXPApplication(item));
|
89
|
+
}));
|
90
|
+
}
|
91
|
+
set(application) {
|
92
|
+
return this.http.post(this.apiSetApp, { applicationId: application.id }).pipe(map((response) => {
|
93
|
+
return {
|
94
|
+
accessToken: response.token,
|
95
|
+
refreshToken: response.token,
|
96
|
+
};
|
97
|
+
}));
|
98
|
+
}
|
99
|
+
mapToAXPApplication(item) {
|
100
|
+
console.log('mapToAXPApplication', item);
|
101
|
+
return {
|
102
|
+
id: item.id,
|
103
|
+
name: item.name || 'defaultName',
|
104
|
+
title: item.name || 'defaultTitle',
|
105
|
+
version: item.version || '1.0.0',
|
106
|
+
description: item.description,
|
107
|
+
logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined
|
108
|
+
editionName: item.editionName,
|
109
|
+
// features: item.features || [],
|
110
|
+
};
|
111
|
+
}
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
113
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader }); }
|
114
|
+
}
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcApplicationLoader, decorators: [{
|
116
|
+
type: Injectable
|
117
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
118
|
+
|
119
|
+
class AXMOidcFeatureLoader {
|
120
|
+
getList() {
|
121
|
+
return of([]).pipe(delay(0));
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
// Other imports...
|
126
|
+
class AXMOidcUserManagerService {
|
127
|
+
constructor(authConfig) {
|
128
|
+
this.authConfig = authConfig;
|
129
|
+
if (!authConfig.oidc_settings) {
|
130
|
+
throw new Error('OIDC configuration is missing');
|
131
|
+
}
|
132
|
+
this.userManager = new UserManager({
|
133
|
+
...authConfig.oidc_settings,
|
134
|
+
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
135
|
+
});
|
136
|
+
}
|
137
|
+
getUserManager() {
|
138
|
+
return this.userManager;
|
139
|
+
}
|
140
|
+
completeAuthentication() {
|
141
|
+
this.userManager.signinSilentCallback();
|
142
|
+
}
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, deps: [{ token: AXM_AUTH_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
144
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, providedIn: 'root' }); }
|
145
|
+
}
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcUserManagerService, decorators: [{
|
147
|
+
type: Injectable,
|
148
|
+
args: [{
|
149
|
+
providedIn: 'root',
|
150
|
+
}]
|
151
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
152
|
+
type: Inject,
|
153
|
+
args: [AXM_AUTH_CONFIG_TOKEN]
|
154
|
+
}] }] });
|
155
|
+
|
156
|
+
class AXMOidcStrategy {
|
157
|
+
constructor() {
|
158
|
+
this.injector = inject(Injector);
|
159
|
+
this.userManagerService = this.injector.get(AXMOidcUserManagerService);
|
160
|
+
this.userManager = this.userManagerService.getUserManager();
|
161
|
+
}
|
162
|
+
get name() {
|
163
|
+
return 'oidc';
|
164
|
+
}
|
165
|
+
async signin(credentials) {
|
166
|
+
const currentUser = await this.userManager.getUser();
|
167
|
+
if (currentUser && !currentUser.expired && currentUser.profile.name == credentials.username) {
|
168
|
+
console.log('user alredy signed in', currentUser);
|
169
|
+
const user = {
|
170
|
+
id: currentUser.id_token ?? '1',
|
171
|
+
name: currentUser.profile.name ?? credentials.username,
|
172
|
+
title: currentUser.profile.given_name ?? 'no Name!',
|
173
|
+
avatar: currentUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',
|
174
|
+
};
|
175
|
+
const accessToken = currentUser.access_token;
|
176
|
+
const refreshToken = currentUser.refresh_token ?? '';
|
177
|
+
return { user, accessToken, refreshToken };
|
178
|
+
}
|
179
|
+
await this.userManager.removeUser();
|
180
|
+
await this.userManager.clearStaleState();
|
181
|
+
const oidcUser = await this.userManager.signinSilent({
|
182
|
+
extraQueryParams: {
|
183
|
+
identity_provider: 'Local',
|
184
|
+
hardcoded_identity_id: '1',
|
185
|
+
username: credentials.username,
|
186
|
+
password: credentials.password,
|
187
|
+
},
|
188
|
+
});
|
189
|
+
console.log('here is oidcUser', oidcUser);
|
190
|
+
if (oidcUser) {
|
191
|
+
const user = {
|
192
|
+
id: oidcUser.id_token ?? '1',
|
193
|
+
name: oidcUser.profile.name ?? credentials.username,
|
194
|
+
title: oidcUser.profile.given_name ?? 'no Name!',
|
195
|
+
avatar: oidcUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',
|
196
|
+
};
|
197
|
+
const accessToken = oidcUser.access_token;
|
198
|
+
const refreshToken = oidcUser.refresh_token ?? '';
|
199
|
+
return { user, accessToken, refreshToken };
|
200
|
+
}
|
201
|
+
throw new Error('Invalid credentials');
|
202
|
+
}
|
203
|
+
async signout() {
|
204
|
+
console.log('User signed out');
|
205
|
+
this.userManager.removeUser();
|
206
|
+
this.userManager.clearStaleState();
|
207
|
+
this.userManager.signoutSilent();
|
208
|
+
}
|
209
|
+
async refreshToken(refreshToken) {
|
210
|
+
const user = {
|
211
|
+
id: '1',
|
212
|
+
name: 'admin',
|
213
|
+
title: 'Arash',
|
214
|
+
avatar: 'https://i.pravatar.cc/150?img=52',
|
215
|
+
};
|
216
|
+
const accessToken = this.generateAccessToken();
|
217
|
+
const newRefreshToken = this.generateAccessToken();
|
218
|
+
return { user, accessToken, refreshToken: newRefreshToken };
|
219
|
+
}
|
220
|
+
generateAccessToken() {
|
221
|
+
return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';
|
222
|
+
}
|
223
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
224
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy }); }
|
225
|
+
}
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcStrategy, decorators: [{
|
227
|
+
type: Injectable
|
228
|
+
}], ctorParameters: () => [] });
|
229
|
+
|
230
|
+
class AXMOidcPermissionLoader {
|
231
|
+
getList() {
|
232
|
+
return of(['asc.admin.message', 'asc.admin.settings']).pipe(delay(0));
|
233
|
+
}
|
234
|
+
}
|
235
|
+
|
236
|
+
class AXMOidcTenantLoader {
|
237
|
+
constructor(http) {
|
238
|
+
this.http = http;
|
239
|
+
this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
|
240
|
+
this.apiGetTenants = `${this.configs.apiResourceUrl}/user-tenants/Tenants `;
|
241
|
+
this.apiSetTenant = `${this.configs.apiResourceUrl}/SetTenant`;
|
242
|
+
}
|
243
|
+
getList() {
|
244
|
+
return this.http
|
245
|
+
.get(this.apiGetTenants)
|
246
|
+
.pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));
|
247
|
+
}
|
248
|
+
set(tenant) {
|
249
|
+
return this.http.post(this.apiSetTenant, { tenantId: tenant.id }).pipe(map((response) => {
|
250
|
+
return {
|
251
|
+
accessToken: response.token,
|
252
|
+
refreshToken: response.token,
|
253
|
+
};
|
254
|
+
}));
|
255
|
+
}
|
256
|
+
mapToAXPTenant(item) {
|
257
|
+
return {
|
258
|
+
id: item.id,
|
259
|
+
name: item.name || 'defaultName',
|
260
|
+
title: item.name || 'defaultTitle',
|
261
|
+
// Add other fields and defaults as needed, and handle the logo if applicable
|
262
|
+
};
|
263
|
+
}
|
264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
265
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader }); }
|
266
|
+
}
|
267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMOidcTenantLoader, decorators: [{
|
268
|
+
type: Injectable
|
269
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
270
|
+
|
271
|
+
class ASCApplicationLoader {
|
272
|
+
getList() {
|
273
|
+
const app = {
|
274
|
+
id: '0',
|
275
|
+
name: 'asc',
|
276
|
+
title: 'Adelide Soaring Club',
|
277
|
+
logo: new AXPTextLogoConfig('ASC'),
|
278
|
+
version: '1.0.1',
|
279
|
+
editionName: 'Standard',
|
280
|
+
};
|
281
|
+
const app2 = {
|
282
|
+
id: '1',
|
283
|
+
name: 'asc1',
|
284
|
+
title: 'Application 2',
|
285
|
+
logo: new AXPTextLogoConfig('ASC'),
|
286
|
+
version: '1.0.1',
|
287
|
+
editionName: 'Standard',
|
288
|
+
};
|
289
|
+
return of([app]).pipe(delay(0));
|
290
|
+
}
|
291
|
+
set(application) {
|
292
|
+
return of({
|
293
|
+
accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
|
294
|
+
refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
|
295
|
+
}).pipe(delay(500));
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
class ASCPermissionLoader {
|
300
|
+
getList() {
|
301
|
+
return of([
|
302
|
+
'asc.admin.message',
|
303
|
+
'asc.admin.settings',
|
304
|
+
'asc.admin.gliding',
|
305
|
+
])
|
306
|
+
.pipe(delay(0));
|
307
|
+
}
|
308
|
+
}
|
309
|
+
|
310
|
+
class ASCTenantLoader {
|
311
|
+
getList() {
|
312
|
+
const tenant = {
|
313
|
+
id: '0',
|
314
|
+
name: 'asc',
|
315
|
+
title: 'Adelide Soaring Club',
|
316
|
+
logo: new AXPTextLogoConfig('ASC'),
|
317
|
+
};
|
318
|
+
const tenant2 = {
|
319
|
+
id: '1',
|
320
|
+
name: 'asc1',
|
321
|
+
title: 'Adelide Soaring Club',
|
322
|
+
logo: new AXPTextLogoConfig('ASC'),
|
323
|
+
};
|
324
|
+
return of([tenant]).pipe(delay(0));
|
325
|
+
}
|
326
|
+
set(tenant) {
|
327
|
+
return of({
|
328
|
+
accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
|
329
|
+
refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',
|
330
|
+
}).pipe(delay(0));
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
class ASCUserPassStrategy {
|
335
|
+
get name() {
|
336
|
+
return 'userpass';
|
337
|
+
}
|
338
|
+
async signin(credentials) {
|
339
|
+
const result = credentials.username == 'admin' && credentials.password == '123';
|
340
|
+
if (result) {
|
341
|
+
const user = {
|
342
|
+
id: '1',
|
343
|
+
name: credentials.username,
|
344
|
+
title: 'Admin',
|
345
|
+
avatar: 'https://i.pravatar.cc/150?img=52',
|
346
|
+
};
|
347
|
+
const accessToken = this.generateAccessToken();
|
348
|
+
const refreshToken = this.generateAccessToken();
|
349
|
+
return { user, accessToken, refreshToken };
|
350
|
+
}
|
351
|
+
else {
|
352
|
+
throw new Error('Invalid credentials');
|
353
|
+
}
|
354
|
+
}
|
355
|
+
async signout() {
|
356
|
+
console.log('User signed out');
|
357
|
+
}
|
358
|
+
async refreshToken(refreshToken) {
|
359
|
+
const user = {
|
360
|
+
id: '1',
|
361
|
+
name: 'admin',
|
362
|
+
title: 'Arash',
|
363
|
+
avatar: 'https://i.pravatar.cc/150?img=52',
|
364
|
+
};
|
365
|
+
const accessToken = this.generateAccessToken();
|
366
|
+
const newRefreshToken = this.generateAccessToken();
|
367
|
+
return { user, accessToken, refreshToken: newRefreshToken };
|
368
|
+
}
|
369
|
+
generateAccessToken() {
|
370
|
+
return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';
|
371
|
+
}
|
372
|
+
}
|
373
|
+
|
374
|
+
class SignincallbackComponent {
|
375
|
+
constructor(userManagerService, router, route) {
|
376
|
+
this.userManagerService = userManagerService;
|
377
|
+
this.router = router;
|
378
|
+
this.route = route;
|
379
|
+
}
|
380
|
+
ngOnInit() {
|
381
|
+
this.userManagerService.completeAuthentication();
|
382
|
+
}
|
383
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SignincallbackComponent, deps: [{ token: AXMOidcUserManagerService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
384
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SignincallbackComponent, selector: "ng-component", providers: [], ngImport: i0, template: '', isInline: true }); }
|
385
|
+
}
|
386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SignincallbackComponent, decorators: [{
|
387
|
+
type: Component,
|
388
|
+
args: [{
|
389
|
+
template: '',
|
390
|
+
providers: [],
|
391
|
+
}]
|
392
|
+
}], ctorParameters: () => [{ type: AXMOidcUserManagerService }, { type: i2.Router }, { type: i2.ActivatedRoute }] });
|
393
|
+
|
394
|
+
function routesFactory() {
|
395
|
+
const routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];
|
396
|
+
return routes;
|
397
|
+
}
|
398
|
+
class AXMBackendModule {
|
399
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
400
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, imports: [i1$1.AXMAuthModule, i2$1.AXPAuthModule] }); }
|
401
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, providers: [
|
402
|
+
{
|
403
|
+
provide: AXPDataProvider,
|
404
|
+
// useClass: AXMLocalDataProvider,
|
405
|
+
useClass: AXMBackendDataProvider,
|
406
|
+
},
|
407
|
+
{
|
408
|
+
provide: AXP_TENANT_LOADER,
|
409
|
+
// useClass: ASCTenantLoader,
|
410
|
+
useClass: AXMOidcTenantLoader,
|
411
|
+
},
|
412
|
+
{
|
413
|
+
provide: AXP_APPLICATION_LOADER,
|
414
|
+
// useClass: ASCApplicationLoader,
|
415
|
+
useClass: AXMOidcApplicationLoader,
|
416
|
+
},
|
417
|
+
{
|
418
|
+
provide: AXP_PERMISSION_LOADER,
|
419
|
+
// useClass: ASCPermissionLoader,
|
420
|
+
useClass: AXMOidcPermissionLoader,
|
421
|
+
},
|
422
|
+
{
|
423
|
+
provide: AXP_FEATURE_LOADER,
|
424
|
+
// useClass: ASCFeatureLoader, //TODO: not implimented
|
425
|
+
useClass: AXMOidcFeatureLoader,
|
426
|
+
},
|
427
|
+
{
|
428
|
+
provide: ROUTES,
|
429
|
+
multi: true,
|
430
|
+
useFactory: routesFactory,
|
431
|
+
},
|
432
|
+
], imports: [AXMAuthModule.forRoot(),
|
433
|
+
AXPAuthModule.forRoot({
|
434
|
+
strategies: [AXMOidcStrategy, ASCUserPassStrategy],
|
435
|
+
})] }); }
|
436
|
+
}
|
437
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMBackendModule, decorators: [{
|
438
|
+
type: NgModule,
|
439
|
+
args: [{
|
440
|
+
imports: [
|
441
|
+
AXMAuthModule.forRoot(),
|
442
|
+
AXPAuthModule.forRoot({
|
443
|
+
strategies: [AXMOidcStrategy, ASCUserPassStrategy],
|
444
|
+
}),
|
445
|
+
],
|
446
|
+
exports: [],
|
447
|
+
declarations: [],
|
448
|
+
providers: [
|
449
|
+
{
|
450
|
+
provide: AXPDataProvider,
|
451
|
+
// useClass: AXMLocalDataProvider,
|
452
|
+
useClass: AXMBackendDataProvider,
|
453
|
+
},
|
454
|
+
{
|
455
|
+
provide: AXP_TENANT_LOADER,
|
456
|
+
// useClass: ASCTenantLoader,
|
457
|
+
useClass: AXMOidcTenantLoader,
|
458
|
+
},
|
459
|
+
{
|
460
|
+
provide: AXP_APPLICATION_LOADER,
|
461
|
+
// useClass: ASCApplicationLoader,
|
462
|
+
useClass: AXMOidcApplicationLoader,
|
463
|
+
},
|
464
|
+
{
|
465
|
+
provide: AXP_PERMISSION_LOADER,
|
466
|
+
// useClass: ASCPermissionLoader,
|
467
|
+
useClass: AXMOidcPermissionLoader,
|
468
|
+
},
|
469
|
+
{
|
470
|
+
provide: AXP_FEATURE_LOADER,
|
471
|
+
// useClass: ASCFeatureLoader, //TODO: not implimented
|
472
|
+
useClass: AXMOidcFeatureLoader,
|
473
|
+
},
|
474
|
+
{
|
475
|
+
provide: ROUTES,
|
476
|
+
multi: true,
|
477
|
+
useFactory: routesFactory,
|
478
|
+
},
|
479
|
+
],
|
480
|
+
}]
|
481
|
+
}] });
|
482
|
+
|
483
|
+
/**
|
484
|
+
* Generated bundle index. Do not edit.
|
485
|
+
*/
|
486
|
+
|
487
|
+
export { AXMBackendModule, AXM_BACKEND_CONFIG_TOKEN };
|
488
|
+
//# sourceMappingURL=acorex-modules-backend.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/backend.configs.ts","../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/usermanager.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/tenant.loader.ts","../../../../libs/modules/backend/src/lib/auth/userpass/userpass.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const AXM_BACKEND_CONFIG_TOKEN = new InjectionToken<AXMBackendConfigs>('AXM_BACKEND_CONFIG_TOKEN');\n\nexport interface AXMBackendConfigs {\n baseUrl: string;\n}\n\nexport interface LocalizationValues {\n Default?: any;\n AbpLocalization?: {\n DisplayName: string;\n Description: string;\n };\n AbpTiming?: {\n DisplayName: string;\n Description: string;\n };\n // ... Other properties of LocalizationValues\n}\n\nexport interface CurrentCulture {\n displayName: string;\n englishName: string;\n threeLetterIsoLanguageName: string;\n twoLetterIsoLanguageName: string;\n isRightToLeft: boolean;\n cultureName: string;\n name: string;\n nativeName: string;\n dateTimeFormat: {\n calendarAlgorithmType: string;\n dateTimeFormatLong: string;\n shortDatePattern: string;\n fullDateTimePattern: string;\n dateSeparator: string;\n shortTimePattern: string;\n longTimePattern: string;\n };\n}\n\nexport interface SettingValues {\n 'Abp.Localization.DefaultLanguage': string;\n 'Abp.Timing.TimeZone': string;\n // ... Other properties of SettingValues\n}\n\nexport interface User {\n isAuthenticated: boolean;\n id: string | null;\n tenantId: string | null;\n // ... Other properties of User\n}\n\nexport interface FeaturesValues {\n [key: string]: string;\n}\n\nexport interface Tenant {\n id: string | null;\n name: string | null;\n isAvailable: boolean;\n}\n\nexport interface TimeZone {\n iana: {\n timeZoneName: string;\n };\n windows: {\n timeZoneId: string;\n };\n}\n\nexport interface RootObject {\n localization: {\n values: LocalizationValues;\n resources: any;\n languages: any[];\n currentCulture: CurrentCulture;\n defaultResourceName: string | null;\n languagesMap: any;\n languageFilesMap: any;\n };\n auth: {\n grantedPolicies: any;\n };\n setting: {\n values: SettingValues;\n };\n currentUser: User;\n features: {\n values: FeaturesValues;\n };\n globalFeatures: {\n enabledFeatures: any[];\n };\n multiTenancy: {\n isEnabled: boolean;\n };\n currentTenant: Tenant;\n timing: {\n timeZone: TimeZone;\n };\n clock: {\n kind: string;\n };\n objectExtensions: {\n modules: any;\n enums: any;\n };\n extraProperties: any;\n}\n","import { AXM_BACKEND_CONFIG_TOKEN } from '../../backend.configs';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { AXPEntityConfig } from '@acorex/platform/layouts';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMBackendDataProvider implements AXPDataProvider {\n private configs = inject(AXM_BACKEND_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n console.log('inserting....', entity.name, entityItem);\n const url = `${this.mainUrl}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n const promises = entityList.map((entity: any) => {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entity));\n });\n return Promise.all(promises);\n }\n\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.get(url));\n }\n\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n console.log('@REMOTE getMany', entity.name, params);\n\n let httpParams = new HttpParams()\n .set('Skip', params?.skip?.toString() ?? '0')\n .set('Take', params?.take?.toString() ?? '10');\n\n if (params?.sort && params?.sort.length > 0) {\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n\n return firstValueFrom(\n this.http.get<any>(`${this.mainUrl}/${entity.module}/${entity.name}`, { params: httpParams })\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.put(url, data));\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n console.log('deleteOne', entity.name, id);\n const url = `${this.mainUrl}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.delete(url));\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n // return this.getMany(entity.name).then((res) => res.items[0]);\n return new Promise((resolve) => resolve(true));\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPApplication, AXPApplicationLoader, AXPTokens } from '@acorex/platform/auth';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.apiResourceUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.apiResourceUrl}/SetApplication`;\n constructor(private http: HttpClient) {}\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n console.log('response', response);\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Observable<AXPTokens> {\n return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n map((response) => {\n return {\n accessToken: response.token,\n refreshToken: response.token,\n };\n })\n );\n }\n\n private mapToAXPApplication(item: any): AXPApplication {\n console.log('mapToAXPApplication', item);\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.name || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n getList(): Observable<AXPFeature[]> {\n return of([]).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { Inject, Injectable } from '@angular/core';\nimport { UserManager, WebStorageStateStore } from 'oidc-client-ts';\n// Other imports...\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMOidcUserManagerService {\n private userManager: UserManager;\n\n constructor(@Inject(AXM_AUTH_CONFIG_TOKEN) private authConfig: AXMAuthConfigs) {\n if (!authConfig.oidc_settings) {\n throw new Error('OIDC configuration is missing');\n }\n\n this.userManager = new UserManager({\n ...authConfig.oidc_settings,\n userStore: new WebStorageStateStore({ store: window.localStorage }),\n });\n }\n\n getUserManager(): UserManager {\n return this.userManager;\n }\n\n completeAuthentication() {\n this.userManager.signinSilentCallback();\n }\n}\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPTokens, AXPUser } from '@acorex/platform/auth';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { UserManager } from 'oidc-client-ts';\nimport { AXMOidcUserManagerService } from './usermanager.service';\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private userManagerService: AXMOidcUserManagerService;\n private userManager: UserManager;\n private injector: Injector = inject(Injector);\n\n constructor() {\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\n this.userManager = this.userManagerService.getUserManager();\n }\n\n get name(): string {\n return 'oidc';\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPTokens> {\n const currentUser = await this.userManager.getUser();\n if (currentUser && !currentUser.expired && currentUser.profile.name == credentials.username) {\n console.log('user alredy signed in', currentUser);\n const user: AXPUser = {\n id: currentUser.id_token ?? '1',\n name: currentUser.profile.name ?? credentials.username,\n title: currentUser.profile.given_name ?? 'no Name!',\n avatar: currentUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = currentUser.access_token;\n const refreshToken = currentUser.refresh_token ?? '';\n return { user, accessToken, refreshToken };\n }\n await this.userManager.removeUser();\n await this.userManager.clearStaleState();\n\n const oidcUser = await this.userManager.signinSilent({\n extraQueryParams: {\n identity_provider: 'Local',\n hardcoded_identity_id: '1',\n username: credentials.username,\n password: credentials.password,\n },\n });\n console.log('here is oidcUser', oidcUser);\n if (oidcUser) {\n const user: AXPUser = {\n id: oidcUser.id_token ?? '1',\n name: oidcUser.profile.name ?? credentials.username,\n title: oidcUser.profile.given_name ?? 'no Name!',\n avatar: oidcUser.profile.picture ?? 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = oidcUser.access_token;\n const refreshToken = oidcUser.refresh_token ?? '';\n return { user, accessToken, refreshToken };\n }\n\n throw new Error('Invalid credentials');\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n this.userManager.removeUser();\n this.userManager.clearStaleState();\n this.userManager.signoutSilent();\n }\n\n async refreshToken(refreshToken: string): Promise<AXPTokens> {\n const user: AXPUser = {\n id: '1',\n name: 'admin',\n title: 'Arash',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n\n const accessToken = this.generateAccessToken();\n const newRefreshToken = this.generateAccessToken();\n\n return { user, accessToken, refreshToken: newRefreshToken };\n }\n\n private generateAccessToken(): string {\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\n }\n}\n","import { AXPPermission, AXPPermissionLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n getList(): Observable<AXPPermission[]> {\n return of(['asc.admin.message', 'asc.admin.settings']).pipe(delay(0));\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPTenant, AXPTenantLoader, AXPTokens } from '@acorex/platform/auth';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.apiResourceUrl}/user-tenants/Tenants `;\n private apiSetTenant = `${this.configs.apiResourceUrl}/SetTenant`;\n constructor(private http: HttpClient) {}\n\n getList(): Observable<AXPTenant[]> {\n return this.http\n .get<{ items: any[] }>(this.apiGetTenants)\n .pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n set(tenant: AXPTenant): Observable<AXPTokens> {\n return this.http.post<any>(this.apiSetTenant, { tenantId: tenant.id }).pipe(\n map((response) => {\n return {\n accessToken: response.token,\n refreshToken: response.token,\n };\n })\n );\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.name || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import { AXPApplication, AXPApplicationLoader, AXPTokens } from '@acorex/platform/auth';\nimport { AXPTextLogoConfig, AXPFontIconLogoConfig } from '@acorex/platform/common';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class ASCApplicationLoader implements AXPApplicationLoader {\n getList(): Observable<AXPApplication[]> {\n const app: AXPApplication = {\n id: '0',\n name: 'asc',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n version: '1.0.1',\n editionName: 'Standard',\n };\n const app2: AXPApplication = {\n id: '1',\n name: 'asc1',\n title: 'Application 2',\n logo: new AXPTextLogoConfig('ASC'),\n version: '1.0.1',\n editionName: 'Standard',\n };\n return of<AXPApplication[]>([app]).pipe(delay(0));\n }\n\n set(application: AXPApplication): Observable<AXPTokens> {\n return of<AXPTokens>({\n accessToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n refreshToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n }).pipe(delay(500));\n }\n}\n","import { AXPPermission, AXPPermissionLoader } from \"@acorex/platform/auth\";\nimport { Observable, delay, of } from \"rxjs\";\n\nexport class ASCPermissionLoader implements AXPPermissionLoader {\n\n getList(): Observable<AXPPermission[]> {\n return of(\n [\n 'asc.admin.message',\n 'asc.admin.settings',\n 'asc.admin.gliding',\n ])\n .pipe(delay(0));\n }\n}","import { AXPTenant, AXPTenantLoader, AXPTokens } from '@acorex/platform/auth';\nimport { AXPTextLogoConfig } from '@acorex/platform/common';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class ASCTenantLoader implements AXPTenantLoader {\n getList(): Observable<AXPTenant[]> {\n const tenant: AXPTenant = {\n id: '0',\n name: 'asc',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n };\n const tenant2: AXPTenant = {\n id: '1',\n name: 'asc1',\n title: 'Adelide Soaring Club',\n logo: new AXPTextLogoConfig('ASC'),\n };\n return of<AXPTenant[]>([tenant]).pipe(delay(0));\n }\n\n set(tenant: AXPTenant): Observable<AXPTokens> {\n return of<AXPTokens>({\n accessToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n refreshToken:\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ',\n }).pipe(delay(0));\n }\n}\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPTokens, AXPUser } from '@acorex/platform/auth';\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\nexport class ASCUserPassStrategy implements AXPAuthStrategy {\n get name(): string {\n return 'userpass';\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPTokens> {\n const result = credentials.username == 'admin' && credentials.password == '123';\n if (result) {\n const user: AXPUser = {\n id: '1',\n name: credentials.username,\n title: 'Admin',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = this.generateAccessToken();\n const refreshToken = this.generateAccessToken();\n return { user, accessToken, refreshToken };\n } else {\n throw new Error('Invalid credentials');\n }\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n }\n\n async refreshToken(refreshToken: string): Promise<AXPTokens> {\n const user: AXPUser = {\n id: '1',\n name: 'admin',\n title: 'Arash',\n avatar: 'https://i.pravatar.cc/150?img=52',\n };\n const accessToken = this.generateAccessToken();\n const newRefreshToken = this.generateAccessToken();\n\n return { user, accessToken, refreshToken: newRefreshToken };\n }\n\n private generateAccessToken(): string {\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXMOidcUserManagerService } from './usermanager.service';\n\n@Component({\n template: '',\n providers: [],\n})\nexport class SignincallbackComponent implements OnInit {\n constructor(\n private userManagerService: AXMOidcUserManagerService,\n private router: Router,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.userManagerService.completeAuthentication();\n }\n}\n","import { AXMAuthModule } from '@acorex/modules/auth';\nimport {\n AXPAuthModule,\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n} from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\n\n//-----------------------------------------------------------------\n\n// import { AXMLocalDataProvider } from './data/local/local-data-provider';\nimport { AXMBackendDataProvider } from './data/api/data-provider';\n\n// import { AXMOidcStrategy } from './auth/oidc';\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\n\nimport { ASCUserPassStrategy } from './auth/userpass';\n// import { ASCApplicationLoader, ASCPermissionLoader, ASCTenantLoader, ASCUserPassStrategy } from './auth/userpass';\n\n//-----------------------------------------------------------------\n\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\n\nfunction routesFactory() {\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\n return routes;\n}\n\n@NgModule({\n imports: [\n AXMAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy, ASCUserPassStrategy],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXPDataProvider,\n // useClass: AXMLocalDataProvider,\n useClass: AXMBackendDataProvider,\n },\n {\n provide: AXP_TENANT_LOADER,\n // useClass: ASCTenantLoader,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n // useClass: ASCApplicationLoader,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n // useClass: ASCPermissionLoader,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n // useClass: ASCFeatureLoader, //TODO: not implimented\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMBackendModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":"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"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { NgModule } from '@angular/core';
|
3
|
+
|
4
|
+
class AXMNotificationModule {
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
6
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule }); }
|
7
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule }); }
|
8
|
+
}
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMNotificationModule, decorators: [{
|
10
|
+
type: NgModule,
|
11
|
+
args: [{
|
12
|
+
imports: [],
|
13
|
+
exports: [],
|
14
|
+
declarations: [],
|
15
|
+
}]
|
16
|
+
}] });
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Generated bundle index. Do not edit.
|
20
|
+
*/
|
21
|
+
|
22
|
+
export { AXMNotificationModule };
|
23
|
+
//# sourceMappingURL=acorex-modules-notification.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-notification.mjs","sources":["../../../../libs/modules/notification/src/lib/notification.module.ts","../../../../libs/modules/notification/src/acorex-modules-notification.ts"],"sourcesContent":["import { NgModule } from \"@angular/core\";\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n})\nexport class AXMNotificationModule {\n}\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AACnB,iBAAA,CAAA;;;ACLD;;AAEG;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules.mjs","sources":["../../../../libs/modules/index.ts","../../../../libs/modules/acorex-modules.ts"],"sourcesContent":["export default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,EAAE;;ACAjB;;AAEG"}
|
package/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './lib/notification.module';
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class AXMNotificationModule {
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMNotificationModule, never>;
|
4
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXMNotificationModule, never, never, never>;
|
5
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXMNotificationModule>;
|
6
|
+
}
|