@dosgato/api 0.0.2
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/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/access/access.model.d.ts +2 -0
- package/dist/access/access.model.js +14 -0
- package/dist/access/access.model.js.map +1 -0
- package/dist/access/access.resolver.d.ts +15 -0
- package/dist/access/access.resolver.js +133 -0
- package/dist/access/access.resolver.js.map +1 -0
- package/dist/asset/asset.database.d.ts +12 -0
- package/dist/asset/asset.database.js +116 -0
- package/dist/asset/asset.database.js.map +1 -0
- package/dist/asset/asset.model.d.ts +81 -0
- package/dist/asset/asset.model.js +271 -0
- package/dist/asset/asset.model.js.map +1 -0
- package/dist/asset/asset.resolver.d.ts +32 -0
- package/dist/asset/asset.resolver.js +325 -0
- package/dist/asset/asset.resolver.js.map +1 -0
- package/dist/asset/asset.service.d.ts +35 -0
- package/dist/asset/asset.service.js +225 -0
- package/dist/asset/asset.service.js.map +1 -0
- package/dist/assetfolder/assetfolder.database.d.ts +7 -0
- package/dist/assetfolder/assetfolder.database.js +85 -0
- package/dist/assetfolder/assetfolder.database.js.map +1 -0
- package/dist/assetfolder/assetfolder.model.d.ts +56 -0
- package/dist/assetfolder/assetfolder.model.js +160 -0
- package/dist/assetfolder/assetfolder.model.js.map +1 -0
- package/dist/assetfolder/assetfolder.resolver.d.ts +25 -0
- package/dist/assetfolder/assetfolder.resolver.js +255 -0
- package/dist/assetfolder/assetfolder.resolver.js.map +1 -0
- package/dist/assetfolder/assetfolder.service.d.ts +39 -0
- package/dist/assetfolder/assetfolder.service.js +355 -0
- package/dist/assetfolder/assetfolder.service.js.map +1 -0
- package/dist/assetrule/assetrule.database.d.ts +5 -0
- package/dist/assetrule/assetrule.database.js +161 -0
- package/dist/assetrule/assetrule.database.js.map +1 -0
- package/dist/assetrule/assetrule.model.d.ts +71 -0
- package/dist/assetrule/assetrule.model.js +221 -0
- package/dist/assetrule/assetrule.model.js.map +1 -0
- package/dist/assetrule/assetrule.resolver.d.ts +12 -0
- package/dist/assetrule/assetrule.resolver.js +100 -0
- package/dist/assetrule/assetrule.resolver.js.map +1 -0
- package/dist/assetrule/assetrule.service.d.ts +26 -0
- package/dist/assetrule/assetrule.service.js +184 -0
- package/dist/assetrule/assetrule.service.js.map +1 -0
- package/dist/createdb.d.ts +2 -0
- package/dist/createdb.js +541 -0
- package/dist/createdb.js.map +1 -0
- package/dist/data/data.database.d.ts +7 -0
- package/dist/data/data.database.js +265 -0
- package/dist/data/data.database.js.map +1 -0
- package/dist/data/data.indexing.d.ts +2 -0
- package/dist/data/data.indexing.js +23 -0
- package/dist/data/data.indexing.js.map +1 -0
- package/dist/data/data.model.d.ts +69 -0
- package/dist/data/data.model.js +206 -0
- package/dist/data/data.model.js.map +1 -0
- package/dist/data/data.resolver.d.ts +36 -0
- package/dist/data/data.resolver.js +384 -0
- package/dist/data/data.resolver.js.map +1 -0
- package/dist/data/data.service.d.ts +41 -0
- package/dist/data/data.service.js +374 -0
- package/dist/data/data.service.js.map +1 -0
- package/dist/datafolder/datafolder.database.d.ts +7 -0
- package/dist/datafolder/datafolder.database.js +72 -0
- package/dist/datafolder/datafolder.database.js.map +1 -0
- package/dist/datafolder/datafolder.model.d.ts +48 -0
- package/dist/datafolder/datafolder.model.js +139 -0
- package/dist/datafolder/datafolder.model.js.map +1 -0
- package/dist/datafolder/datafolder.resolver.d.ts +24 -0
- package/dist/datafolder/datafolder.resolver.js +243 -0
- package/dist/datafolder/datafolder.resolver.js.map +1 -0
- package/dist/datafolder/datafolder.service.d.ts +32 -0
- package/dist/datafolder/datafolder.service.js +223 -0
- package/dist/datafolder/datafolder.service.js.map +1 -0
- package/dist/dataroot/dataroot.model.d.ts +19 -0
- package/dist/dataroot/dataroot.model.js +72 -0
- package/dist/dataroot/dataroot.model.js.map +1 -0
- package/dist/dataroot/dataroot.resolver.d.ts +11 -0
- package/dist/dataroot/dataroot.resolver.js +87 -0
- package/dist/dataroot/dataroot.resolver.js.map +1 -0
- package/dist/dataroot/dataroot.service.d.ts +12 -0
- package/dist/dataroot/dataroot.service.js +62 -0
- package/dist/dataroot/dataroot.service.js.map +1 -0
- package/dist/datarule/datarule.database.d.ts +5 -0
- package/dist/datarule/datarule.database.js +144 -0
- package/dist/datarule/datarule.database.js.map +1 -0
- package/dist/datarule/datarule.model.d.ts +55 -0
- package/dist/datarule/datarule.model.js +200 -0
- package/dist/datarule/datarule.model.js.map +1 -0
- package/dist/datarule/datarule.resolver.d.ts +13 -0
- package/dist/datarule/datarule.resolver.js +114 -0
- package/dist/datarule/datarule.resolver.js.map +1 -0
- package/dist/datarule/datarule.service.d.ts +27 -0
- package/dist/datarule/datarule.service.js +191 -0
- package/dist/datarule/datarule.service.js.map +1 -0
- package/dist/fixtures.d.ts +1 -0
- package/dist/fixtures.js +697 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/fixturetemplates.d.ts +110 -0
- package/dist/fixturetemplates.js +178 -0
- package/dist/fixturetemplates.js.map +1 -0
- package/dist/globalrule/globalrule.database.d.ts +5 -0
- package/dist/globalrule/globalrule.database.js +65 -0
- package/dist/globalrule/globalrule.database.js.map +1 -0
- package/dist/globalrule/globalrule.model.d.ts +34 -0
- package/dist/globalrule/globalrule.model.js +120 -0
- package/dist/globalrule/globalrule.model.js.map +1 -0
- package/dist/globalrule/globalrule.resolver.d.ts +11 -0
- package/dist/globalrule/globalrule.resolver.js +85 -0
- package/dist/globalrule/globalrule.resolver.js.map +1 -0
- package/dist/globalrule/globalrule.service.d.ts +18 -0
- package/dist/globalrule/globalrule.service.js +111 -0
- package/dist/globalrule/globalrule.service.js.map +1 -0
- package/dist/group/group.database.d.ts +41 -0
- package/dist/group/group.database.js +190 -0
- package/dist/group/group.database.js.map +1 -0
- package/dist/group/group.model.d.ts +19 -0
- package/dist/group/group.model.js +70 -0
- package/dist/group/group.model.js.map +1 -0
- package/dist/group/group.resolver.d.ts +27 -0
- package/dist/group/group.resolver.js +275 -0
- package/dist/group/group.resolver.js.map +1 -0
- package/dist/group/group.service.d.ts +46 -0
- package/dist/group/group.service.js +384 -0
- package/dist/group/group.service.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +88 -0
- package/dist/internal.js +89 -0
- package/dist/internal.js.map +1 -0
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.js +41 -0
- package/dist/migrations.js.map +1 -0
- package/dist/organization/organization.database.d.ts +2 -0
- package/dist/organization/organization.database.js +16 -0
- package/dist/organization/organization.database.js.map +1 -0
- package/dist/organization/organization.model.d.ts +5 -0
- package/dist/organization/organization.model.js +35 -0
- package/dist/organization/organization.model.js.map +1 -0
- package/dist/organization/organization.resolver.d.ts +6 -0
- package/dist/organization/organization.resolver.js +43 -0
- package/dist/organization/organization.resolver.js.map +1 -0
- package/dist/organization/organization.service.d.ts +12 -0
- package/dist/organization/organization.service.js +35 -0
- package/dist/organization/organization.service.js.map +1 -0
- package/dist/page/page.database.d.ts +10 -0
- package/dist/page/page.database.js +269 -0
- package/dist/page/page.database.js.map +1 -0
- package/dist/page/page.indexing.d.ts +3 -0
- package/dist/page/page.indexing.js +26 -0
- package/dist/page/page.indexing.js.map +1 -0
- package/dist/page/page.migrations.d.ts +13 -0
- package/dist/page/page.migrations.js +55 -0
- package/dist/page/page.migrations.js.map +1 -0
- package/dist/page/page.model.d.ts +88 -0
- package/dist/page/page.model.js +272 -0
- package/dist/page/page.model.js.map +1 -0
- package/dist/page/page.resolver.d.ts +48 -0
- package/dist/page/page.resolver.js +542 -0
- package/dist/page/page.resolver.js.map +1 -0
- package/dist/page/page.service.d.ts +59 -0
- package/dist/page/page.service.js +399 -0
- package/dist/page/page.service.js.map +1 -0
- package/dist/page/page.util.d.ts +3 -0
- package/dist/page/page.util.js +16 -0
- package/dist/page/page.util.js.map +1 -0
- package/dist/page/page.validation.d.ts +2 -0
- package/dist/page/page.validation.js +21 -0
- package/dist/page/page.validation.js.map +1 -0
- package/dist/pagerule/pagerule.database.d.ts +5 -0
- package/dist/pagerule/pagerule.database.js +212 -0
- package/dist/pagerule/pagerule.database.js.map +1 -0
- package/dist/pagerule/pagerule.model.d.ts +71 -0
- package/dist/pagerule/pagerule.model.js +272 -0
- package/dist/pagerule/pagerule.model.js.map +1 -0
- package/dist/pagerule/pagerule.resolver.d.ts +13 -0
- package/dist/pagerule/pagerule.resolver.js +114 -0
- package/dist/pagerule/pagerule.resolver.js.map +1 -0
- package/dist/pagerule/pagerule.service.d.ts +23 -0
- package/dist/pagerule/pagerule.service.js +180 -0
- package/dist/pagerule/pagerule.service.js.map +1 -0
- package/dist/pagetree/pagetree.database.d.ts +13 -0
- package/dist/pagetree/pagetree.database.js +84 -0
- package/dist/pagetree/pagetree.database.js.map +1 -0
- package/dist/pagetree/pagetree.model.d.ts +43 -0
- package/dist/pagetree/pagetree.model.js +146 -0
- package/dist/pagetree/pagetree.model.js.map +1 -0
- package/dist/pagetree/pagetree.resolver.d.ts +23 -0
- package/dist/pagetree/pagetree.resolver.js +238 -0
- package/dist/pagetree/pagetree.resolver.js.map +1 -0
- package/dist/pagetree/pagetree.service.d.ts +25 -0
- package/dist/pagetree/pagetree.service.js +221 -0
- package/dist/pagetree/pagetree.service.js.map +1 -0
- package/dist/role/role.database.d.ts +17 -0
- package/dist/role/role.database.js +74 -0
- package/dist/role/role.database.js.map +1 -0
- package/dist/role/role.model.d.ts +26 -0
- package/dist/role/role.model.js +84 -0
- package/dist/role/role.model.js.map +1 -0
- package/dist/role/role.resolver.d.ts +27 -0
- package/dist/role/role.resolver.js +294 -0
- package/dist/role/role.resolver.js.map +1 -0
- package/dist/role/role.service.d.ts +33 -0
- package/dist/role/role.service.js +265 -0
- package/dist/role/role.service.js.map +1 -0
- package/dist/run.d.ts +1 -0
- package/dist/run.js +29 -0
- package/dist/run.js.map +1 -0
- package/dist/scalars/datetime.d.ts +2 -0
- package/dist/scalars/datetime.js +19 -0
- package/dist/scalars/datetime.js.map +1 -0
- package/dist/scalars/index.d.ts +3 -0
- package/dist/scalars/index.js +4 -0
- package/dist/scalars/index.js.map +1 -0
- package/dist/scalars/jsondata.d.ts +2 -0
- package/dist/scalars/jsondata.js +15 -0
- package/dist/scalars/jsondata.js.map +1 -0
- package/dist/scalars/urlsafestring.d.ts +4 -0
- package/dist/scalars/urlsafestring.js +28 -0
- package/dist/scalars/urlsafestring.js.map +1 -0
- package/dist/site/site.database.d.ts +15 -0
- package/dist/site/site.database.js +164 -0
- package/dist/site/site.database.js.map +1 -0
- package/dist/site/site.model.d.ts +62 -0
- package/dist/site/site.model.js +197 -0
- package/dist/site/site.model.js.map +1 -0
- package/dist/site/site.resolver.d.ts +30 -0
- package/dist/site/site.resolver.js +326 -0
- package/dist/site/site.resolver.js.map +1 -0
- package/dist/site/site.service.d.ts +35 -0
- package/dist/site/site.service.js +199 -0
- package/dist/site/site.service.js.map +1 -0
- package/dist/siterule/siterule.database.d.ts +5 -0
- package/dist/siterule/siterule.database.js +139 -0
- package/dist/siterule/siterule.database.js.map +1 -0
- package/dist/siterule/siterule.model.d.ts +53 -0
- package/dist/siterule/siterule.model.js +203 -0
- package/dist/siterule/siterule.model.js.map +1 -0
- package/dist/siterule/siterule.resolver.d.ts +12 -0
- package/dist/siterule/siterule.resolver.js +100 -0
- package/dist/siterule/siterule.resolver.js.map +1 -0
- package/dist/siterule/siterule.service.d.ts +23 -0
- package/dist/siterule/siterule.service.js +148 -0
- package/dist/siterule/siterule.service.js.map +1 -0
- package/dist/template/template.database.d.ts +15 -0
- package/dist/template/template.database.js +61 -0
- package/dist/template/template.database.js.map +1 -0
- package/dist/template/template.model.d.ts +32 -0
- package/dist/template/template.model.js +124 -0
- package/dist/template/template.model.js.map +1 -0
- package/dist/template/template.resolver.d.ts +22 -0
- package/dist/template/template.resolver.js +216 -0
- package/dist/template/template.resolver.js.map +1 -0
- package/dist/template/template.service.d.ts +27 -0
- package/dist/template/template.service.js +192 -0
- package/dist/template/template.service.js.map +1 -0
- package/dist/templaterule/templaterule.database.d.ts +5 -0
- package/dist/templaterule/templaterule.database.js +80 -0
- package/dist/templaterule/templaterule.database.js.map +1 -0
- package/dist/templaterule/templaterule.model.d.ts +38 -0
- package/dist/templaterule/templaterule.model.js +136 -0
- package/dist/templaterule/templaterule.model.js.map +1 -0
- package/dist/templaterule/templaterule.resolver.d.ts +12 -0
- package/dist/templaterule/templaterule.resolver.js +100 -0
- package/dist/templaterule/templaterule.resolver.js.map +1 -0
- package/dist/templaterule/templaterule.service.d.ts +19 -0
- package/dist/templaterule/templaterule.service.js +123 -0
- package/dist/templaterule/templaterule.service.js.map +1 -0
- package/dist/user/user.database.d.ts +22 -0
- package/dist/user/user.database.js +116 -0
- package/dist/user/user.database.js.map +1 -0
- package/dist/user/user.model.d.ts +42 -0
- package/dist/user/user.model.js +122 -0
- package/dist/user/user.model.js.map +1 -0
- package/dist/user/user.resolver.d.ts +16 -0
- package/dist/user/user.resolver.js +140 -0
- package/dist/user/user.resolver.js.map +1 -0
- package/dist/user/user.service.d.ts +29 -0
- package/dist/user/user.service.js +195 -0
- package/dist/user/user.service.js.map +1 -0
- package/dist/util/authservice.d.ts +28 -0
- package/dist/util/authservice.js +131 -0
- package/dist/util/authservice.js.map +1 -0
- package/dist/util/dates.d.ts +2 -0
- package/dist/util/dates.js +4 -0
- package/dist/util/dates.js.map +1 -0
- package/dist/util/filehandler.d.ts +15 -0
- package/dist/util/filehandler.js +48 -0
- package/dist/util/filehandler.js.map +1 -0
- package/dist/util/index.d.ts +13 -0
- package/dist/util/index.js +26 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/indexing.d.ts +12 -0
- package/dist/util/indexing.js +74 -0
- package/dist/util/indexing.js.map +1 -0
- package/dist/util/migrations.d.ts +15 -0
- package/dist/util/migrations.js +2 -0
- package/dist/util/migrations.js.map +1 -0
- package/dist/util/mutationlogger.d.ts +1 -0
- package/dist/util/mutationlogger.js +9 -0
- package/dist/util/mutationlogger.js.map +1 -0
- package/dist/util/registry.d.ts +25 -0
- package/dist/util/registry.js +66 -0
- package/dist/util/registry.js.map +1 -0
- package/dist/util/rules.d.ts +6 -0
- package/dist/util/rules.js +31 -0
- package/dist/util/rules.js.map +1 -0
- package/dist/util/sharedtypes.d.ts +3 -0
- package/dist/util/sharedtypes.js +2 -0
- package/dist/util/sharedtypes.js.map +1 -0
- package/dist/util/stopwords.d.ts +1 -0
- package/dist/util/stopwords.js +152 -0
- package/dist/util/stopwords.js.map +1 -0
- package/dist/version/version.model.d.ts +11 -0
- package/dist/version/version.model.js +46 -0
- package/dist/version/version.model.js.map +1 -0
- package/dist/version/version.resolver.d.ts +6 -0
- package/dist/version/version.resolver.js +45 -0
- package/dist/version/version.resolver.js.map +1 -0
- package/dist/versionedservice/service.d.ts +148 -0
- package/dist/versionedservice/service.js +547 -0
- package/dist/versionedservice/service.js.map +1 -0
- package/dist/versionedservice/types.d.ts +87 -0
- package/dist/versionedservice/types.js +11 -0
- package/dist/versionedservice/types.js.map +1 -0
- package/package.json +50 -0
- package/readme/DosGato.mwb +0 -0
- package/readme/DosGato.mwb.bak +0 -0
- package/readme/upgradeflow2.png +0 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
|
|
2
|
+
import { ManyJoinedLoader, PrimaryKeyLoader } from 'dataloader-factory';
|
|
3
|
+
import { unique, filterConcurrent, isNotNull, someAsync } from 'txstate-utils';
|
|
4
|
+
import { GroupResponse, getGroups, getGroupsWithUser, getGroupsWithRole, groupHierarchyCache, createGroup, updateGroup, deleteGroup, addGroupSite, removeGroupSite, addUserToGroups, removeUserFromGroups, setGroupManager, removeSubgroup, addSubgroup, UserService, DosGatoService, UserServiceInternal, setUserGroups, getGroupsWithManager, getGroupsWithSite } from '../internal.js';
|
|
5
|
+
const groupsByIdLoader = new PrimaryKeyLoader({
|
|
6
|
+
fetch: async (ids) => {
|
|
7
|
+
return await getGroups({ ids });
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
const groupsByUserIdLoader = new ManyJoinedLoader({
|
|
11
|
+
fetch: async (userIds) => {
|
|
12
|
+
return await getGroupsWithUser(userIds);
|
|
13
|
+
},
|
|
14
|
+
idLoader: groupsByIdLoader
|
|
15
|
+
});
|
|
16
|
+
const groupsByManagerIdLoader = new ManyJoinedLoader({
|
|
17
|
+
fetch: async (managerIds, direct) => {
|
|
18
|
+
return await getGroupsWithManager(managerIds, direct);
|
|
19
|
+
},
|
|
20
|
+
idLoader: groupsByIdLoader
|
|
21
|
+
});
|
|
22
|
+
const groupsBySiteIdLoader = new ManyJoinedLoader({
|
|
23
|
+
fetch: async (siteIds) => {
|
|
24
|
+
return await getGroupsWithSite(siteIds);
|
|
25
|
+
},
|
|
26
|
+
idLoader: groupsByIdLoader
|
|
27
|
+
});
|
|
28
|
+
const groupsByRoleIdLoader = new ManyJoinedLoader({
|
|
29
|
+
fetch: async (roleIds, filter) => {
|
|
30
|
+
return await getGroupsWithRole(roleIds, filter);
|
|
31
|
+
},
|
|
32
|
+
idLoader: groupsByIdLoader
|
|
33
|
+
});
|
|
34
|
+
export class GroupServiceInternal extends BaseService {
|
|
35
|
+
async find(filter) {
|
|
36
|
+
const groups = await getGroups(filter);
|
|
37
|
+
for (const group of groups)
|
|
38
|
+
this.loaders.get(groupsByIdLoader).prime(group.id, group);
|
|
39
|
+
return groups;
|
|
40
|
+
}
|
|
41
|
+
async findById(id) {
|
|
42
|
+
return await this.loaders.get(groupsByIdLoader).load(id);
|
|
43
|
+
}
|
|
44
|
+
async findByUserId(userId, direct) {
|
|
45
|
+
const directGroups = await this.loaders.get(groupsByUserIdLoader).load(userId);
|
|
46
|
+
let ret = directGroups;
|
|
47
|
+
if (!direct) {
|
|
48
|
+
const directGroupIds = directGroups.map(d => d.id);
|
|
49
|
+
const indirectGroups = await this.getAllSupers(directGroupIds);
|
|
50
|
+
if (typeof direct === 'undefined') {
|
|
51
|
+
ret = unique([...directGroups, ...indirectGroups], 'id');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
ret = indirectGroups;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return ret;
|
|
58
|
+
}
|
|
59
|
+
async findByManager(manager, direct) {
|
|
60
|
+
return await this.loaders.get(groupsByManagerIdLoader, direct).load(manager.id);
|
|
61
|
+
}
|
|
62
|
+
async findBySite(site) {
|
|
63
|
+
return await this.loaders.get(groupsBySiteIdLoader).load(site.id);
|
|
64
|
+
}
|
|
65
|
+
async getSubgroups(groupId, recursive = true) {
|
|
66
|
+
const groupMap = await groupHierarchyCache.get();
|
|
67
|
+
const group = groupMap[groupId];
|
|
68
|
+
if (!group)
|
|
69
|
+
return [];
|
|
70
|
+
const subgroups = recursive
|
|
71
|
+
? Array.from(group.descendantIds()).map(id => groupMap[id])
|
|
72
|
+
: group.children;
|
|
73
|
+
return subgroups;
|
|
74
|
+
}
|
|
75
|
+
async getAllSubs(groupIds) {
|
|
76
|
+
return unique((await Promise.all(groupIds.map(async (id) => await this.getSubgroups(id)))).flat(), 'id');
|
|
77
|
+
}
|
|
78
|
+
async getSuperGroups(groupId, recursive = true) {
|
|
79
|
+
const groupMap = await groupHierarchyCache.get();
|
|
80
|
+
const group = groupMap[groupId];
|
|
81
|
+
if (!group)
|
|
82
|
+
return [];
|
|
83
|
+
const supergroups = recursive
|
|
84
|
+
? Array.from(group.ancestorIds()).map(id => groupMap[id])
|
|
85
|
+
: group.parents;
|
|
86
|
+
return supergroups;
|
|
87
|
+
}
|
|
88
|
+
async getAllSupers(groupIds) {
|
|
89
|
+
return unique((await Promise.all(groupIds.map(async (id) => await this.getSuperGroups(id)))).flat(), 'id');
|
|
90
|
+
}
|
|
91
|
+
async findByRoleId(roleId, direct, filter) {
|
|
92
|
+
let ret;
|
|
93
|
+
if (direct) {
|
|
94
|
+
ret = await this.loaders.get(groupsByRoleIdLoader, filter).load(roleId);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// need to get all of the groups and subgroups and THEN filter them
|
|
98
|
+
const groups = await this.loaders.get(groupsByRoleIdLoader).load(roleId);
|
|
99
|
+
const subgroups = await this.getAllSubs(groups.map(g => g.id));
|
|
100
|
+
ret = (typeof direct === 'undefined') ? unique([...groups, ...subgroups], 'id') : subgroups;
|
|
101
|
+
if (filter?.ids?.length) {
|
|
102
|
+
const lookingFor = new Set(filter.ids);
|
|
103
|
+
ret = ret.filter(sg => lookingFor.has(sg.id));
|
|
104
|
+
}
|
|
105
|
+
if (filter?.managerIds?.length) {
|
|
106
|
+
const lookingFor = new Set(filter.managerIds);
|
|
107
|
+
ret = await filterConcurrent(ret, async (sg) => {
|
|
108
|
+
const managers = await this.svc(UserService).findGroupManagers(sg.id);
|
|
109
|
+
return managers.some(manager => lookingFor.has(manager.id));
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return ret;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export class GroupService extends DosGatoService {
|
|
117
|
+
constructor() {
|
|
118
|
+
super(...arguments);
|
|
119
|
+
this.raw = this.svc(GroupServiceInternal);
|
|
120
|
+
}
|
|
121
|
+
async find(filter) {
|
|
122
|
+
return await this.removeUnauthorized(await this.raw.find(filter));
|
|
123
|
+
}
|
|
124
|
+
async findById(id) {
|
|
125
|
+
return await this.removeUnauthorized(await this.raw.findById(id));
|
|
126
|
+
}
|
|
127
|
+
async findByUserId(userId, direct) {
|
|
128
|
+
return await this.removeUnauthorized(await this.raw.findByUserId(userId, direct));
|
|
129
|
+
}
|
|
130
|
+
async findByManager(manager, direct) {
|
|
131
|
+
return await this.removeUnauthorized(await this.raw.findByManager(manager, direct));
|
|
132
|
+
}
|
|
133
|
+
async findBySite(site) {
|
|
134
|
+
return await this.removeUnauthorized(await this.raw.findBySite(site));
|
|
135
|
+
}
|
|
136
|
+
async getSubgroups(groupId, recursive = true) {
|
|
137
|
+
return await this.removeUnauthorized(await this.raw.getSubgroups(groupId, recursive));
|
|
138
|
+
}
|
|
139
|
+
async getAllSubs(groupIds) {
|
|
140
|
+
return await this.removeUnauthorized(await this.raw.getAllSubs(groupIds));
|
|
141
|
+
}
|
|
142
|
+
async getSuperGroups(groupId, recursive = true) {
|
|
143
|
+
return await this.removeUnauthorized(await this.raw.getSuperGroups(groupId, recursive));
|
|
144
|
+
}
|
|
145
|
+
async getAllSupers(groupIds) {
|
|
146
|
+
return await this.removeUnauthorized(await this.raw.getAllSupers(groupIds));
|
|
147
|
+
}
|
|
148
|
+
async findByRoleId(roleId, direct, filter) {
|
|
149
|
+
return await this.removeUnauthorized(await this.raw.findByRoleId(roleId, direct, filter));
|
|
150
|
+
}
|
|
151
|
+
async create(name) {
|
|
152
|
+
if (!(await this.mayCreate()))
|
|
153
|
+
throw new Error('Current user is not permitted to create groups.');
|
|
154
|
+
const response = new GroupResponse({});
|
|
155
|
+
try {
|
|
156
|
+
const groupId = await createGroup(name);
|
|
157
|
+
await groupHierarchyCache.clear();
|
|
158
|
+
const newGroup = await this.loaders.get(groupsByIdLoader).load(String(groupId));
|
|
159
|
+
response.success = true;
|
|
160
|
+
response.group = newGroup;
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
if (err.code === 'ER_DUP_ENTRY') {
|
|
164
|
+
response.addMessage(`Group ${name} already exists.`, 'name');
|
|
165
|
+
return response;
|
|
166
|
+
}
|
|
167
|
+
console.error(err);
|
|
168
|
+
throw new Error(`An unknown error occurred while attempting to create group ${name}.`);
|
|
169
|
+
}
|
|
170
|
+
return response;
|
|
171
|
+
}
|
|
172
|
+
async update(id, name) {
|
|
173
|
+
const group = await this.findById(id);
|
|
174
|
+
if (!group)
|
|
175
|
+
throw new Error('Group to be updated does not exist.');
|
|
176
|
+
if (!(await this.mayUpdate(group)))
|
|
177
|
+
throw new Error('Current user is not permitted to update group names.');
|
|
178
|
+
const response = new GroupResponse({});
|
|
179
|
+
try {
|
|
180
|
+
await updateGroup(id, name);
|
|
181
|
+
await groupHierarchyCache.clear();
|
|
182
|
+
this.loaders.clear();
|
|
183
|
+
const updated = await this.loaders.get(groupsByIdLoader).load(id);
|
|
184
|
+
response.success = true;
|
|
185
|
+
response.group = updated;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
if (err.code === 'ER_DUP_ENTRY') {
|
|
189
|
+
response.addMessage(`Group ${name} already exists.`, 'name');
|
|
190
|
+
return response;
|
|
191
|
+
}
|
|
192
|
+
console.error(err);
|
|
193
|
+
throw new Error(`An unknown error occurred while updating the name for group ${group.name}.`);
|
|
194
|
+
}
|
|
195
|
+
return response;
|
|
196
|
+
}
|
|
197
|
+
async delete(id) {
|
|
198
|
+
const group = await this.findById(id);
|
|
199
|
+
if (!group)
|
|
200
|
+
throw new Error('Group to be deleted does not exist.');
|
|
201
|
+
if (!(await this.mayDelete(group)))
|
|
202
|
+
throw new Error('Current user is not permitted to delete groups.');
|
|
203
|
+
try {
|
|
204
|
+
await deleteGroup(id);
|
|
205
|
+
await groupHierarchyCache.clear();
|
|
206
|
+
return new ValidatedResponse({ success: true });
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
console.error(err);
|
|
210
|
+
throw new Error(`An unknown error occurred while attempting to delete group ${group.name}.`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async addUserToGroups(groupIds, userId) {
|
|
214
|
+
const groups = (await (await Promise.all(groupIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull));
|
|
215
|
+
if (await someAsync(groups, async (g) => !(await this.mayManageUsers(g)))) {
|
|
216
|
+
throw new Error('Current user is not permitted to add user to one or more groups.');
|
|
217
|
+
}
|
|
218
|
+
const user = await this.svc(UserService).findById(userId);
|
|
219
|
+
if (!user)
|
|
220
|
+
throw new Error('Cannot add user who does not exist');
|
|
221
|
+
try {
|
|
222
|
+
await addUserToGroups(groups.map(g => g.id), user.internalId);
|
|
223
|
+
return new ValidatedResponse({ success: true });
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
console.error(err);
|
|
227
|
+
throw new Error('Unable to add user to one or more groups');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async removeUserFromGroup(groupIds, userId) {
|
|
231
|
+
const groups = (await (await Promise.all(groupIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull));
|
|
232
|
+
if (await someAsync(groups, async (g) => !(await this.mayManageUsers(g)))) {
|
|
233
|
+
throw new Error('Current user is not permitted to remove user from one or more groups.');
|
|
234
|
+
}
|
|
235
|
+
const user = await this.svc(UserService).findById(userId);
|
|
236
|
+
if (!user)
|
|
237
|
+
throw new Error('Cannot add user who does not exist');
|
|
238
|
+
try {
|
|
239
|
+
const removed = await removeUserFromGroups(groupIds, user.internalId);
|
|
240
|
+
return new ValidatedResponse({ success: true });
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
console.log(err);
|
|
244
|
+
throw new Error('Unable to remove user from one or more groups');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
async setUserGroups(userId, groupIds) {
|
|
248
|
+
const groups = (await (await Promise.all(groupIds.map(async (id) => await this.raw.findById(id)))).filter(isNotNull));
|
|
249
|
+
if (await someAsync(groups, async (g) => !(await this.mayManageUsers(g)))) {
|
|
250
|
+
throw new Error('Current user is not permitted to manage users for one or more groups.');
|
|
251
|
+
}
|
|
252
|
+
const user = await this.svc(UserService).findById(userId);
|
|
253
|
+
if (!user)
|
|
254
|
+
throw new Error('Cannot update group membership for user who does not exist');
|
|
255
|
+
try {
|
|
256
|
+
await setUserGroups(user.internalId, groupIds);
|
|
257
|
+
return new ValidatedResponse({ success: true });
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
console.error(err);
|
|
261
|
+
throw new Error(`Unable to update group memberships for user ${user.id}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async setGroupManager(groupId, userId, manager) {
|
|
265
|
+
const group = await this.findById(groupId);
|
|
266
|
+
if (!group)
|
|
267
|
+
throw new Error('Group to be updated does not exist.');
|
|
268
|
+
if (!(await this.mayUpdate(group)))
|
|
269
|
+
throw new Error('Current user is not permitted to add or remove group managers.');
|
|
270
|
+
const user = await this.svc(UserService).findById(userId);
|
|
271
|
+
if (!user)
|
|
272
|
+
throw new Error('User does not exist');
|
|
273
|
+
await setGroupManager(groupId, user.internalId, manager);
|
|
274
|
+
this.loaders.clear();
|
|
275
|
+
const updatedGroup = await this.findById(groupId);
|
|
276
|
+
return new GroupResponse({ success: true, group: updatedGroup });
|
|
277
|
+
}
|
|
278
|
+
async addGroupSite(groupId, siteId) {
|
|
279
|
+
const group = await this.raw.findById(groupId);
|
|
280
|
+
if (!group)
|
|
281
|
+
throw new Error('Group to be updated does not exist.');
|
|
282
|
+
if (!await this.mayUpdate(group))
|
|
283
|
+
throw new Error('Current user is not permitted to add or remove sites from this group.');
|
|
284
|
+
await addGroupSite(groupId, siteId);
|
|
285
|
+
this.loaders.clear();
|
|
286
|
+
const updatedGroup = await this.findById(groupId);
|
|
287
|
+
return new GroupResponse({ success: true, group: updatedGroup });
|
|
288
|
+
}
|
|
289
|
+
async removeGroupSite(groupId, siteId) {
|
|
290
|
+
const group = await this.raw.findById(groupId);
|
|
291
|
+
if (!group)
|
|
292
|
+
throw new Error('Group to be updated does not exist.');
|
|
293
|
+
if (!await this.mayUpdate(group))
|
|
294
|
+
throw new Error('Current user is not permitted to add or remove sites from this group.');
|
|
295
|
+
await removeGroupSite(groupId, siteId);
|
|
296
|
+
this.loaders.clear();
|
|
297
|
+
const updatedGroup = await this.findById(groupId);
|
|
298
|
+
return new GroupResponse({ success: true, group: updatedGroup });
|
|
299
|
+
}
|
|
300
|
+
async addSubgroup(parentId, childId) {
|
|
301
|
+
const [parentGroup, childGroup] = await Promise.all([
|
|
302
|
+
this.findById(parentId),
|
|
303
|
+
this.findById(childId)
|
|
304
|
+
]);
|
|
305
|
+
if (!parentGroup)
|
|
306
|
+
throw new Error('Group to be updated does not exist.');
|
|
307
|
+
if (!childGroup)
|
|
308
|
+
throw new Error('Group to be added as a subgroup does not exist.');
|
|
309
|
+
if (!(await this.mayManageGroups(parentGroup)))
|
|
310
|
+
throw new Error(`Current user is not permitted add a subgroup to group ${parentGroup.name}.`);
|
|
311
|
+
try {
|
|
312
|
+
await addSubgroup(parentId, childId);
|
|
313
|
+
await groupHierarchyCache.clear();
|
|
314
|
+
return new ValidatedResponse({ success: true });
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
console.error(err);
|
|
318
|
+
throw new Error(`An unknown error occurred while adding a subgroup to group ${parentGroup.name}.`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
async removeSubgroup(parentId, childId) {
|
|
322
|
+
const [parentGroup, childGroup] = await Promise.all([
|
|
323
|
+
this.findById(parentId),
|
|
324
|
+
this.findById(childId)
|
|
325
|
+
]);
|
|
326
|
+
if (!parentGroup)
|
|
327
|
+
throw new Error('Group to be updated does not exist.');
|
|
328
|
+
if (!childGroup)
|
|
329
|
+
throw new Error('Group to be added as a subgroup does not exist.');
|
|
330
|
+
if (!(await this.mayManageGroups(parentGroup)))
|
|
331
|
+
throw new Error(`Current user is not permitted remove subgroups from group ${parentGroup.name}.`);
|
|
332
|
+
try {
|
|
333
|
+
const removed = await removeSubgroup(parentId, childId);
|
|
334
|
+
if (removed) {
|
|
335
|
+
await groupHierarchyCache.clear();
|
|
336
|
+
return new ValidatedResponse({ success: true });
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
const response = new ValidatedResponse();
|
|
340
|
+
response.addMessage(`Cannot remove non-existent subgroup relationship. ${childGroup.name} is not a subgroup of ${parentGroup.name}.`);
|
|
341
|
+
return response;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
console.error(err);
|
|
346
|
+
throw new Error(`An unknown error occurred while removing subgroup ${childGroup.name} from group ${parentGroup.name}.`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
async isManager(group) {
|
|
350
|
+
const managers = await this.svc(UserServiceInternal).findGroupManagers(group.id);
|
|
351
|
+
return managers.some(m => m.id === this.login);
|
|
352
|
+
}
|
|
353
|
+
async mayView(group) {
|
|
354
|
+
if (await this.haveGlobalPerm('manageUsers'))
|
|
355
|
+
return true;
|
|
356
|
+
if (await this.currentGroupsById(group.id))
|
|
357
|
+
return true;
|
|
358
|
+
return await this.isManager(group);
|
|
359
|
+
}
|
|
360
|
+
async mayViewManagerUI() {
|
|
361
|
+
const user = await this.currentUser();
|
|
362
|
+
if (!user)
|
|
363
|
+
return false;
|
|
364
|
+
return (await this.haveGlobalPerm('manageUsers')) || (await this.findByManager(user)).length > 0;
|
|
365
|
+
}
|
|
366
|
+
async mayCreate() {
|
|
367
|
+
return await this.haveGlobalPerm('manageUsers');
|
|
368
|
+
}
|
|
369
|
+
async mayUpdate(group) {
|
|
370
|
+
return await this.haveGlobalPerm('manageUsers');
|
|
371
|
+
}
|
|
372
|
+
async mayDelete(group) {
|
|
373
|
+
return await this.haveGlobalPerm('manageUsers');
|
|
374
|
+
}
|
|
375
|
+
async mayManageUsers(group) {
|
|
376
|
+
if (await this.haveGlobalPerm('manageUsers'))
|
|
377
|
+
return true;
|
|
378
|
+
return await this.isManager(group);
|
|
379
|
+
}
|
|
380
|
+
async mayManageGroups(group) {
|
|
381
|
+
return await this.mayManageUsers(group);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=group.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.service.js","sourceRoot":"","sources":["../../src/group/group.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EACe,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAClF,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EACzF,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EACnF,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAc,iBAAiB,EACrH,MAAM,gBAAgB,CAAA;AAEvB,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;IAC5C,KAAK,EAAE,KAAK,EAAE,GAAa,EAAE,EAAE;QAC7B,OAAO,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IACjC,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC;IAChD,KAAK,EAAE,KAAK,EAAE,OAAiB,EAAE,EAAE;QACjC,OAAO,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IACD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,IAAI,gBAAgB,CAAC;IACnD,KAAK,EAAE,KAAK,EAAE,UAAoB,EAAE,MAAgB,EAAE,EAAE;QACtD,OAAO,MAAM,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IACD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC;IAChD,KAAK,EAAE,KAAK,EAAE,OAAiB,EAAE,EAAE;QACjC,OAAO,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IACD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC;IAChD,KAAK,EAAE,KAAK,EAAE,OAAiB,EAAE,MAAoB,EAAE,EAAE;QACvD,OAAO,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IACD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAA;AAEF,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,KAAK,CAAC,IAAI,CAAE,MAAoB;QAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACrF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,EAAU;QACxB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,MAAc,EAAE,MAAgB;QAClD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9E,IAAI,GAAG,GAAG,YAAY,CAAA;QACtB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YAC9D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC,CAAA;aACzD;iBAAM;gBACL,GAAG,GAAG,cAAc,CAAA;aACrB;SACF;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,OAAa,EAAE,MAAgB;QAClD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,IAAU;QAC1B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,OAAe,EAAE,YAAqB,IAAI;QAC5D,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,MAAM,SAAS,GAAG,SAAS;YACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,KAAK,CAAC,QAAmB,CAAA;QAC7B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,QAAkB;QAClC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;IACxG,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,OAAe,EAAE,SAAS,GAAG,IAAI;QACrD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,MAAM,WAAW,GAAG,SAAS;YAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,KAAK,CAAC,OAAkB,CAAA;QAC5B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,QAAkB;QACpC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1G,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,MAAc,EAAE,MAAgB,EAAE,MAAoB;QACxE,IAAI,GAAY,CAAA;QAChB,IAAI,MAAM,EAAE;YACV,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACxE;aAAM;YACL,mEAAmE;YACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACxE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9D,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3F,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;gBACvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;aAC9C;YACD,IAAI,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;gBAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAC7C,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;oBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;oBACrE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7D,CAAC,CAAC,CAAA;aACH;SACF;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,cAAqB;IAAvD;;QACE,QAAG,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAkQtC,CAAC;IAhQC,KAAK,CAAC,IAAI,CAAE,MAAoB;QAC9B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,EAAU;QACxB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,MAAc,EAAE,MAAgB;QAClD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,OAAa,EAAE,MAAgB;QAClD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,IAAU;QAC1B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,OAAe,EAAE,YAAqB,IAAI;QAC5D,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,QAAkB;QAClC,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,OAAe,EAAE,SAAS,GAAG,IAAI;QACrD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,QAAkB;QACpC,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,MAAc,EAAE,MAAgB,EAAE,MAAoB;QACxE,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3F,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,IAAY;QACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACjG,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;YACvC,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAA;YACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAC/E,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;YACvB,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAA;SAC1B;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;gBAC/B,QAAQ,CAAC,UAAU,CAAC,SAAS,IAAI,kBAAkB,EAAE,MAAM,CAAC,CAAA;gBAC5D,OAAO,QAAQ,CAAA;aAChB;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,GAAG,CAAC,CAAA;SACvF;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,EAAU,EAAE,IAAY;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QAC3G,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI;YACF,MAAM,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAC3B,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAA;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;YACvB,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAA;SACzB;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;gBAC/B,QAAQ,CAAC,UAAU,CAAC,SAAS,IAAI,kBAAkB,EAAE,MAAM,CAAC,CAAA;gBAC5D,OAAO,QAAQ,CAAA;aAChB;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;SAC9F;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,EAAU;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACtG,IAAI;YACF,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;YACrB,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAA;YACjC,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,8DAA8D,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;SAC7F;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,QAAkB,EAAE,MAAc;QACvD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QACnH,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAChF,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;SACpF;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAChE,IAAI;YACF,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YAC7D,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAE,QAAkB,EAAE,MAAc;QAC3D,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QACnH,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAChF,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;SACzF;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAChE,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YACrE,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,MAAc,EAAE,QAAkB;QACrD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QACnH,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAChF,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;SACzF;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QACxF,IAAI;YACF,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAC9C,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;SAC1E;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,OAAe,EAAE,MAAc,EAAE,OAAgB;QACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;QACrH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACjD,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,OAAe,EAAE,MAAc;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;QAC1H,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,OAAe,EAAE,MAAc;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;QAC1H,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,QAAgB,EAAE,OAAe;QAClD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SACvB,CAAC,CAAA;QACF,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACnF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;QAC7I,IAAI;YACF,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACpC,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAA;YACjC,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;SAChD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,8DAA8D,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;SACnG;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,QAAgB,EAAE,OAAe;QACrD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SACvB,CAAC,CAAA;QACF,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACnF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;QACjJ,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACvD,IAAI,OAAO,EAAE;gBACX,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAA;gBACjC,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;aAChD;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;gBACxC,QAAQ,CAAC,UAAU,CAAC,qDAAqD,UAAU,CAAC,IAAI,yBAAyB,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrI,OAAO,QAAQ,CAAA;aAChB;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,CAAC,IAAI,eAAe,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;SACxH;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,KAAY;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAE,KAAY;QACzB,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAA;QACzD,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAA;QACvD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QACvB,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAClG,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,KAAY;QAC3B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,KAAY;QAC3B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,KAAY;QAChC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAA;QACzD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,KAAY;QACjC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { APITemplate } from '@dosgato/templating';
|
|
2
|
+
import { GQLServer, GQLStartOpts } from '@txstate-mws/graphql-server';
|
|
3
|
+
import { FastifyInstance } from 'fastify';
|
|
4
|
+
import { FastifyTxStateOptions } from 'fastify-txstate';
|
|
5
|
+
import { DBMigration } from './internal.js';
|
|
6
|
+
export interface DGStartOpts extends Omit<GQLStartOpts, 'resolvers'> {
|
|
7
|
+
templates: APITemplate[];
|
|
8
|
+
fixtures?: () => Promise<void>;
|
|
9
|
+
migrations?: DBMigration[];
|
|
10
|
+
resolvers?: Function[];
|
|
11
|
+
}
|
|
12
|
+
export declare class DGServer {
|
|
13
|
+
protected gqlServer: GQLServer;
|
|
14
|
+
app: FastifyInstance;
|
|
15
|
+
constructor(config?: FastifyTxStateOptions);
|
|
16
|
+
start(opts: DGStartOpts): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export * from './internal.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import multipart from '@fastify/multipart';
|
|
2
|
+
import { Context, GQLServer, AuthError } from '@txstate-mws/graphql-server';
|
|
3
|
+
import { DateTime } from 'luxon';
|
|
4
|
+
import { promises as fsp } from 'fs';
|
|
5
|
+
import { migrations } from './migrations.js';
|
|
6
|
+
import { DateTimeScalar, UrlSafeString, UrlSafeStringScalar, AssetPermissionsResolver, AssetResolver, AssetRuleResolver, AssetRulePermissionsResolver, DataPermissionsResolver, DataResolver, DataRuleResolver, DataRulePermissionsResolver, AssetFolderResolver, AssetFolderPermissionsResolver, PagePermissionsResolver, PageResolver, PageRulePermissionsResolver, PageRuleResolver, PagetreePermissionsResolver, PagetreeResolver, RolePermissionsResolver, RoleResolver, SitePermissionsResolver, SiteResolver, SiteRulePermissionsResolver, SiteRuleResolver, TemplateAreaResolver, TemplatePermissionsResolver, TemplateResolver, UserPermissionsResolver, UserResolver, DataFolderPermissionsResolver, DataFolderResolver, GroupPermissionsResolver, GroupResolver, GlobalRulePermissionsResolver, GlobalRuleResolver, VersionResolver, OrganizationResolver, AccessResolver, TemplateRulePermissionsResolver, TemplateRuleResolver, logMutation, handleUpload, templateRegistry, syncRegistryWithDB, UserServiceInternal, DataRootResolver, DataRootPermissionsResolver } from './internal.js';
|
|
7
|
+
async function getEnabledUser(ctx) {
|
|
8
|
+
await ctx.waitForAuth();
|
|
9
|
+
if (!ctx.auth?.sub)
|
|
10
|
+
throw new AuthError();
|
|
11
|
+
const user = await ctx.svc(UserServiceInternal).findById(ctx.auth.sub);
|
|
12
|
+
if (!user || user.disabled)
|
|
13
|
+
throw new AuthError();
|
|
14
|
+
return user;
|
|
15
|
+
}
|
|
16
|
+
export class DGServer {
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.gqlServer = new GQLServer(config);
|
|
19
|
+
this.app = this.gqlServer.app;
|
|
20
|
+
}
|
|
21
|
+
async start(opts) {
|
|
22
|
+
for (const template of opts.templates)
|
|
23
|
+
templateRegistry.register(template);
|
|
24
|
+
await migrations(opts.migrations);
|
|
25
|
+
// sync templates with database
|
|
26
|
+
await syncRegistryWithDB();
|
|
27
|
+
if (process.env.NODE_ENV === 'development' && process.env.RESET_DB_ON_STARTUP === 'true') {
|
|
28
|
+
await opts.fixtures?.();
|
|
29
|
+
}
|
|
30
|
+
// TODO: Add endpoint for getting assets. /assets/:id or /files/:id
|
|
31
|
+
await this.app.register(multipart);
|
|
32
|
+
await fsp.mkdir('/files/tmp', { recursive: true });
|
|
33
|
+
this.app.post('/files', async (req, res) => {
|
|
34
|
+
const ctx = new Context(req);
|
|
35
|
+
await getEnabledUser(ctx); // throws if not authorized
|
|
36
|
+
const files = await handleUpload(req, res);
|
|
37
|
+
return files;
|
|
38
|
+
});
|
|
39
|
+
const resolvers = [
|
|
40
|
+
AccessResolver,
|
|
41
|
+
AssetResolver,
|
|
42
|
+
AssetPermissionsResolver,
|
|
43
|
+
AssetRuleResolver,
|
|
44
|
+
AssetRulePermissionsResolver,
|
|
45
|
+
AssetFolderResolver,
|
|
46
|
+
AssetFolderPermissionsResolver,
|
|
47
|
+
DataResolver,
|
|
48
|
+
DataPermissionsResolver,
|
|
49
|
+
DataRuleResolver,
|
|
50
|
+
DataRulePermissionsResolver,
|
|
51
|
+
DataFolderResolver,
|
|
52
|
+
DataFolderPermissionsResolver,
|
|
53
|
+
DataRootResolver,
|
|
54
|
+
DataRootPermissionsResolver,
|
|
55
|
+
GlobalRuleResolver,
|
|
56
|
+
GlobalRulePermissionsResolver,
|
|
57
|
+
GroupResolver,
|
|
58
|
+
GroupPermissionsResolver,
|
|
59
|
+
OrganizationResolver,
|
|
60
|
+
PageResolver,
|
|
61
|
+
PagePermissionsResolver,
|
|
62
|
+
PageRuleResolver,
|
|
63
|
+
PageRulePermissionsResolver,
|
|
64
|
+
PagetreeResolver,
|
|
65
|
+
PagetreePermissionsResolver,
|
|
66
|
+
RoleResolver,
|
|
67
|
+
RolePermissionsResolver,
|
|
68
|
+
SiteResolver,
|
|
69
|
+
SitePermissionsResolver,
|
|
70
|
+
SiteRuleResolver,
|
|
71
|
+
SiteRulePermissionsResolver,
|
|
72
|
+
TemplateAreaResolver,
|
|
73
|
+
TemplateResolver,
|
|
74
|
+
TemplatePermissionsResolver,
|
|
75
|
+
TemplateRuleResolver,
|
|
76
|
+
TemplateRulePermissionsResolver,
|
|
77
|
+
UserResolver,
|
|
78
|
+
UserPermissionsResolver,
|
|
79
|
+
VersionResolver
|
|
80
|
+
];
|
|
81
|
+
resolvers.push(...(opts.resolvers ?? []));
|
|
82
|
+
const scalarsMap = [
|
|
83
|
+
{ type: UrlSafeString, scalar: UrlSafeStringScalar },
|
|
84
|
+
{ type: DateTime, scalar: DateTimeScalar }
|
|
85
|
+
];
|
|
86
|
+
scalarsMap.push(...(opts.scalarsMap ?? []));
|
|
87
|
+
const after = async (...args) => {
|
|
88
|
+
await Promise.all([
|
|
89
|
+
opts.after?.(...args),
|
|
90
|
+
logMutation(...args)
|
|
91
|
+
]);
|
|
92
|
+
};
|
|
93
|
+
return await this.gqlServer.start({
|
|
94
|
+
...opts,
|
|
95
|
+
send401: true,
|
|
96
|
+
send403: async (ctx) => {
|
|
97
|
+
if (!ctx.auth?.sub)
|
|
98
|
+
return true;
|
|
99
|
+
const user = await ctx.svc(UserServiceInternal).findById(ctx.auth?.sub);
|
|
100
|
+
return !user || user.disabled;
|
|
101
|
+
},
|
|
102
|
+
resolvers,
|
|
103
|
+
scalarsMap,
|
|
104
|
+
after
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export * from './internal.js';
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export * from './scalars/index.js';
|
|
2
|
+
export * from './versionedservice/types.js';
|
|
3
|
+
export * from './role/role.model.js';
|
|
4
|
+
export * from './access/access.model.js';
|
|
5
|
+
export * from './asset/asset.model.js';
|
|
6
|
+
export * from './assetfolder/assetfolder.model.js';
|
|
7
|
+
export * from './assetrule/assetrule.model.js';
|
|
8
|
+
export * from './data/data.model.js';
|
|
9
|
+
export * from './datafolder/datafolder.model.js';
|
|
10
|
+
export * from './datarule/datarule.model.js';
|
|
11
|
+
export * from './globalrule/globalrule.model.js';
|
|
12
|
+
export * from './group/group.model.js';
|
|
13
|
+
export * from './organization/organization.model.js';
|
|
14
|
+
export * from './page/page.model.js';
|
|
15
|
+
export * from './pagerule/pagerule.model.js';
|
|
16
|
+
export * from './pagetree/pagetree.model.js';
|
|
17
|
+
export * from './site/site.model.js';
|
|
18
|
+
export * from './siterule/siterule.model.js';
|
|
19
|
+
export * from './template/template.model.js';
|
|
20
|
+
export * from './templaterule/templaterule.model.js';
|
|
21
|
+
export * from './user/user.model.js';
|
|
22
|
+
export * from './dataroot/dataroot.model.js';
|
|
23
|
+
export * from './version/version.model.js';
|
|
24
|
+
export * from './util/index.js';
|
|
25
|
+
export * from './asset/asset.database.js';
|
|
26
|
+
export * from './assetfolder/assetfolder.database.js';
|
|
27
|
+
export * from './assetrule/assetrule.database.js';
|
|
28
|
+
export * from './data/data.database.js';
|
|
29
|
+
export * from './datafolder/datafolder.database.js';
|
|
30
|
+
export * from './datarule/datarule.database.js';
|
|
31
|
+
export * from './globalrule/globalrule.database.js';
|
|
32
|
+
export * from './group/group.database.js';
|
|
33
|
+
export * from './organization/organization.database.js';
|
|
34
|
+
export * from './page/page.database.js';
|
|
35
|
+
export * from './pagerule/pagerule.database.js';
|
|
36
|
+
export * from './pagetree/pagetree.database.js';
|
|
37
|
+
export * from './role/role.database.js';
|
|
38
|
+
export * from './site/site.database.js';
|
|
39
|
+
export * from './siterule/siterule.database.js';
|
|
40
|
+
export * from './template/template.database.js';
|
|
41
|
+
export * from './templaterule/templaterule.database.js';
|
|
42
|
+
export * from './user/user.database.js';
|
|
43
|
+
export * from './page/page.util.js';
|
|
44
|
+
export * from './page/page.indexing.js';
|
|
45
|
+
export * from './page/page.migrations.js';
|
|
46
|
+
export * from './page/page.validation.js';
|
|
47
|
+
export * from './data/data.indexing.js';
|
|
48
|
+
export * from './asset/asset.service.js';
|
|
49
|
+
export * from './assetfolder/assetfolder.service.js';
|
|
50
|
+
export * from './data/data.service.js';
|
|
51
|
+
export * from './datafolder/datafolder.service.js';
|
|
52
|
+
export * from './dataroot/dataroot.service.js';
|
|
53
|
+
export * from './assetrule/assetrule.service.js';
|
|
54
|
+
export * from './datarule/datarule.service.js';
|
|
55
|
+
export * from './globalrule/globalrule.service.js';
|
|
56
|
+
export * from './group/group.service.js';
|
|
57
|
+
export * from './organization/organization.service.js';
|
|
58
|
+
export * from './page/page.service.js';
|
|
59
|
+
export * from './pagerule/pagerule.service.js';
|
|
60
|
+
export * from './pagetree/pagetree.service.js';
|
|
61
|
+
export * from './role/role.service.js';
|
|
62
|
+
export * from './site/site.service.js';
|
|
63
|
+
export * from './siterule/siterule.service.js';
|
|
64
|
+
export * from './template/template.service.js';
|
|
65
|
+
export * from './templaterule/templaterule.service.js';
|
|
66
|
+
export * from './user/user.service.js';
|
|
67
|
+
export * from './versionedservice/service.js';
|
|
68
|
+
export * from './access/access.resolver.js';
|
|
69
|
+
export * from './asset/asset.resolver.js';
|
|
70
|
+
export * from './assetfolder/assetfolder.resolver.js';
|
|
71
|
+
export * from './assetrule/assetrule.resolver.js';
|
|
72
|
+
export * from './data/data.resolver.js';
|
|
73
|
+
export * from './datafolder/datafolder.resolver.js';
|
|
74
|
+
export * from './dataroot/dataroot.resolver.js';
|
|
75
|
+
export * from './datarule/datarule.resolver.js';
|
|
76
|
+
export * from './globalrule/globalrule.resolver.js';
|
|
77
|
+
export * from './group/group.resolver.js';
|
|
78
|
+
export * from './organization/organization.resolver.js';
|
|
79
|
+
export * from './page/page.resolver.js';
|
|
80
|
+
export * from './pagerule/pagerule.resolver.js';
|
|
81
|
+
export * from './pagetree/pagetree.resolver.js';
|
|
82
|
+
export * from './role/role.resolver.js';
|
|
83
|
+
export * from './site/site.resolver.js';
|
|
84
|
+
export * from './siterule/siterule.resolver.js';
|
|
85
|
+
export * from './template/template.resolver.js';
|
|
86
|
+
export * from './templaterule/templaterule.resolver.js';
|
|
87
|
+
export * from './user/user.resolver.js';
|
|
88
|
+
export * from './version/version.resolver.js';
|