@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.
Files changed (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/access/access.model.d.ts +2 -0
  4. package/dist/access/access.model.js +14 -0
  5. package/dist/access/access.model.js.map +1 -0
  6. package/dist/access/access.resolver.d.ts +15 -0
  7. package/dist/access/access.resolver.js +133 -0
  8. package/dist/access/access.resolver.js.map +1 -0
  9. package/dist/asset/asset.database.d.ts +12 -0
  10. package/dist/asset/asset.database.js +116 -0
  11. package/dist/asset/asset.database.js.map +1 -0
  12. package/dist/asset/asset.model.d.ts +81 -0
  13. package/dist/asset/asset.model.js +271 -0
  14. package/dist/asset/asset.model.js.map +1 -0
  15. package/dist/asset/asset.resolver.d.ts +32 -0
  16. package/dist/asset/asset.resolver.js +325 -0
  17. package/dist/asset/asset.resolver.js.map +1 -0
  18. package/dist/asset/asset.service.d.ts +35 -0
  19. package/dist/asset/asset.service.js +225 -0
  20. package/dist/asset/asset.service.js.map +1 -0
  21. package/dist/assetfolder/assetfolder.database.d.ts +7 -0
  22. package/dist/assetfolder/assetfolder.database.js +85 -0
  23. package/dist/assetfolder/assetfolder.database.js.map +1 -0
  24. package/dist/assetfolder/assetfolder.model.d.ts +56 -0
  25. package/dist/assetfolder/assetfolder.model.js +160 -0
  26. package/dist/assetfolder/assetfolder.model.js.map +1 -0
  27. package/dist/assetfolder/assetfolder.resolver.d.ts +25 -0
  28. package/dist/assetfolder/assetfolder.resolver.js +255 -0
  29. package/dist/assetfolder/assetfolder.resolver.js.map +1 -0
  30. package/dist/assetfolder/assetfolder.service.d.ts +39 -0
  31. package/dist/assetfolder/assetfolder.service.js +355 -0
  32. package/dist/assetfolder/assetfolder.service.js.map +1 -0
  33. package/dist/assetrule/assetrule.database.d.ts +5 -0
  34. package/dist/assetrule/assetrule.database.js +161 -0
  35. package/dist/assetrule/assetrule.database.js.map +1 -0
  36. package/dist/assetrule/assetrule.model.d.ts +71 -0
  37. package/dist/assetrule/assetrule.model.js +221 -0
  38. package/dist/assetrule/assetrule.model.js.map +1 -0
  39. package/dist/assetrule/assetrule.resolver.d.ts +12 -0
  40. package/dist/assetrule/assetrule.resolver.js +100 -0
  41. package/dist/assetrule/assetrule.resolver.js.map +1 -0
  42. package/dist/assetrule/assetrule.service.d.ts +26 -0
  43. package/dist/assetrule/assetrule.service.js +184 -0
  44. package/dist/assetrule/assetrule.service.js.map +1 -0
  45. package/dist/createdb.d.ts +2 -0
  46. package/dist/createdb.js +541 -0
  47. package/dist/createdb.js.map +1 -0
  48. package/dist/data/data.database.d.ts +7 -0
  49. package/dist/data/data.database.js +265 -0
  50. package/dist/data/data.database.js.map +1 -0
  51. package/dist/data/data.indexing.d.ts +2 -0
  52. package/dist/data/data.indexing.js +23 -0
  53. package/dist/data/data.indexing.js.map +1 -0
  54. package/dist/data/data.model.d.ts +69 -0
  55. package/dist/data/data.model.js +206 -0
  56. package/dist/data/data.model.js.map +1 -0
  57. package/dist/data/data.resolver.d.ts +36 -0
  58. package/dist/data/data.resolver.js +384 -0
  59. package/dist/data/data.resolver.js.map +1 -0
  60. package/dist/data/data.service.d.ts +41 -0
  61. package/dist/data/data.service.js +374 -0
  62. package/dist/data/data.service.js.map +1 -0
  63. package/dist/datafolder/datafolder.database.d.ts +7 -0
  64. package/dist/datafolder/datafolder.database.js +72 -0
  65. package/dist/datafolder/datafolder.database.js.map +1 -0
  66. package/dist/datafolder/datafolder.model.d.ts +48 -0
  67. package/dist/datafolder/datafolder.model.js +139 -0
  68. package/dist/datafolder/datafolder.model.js.map +1 -0
  69. package/dist/datafolder/datafolder.resolver.d.ts +24 -0
  70. package/dist/datafolder/datafolder.resolver.js +243 -0
  71. package/dist/datafolder/datafolder.resolver.js.map +1 -0
  72. package/dist/datafolder/datafolder.service.d.ts +32 -0
  73. package/dist/datafolder/datafolder.service.js +223 -0
  74. package/dist/datafolder/datafolder.service.js.map +1 -0
  75. package/dist/dataroot/dataroot.model.d.ts +19 -0
  76. package/dist/dataroot/dataroot.model.js +72 -0
  77. package/dist/dataroot/dataroot.model.js.map +1 -0
  78. package/dist/dataroot/dataroot.resolver.d.ts +11 -0
  79. package/dist/dataroot/dataroot.resolver.js +87 -0
  80. package/dist/dataroot/dataroot.resolver.js.map +1 -0
  81. package/dist/dataroot/dataroot.service.d.ts +12 -0
  82. package/dist/dataroot/dataroot.service.js +62 -0
  83. package/dist/dataroot/dataroot.service.js.map +1 -0
  84. package/dist/datarule/datarule.database.d.ts +5 -0
  85. package/dist/datarule/datarule.database.js +144 -0
  86. package/dist/datarule/datarule.database.js.map +1 -0
  87. package/dist/datarule/datarule.model.d.ts +55 -0
  88. package/dist/datarule/datarule.model.js +200 -0
  89. package/dist/datarule/datarule.model.js.map +1 -0
  90. package/dist/datarule/datarule.resolver.d.ts +13 -0
  91. package/dist/datarule/datarule.resolver.js +114 -0
  92. package/dist/datarule/datarule.resolver.js.map +1 -0
  93. package/dist/datarule/datarule.service.d.ts +27 -0
  94. package/dist/datarule/datarule.service.js +191 -0
  95. package/dist/datarule/datarule.service.js.map +1 -0
  96. package/dist/fixtures.d.ts +1 -0
  97. package/dist/fixtures.js +697 -0
  98. package/dist/fixtures.js.map +1 -0
  99. package/dist/fixturetemplates.d.ts +110 -0
  100. package/dist/fixturetemplates.js +178 -0
  101. package/dist/fixturetemplates.js.map +1 -0
  102. package/dist/globalrule/globalrule.database.d.ts +5 -0
  103. package/dist/globalrule/globalrule.database.js +65 -0
  104. package/dist/globalrule/globalrule.database.js.map +1 -0
  105. package/dist/globalrule/globalrule.model.d.ts +34 -0
  106. package/dist/globalrule/globalrule.model.js +120 -0
  107. package/dist/globalrule/globalrule.model.js.map +1 -0
  108. package/dist/globalrule/globalrule.resolver.d.ts +11 -0
  109. package/dist/globalrule/globalrule.resolver.js +85 -0
  110. package/dist/globalrule/globalrule.resolver.js.map +1 -0
  111. package/dist/globalrule/globalrule.service.d.ts +18 -0
  112. package/dist/globalrule/globalrule.service.js +111 -0
  113. package/dist/globalrule/globalrule.service.js.map +1 -0
  114. package/dist/group/group.database.d.ts +41 -0
  115. package/dist/group/group.database.js +190 -0
  116. package/dist/group/group.database.js.map +1 -0
  117. package/dist/group/group.model.d.ts +19 -0
  118. package/dist/group/group.model.js +70 -0
  119. package/dist/group/group.model.js.map +1 -0
  120. package/dist/group/group.resolver.d.ts +27 -0
  121. package/dist/group/group.resolver.js +275 -0
  122. package/dist/group/group.resolver.js.map +1 -0
  123. package/dist/group/group.service.d.ts +46 -0
  124. package/dist/group/group.service.js +384 -0
  125. package/dist/group/group.service.js.map +1 -0
  126. package/dist/index.d.ts +18 -0
  127. package/dist/index.js +109 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/internal.d.ts +88 -0
  130. package/dist/internal.js +89 -0
  131. package/dist/internal.js.map +1 -0
  132. package/dist/migrations.d.ts +2 -0
  133. package/dist/migrations.js +41 -0
  134. package/dist/migrations.js.map +1 -0
  135. package/dist/organization/organization.database.d.ts +2 -0
  136. package/dist/organization/organization.database.js +16 -0
  137. package/dist/organization/organization.database.js.map +1 -0
  138. package/dist/organization/organization.model.d.ts +5 -0
  139. package/dist/organization/organization.model.js +35 -0
  140. package/dist/organization/organization.model.js.map +1 -0
  141. package/dist/organization/organization.resolver.d.ts +6 -0
  142. package/dist/organization/organization.resolver.js +43 -0
  143. package/dist/organization/organization.resolver.js.map +1 -0
  144. package/dist/organization/organization.service.d.ts +12 -0
  145. package/dist/organization/organization.service.js +35 -0
  146. package/dist/organization/organization.service.js.map +1 -0
  147. package/dist/page/page.database.d.ts +10 -0
  148. package/dist/page/page.database.js +269 -0
  149. package/dist/page/page.database.js.map +1 -0
  150. package/dist/page/page.indexing.d.ts +3 -0
  151. package/dist/page/page.indexing.js +26 -0
  152. package/dist/page/page.indexing.js.map +1 -0
  153. package/dist/page/page.migrations.d.ts +13 -0
  154. package/dist/page/page.migrations.js +55 -0
  155. package/dist/page/page.migrations.js.map +1 -0
  156. package/dist/page/page.model.d.ts +88 -0
  157. package/dist/page/page.model.js +272 -0
  158. package/dist/page/page.model.js.map +1 -0
  159. package/dist/page/page.resolver.d.ts +48 -0
  160. package/dist/page/page.resolver.js +542 -0
  161. package/dist/page/page.resolver.js.map +1 -0
  162. package/dist/page/page.service.d.ts +59 -0
  163. package/dist/page/page.service.js +399 -0
  164. package/dist/page/page.service.js.map +1 -0
  165. package/dist/page/page.util.d.ts +3 -0
  166. package/dist/page/page.util.js +16 -0
  167. package/dist/page/page.util.js.map +1 -0
  168. package/dist/page/page.validation.d.ts +2 -0
  169. package/dist/page/page.validation.js +21 -0
  170. package/dist/page/page.validation.js.map +1 -0
  171. package/dist/pagerule/pagerule.database.d.ts +5 -0
  172. package/dist/pagerule/pagerule.database.js +212 -0
  173. package/dist/pagerule/pagerule.database.js.map +1 -0
  174. package/dist/pagerule/pagerule.model.d.ts +71 -0
  175. package/dist/pagerule/pagerule.model.js +272 -0
  176. package/dist/pagerule/pagerule.model.js.map +1 -0
  177. package/dist/pagerule/pagerule.resolver.d.ts +13 -0
  178. package/dist/pagerule/pagerule.resolver.js +114 -0
  179. package/dist/pagerule/pagerule.resolver.js.map +1 -0
  180. package/dist/pagerule/pagerule.service.d.ts +23 -0
  181. package/dist/pagerule/pagerule.service.js +180 -0
  182. package/dist/pagerule/pagerule.service.js.map +1 -0
  183. package/dist/pagetree/pagetree.database.d.ts +13 -0
  184. package/dist/pagetree/pagetree.database.js +84 -0
  185. package/dist/pagetree/pagetree.database.js.map +1 -0
  186. package/dist/pagetree/pagetree.model.d.ts +43 -0
  187. package/dist/pagetree/pagetree.model.js +146 -0
  188. package/dist/pagetree/pagetree.model.js.map +1 -0
  189. package/dist/pagetree/pagetree.resolver.d.ts +23 -0
  190. package/dist/pagetree/pagetree.resolver.js +238 -0
  191. package/dist/pagetree/pagetree.resolver.js.map +1 -0
  192. package/dist/pagetree/pagetree.service.d.ts +25 -0
  193. package/dist/pagetree/pagetree.service.js +221 -0
  194. package/dist/pagetree/pagetree.service.js.map +1 -0
  195. package/dist/role/role.database.d.ts +17 -0
  196. package/dist/role/role.database.js +74 -0
  197. package/dist/role/role.database.js.map +1 -0
  198. package/dist/role/role.model.d.ts +26 -0
  199. package/dist/role/role.model.js +84 -0
  200. package/dist/role/role.model.js.map +1 -0
  201. package/dist/role/role.resolver.d.ts +27 -0
  202. package/dist/role/role.resolver.js +294 -0
  203. package/dist/role/role.resolver.js.map +1 -0
  204. package/dist/role/role.service.d.ts +33 -0
  205. package/dist/role/role.service.js +265 -0
  206. package/dist/role/role.service.js.map +1 -0
  207. package/dist/run.d.ts +1 -0
  208. package/dist/run.js +29 -0
  209. package/dist/run.js.map +1 -0
  210. package/dist/scalars/datetime.d.ts +2 -0
  211. package/dist/scalars/datetime.js +19 -0
  212. package/dist/scalars/datetime.js.map +1 -0
  213. package/dist/scalars/index.d.ts +3 -0
  214. package/dist/scalars/index.js +4 -0
  215. package/dist/scalars/index.js.map +1 -0
  216. package/dist/scalars/jsondata.d.ts +2 -0
  217. package/dist/scalars/jsondata.js +15 -0
  218. package/dist/scalars/jsondata.js.map +1 -0
  219. package/dist/scalars/urlsafestring.d.ts +4 -0
  220. package/dist/scalars/urlsafestring.js +28 -0
  221. package/dist/scalars/urlsafestring.js.map +1 -0
  222. package/dist/site/site.database.d.ts +15 -0
  223. package/dist/site/site.database.js +164 -0
  224. package/dist/site/site.database.js.map +1 -0
  225. package/dist/site/site.model.d.ts +62 -0
  226. package/dist/site/site.model.js +197 -0
  227. package/dist/site/site.model.js.map +1 -0
  228. package/dist/site/site.resolver.d.ts +30 -0
  229. package/dist/site/site.resolver.js +326 -0
  230. package/dist/site/site.resolver.js.map +1 -0
  231. package/dist/site/site.service.d.ts +35 -0
  232. package/dist/site/site.service.js +199 -0
  233. package/dist/site/site.service.js.map +1 -0
  234. package/dist/siterule/siterule.database.d.ts +5 -0
  235. package/dist/siterule/siterule.database.js +139 -0
  236. package/dist/siterule/siterule.database.js.map +1 -0
  237. package/dist/siterule/siterule.model.d.ts +53 -0
  238. package/dist/siterule/siterule.model.js +203 -0
  239. package/dist/siterule/siterule.model.js.map +1 -0
  240. package/dist/siterule/siterule.resolver.d.ts +12 -0
  241. package/dist/siterule/siterule.resolver.js +100 -0
  242. package/dist/siterule/siterule.resolver.js.map +1 -0
  243. package/dist/siterule/siterule.service.d.ts +23 -0
  244. package/dist/siterule/siterule.service.js +148 -0
  245. package/dist/siterule/siterule.service.js.map +1 -0
  246. package/dist/template/template.database.d.ts +15 -0
  247. package/dist/template/template.database.js +61 -0
  248. package/dist/template/template.database.js.map +1 -0
  249. package/dist/template/template.model.d.ts +32 -0
  250. package/dist/template/template.model.js +124 -0
  251. package/dist/template/template.model.js.map +1 -0
  252. package/dist/template/template.resolver.d.ts +22 -0
  253. package/dist/template/template.resolver.js +216 -0
  254. package/dist/template/template.resolver.js.map +1 -0
  255. package/dist/template/template.service.d.ts +27 -0
  256. package/dist/template/template.service.js +192 -0
  257. package/dist/template/template.service.js.map +1 -0
  258. package/dist/templaterule/templaterule.database.d.ts +5 -0
  259. package/dist/templaterule/templaterule.database.js +80 -0
  260. package/dist/templaterule/templaterule.database.js.map +1 -0
  261. package/dist/templaterule/templaterule.model.d.ts +38 -0
  262. package/dist/templaterule/templaterule.model.js +136 -0
  263. package/dist/templaterule/templaterule.model.js.map +1 -0
  264. package/dist/templaterule/templaterule.resolver.d.ts +12 -0
  265. package/dist/templaterule/templaterule.resolver.js +100 -0
  266. package/dist/templaterule/templaterule.resolver.js.map +1 -0
  267. package/dist/templaterule/templaterule.service.d.ts +19 -0
  268. package/dist/templaterule/templaterule.service.js +123 -0
  269. package/dist/templaterule/templaterule.service.js.map +1 -0
  270. package/dist/user/user.database.d.ts +22 -0
  271. package/dist/user/user.database.js +116 -0
  272. package/dist/user/user.database.js.map +1 -0
  273. package/dist/user/user.model.d.ts +42 -0
  274. package/dist/user/user.model.js +122 -0
  275. package/dist/user/user.model.js.map +1 -0
  276. package/dist/user/user.resolver.d.ts +16 -0
  277. package/dist/user/user.resolver.js +140 -0
  278. package/dist/user/user.resolver.js.map +1 -0
  279. package/dist/user/user.service.d.ts +29 -0
  280. package/dist/user/user.service.js +195 -0
  281. package/dist/user/user.service.js.map +1 -0
  282. package/dist/util/authservice.d.ts +28 -0
  283. package/dist/util/authservice.js +131 -0
  284. package/dist/util/authservice.js.map +1 -0
  285. package/dist/util/dates.d.ts +2 -0
  286. package/dist/util/dates.js +4 -0
  287. package/dist/util/dates.js.map +1 -0
  288. package/dist/util/filehandler.d.ts +15 -0
  289. package/dist/util/filehandler.js +48 -0
  290. package/dist/util/filehandler.js.map +1 -0
  291. package/dist/util/index.d.ts +13 -0
  292. package/dist/util/index.js +26 -0
  293. package/dist/util/index.js.map +1 -0
  294. package/dist/util/indexing.d.ts +12 -0
  295. package/dist/util/indexing.js +74 -0
  296. package/dist/util/indexing.js.map +1 -0
  297. package/dist/util/migrations.d.ts +15 -0
  298. package/dist/util/migrations.js +2 -0
  299. package/dist/util/migrations.js.map +1 -0
  300. package/dist/util/mutationlogger.d.ts +1 -0
  301. package/dist/util/mutationlogger.js +9 -0
  302. package/dist/util/mutationlogger.js.map +1 -0
  303. package/dist/util/registry.d.ts +25 -0
  304. package/dist/util/registry.js +66 -0
  305. package/dist/util/registry.js.map +1 -0
  306. package/dist/util/rules.d.ts +6 -0
  307. package/dist/util/rules.js +31 -0
  308. package/dist/util/rules.js.map +1 -0
  309. package/dist/util/sharedtypes.d.ts +3 -0
  310. package/dist/util/sharedtypes.js +2 -0
  311. package/dist/util/sharedtypes.js.map +1 -0
  312. package/dist/util/stopwords.d.ts +1 -0
  313. package/dist/util/stopwords.js +152 -0
  314. package/dist/util/stopwords.js.map +1 -0
  315. package/dist/version/version.model.d.ts +11 -0
  316. package/dist/version/version.model.js +46 -0
  317. package/dist/version/version.model.js.map +1 -0
  318. package/dist/version/version.resolver.d.ts +6 -0
  319. package/dist/version/version.resolver.js +45 -0
  320. package/dist/version/version.resolver.js.map +1 -0
  321. package/dist/versionedservice/service.d.ts +148 -0
  322. package/dist/versionedservice/service.js +547 -0
  323. package/dist/versionedservice/service.js.map +1 -0
  324. package/dist/versionedservice/types.d.ts +87 -0
  325. package/dist/versionedservice/types.js +11 -0
  326. package/dist/versionedservice/types.js.map +1 -0
  327. package/package.json +50 -0
  328. package/readme/DosGato.mwb +0 -0
  329. package/readme/DosGato.mwb.bak +0 -0
  330. package/readme/upgradeflow2.png +0 -0
@@ -0,0 +1,23 @@
1
+ import { Context } from '@txstate-mws/graphql-server';
2
+ import { Page, PageFilter, Role, Site, Template, TemplateFilter, Pagetree, PagetreePermission, PagetreeResponse, CreatePagetreeInput } from '../internal.js';
3
+ export declare class PagetreeResolver {
4
+ site(ctx: Context, pagetree: Pagetree): Promise<Site | undefined>;
5
+ pages(ctx: Context, pagetree: Pagetree, filter: PageFilter): Promise<Page[]>;
6
+ rootPage(ctx: Context, pagetree: Pagetree): Promise<Page | undefined>;
7
+ templates(ctx: Context, pagetree: Pagetree, filter?: TemplateFilter): Promise<Template[]>;
8
+ roles(ctx: Context, pagetree: Pagetree, withPermission?: PagetreePermission[]): Promise<Role[]>;
9
+ permissions(pagetree: Pagetree): Pagetree;
10
+ createPagetree(ctx: Context, args: CreatePagetreeInput): Promise<import("@txstate-mws/graphql-server").ValidatedResponse>;
11
+ updatePagetree(ctx: Context, pagetreeId: string, name: string): Promise<PagetreeResponse>;
12
+ deletePagetree(ctx: Context, pagetreeId: string): Promise<PagetreeResponse>;
13
+ undeletePagetree(ctx: Context, pagetreeId: string): Promise<PagetreeResponse>;
14
+ promotePagetree(ctx: Context, pagetreeId: string): Promise<PagetreeResponse>;
15
+ archivePagetree(ctx: Context, pagetreeId: string): Promise<PagetreeResponse>;
16
+ }
17
+ export declare class PagetreePermissionsResolver {
18
+ rename(ctx: Context, pagetree: Pagetree): Promise<boolean>;
19
+ delete(ctx: Context, pagetree: Pagetree): Promise<boolean>;
20
+ undelete(ctx: Context, pagetree: Pagetree): Promise<boolean>;
21
+ promote(ctx: Context, pagetree: Pagetree): Promise<boolean>;
22
+ archive(ctx: Context, pagetree: Pagetree): Promise<boolean>;
23
+ }
@@ -0,0 +1,238 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Context } from '@txstate-mws/graphql-server';
14
+ import { isNull, unique } from 'txstate-utils';
15
+ import { Resolver, Arg, Ctx, FieldResolver, Root, Mutation, ID } from 'type-graphql';
16
+ import { Page, PageService, PageFilter, Role, Site, SiteService, Template, TemplateFilter, TemplateService, Pagetree, PagetreePermission, PagetreePermissions, PagetreeResponse, PagetreeService, SiteRuleService, RoleService, CreatePagetreeInput } from '../internal.js';
17
+ let PagetreeResolver = class PagetreeResolver {
18
+ async site(ctx, pagetree) {
19
+ return await ctx.svc(SiteService).findById(pagetree.siteId);
20
+ }
21
+ async pages(ctx, pagetree, filter) {
22
+ return await ctx.svc(PageService).findByPagetreeId(pagetree.id, filter);
23
+ }
24
+ async rootPage(ctx, pagetree) {
25
+ const pages = await ctx.svc(PageService).findByPagetreeId(pagetree.id);
26
+ return pages.find((p) => isNull(p.parentInternalId));
27
+ }
28
+ async templates(ctx, pagetree, filter) {
29
+ return await ctx.svc(TemplateService).findByPagetreeId(pagetree.id, filter);
30
+ }
31
+ async roles(ctx, pagetree, withPermission) {
32
+ let rules = await ctx.svc(SiteRuleService).findByPagetree(pagetree);
33
+ if (withPermission) {
34
+ rules = rules.filter(r => withPermission.some(p => {
35
+ if (p === PagetreePermission.PROMOTE) {
36
+ return r.grants.promotePagetree;
37
+ }
38
+ else {
39
+ return r.grants.managePagetrees;
40
+ }
41
+ }));
42
+ }
43
+ else {
44
+ rules = rules.filter(r => r.grants.promotePagetree || r.grants.managePagetrees);
45
+ }
46
+ return await ctx.svc(RoleService).findByIds(unique(rules.map(r => r.roleId)));
47
+ }
48
+ permissions(pagetree) {
49
+ return pagetree;
50
+ }
51
+ /* Mutations */
52
+ async createPagetree(ctx, args) {
53
+ return await ctx.svc(PagetreeService).create(args);
54
+ }
55
+ async updatePagetree(ctx, pagetreeId, name) {
56
+ return await ctx.svc(PagetreeService).rename(pagetreeId, name);
57
+ }
58
+ async deletePagetree(ctx, pagetreeId) {
59
+ return await ctx.svc(PagetreeService).delete(pagetreeId);
60
+ }
61
+ async undeletePagetree(ctx, pagetreeId) {
62
+ return await ctx.svc(PagetreeService).undelete(pagetreeId);
63
+ }
64
+ async promotePagetree(ctx, pagetreeId) {
65
+ return await ctx.svc(PagetreeService).promote(pagetreeId);
66
+ }
67
+ async archivePagetree(ctx, pagetreeId) {
68
+ return await ctx.svc(PagetreeService).archive(pagetreeId);
69
+ }
70
+ };
71
+ __decorate([
72
+ FieldResolver(returns => Site),
73
+ __param(0, Ctx()),
74
+ __param(1, Root()),
75
+ __metadata("design:type", Function),
76
+ __metadata("design:paramtypes", [Context, Pagetree]),
77
+ __metadata("design:returntype", Promise)
78
+ ], PagetreeResolver.prototype, "site", null);
79
+ __decorate([
80
+ FieldResolver(returns => [Page]),
81
+ __param(0, Ctx()),
82
+ __param(1, Root()),
83
+ __param(2, Arg('filter', type => PageFilter, { nullable: true })),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [Context, Pagetree, PageFilter]),
86
+ __metadata("design:returntype", Promise)
87
+ ], PagetreeResolver.prototype, "pages", null);
88
+ __decorate([
89
+ FieldResolver(returns => Page),
90
+ __param(0, Ctx()),
91
+ __param(1, Root()),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [Context, Pagetree]),
94
+ __metadata("design:returntype", Promise)
95
+ ], PagetreeResolver.prototype, "rootPage", null);
96
+ __decorate([
97
+ FieldResolver(returns => [Template], { description: 'All templates that are approved for use in this pagetree.' }),
98
+ __param(0, Ctx()),
99
+ __param(1, Root()),
100
+ __param(2, Arg('filter', { nullable: true })),
101
+ __metadata("design:type", Function),
102
+ __metadata("design:paramtypes", [Context, Pagetree, TemplateFilter]),
103
+ __metadata("design:returntype", Promise)
104
+ ], PagetreeResolver.prototype, "templates", null);
105
+ __decorate([
106
+ FieldResolver(returns => [Role], { description: 'Returns a list of all roles with at least one of the specified permissions on this pagetree, or any permission if null.' }),
107
+ __param(0, Ctx()),
108
+ __param(1, Root()),
109
+ __param(2, Arg('withPermission', type => [PagetreePermission], { nullable: true })),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", [Context, Pagetree, Array]),
112
+ __metadata("design:returntype", Promise)
113
+ ], PagetreeResolver.prototype, "roles", null);
114
+ __decorate([
115
+ FieldResolver(returns => PagetreePermissions, {
116
+ description: `Reveal the simplified results after all authorization rules are taken into account
117
+ for the current user. Makes it easy to light up, disable, or hide buttons in the UI.`
118
+ }),
119
+ __param(0, Root()),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [Pagetree]),
122
+ __metadata("design:returntype", void 0)
123
+ ], PagetreeResolver.prototype, "permissions", null);
124
+ __decorate([
125
+ Mutation(returns => PagetreeResponse, { description: 'Create a pagetree in an existing site' }),
126
+ __param(0, Ctx()),
127
+ __param(1, Arg('args')),
128
+ __metadata("design:type", Function),
129
+ __metadata("design:paramtypes", [Context, CreatePagetreeInput]),
130
+ __metadata("design:returntype", Promise)
131
+ ], PagetreeResolver.prototype, "createPagetree", null);
132
+ __decorate([
133
+ Mutation(returns => PagetreeResponse, { description: 'Update the name of a pagetree' }),
134
+ __param(0, Ctx()),
135
+ __param(1, Arg('pagetreeId', type => ID)),
136
+ __param(2, Arg('name')),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [Context, String, String]),
139
+ __metadata("design:returntype", Promise)
140
+ ], PagetreeResolver.prototype, "updatePagetree", null);
141
+ __decorate([
142
+ Mutation(returns => PagetreeResponse, { description: 'Soft-delete a pagetree' }),
143
+ __param(0, Ctx()),
144
+ __param(1, Arg('pagetreeId', type => ID)),
145
+ __metadata("design:type", Function),
146
+ __metadata("design:paramtypes", [Context, String]),
147
+ __metadata("design:returntype", Promise)
148
+ ], PagetreeResolver.prototype, "deletePagetree", null);
149
+ __decorate([
150
+ Mutation(returns => PagetreeResponse, { description: 'Undo a pagetree delete' }),
151
+ __param(0, Ctx()),
152
+ __param(1, Arg('pagetreeId', type => ID)),
153
+ __metadata("design:type", Function),
154
+ __metadata("design:paramtypes", [Context, String]),
155
+ __metadata("design:returntype", Promise)
156
+ ], PagetreeResolver.prototype, "undeletePagetree", null);
157
+ __decorate([
158
+ Mutation(returns => PagetreeResponse, { description: 'Promote a pagetree from sandbox to primary' }),
159
+ __param(0, Ctx()),
160
+ __param(1, Arg('pagetreeId', type => ID)),
161
+ __metadata("design:type", Function),
162
+ __metadata("design:paramtypes", [Context, String]),
163
+ __metadata("design:returntype", Promise)
164
+ ], PagetreeResolver.prototype, "promotePagetree", null);
165
+ __decorate([
166
+ Mutation(returns => PagetreeResponse, { description: 'Archive a pagetree. Cannot be used on the primary pagetree because a site must always have exactly one primary pagetree.' }),
167
+ __param(0, Ctx()),
168
+ __param(1, Arg('pagetreeId', type => ID)),
169
+ __metadata("design:type", Function),
170
+ __metadata("design:paramtypes", [Context, String]),
171
+ __metadata("design:returntype", Promise)
172
+ ], PagetreeResolver.prototype, "archivePagetree", null);
173
+ PagetreeResolver = __decorate([
174
+ Resolver(of => Pagetree)
175
+ ], PagetreeResolver);
176
+ export { PagetreeResolver };
177
+ let PagetreePermissionsResolver = class PagetreePermissionsResolver {
178
+ async rename(ctx, pagetree) {
179
+ return await ctx.svc(PagetreeService).mayRename(pagetree);
180
+ }
181
+ async delete(ctx, pagetree) {
182
+ return await ctx.svc(PagetreeService).mayDelete(pagetree);
183
+ }
184
+ async undelete(ctx, pagetree) {
185
+ return await ctx.svc(PagetreeService).mayUndelete(pagetree);
186
+ }
187
+ async promote(ctx, pagetree) {
188
+ return await ctx.svc(PagetreeService).mayPromote(pagetree);
189
+ }
190
+ async archive(ctx, pagetree) {
191
+ return await ctx.svc(PagetreeService).mayArchive(pagetree);
192
+ }
193
+ };
194
+ __decorate([
195
+ FieldResolver(returns => Boolean, { description: 'User may rename this pagetree.' }),
196
+ __param(0, Ctx()),
197
+ __param(1, Root()),
198
+ __metadata("design:type", Function),
199
+ __metadata("design:paramtypes", [Context, Pagetree]),
200
+ __metadata("design:returntype", Promise)
201
+ ], PagetreePermissionsResolver.prototype, "rename", null);
202
+ __decorate([
203
+ FieldResolver(returns => Boolean, { description: 'User may soft-delete this pagetree. Returns false if pagetree is already soft-deleted.' }),
204
+ __param(0, Ctx()),
205
+ __param(1, Root()),
206
+ __metadata("design:type", Function),
207
+ __metadata("design:paramtypes", [Context, Pagetree]),
208
+ __metadata("design:returntype", Promise)
209
+ ], PagetreePermissionsResolver.prototype, "delete", null);
210
+ __decorate([
211
+ FieldResolver(returns => Boolean, { description: 'User may undelete this pagetree. Returns false if pagetree is not in soft-deleted state.' }),
212
+ __param(0, Ctx()),
213
+ __param(1, Root()),
214
+ __metadata("design:type", Function),
215
+ __metadata("design:paramtypes", [Context, Pagetree]),
216
+ __metadata("design:returntype", Promise)
217
+ ], PagetreePermissionsResolver.prototype, "undelete", null);
218
+ __decorate([
219
+ FieldResolver(returns => Boolean, { description: 'User may promote this pagetree to live. Returns false if pagetree is already live.' }),
220
+ __param(0, Ctx()),
221
+ __param(1, Root()),
222
+ __metadata("design:type", Function),
223
+ __metadata("design:paramtypes", [Context, Pagetree]),
224
+ __metadata("design:returntype", Promise)
225
+ ], PagetreePermissionsResolver.prototype, "promote", null);
226
+ __decorate([
227
+ FieldResolver(returns => Boolean, { description: 'User may archive this pagetree. Returns false if pagetree is already archived.' }),
228
+ __param(0, Ctx()),
229
+ __param(1, Root()),
230
+ __metadata("design:type", Function),
231
+ __metadata("design:paramtypes", [Context, Pagetree]),
232
+ __metadata("design:returntype", Promise)
233
+ ], PagetreePermissionsResolver.prototype, "archive", null);
234
+ PagetreePermissionsResolver = __decorate([
235
+ Resolver(of => PagetreePermissions)
236
+ ], PagetreePermissionsResolver);
237
+ export { PagetreePermissionsResolver };
238
+ //# sourceMappingURL=pagetree.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagetree.resolver.js","sourceRoot":"","sources":["../../src/pagetree/pagetree.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACpF,OAAO,EACL,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EACjG,QAAQ,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EACpF,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAClD,MAAM,gBAAgB,CAAA;AAGvB,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAE3B,KAAK,CAAC,IAAI,CAAS,GAAY,EAAU,QAAkB;QACzD,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7D,CAAC;IAGD,KAAK,CAAC,KAAK,CAAS,GAAY,EAAU,QAAkB,EAAyD,MAAkB;QACrI,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAS,GAAY,EAAU,QAAkB;QAC7D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACtE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC5D,CAAC;IAGD,KAAK,CAAC,SAAS,CAAS,GAAY,EAAU,QAAkB,EAAqC,MAAuB;QAC1H,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC7E,CAAC;IAGD,KAAK,CAAC,KAAK,CAAS,GAAY,EAAU,QAAkB,EAA2E,cAAqC;QAC1K,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACnE,IAAI,cAAc,EAAE;YAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,KAAK,kBAAkB,CAAC,OAAO,EAAE;oBACpC,OAAO,CAAC,CAAC,MAAM,CAAC,eAAe,CAAA;iBAChC;qBAAM;oBACL,OAAO,CAAC,CAAC,MAAM,CAAC,eAAe,CAAA;iBAChC;YACH,CAAC,CAAC,CAAC,CAAA;SACJ;aAAM;YACL,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;SAChF;QACD,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC/E,CAAC;IAMD,WAAW,CAAU,QAAkB;QACrC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,eAAe;IAEf,KAAK,CAAC,cAAc,CAAS,GAAY,EAAe,IAAyB;QAC/E,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IAGD,KAAK,CAAC,cAAc,CAAS,GAAY,EAAiC,UAAkB,EAAe,IAAY;QACrH,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAChE,CAAC;IAGD,KAAK,CAAC,cAAc,CAAS,GAAY,EAAiC,UAAkB;QAC1F,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC1D,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAS,GAAY,EAAiC,UAAkB;QAC5F,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC5D,CAAC;IAGD,KAAK,CAAC,eAAe,CAAS,GAAY,EAAiC,UAAkB;QAC3F,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC;IAGD,KAAK,CAAC,eAAe,CAAS,GAAY,EAAiC,UAAkB;QAC3F,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC;CACF,CAAA;AA3EC;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;IAClB,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;4CAE1D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;IAAsB,WAAA,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAA3F,OAAO,EAAoB,QAAQ,EAAiE,UAAU;;6CAEtI;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;IACd,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;gDAG9D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,2DAA2D,EAAE,CAAC;IACjG,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;IAAsB,WAAA,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAAvE,OAAO,EAAoB,QAAQ,EAA8C,cAAc;;iDAE3H;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,yHAAyH,EAAE,CAAC;IAC/J,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;IAAsB,WAAA,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAA7G,OAAO,EAAoB,QAAQ;;6CAc3D;AAMD;IAJC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE;QAC7C,WAAW,EAAE;2FAC0E;KACxF,CAAC;IACY,WAAA,IAAI,EAAE,CAAA;;qCAAW,QAAQ;;mDAEtC;AAID;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACzE,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,MAAM,CAAC,CAAA;;qCAArB,OAAO,EAAqB,mBAAmB;;sDAEhF;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACjE,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAAsB,WAAA,GAAG,CAAC,MAAM,CAAC,CAAA;;qCAAxE,OAAO;;sDAExC;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAC1D,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;;qCAAvC,OAAO;;sDAExC;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxD,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;;qCAAvC,OAAO;;wDAE1C;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IAC7E,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;;qCAAvC,OAAO;;uDAEzC;AAGD;IADC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,0HAA0H,EAAE,CAAC;IAC3J,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;;qCAAvC,OAAO;;uDAEzC;AA5EU,gBAAgB;IAD5B,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;GACZ,gBAAgB,CA6E5B;SA7EY,gBAAgB;AAgF7B,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAEtC,KAAK,CAAC,MAAM,CAAS,GAAY,EAAU,QAAkB;QAC3D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAGD,KAAK,CAAC,MAAM,CAAS,GAAY,EAAU,QAAkB;QAC3D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAS,GAAY,EAAU,QAAkB;QAC7D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAGD,KAAK,CAAC,OAAO,CAAS,GAAY,EAAU,QAAkB;QAC5D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC5D,CAAC;IAGD,KAAK,CAAC,OAAO,CAAS,GAAY,EAAU,QAAkB;QAC5D,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC5D,CAAC;CACF,CAAA;AAvBC;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACtE,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;yDAE5D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,wFAAwF,EAAE,CAAC;IAC9H,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;yDAE5D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,0FAA0F,EAAE,CAAC;IAC9H,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;2DAE9D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,oFAAoF,EAAE,CAAC;IACzH,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;0DAE7D;AAGD;IADC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,gFAAgF,EAAE,CAAC;IACrH,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,IAAI,EAAE,CAAA;;qCAAhB,OAAO,EAAoB,QAAQ;;0DAE7D;AAxBU,2BAA2B;IADvC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC;GACvB,2BAA2B,CAyBvC;SAzBY,2BAA2B"}
@@ -0,0 +1,25 @@
1
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
2
+ import { Pagetree, PagetreeFilter, DosGatoService, PagetreeResponse, CreatePagetreeInput } from '../internal.js';
3
+ export declare class PagetreeServiceInternal extends BaseService {
4
+ findById(id: string): Promise<Pagetree | undefined>;
5
+ findBySiteId(siteId: string, filter?: PagetreeFilter): Promise<Pagetree[]>;
6
+ findByTemplateId(templateId: number, direct?: boolean): Promise<Pagetree[]>;
7
+ }
8
+ export declare class PagetreeService extends DosGatoService<Pagetree> {
9
+ raw: PagetreeServiceInternal;
10
+ findById(id: string): Promise<Pagetree | undefined>;
11
+ findBySiteId(siteId: string, filter?: PagetreeFilter): Promise<Pagetree[]>;
12
+ findByTemplateId(templateId: number, direct?: boolean): Promise<Pagetree[]>;
13
+ create(args: CreatePagetreeInput): Promise<ValidatedResponse>;
14
+ rename(pagetreeId: string, name: string): Promise<PagetreeResponse>;
15
+ delete(pagetreeId: string): Promise<PagetreeResponse>;
16
+ undelete(pagetreeId: string): Promise<PagetreeResponse>;
17
+ promote(pagetreeId: string): Promise<PagetreeResponse>;
18
+ archive(pagetreeId: string): Promise<PagetreeResponse>;
19
+ mayView(pagetree: Pagetree): Promise<boolean>;
20
+ mayRename(pagetree: Pagetree): Promise<boolean>;
21
+ mayDelete(pagetree: Pagetree): Promise<boolean>;
22
+ mayUndelete(pagetree: Pagetree): Promise<boolean>;
23
+ mayPromote(pagetree: Pagetree): Promise<boolean>;
24
+ mayArchive(pagetree: Pagetree): Promise<boolean>;
25
+ }
@@ -0,0 +1,221 @@
1
+ import { OneToManyLoader, ManyJoinedLoader, PrimaryKeyLoader } from 'dataloader-factory';
2
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
3
+ import { getPagetreesById, getPagetreesBySite, renamePagetree, getPagetreesByTemplate, SiteService, DosGatoService, PagetreeType, PagetreeResponse, promotePagetree, createPagetree, VersionedService, deletePagetree, undeletePagetree, archivePagetree, SiteServiceInternal } from '../internal.js';
4
+ const PagetreesByIdLoader = new PrimaryKeyLoader({
5
+ fetch: async (ids) => {
6
+ return await getPagetreesById(ids);
7
+ }
8
+ });
9
+ const PagetreesBySiteIdLoader = new OneToManyLoader({
10
+ fetch: async (siteIds, filter) => {
11
+ return await getPagetreesBySite(siteIds, filter);
12
+ },
13
+ extractKey: (p) => p.siteId,
14
+ idLoader: PagetreesByIdLoader
15
+ });
16
+ const PagetreesByTemplateIdLoader = new ManyJoinedLoader({
17
+ fetch: async (templateIds, direct) => {
18
+ return await getPagetreesByTemplate(templateIds, direct);
19
+ },
20
+ idLoader: PagetreesByIdLoader
21
+ });
22
+ export class PagetreeServiceInternal extends BaseService {
23
+ async findById(id) {
24
+ return await this.loaders.get(PagetreesByIdLoader).load(id);
25
+ }
26
+ async findBySiteId(siteId, filter) {
27
+ return await this.loaders.get(PagetreesBySiteIdLoader, filter).load(siteId);
28
+ }
29
+ async findByTemplateId(templateId, direct) {
30
+ return await this.loaders.get(PagetreesByTemplateIdLoader, direct).load(templateId);
31
+ }
32
+ }
33
+ export class PagetreeService extends DosGatoService {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.raw = this.svc(PagetreeServiceInternal);
37
+ }
38
+ async findById(id) {
39
+ return await this.removeUnauthorized(await this.raw.findById(id));
40
+ }
41
+ async findBySiteId(siteId, filter) {
42
+ return await this.removeUnauthorized(await this.raw.findBySiteId(siteId, filter));
43
+ }
44
+ async findByTemplateId(templateId, direct) {
45
+ return await this.removeUnauthorized(await this.raw.findByTemplateId(templateId, direct));
46
+ }
47
+ async create(args) {
48
+ const site = await this.svc(SiteServiceInternal).findById(args.siteId);
49
+ if (!site)
50
+ throw new Error('Pagetree site does not exist.');
51
+ const currentPagetrees = await this.raw.findBySiteId(args.siteId);
52
+ if (!(await this.svc(SiteService).mayManagePagetrees(site))) {
53
+ throw new Error('Current user is not permitted to create pagetrees in this site.');
54
+ }
55
+ if (currentPagetrees.some(p => p.name === args.name)) {
56
+ return ValidatedResponse.error(`Site ${site.name} already has a pagetree with name ${args.name}.`, 'name');
57
+ }
58
+ try {
59
+ const versionedService = this.svc(VersionedService);
60
+ const pagetree = await createPagetree(versionedService, this.login, site.name, args);
61
+ this.loaders.clear();
62
+ return new PagetreeResponse({ pagetree, success: true });
63
+ }
64
+ catch (err) {
65
+ console.error(err);
66
+ throw new Error('Could not create pagetree');
67
+ }
68
+ }
69
+ async rename(pagetreeId, name) {
70
+ const pagetree = await this.raw.findById(pagetreeId);
71
+ if (!pagetree)
72
+ throw new Error('Pagetree to be renamed does not exist.');
73
+ if (!(await this.mayRename(pagetree)))
74
+ throw new Error('Current user is not permitted to rename this pagetree.');
75
+ const response = new PagetreeResponse({});
76
+ try {
77
+ await renamePagetree(pagetreeId, name);
78
+ this.loaders.clear();
79
+ response.success = true;
80
+ response.pagetree = await this.raw.findById(pagetreeId);
81
+ }
82
+ catch (err) {
83
+ if (err.code === 'ER_DUP_ENTRY') {
84
+ response.addMessage(`Pagetree with name ${name} already exists.`, 'name');
85
+ return response;
86
+ }
87
+ throw new Error('An unknown error occurred while renaming the pagetree.');
88
+ }
89
+ return response;
90
+ }
91
+ async delete(pagetreeId) {
92
+ const pagetree = await this.raw.findById(pagetreeId);
93
+ if (!pagetree)
94
+ throw new Error('Pagetree to be deleted does not exist.');
95
+ if (!(await this.mayDelete(pagetree)))
96
+ throw new Error('Current user is not permitted to delete this pagetree.');
97
+ if (pagetree.type === PagetreeType.PRIMARY)
98
+ throw new Error('Cannot delete primary pagetree');
99
+ const currentUser = await this.currentUser();
100
+ try {
101
+ await deletePagetree(pagetreeId, currentUser.internalId);
102
+ this.loaders.clear();
103
+ const deletedPagetree = await this.raw.findById(pagetreeId);
104
+ return new PagetreeResponse({ success: true, pagetree: deletedPagetree });
105
+ }
106
+ catch (err) {
107
+ console.error(err);
108
+ throw new Error('An unknown error occurred while deleting the pagetree.');
109
+ }
110
+ }
111
+ async undelete(pagetreeId) {
112
+ const pagetree = await this.raw.findById(pagetreeId);
113
+ if (!pagetree)
114
+ throw new Error('Pagetree to be restored does not exist.');
115
+ if (!(await this.mayUndelete(pagetree)))
116
+ throw new Error('Current user is not permitted to restore this pagetree.');
117
+ try {
118
+ await undeletePagetree(pagetreeId);
119
+ this.loaders.clear();
120
+ const restoredPagetree = await this.raw.findById(pagetreeId);
121
+ return new PagetreeResponse({ success: true, pagetree: restoredPagetree });
122
+ }
123
+ catch (err) {
124
+ console.error(err);
125
+ throw new Error('An error occurred while restoring the pagetree');
126
+ }
127
+ }
128
+ async promote(pagetreeId) {
129
+ const pagetree = await this.raw.findById(pagetreeId);
130
+ if (!pagetree)
131
+ throw new Error('Pagetree to be promoted does not exist.');
132
+ if (!(await this.mayPromote(pagetree)))
133
+ throw new Error('Current user is not permitted to promote this pagetree.');
134
+ const site = (await this.svc(SiteServiceInternal).findById(pagetree.siteId));
135
+ const currentPrimaryPagetree = await this.raw.findById(site.primaryPagetreeId);
136
+ try {
137
+ await promotePagetree(currentPrimaryPagetree.id, pagetreeId);
138
+ this.loaders.clear();
139
+ const updated = await this.raw.findById(pagetreeId);
140
+ return new PagetreeResponse({ success: true, pagetree: updated });
141
+ }
142
+ catch (err) {
143
+ console.error(err);
144
+ throw new Error('An unknown error occurred while promoting the pagetree.');
145
+ }
146
+ }
147
+ async archive(pagetreeId) {
148
+ const pagetree = await this.raw.findById(pagetreeId);
149
+ if (!pagetree)
150
+ throw new Error('Pagetree to be archived does not exist.');
151
+ if (pagetree.type === PagetreeType.PRIMARY)
152
+ throw new Error('Primary pagetree cannot be archived');
153
+ if (!(await this.mayArchive(pagetree)))
154
+ throw new Error('Current user is not permitted to archive this pagetree.');
155
+ try {
156
+ await archivePagetree(pagetreeId);
157
+ this.loaders.clear();
158
+ const updated = await this.raw.findById(pagetreeId);
159
+ return new PagetreeResponse({ success: true, pagetree: updated });
160
+ }
161
+ catch (err) {
162
+ console.error(err);
163
+ throw new Error('An unknown error occurred while archiving the pagetree.');
164
+ }
165
+ }
166
+ async mayView(pagetree) {
167
+ if (pagetree.type === PagetreeType.PRIMARY && this.isRenderServer())
168
+ return true;
169
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
170
+ if (!site)
171
+ return false;
172
+ if (pagetree.type === PagetreeType.PRIMARY)
173
+ return true;
174
+ return await this.haveSitePerm(site, 'viewForEdit');
175
+ }
176
+ async mayRename(pagetree) {
177
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
178
+ if (!site) {
179
+ throw new Error(`Site not found for pagetree ${pagetree.name}`);
180
+ }
181
+ return await this.haveSitePerm(site, 'managePagetrees');
182
+ }
183
+ async mayDelete(pagetree) {
184
+ if (pagetree.deleted)
185
+ return false;
186
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
187
+ if (!site) {
188
+ throw new Error(`Site not found for pagetree ${pagetree.name}`);
189
+ }
190
+ return await this.haveSitePerm(site, 'managePagetrees');
191
+ }
192
+ async mayUndelete(pagetree) {
193
+ if (!pagetree.deleted)
194
+ return false;
195
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
196
+ if (!site) {
197
+ throw new Error(`Site not found for pagetree ${pagetree.name}`);
198
+ }
199
+ return await this.haveSitePerm(site, 'managePagetrees');
200
+ }
201
+ async mayPromote(pagetree) {
202
+ // TODO: It says to return false if the pagetree is live. Do we need to check if the site is launched too?
203
+ if (pagetree.type === PagetreeType.PRIMARY)
204
+ return false;
205
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
206
+ if (!site) {
207
+ throw new Error(`Site not found for pagetree ${pagetree.name}`);
208
+ }
209
+ return await this.haveSitePerm(site, 'promotePagetree');
210
+ }
211
+ async mayArchive(pagetree) {
212
+ if (pagetree.type === PagetreeType.ARCHIVE)
213
+ return false;
214
+ const site = await this.svc(SiteServiceInternal).findById(pagetree.siteId);
215
+ if (!site) {
216
+ throw new Error(`Site not found for pagetree ${pagetree.name}`);
217
+ }
218
+ return await this.haveSitePerm(site, 'managePagetrees');
219
+ }
220
+ }
221
+ //# sourceMappingURL=pagetree.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagetree.service.js","sourceRoot":"","sources":["../../src/pagetree/pagetree.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Role, RoleFilter } from '../internal.js';
2
+ export declare function getRoles(filter?: RoleFilter): Promise<Role[]>;
3
+ export declare function getRolesWithGroup(groupIds: string[]): Promise<{
4
+ key: string;
5
+ value: Role;
6
+ }[]>;
7
+ export declare function getRolesForUsers(userIds: string[]): Promise<{
8
+ key: string;
9
+ value: Role;
10
+ }[]>;
11
+ export declare function createRole(name: string): Promise<number>;
12
+ export declare function updateRole(id: string, name: string): Promise<number>;
13
+ export declare function deleteRole(id: string): Promise<void>;
14
+ export declare function addRoleToUser(roleId: string, userId: number): Promise<number>;
15
+ export declare function removeRoleFromUser(roleId: string, userId: number): Promise<number>;
16
+ export declare function addRoleToGroup(groupId: string, roleId: string): Promise<number>;
17
+ export declare function removeRoleFromGroup(groupId: string, roleId: string): Promise<number>;
@@ -0,0 +1,74 @@
1
+ import db from 'mysql2-async/db';
2
+ import { Role } from '../internal.js';
3
+ export async function getRoles(filter) {
4
+ const binds = [];
5
+ const where = [];
6
+ if (filter?.ids?.length) {
7
+ where.push(`roles.id IN (${db.in(binds, filter.ids)})`);
8
+ }
9
+ if (filter?.users?.length) {
10
+ where.push(`users.login IN (${db.in(binds, filter.users)})`);
11
+ }
12
+ let query = 'SELECT roles.* from roles ';
13
+ if (filter?.users?.length) {
14
+ query += 'INNER JOIN users_roles ON users_roles.roleId = roles.id INNER JOIN users on users_roles.userId = users.id ';
15
+ }
16
+ if (where.length) {
17
+ query += `WHERE (${where.join(') AND (')})`;
18
+ }
19
+ const roles = await db.getall(query, binds);
20
+ return roles.map(r => new Role(r));
21
+ }
22
+ export async function getRolesWithGroup(groupIds) {
23
+ const binds = [];
24
+ const where = [];
25
+ where.push(`groups_roles.groupId IN (${db.in(binds, groupIds)})`);
26
+ const roles = await db.getall(`SELECT roles.*, groups_roles.groupId as groupId
27
+ FROM roles INNER JOIN groups_roles ON roles.id = groups_roles.roleId
28
+ WHERE (${where.join(') AND (')})`, binds);
29
+ return roles.map(row => ({ key: String(row.groupId), value: new Role(row) }));
30
+ }
31
+ export async function getRolesForUsers(userIds) {
32
+ const binds = [];
33
+ const where = [];
34
+ where.push(`users.login IN (${db.in(binds, userIds)})`);
35
+ const roles = await db.getall(`SELECT roles.*, users.login AS userId FROM roles
36
+ INNER JOIN users_roles ON roles.id = users_roles.roleId
37
+ INNER JOIN users ON users_roles.userId = users.id
38
+ WHERE (${where.join(') AND (')})`, binds);
39
+ return roles.map(row => ({ key: String(row.userId), value: new Role(row) }));
40
+ }
41
+ export async function createRole(name) {
42
+ return await db.insert('INSERT INTO roles (name) VALUES (?)', [name]);
43
+ }
44
+ export async function updateRole(id, name) {
45
+ return await db.update('UPDATE roles SET name = ? WHERE id = ?', [name, id]);
46
+ }
47
+ export async function deleteRole(id) {
48
+ return await db.transaction(async (db) => {
49
+ await Promise.all([
50
+ db.delete('DELETE FROM groups_roles WHERE roleId = ?', [id]),
51
+ db.delete('DELETE FROM users_roles WHERE roleId = ?', [id]),
52
+ db.delete('DELETE FROM assetrules WHERE roleId = ?', [id]),
53
+ db.delete('DELETE FROM datarules WHERE roleId = ?', [id]),
54
+ db.delete('DELETE FROM globalrules WHERE roleId = ?', [id]),
55
+ db.delete('DELETE FROM pagerules WHERE roleId = ?', [id]),
56
+ db.delete('DELETE FROM siterules WHERE roleId = ?', [id]),
57
+ db.delete('DELETE FROM assetrules WHERE roleId = ?', [id])
58
+ ]);
59
+ await db.delete('DELETE FROM roles where id = ?', [id]);
60
+ });
61
+ }
62
+ export async function addRoleToUser(roleId, userId) {
63
+ return await db.insert('INSERT INTO users_roles (userId, roleId) VALUES (?,?)', [userId, roleId]);
64
+ }
65
+ export async function removeRoleFromUser(roleId, userId) {
66
+ return await db.delete('DELETE FROM users_roles WHERE roleId = ? AND userId = ?', [roleId, userId]);
67
+ }
68
+ export async function addRoleToGroup(groupId, roleId) {
69
+ return await db.insert('INSERT INTO groups_roles (groupId, roleId) VALUES (?,?)', [groupId, roleId]);
70
+ }
71
+ export async function removeRoleFromGroup(groupId, roleId) {
72
+ return await db.delete('DELETE FROM groups_roles WHERE groupId = ? AND roleId = ?', [groupId, roleId]);
73
+ }
74
+ //# sourceMappingURL=role.database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.database.js","sourceRoot":"","sources":["../../src/role/role.database.ts"],"names":[],"mappings":"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"}