@geexcode/geex-angular 0.0.27 → 0.0.29
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/dist/index.d.mts +17 -20
- package/dist/index.d.ts +17 -20
- package/dist/index.js +77 -58
- package/dist/index.mjs +76 -58
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WritableSignal, Signal, Injector,
|
|
1
|
+
import { WritableSignal, Signal, Injector, Provider, InjectionToken } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
interface Tenant {
|
|
4
4
|
/** Unique identifier */
|
|
@@ -89,7 +89,7 @@ interface MessagingModule extends GeexModule {
|
|
|
89
89
|
/**
|
|
90
90
|
* Subscribe to server broadcast events.
|
|
91
91
|
*/
|
|
92
|
-
onPublicNotify(): void;
|
|
92
|
+
onPublicNotify(notify: any): void;
|
|
93
93
|
}
|
|
94
94
|
interface SettingsModule extends GeexModule {
|
|
95
95
|
settings: WritableSignal<SettingItem[]>;
|
|
@@ -102,8 +102,12 @@ interface UiModule extends GeexModule {
|
|
|
102
102
|
/** Currently active routed component (framework dependent) */
|
|
103
103
|
activeRoutedComponent?: any;
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
declare const ExtensionModule: Record<string, any> & {};
|
|
106
|
+
type ExtensionModule = typeof ExtensionModule;
|
|
107
|
+
type GeexModules<TExtensionModules extends ExtensionModule = ExtensionModule> = {
|
|
108
|
+
init(): Promise<{
|
|
109
|
+
[K in keyof GeexModules<TExtensionModules>]: any;
|
|
110
|
+
}>;
|
|
107
111
|
tenant: TenantModule;
|
|
108
112
|
auth: AuthModule;
|
|
109
113
|
identity: IdentityModule;
|
|
@@ -111,13 +115,13 @@ type GeexModules<TExtensionModules extends Record<string, GeexModule> = {}> = {
|
|
|
111
115
|
settings: SettingsModule;
|
|
112
116
|
ui: UiModule;
|
|
113
117
|
} & TExtensionModules;
|
|
114
|
-
type GeexModule<TExtension =
|
|
118
|
+
type GeexModule<TExtension = ExtensionModule> = {
|
|
115
119
|
/**
|
|
116
120
|
* A module combines both reactive state (signals) and business logic methods.
|
|
117
121
|
* Concrete modules can extend this interface to expose their own signals & methods.
|
|
118
122
|
* This empty base exists mainly for typing convenience and future extension.
|
|
119
123
|
*/
|
|
120
|
-
init
|
|
124
|
+
init: () => Promise<any>;
|
|
121
125
|
} & TExtension;
|
|
122
126
|
declare function createTenantModule(injector: Injector): TenantModule;
|
|
123
127
|
declare function createAuthModule(injector: Injector): AuthModule;
|
|
@@ -126,24 +130,17 @@ declare function createMessagingModule(injector: Injector): MessagingModule;
|
|
|
126
130
|
declare function createSettingsModule(injector: Injector): SettingsModule;
|
|
127
131
|
declare function createUiModule(injector: Injector): UiModule;
|
|
128
132
|
|
|
129
|
-
|
|
133
|
+
declare function provideGeex<TExtensionModules extends Record<string, GeexModule> = {}>(overrides: GeexModules, extensions?: TExtensionModules): Provider[];
|
|
134
|
+
|
|
135
|
+
type GeexOverrides<TExtensionModules extends Record<string, GeexModule> = {}> = Partial<Omit<GeexModules<TExtensionModules>, "init">>;
|
|
136
|
+
type GeexExtensions<TExtensionModules extends Record<string, GeexModule> = {}> = Partial<TExtensionModules>;
|
|
130
137
|
declare let geex: GeexModules;
|
|
131
|
-
declare let Geex: InjectionToken<
|
|
132
|
-
init: () => Promise<any>;
|
|
133
|
-
tenant: TenantModule;
|
|
134
|
-
auth: AuthModule;
|
|
135
|
-
identity: IdentityModule;
|
|
136
|
-
messaging: MessagingModule;
|
|
137
|
-
settings: SettingsModule;
|
|
138
|
-
ui: UiModule;
|
|
139
|
-
}>;
|
|
138
|
+
declare let Geex: InjectionToken<GeexModules>;
|
|
140
139
|
/**
|
|
141
140
|
* Initialize geex singleton with concrete dependencies
|
|
142
141
|
* @param deps Required runtime services
|
|
143
142
|
* @param overrides Custom module overrides – properties will be merged into generated modules
|
|
144
143
|
*/
|
|
145
|
-
declare function configGeex<TExtensionModules extends Record<string, GeexModule> =
|
|
146
|
-
|
|
147
|
-
declare function provideGeex(overrides?: GeexOverrides): Provider[];
|
|
144
|
+
declare function configGeex<TExtensionModules extends Record<string, GeexModule> = ExtensionModule>(injector: Injector, overrides?: GeexOverrides<TExtensionModules>): void;
|
|
148
145
|
|
|
149
|
-
export { type AuthModule, Geex, type GeexModule, type GeexModules, type GeexOverrides, type IdentityModule, LoginProviderEnum, type MessagingModule, type Org, OrgTypeEnum, type SettingItem, type SettingsModule, type Tenant, type TenantModule, type UiModule, type User, type UserOrgMembership, configGeex, createAuthModule, createIdentityModule, createMessagingModule, createSettingsModule, createTenantModule, createUiModule, geex, provideGeex };
|
|
146
|
+
export { type AuthModule, ExtensionModule, Geex, type GeexExtensions, type GeexModule, type GeexModules, type GeexOverrides, type IdentityModule, LoginProviderEnum, type MessagingModule, type Org, OrgTypeEnum, type SettingItem, type SettingsModule, type Tenant, type TenantModule, type UiModule, type User, type UserOrgMembership, configGeex, createAuthModule, createIdentityModule, createMessagingModule, createSettingsModule, createTenantModule, createUiModule, geex, provideGeex };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WritableSignal, Signal, Injector,
|
|
1
|
+
import { WritableSignal, Signal, Injector, Provider, InjectionToken } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
interface Tenant {
|
|
4
4
|
/** Unique identifier */
|
|
@@ -89,7 +89,7 @@ interface MessagingModule extends GeexModule {
|
|
|
89
89
|
/**
|
|
90
90
|
* Subscribe to server broadcast events.
|
|
91
91
|
*/
|
|
92
|
-
onPublicNotify(): void;
|
|
92
|
+
onPublicNotify(notify: any): void;
|
|
93
93
|
}
|
|
94
94
|
interface SettingsModule extends GeexModule {
|
|
95
95
|
settings: WritableSignal<SettingItem[]>;
|
|
@@ -102,8 +102,12 @@ interface UiModule extends GeexModule {
|
|
|
102
102
|
/** Currently active routed component (framework dependent) */
|
|
103
103
|
activeRoutedComponent?: any;
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
declare const ExtensionModule: Record<string, any> & {};
|
|
106
|
+
type ExtensionModule = typeof ExtensionModule;
|
|
107
|
+
type GeexModules<TExtensionModules extends ExtensionModule = ExtensionModule> = {
|
|
108
|
+
init(): Promise<{
|
|
109
|
+
[K in keyof GeexModules<TExtensionModules>]: any;
|
|
110
|
+
}>;
|
|
107
111
|
tenant: TenantModule;
|
|
108
112
|
auth: AuthModule;
|
|
109
113
|
identity: IdentityModule;
|
|
@@ -111,13 +115,13 @@ type GeexModules<TExtensionModules extends Record<string, GeexModule> = {}> = {
|
|
|
111
115
|
settings: SettingsModule;
|
|
112
116
|
ui: UiModule;
|
|
113
117
|
} & TExtensionModules;
|
|
114
|
-
type GeexModule<TExtension =
|
|
118
|
+
type GeexModule<TExtension = ExtensionModule> = {
|
|
115
119
|
/**
|
|
116
120
|
* A module combines both reactive state (signals) and business logic methods.
|
|
117
121
|
* Concrete modules can extend this interface to expose their own signals & methods.
|
|
118
122
|
* This empty base exists mainly for typing convenience and future extension.
|
|
119
123
|
*/
|
|
120
|
-
init
|
|
124
|
+
init: () => Promise<any>;
|
|
121
125
|
} & TExtension;
|
|
122
126
|
declare function createTenantModule(injector: Injector): TenantModule;
|
|
123
127
|
declare function createAuthModule(injector: Injector): AuthModule;
|
|
@@ -126,24 +130,17 @@ declare function createMessagingModule(injector: Injector): MessagingModule;
|
|
|
126
130
|
declare function createSettingsModule(injector: Injector): SettingsModule;
|
|
127
131
|
declare function createUiModule(injector: Injector): UiModule;
|
|
128
132
|
|
|
129
|
-
|
|
133
|
+
declare function provideGeex<TExtensionModules extends Record<string, GeexModule> = {}>(overrides: GeexModules, extensions?: TExtensionModules): Provider[];
|
|
134
|
+
|
|
135
|
+
type GeexOverrides<TExtensionModules extends Record<string, GeexModule> = {}> = Partial<Omit<GeexModules<TExtensionModules>, "init">>;
|
|
136
|
+
type GeexExtensions<TExtensionModules extends Record<string, GeexModule> = {}> = Partial<TExtensionModules>;
|
|
130
137
|
declare let geex: GeexModules;
|
|
131
|
-
declare let Geex: InjectionToken<
|
|
132
|
-
init: () => Promise<any>;
|
|
133
|
-
tenant: TenantModule;
|
|
134
|
-
auth: AuthModule;
|
|
135
|
-
identity: IdentityModule;
|
|
136
|
-
messaging: MessagingModule;
|
|
137
|
-
settings: SettingsModule;
|
|
138
|
-
ui: UiModule;
|
|
139
|
-
}>;
|
|
138
|
+
declare let Geex: InjectionToken<GeexModules>;
|
|
140
139
|
/**
|
|
141
140
|
* Initialize geex singleton with concrete dependencies
|
|
142
141
|
* @param deps Required runtime services
|
|
143
142
|
* @param overrides Custom module overrides – properties will be merged into generated modules
|
|
144
143
|
*/
|
|
145
|
-
declare function configGeex<TExtensionModules extends Record<string, GeexModule> =
|
|
146
|
-
|
|
147
|
-
declare function provideGeex(overrides?: GeexOverrides): Provider[];
|
|
144
|
+
declare function configGeex<TExtensionModules extends Record<string, GeexModule> = ExtensionModule>(injector: Injector, overrides?: GeexOverrides<TExtensionModules>): void;
|
|
148
145
|
|
|
149
|
-
export { type AuthModule, Geex, type GeexModule, type GeexModules, type GeexOverrides, type IdentityModule, LoginProviderEnum, type MessagingModule, type Org, OrgTypeEnum, type SettingItem, type SettingsModule, type Tenant, type TenantModule, type UiModule, type User, type UserOrgMembership, configGeex, createAuthModule, createIdentityModule, createMessagingModule, createSettingsModule, createTenantModule, createUiModule, geex, provideGeex };
|
|
146
|
+
export { type AuthModule, ExtensionModule, Geex, type GeexExtensions, type GeexModule, type GeexModules, type GeexOverrides, type IdentityModule, LoginProviderEnum, type MessagingModule, type Org, OrgTypeEnum, type SettingItem, type SettingsModule, type Tenant, type TenantModule, type UiModule, type User, type UserOrgMembership, configGeex, createAuthModule, createIdentityModule, createMessagingModule, createSettingsModule, createTenantModule, createUiModule, geex, provideGeex };
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
ExtensionModule: () => ExtensionModule,
|
|
33
34
|
Geex: () => Geex,
|
|
34
35
|
LoginProviderEnum: () => LoginProviderEnum,
|
|
35
36
|
OrgTypeEnum: () => OrgTypeEnum,
|
|
@@ -66,6 +67,7 @@ var LoginProviderEnum = {
|
|
|
66
67
|
var OrgTypeEnum = {
|
|
67
68
|
Default: "Default"
|
|
68
69
|
};
|
|
70
|
+
var ExtensionModule = {};
|
|
69
71
|
var GQL_CHECK_TENANT = import_graphql_tag.default`mutation checkTenant($code: String!) { checkTenant(code: $code) { id code name isEnabled createdOn } }`;
|
|
70
72
|
var GQL_FEDERATE_AUTH = import_graphql_tag.default`mutation federateAuthenticate(
|
|
71
73
|
$code: String!
|
|
@@ -176,7 +178,7 @@ function createAuthModule(injector) {
|
|
|
176
178
|
async loadUserData() {
|
|
177
179
|
const oAuthService = injector.get(import_angular_oauth2_oidc.OAuthService);
|
|
178
180
|
try {
|
|
179
|
-
await oAuthService.
|
|
181
|
+
await oAuthService.loadDiscoveryDocument();
|
|
180
182
|
if (!oAuthService.hasValidAccessToken()) {
|
|
181
183
|
return void 0;
|
|
182
184
|
}
|
|
@@ -203,46 +205,56 @@ function createAuthModule(injector) {
|
|
|
203
205
|
function createIdentityModule(injector) {
|
|
204
206
|
const orgsSignal = (0, import_core.signal)([]);
|
|
205
207
|
const userOwnedOrgsSignal = (0, import_core.signal)([]);
|
|
206
|
-
|
|
208
|
+
const module2 = {
|
|
207
209
|
orgs: orgsSignal,
|
|
208
210
|
userOwnedOrgs: userOwnedOrgsSignal,
|
|
209
|
-
init() {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
211
|
+
async init() {
|
|
212
|
+
try {
|
|
213
|
+
const orgs$ = injector.get(import_apollo_angular.Apollo).watchQuery({ query: GQL_ORGS_CACHE }).valueChanges.pipe((0, import_rxjs.map)((res) => (0, import_util.deepCopy)(res.data.orgs.items)));
|
|
214
|
+
orgs$.subscribe((orgs) => {
|
|
215
|
+
(0, import_core.runInInjectionContext)(injector, () => {
|
|
216
|
+
orgsSignal.set(orgs);
|
|
217
|
+
const userData = geex.auth.user();
|
|
218
|
+
let allOwned = [];
|
|
219
|
+
if (orgs?.length && userData) {
|
|
220
|
+
if (userData.id === "000000000000000000000001") {
|
|
221
|
+
allOwned = (0, import_util.deepCopy)(orgs);
|
|
222
|
+
} else {
|
|
223
|
+
const ownedCodes = userData.orgs.map((x) => x.code);
|
|
224
|
+
allOwned = orgs.filter((o) => ownedCodes.some((code) => o.code.startsWith(code)));
|
|
225
|
+
}
|
|
222
226
|
}
|
|
223
|
-
|
|
224
|
-
|
|
227
|
+
userOwnedOrgsSignal.set(allOwned);
|
|
228
|
+
});
|
|
225
229
|
});
|
|
226
|
-
})
|
|
230
|
+
} catch (error) {
|
|
231
|
+
console.error(error);
|
|
232
|
+
}
|
|
227
233
|
}
|
|
228
234
|
};
|
|
235
|
+
return module2;
|
|
229
236
|
}
|
|
230
237
|
function createMessagingModule(injector) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
238
|
+
const module2 = {
|
|
239
|
+
async init() {
|
|
240
|
+
try {
|
|
241
|
+
const subClient = injector.get(import_apollo_angular.Apollo).use("subscription");
|
|
242
|
+
subClient.subscribe({ query: GQL_ON_PUBLIC_NOTIFY }).pipe((0, import_rxjs.map)((res) => res?.data?.onPublicNotify)).subscribe((notify) => {
|
|
243
|
+
module2.onPublicNotify(notify);
|
|
244
|
+
});
|
|
245
|
+
} catch (err) {
|
|
246
|
+
console.error(err);
|
|
247
|
+
}
|
|
234
248
|
},
|
|
235
|
-
onPublicNotify() {
|
|
236
|
-
|
|
237
|
-
subClient.subscribe({ query: GQL_ON_PUBLIC_NOTIFY }).pipe((0, import_rxjs.map)((res) => res?.data?.onPublicNotify)).subscribe((notify) => {
|
|
238
|
-
console.log("Public notify", notify);
|
|
239
|
-
});
|
|
249
|
+
onPublicNotify(notify) {
|
|
250
|
+
console.log("Public notify", notify);
|
|
240
251
|
}
|
|
241
252
|
};
|
|
253
|
+
return module2;
|
|
242
254
|
}
|
|
243
255
|
function createSettingsModule(injector) {
|
|
244
256
|
const settingsSignal = (0, import_core.signal)([]);
|
|
245
|
-
|
|
257
|
+
const module2 = {
|
|
246
258
|
settings: settingsSignal,
|
|
247
259
|
async init() {
|
|
248
260
|
const res = await (0, import_rxjs.firstValueFrom)(
|
|
@@ -252,6 +264,7 @@ function createSettingsModule(injector) {
|
|
|
252
264
|
settingsSignal.set(settings);
|
|
253
265
|
}
|
|
254
266
|
};
|
|
267
|
+
return module2;
|
|
255
268
|
}
|
|
256
269
|
function createUiModule(injector) {
|
|
257
270
|
const fullScreenSignal = (0, import_core.signal)(false);
|
|
@@ -259,55 +272,60 @@ function createUiModule(injector) {
|
|
|
259
272
|
(0, import_operators.debounceTime)(200),
|
|
260
273
|
(0, import_operators.switchMap)(async () => window.innerHeight / window.innerWidth >= 1.5)
|
|
261
274
|
));
|
|
262
|
-
|
|
275
|
+
const module2 = {
|
|
263
276
|
fullScreen: fullScreenSignal,
|
|
264
277
|
isMobile,
|
|
265
|
-
activeRoutedComponent: void 0
|
|
278
|
+
activeRoutedComponent: void 0,
|
|
279
|
+
async init() {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
266
282
|
};
|
|
283
|
+
return module2;
|
|
267
284
|
}
|
|
268
285
|
|
|
269
286
|
// src/geex.ts
|
|
270
287
|
var geex;
|
|
271
288
|
var Geex = new import_core2.InjectionToken("Geex");
|
|
272
|
-
function configGeex(injector, overrides) {
|
|
289
|
+
function configGeex(injector, overrides = {}) {
|
|
290
|
+
const modules = {
|
|
291
|
+
...overrides
|
|
292
|
+
};
|
|
273
293
|
(0, import_core2.runInInjectionContext)(injector, () => {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
settings: createSettingsModule(injector),
|
|
295
|
-
ui: createUiModule(injector)
|
|
296
|
-
};
|
|
297
|
-
if (overrides) {
|
|
298
|
-
Object.assign(modules, overrides);
|
|
299
|
-
}
|
|
294
|
+
modules.init ?? (modules.init = async () => {
|
|
295
|
+
const entries = Object.entries(modules).filter(([key]) => key !== "init");
|
|
296
|
+
return Object.fromEntries(await Promise.all(
|
|
297
|
+
entries.map(async ([key, mod]) => {
|
|
298
|
+
const maybeInit = mod.init;
|
|
299
|
+
try {
|
|
300
|
+
return [key, await maybeInit()];
|
|
301
|
+
} catch (err) {
|
|
302
|
+
console.error(err);
|
|
303
|
+
return [key, null];
|
|
304
|
+
}
|
|
305
|
+
})
|
|
306
|
+
));
|
|
307
|
+
});
|
|
308
|
+
modules.tenant ?? (modules.tenant = createTenantModule(injector));
|
|
309
|
+
modules.auth ?? (modules.auth = createAuthModule(injector));
|
|
310
|
+
modules.identity ?? (modules.identity = createIdentityModule(injector));
|
|
311
|
+
modules.messaging ?? (modules.messaging = createMessagingModule(injector));
|
|
312
|
+
modules.settings ?? (modules.settings = createSettingsModule(injector));
|
|
313
|
+
modules.ui ?? (modules.ui = createUiModule(injector));
|
|
300
314
|
geex = modules;
|
|
301
315
|
});
|
|
302
316
|
}
|
|
303
317
|
|
|
304
318
|
// src/provide-geex.ts
|
|
305
|
-
function provideGeex(overrides) {
|
|
319
|
+
function provideGeex(overrides, extensions = {}) {
|
|
306
320
|
return [
|
|
307
321
|
{
|
|
308
322
|
provide: Geex,
|
|
309
323
|
useFactory: (injector) => {
|
|
310
|
-
|
|
324
|
+
const mergedModules = {
|
|
325
|
+
...extensions,
|
|
326
|
+
...overrides
|
|
327
|
+
};
|
|
328
|
+
configGeex(injector, mergedModules);
|
|
311
329
|
return geex;
|
|
312
330
|
},
|
|
313
331
|
deps: [import_core3.Injector]
|
|
@@ -316,6 +334,7 @@ function provideGeex(overrides) {
|
|
|
316
334
|
}
|
|
317
335
|
// Annotate the CommonJS export names for ESM import in node:
|
|
318
336
|
0 && (module.exports = {
|
|
337
|
+
ExtensionModule,
|
|
319
338
|
Geex,
|
|
320
339
|
LoginProviderEnum,
|
|
321
340
|
OrgTypeEnum,
|
package/dist/index.mjs
CHANGED
|
@@ -21,6 +21,7 @@ var LoginProviderEnum = {
|
|
|
21
21
|
var OrgTypeEnum = {
|
|
22
22
|
Default: "Default"
|
|
23
23
|
};
|
|
24
|
+
var ExtensionModule = {};
|
|
24
25
|
var GQL_CHECK_TENANT = gql`mutation checkTenant($code: String!) { checkTenant(code: $code) { id code name isEnabled createdOn } }`;
|
|
25
26
|
var GQL_FEDERATE_AUTH = gql`mutation federateAuthenticate(
|
|
26
27
|
$code: String!
|
|
@@ -131,7 +132,7 @@ function createAuthModule(injector) {
|
|
|
131
132
|
async loadUserData() {
|
|
132
133
|
const oAuthService = injector.get(OAuthService);
|
|
133
134
|
try {
|
|
134
|
-
await oAuthService.
|
|
135
|
+
await oAuthService.loadDiscoveryDocument();
|
|
135
136
|
if (!oAuthService.hasValidAccessToken()) {
|
|
136
137
|
return void 0;
|
|
137
138
|
}
|
|
@@ -158,46 +159,56 @@ function createAuthModule(injector) {
|
|
|
158
159
|
function createIdentityModule(injector) {
|
|
159
160
|
const orgsSignal = signal([]);
|
|
160
161
|
const userOwnedOrgsSignal = signal([]);
|
|
161
|
-
|
|
162
|
+
const module = {
|
|
162
163
|
orgs: orgsSignal,
|
|
163
164
|
userOwnedOrgs: userOwnedOrgsSignal,
|
|
164
|
-
init() {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
165
|
+
async init() {
|
|
166
|
+
try {
|
|
167
|
+
const orgs$ = injector.get(Apollo).watchQuery({ query: GQL_ORGS_CACHE }).valueChanges.pipe(map((res) => deepCopy(res.data.orgs.items)));
|
|
168
|
+
orgs$.subscribe((orgs) => {
|
|
169
|
+
runInInjectionContext(injector, () => {
|
|
170
|
+
orgsSignal.set(orgs);
|
|
171
|
+
const userData = geex.auth.user();
|
|
172
|
+
let allOwned = [];
|
|
173
|
+
if (orgs?.length && userData) {
|
|
174
|
+
if (userData.id === "000000000000000000000001") {
|
|
175
|
+
allOwned = deepCopy(orgs);
|
|
176
|
+
} else {
|
|
177
|
+
const ownedCodes = userData.orgs.map((x) => x.code);
|
|
178
|
+
allOwned = orgs.filter((o) => ownedCodes.some((code) => o.code.startsWith(code)));
|
|
179
|
+
}
|
|
177
180
|
}
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
userOwnedOrgsSignal.set(allOwned);
|
|
182
|
+
});
|
|
180
183
|
});
|
|
181
|
-
})
|
|
184
|
+
} catch (error) {
|
|
185
|
+
console.error(error);
|
|
186
|
+
}
|
|
182
187
|
}
|
|
183
188
|
};
|
|
189
|
+
return module;
|
|
184
190
|
}
|
|
185
191
|
function createMessagingModule(injector) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
192
|
+
const module = {
|
|
193
|
+
async init() {
|
|
194
|
+
try {
|
|
195
|
+
const subClient = injector.get(Apollo).use("subscription");
|
|
196
|
+
subClient.subscribe({ query: GQL_ON_PUBLIC_NOTIFY }).pipe(map((res) => res?.data?.onPublicNotify)).subscribe((notify) => {
|
|
197
|
+
module.onPublicNotify(notify);
|
|
198
|
+
});
|
|
199
|
+
} catch (err) {
|
|
200
|
+
console.error(err);
|
|
201
|
+
}
|
|
189
202
|
},
|
|
190
|
-
onPublicNotify() {
|
|
191
|
-
|
|
192
|
-
subClient.subscribe({ query: GQL_ON_PUBLIC_NOTIFY }).pipe(map((res) => res?.data?.onPublicNotify)).subscribe((notify) => {
|
|
193
|
-
console.log("Public notify", notify);
|
|
194
|
-
});
|
|
203
|
+
onPublicNotify(notify) {
|
|
204
|
+
console.log("Public notify", notify);
|
|
195
205
|
}
|
|
196
206
|
};
|
|
207
|
+
return module;
|
|
197
208
|
}
|
|
198
209
|
function createSettingsModule(injector) {
|
|
199
210
|
const settingsSignal = signal([]);
|
|
200
|
-
|
|
211
|
+
const module = {
|
|
201
212
|
settings: settingsSignal,
|
|
202
213
|
async init() {
|
|
203
214
|
const res = await firstValueFrom(
|
|
@@ -207,6 +218,7 @@ function createSettingsModule(injector) {
|
|
|
207
218
|
settingsSignal.set(settings);
|
|
208
219
|
}
|
|
209
220
|
};
|
|
221
|
+
return module;
|
|
210
222
|
}
|
|
211
223
|
function createUiModule(injector) {
|
|
212
224
|
const fullScreenSignal = signal(false);
|
|
@@ -214,55 +226,60 @@ function createUiModule(injector) {
|
|
|
214
226
|
debounceTime(200),
|
|
215
227
|
switchMap(async () => window.innerHeight / window.innerWidth >= 1.5)
|
|
216
228
|
));
|
|
217
|
-
|
|
229
|
+
const module = {
|
|
218
230
|
fullScreen: fullScreenSignal,
|
|
219
231
|
isMobile,
|
|
220
|
-
activeRoutedComponent: void 0
|
|
232
|
+
activeRoutedComponent: void 0,
|
|
233
|
+
async init() {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
221
236
|
};
|
|
237
|
+
return module;
|
|
222
238
|
}
|
|
223
239
|
|
|
224
240
|
// src/geex.ts
|
|
225
241
|
var geex;
|
|
226
242
|
var Geex = new InjectionToken("Geex");
|
|
227
|
-
function configGeex(injector, overrides) {
|
|
243
|
+
function configGeex(injector, overrides = {}) {
|
|
244
|
+
const modules = {
|
|
245
|
+
...overrides
|
|
246
|
+
};
|
|
228
247
|
runInInjectionContext2(injector, () => {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
settings: createSettingsModule(injector),
|
|
250
|
-
ui: createUiModule(injector)
|
|
251
|
-
};
|
|
252
|
-
if (overrides) {
|
|
253
|
-
Object.assign(modules, overrides);
|
|
254
|
-
}
|
|
248
|
+
modules.init ?? (modules.init = async () => {
|
|
249
|
+
const entries = Object.entries(modules).filter(([key]) => key !== "init");
|
|
250
|
+
return Object.fromEntries(await Promise.all(
|
|
251
|
+
entries.map(async ([key, mod]) => {
|
|
252
|
+
const maybeInit = mod.init;
|
|
253
|
+
try {
|
|
254
|
+
return [key, await maybeInit()];
|
|
255
|
+
} catch (err) {
|
|
256
|
+
console.error(err);
|
|
257
|
+
return [key, null];
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
));
|
|
261
|
+
});
|
|
262
|
+
modules.tenant ?? (modules.tenant = createTenantModule(injector));
|
|
263
|
+
modules.auth ?? (modules.auth = createAuthModule(injector));
|
|
264
|
+
modules.identity ?? (modules.identity = createIdentityModule(injector));
|
|
265
|
+
modules.messaging ?? (modules.messaging = createMessagingModule(injector));
|
|
266
|
+
modules.settings ?? (modules.settings = createSettingsModule(injector));
|
|
267
|
+
modules.ui ?? (modules.ui = createUiModule(injector));
|
|
255
268
|
geex = modules;
|
|
256
269
|
});
|
|
257
270
|
}
|
|
258
271
|
|
|
259
272
|
// src/provide-geex.ts
|
|
260
|
-
function provideGeex(overrides) {
|
|
273
|
+
function provideGeex(overrides, extensions = {}) {
|
|
261
274
|
return [
|
|
262
275
|
{
|
|
263
276
|
provide: Geex,
|
|
264
277
|
useFactory: (injector) => {
|
|
265
|
-
|
|
278
|
+
const mergedModules = {
|
|
279
|
+
...extensions,
|
|
280
|
+
...overrides
|
|
281
|
+
};
|
|
282
|
+
configGeex(injector, mergedModules);
|
|
266
283
|
return geex;
|
|
267
284
|
},
|
|
268
285
|
deps: [Injector3]
|
|
@@ -270,6 +287,7 @@ function provideGeex(overrides) {
|
|
|
270
287
|
];
|
|
271
288
|
}
|
|
272
289
|
export {
|
|
290
|
+
ExtensionModule,
|
|
273
291
|
Geex,
|
|
274
292
|
LoginProviderEnum,
|
|
275
293
|
OrgTypeEnum,
|