@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,114 @@
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 { Resolver, Ctx, FieldResolver, Root, Arg, Mutation } from 'type-graphql';
15
+ import { isNull } from 'txstate-utils';
16
+ import { Pagetree, Role, RoleService, Site, SiteService, CreatePageRuleInput, PageRule, PageRulePermissions, PageRuleResponse, UpdatePageRuleInput, PageRuleService, PagetreeService } from '../internal.js';
17
+ let PageRuleResolver = class PageRuleResolver {
18
+ async site(ctx, pagerule) {
19
+ if (isNull(pagerule.siteId))
20
+ return null;
21
+ else
22
+ return await ctx.svc(SiteService).findById(pagerule.siteId);
23
+ }
24
+ async pagetree(ctx, pagerule) {
25
+ if (isNull(pagerule.pagetreeId))
26
+ return null;
27
+ else
28
+ return await ctx.svc(PagetreeService).findById(pagerule.pagetreeId);
29
+ }
30
+ async role(ctx, pagerule) {
31
+ return await ctx.svc(RoleService).getRoleForRule(pagerule.roleId);
32
+ }
33
+ permissions(pagerule) {
34
+ return pagerule;
35
+ }
36
+ async createPageRule(ctx, args) {
37
+ return await ctx.svc(PageRuleService).create(args);
38
+ }
39
+ async updatePageRule(ctx, args) {
40
+ return await ctx.svc(PageRuleService).update(args);
41
+ }
42
+ };
43
+ __decorate([
44
+ FieldResolver(returns => Site, { nullable: true, description: 'The site to which this rule applies. Null if it applies to all sites. For multiple sites, make multiple rules.' }),
45
+ __param(0, Ctx()),
46
+ __param(1, Root()),
47
+ __metadata("design:type", Function),
48
+ __metadata("design:paramtypes", [Context, PageRule]),
49
+ __metadata("design:returntype", Promise)
50
+ ], PageRuleResolver.prototype, "site", null);
51
+ __decorate([
52
+ FieldResolver(returns => Pagetree, { nullable: true, description: 'The pagetree to which this rule applies. Null if it applies to all pagetrees. Note that specifying a pagetree also implies specifying a site. For multiple pagetrees, make multiple rules.' }),
53
+ __param(0, Ctx()),
54
+ __param(1, Root()),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [Context, PageRule]),
57
+ __metadata("design:returntype", Promise)
58
+ ], PageRuleResolver.prototype, "pagetree", null);
59
+ __decorate([
60
+ FieldResolver(returns => Role),
61
+ __param(0, Ctx()),
62
+ __param(1, Root()),
63
+ __metadata("design:type", Function),
64
+ __metadata("design:paramtypes", [Context, PageRule]),
65
+ __metadata("design:returntype", Promise)
66
+ ], PageRuleResolver.prototype, "role", null);
67
+ __decorate([
68
+ FieldResolver(returns => PageRulePermissions, {
69
+ description: `Reveal the simplified results after all authorization rules are taken into account
70
+ for the current user. Makes it easy to light up, disable, or hide buttons in the UI.`
71
+ }),
72
+ __param(0, Root()),
73
+ __metadata("design:type", Function),
74
+ __metadata("design:paramtypes", [PageRule]),
75
+ __metadata("design:returntype", void 0)
76
+ ], PageRuleResolver.prototype, "permissions", null);
77
+ __decorate([
78
+ Mutation(returns => PageRuleResponse),
79
+ __param(0, Ctx()),
80
+ __param(1, Arg('args', type => CreatePageRuleInput)),
81
+ __metadata("design:type", Function),
82
+ __metadata("design:paramtypes", [Context, CreatePageRuleInput]),
83
+ __metadata("design:returntype", Promise)
84
+ ], PageRuleResolver.prototype, "createPageRule", null);
85
+ __decorate([
86
+ Mutation(returns => PageRuleResponse),
87
+ __param(0, Ctx()),
88
+ __param(1, Arg('args', type => UpdatePageRuleInput)),
89
+ __metadata("design:type", Function),
90
+ __metadata("design:paramtypes", [Context, UpdatePageRuleInput]),
91
+ __metadata("design:returntype", Promise)
92
+ ], PageRuleResolver.prototype, "updatePageRule", null);
93
+ PageRuleResolver = __decorate([
94
+ Resolver(of => PageRule)
95
+ ], PageRuleResolver);
96
+ export { PageRuleResolver };
97
+ let PageRulePermissionsResolver = class PageRulePermissionsResolver {
98
+ async write(ctx, rule) {
99
+ return await ctx.svc(PageRuleService).mayWrite(rule);
100
+ }
101
+ };
102
+ __decorate([
103
+ FieldResolver(returns => Boolean, { description: 'User may edit the pagetree, path, or grants on this rule.\n\nThis will be false if the rule has more power than the user currently has. Even if this is true, the rule may not be upgraded to have more permission than they already have.' }),
104
+ __param(0, Ctx()),
105
+ __param(1, Root()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [Context, PageRule]),
108
+ __metadata("design:returntype", Promise)
109
+ ], PageRulePermissionsResolver.prototype, "write", null);
110
+ PageRulePermissionsResolver = __decorate([
111
+ Resolver(of => PageRulePermissions)
112
+ ], PageRulePermissionsResolver);
113
+ export { PageRulePermissionsResolver };
114
+ //# sourceMappingURL=pagerule.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagerule.resolver.js","sourceRoot":"","sources":["../../src/pagerule/pagerule.resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
2
+ import { Page, PageRuleFilter, DosGatoService, PageRule, CreatePageRuleInput, UpdatePageRuleInput } from '../internal.js';
3
+ export declare class PageRuleServiceInternal extends BaseService {
4
+ findById(ruleId: string): Promise<PageRule | undefined>;
5
+ findByRoleId(roleId: string, filter?: PageRuleFilter): Promise<PageRule[]>;
6
+ findBySiteId(siteId?: string): Promise<PageRule[]>;
7
+ findByPage(page: Page): Promise<PageRule[]>;
8
+ }
9
+ export declare class PageRuleService extends DosGatoService<PageRule> {
10
+ raw: PageRuleServiceInternal;
11
+ findById(ruleId: string): Promise<PageRule | undefined>;
12
+ findByRoleId(roleId: string, filter?: PageRuleFilter): Promise<PageRule[]>;
13
+ findBySiteId(siteId?: string): Promise<PageRule[]>;
14
+ findByPage(page: Page): Promise<PageRule[]>;
15
+ create(args: CreatePageRuleInput): Promise<ValidatedResponse>;
16
+ update(args: UpdatePageRuleInput): Promise<ValidatedResponse>;
17
+ delete(ruleId: string): Promise<ValidatedResponse>;
18
+ applies(rule: PageRule, page: Page): Promise<boolean>;
19
+ mayView(rule: PageRule): Promise<boolean>;
20
+ mayWrite(rule: PageRule): Promise<boolean>;
21
+ asOrMorePowerful(ruleA: PageRule, ruleB: PageRule): boolean;
22
+ tooPowerful(rule: PageRule): Promise<boolean>;
23
+ }
@@ -0,0 +1,180 @@
1
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
2
+ import { OneToManyLoader, PrimaryKeyLoader } from 'dataloader-factory';
3
+ import { DosGatoService, comparePathsWithMode, tooPowerfulHelper, getPageRules, PageRule, RulePathMode, SiteService, RoleService, createPageRule, PageRuleResponse, updatePageRule, deletePageRule, RoleServiceInternal, PagetreeServiceInternal, PageServiceInternal } from '../internal.js';
4
+ import { Cache, filterAsync } from 'txstate-utils';
5
+ const pageRulesByIdLoader = new PrimaryKeyLoader({
6
+ fetch: async (ids) => {
7
+ return await getPageRules({ ids });
8
+ }
9
+ });
10
+ const pageRulesByRoleLoader = new OneToManyLoader({
11
+ fetch: async (roleIds, filter) => {
12
+ return await getPageRules({ ...filter, roleIds });
13
+ },
14
+ extractKey: (r) => r.roleId
15
+ });
16
+ const pageRulesBySiteLoader = new OneToManyLoader({
17
+ fetch: async (siteIds) => await getPageRules({ siteIds }),
18
+ extractKey: r => r.siteId
19
+ });
20
+ const globalPageRulesCache = new Cache(async () => await getPageRules({ siteIds: [null], pagetreeIds: [null] }), { freshseconds: 3 });
21
+ export class PageRuleServiceInternal extends BaseService {
22
+ async findById(ruleId) {
23
+ return await this.loaders.get(pageRulesByIdLoader).load(ruleId);
24
+ }
25
+ async findByRoleId(roleId, filter) {
26
+ return await this.loaders.get(pageRulesByRoleLoader, filter).load(roleId);
27
+ }
28
+ async findBySiteId(siteId) {
29
+ const pageRulesForSite = siteId ? await this.loaders.get(pageRulesBySiteLoader).load(siteId) : [];
30
+ const globalRules = await globalPageRulesCache.get();
31
+ return [...pageRulesForSite, ...globalRules];
32
+ }
33
+ async findByPage(page) {
34
+ const site = await this.svc(SiteService).findByPagetreeId(page.pagetreeId);
35
+ // Get the page rules that apply to the site
36
+ // TODO: Is it safe to assume that if a PageRule has a pagetreeId, it also has a siteId?
37
+ // Or could there be a rule with a pagetreeId with siteId == null? In that case, we need to
38
+ // find PageRules by pagetreeId too to make sure we get them all.
39
+ const rules = await this.findBySiteId(site.id);
40
+ // filter to get the ones that apply to this page
41
+ const prService = this.svc(PageRuleService);
42
+ return await filterAsync(rules, async (rule) => await prService.applies(rule, page));
43
+ }
44
+ }
45
+ export class PageRuleService extends DosGatoService {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.raw = this.svc(PageRuleServiceInternal);
49
+ }
50
+ async findById(ruleId) {
51
+ return await this.removeUnauthorized(await this.raw.findById(ruleId));
52
+ }
53
+ async findByRoleId(roleId, filter) {
54
+ return await this.removeUnauthorized(await this.raw.findByRoleId(roleId, filter));
55
+ }
56
+ async findBySiteId(siteId) {
57
+ return await this.removeUnauthorized(await this.raw.findBySiteId(siteId));
58
+ }
59
+ async findByPage(page) {
60
+ return await this.removeUnauthorized(await this.raw.findByPage(page));
61
+ }
62
+ async create(args) {
63
+ const role = await this.svc(RoleServiceInternal).findById(args.roleId);
64
+ if (!role)
65
+ throw new Error('Role to be modified does not exist.');
66
+ if (!await this.svc(RoleService).mayCreateRules(role))
67
+ throw new Error('You are not permitted to add rules to this role.');
68
+ const newRule = new PageRule({ id: '0', path: args.path ?? '/', roleId: args.roleId, siteId: args.siteId, pagetreeId: args.pagetreeId, mode: args.mode ?? RulePathMode.SELFANDSUB, ...args.grants });
69
+ if (await this.tooPowerful(newRule)) {
70
+ return ValidatedResponse.error('The proposed rule would have more privilege than you currently have, so you cannot create it.');
71
+ }
72
+ try {
73
+ const ruleId = await createPageRule(args);
74
+ this.loaders.clear();
75
+ if (!newRule.siteId && !newRule.pagetreeId)
76
+ await globalPageRulesCache.clear();
77
+ const rule = await this.raw.findById(String(ruleId));
78
+ return new PageRuleResponse({ pageRule: rule, success: true });
79
+ }
80
+ catch (err) {
81
+ console.error(err);
82
+ throw new Error('An unknown error occurred while creating the page rule.');
83
+ }
84
+ }
85
+ async update(args) {
86
+ const rule = await this.raw.findById(args.ruleId);
87
+ if (!rule)
88
+ throw new Error('Rule to be updated does not exist.');
89
+ if (!await this.mayWrite(rule))
90
+ throw new Error('Current user is not permitted to update this page rule.');
91
+ const updatedGrants = { ...rule.grants, ...args.grants };
92
+ const newRule = new PageRule({
93
+ id: '0',
94
+ roleId: rule.roleId,
95
+ siteId: args.siteId ?? rule.siteId,
96
+ pagetreeId: args.pagetreeId ?? rule.pagetreeId,
97
+ path: args.path ?? rule.path,
98
+ mode: args.mode ?? rule.mode,
99
+ ...updatedGrants
100
+ });
101
+ if (await this.tooPowerful(newRule))
102
+ return ValidatedResponse.error('The updated rule would have more privilege than you currently have, so you cannot create it.');
103
+ try {
104
+ await updatePageRule(args);
105
+ this.loaders.clear();
106
+ if (!rule.siteId || !newRule.siteId)
107
+ await globalPageRulesCache.clear();
108
+ const updatedRule = await this.raw.findById(args.ruleId);
109
+ return new PageRuleResponse({ pageRule: updatedRule, success: true });
110
+ }
111
+ catch (err) {
112
+ console.error(err);
113
+ throw new Error('An error occurred while updating the page rule.');
114
+ }
115
+ }
116
+ async delete(ruleId) {
117
+ const rule = await this.raw.findById(ruleId);
118
+ if (!rule)
119
+ throw new Error('Rule to be deleted does not exist.');
120
+ if (!await this.mayWrite(rule))
121
+ throw new Error('Current user is not permitted to remove this page rule.');
122
+ try {
123
+ await deletePageRule(ruleId);
124
+ this.loaders.clear();
125
+ if (!rule.siteId)
126
+ await globalPageRulesCache.clear();
127
+ return new ValidatedResponse({ success: true });
128
+ }
129
+ catch (err) {
130
+ throw new Error('An error occurred while deleting the page rule.');
131
+ }
132
+ }
133
+ async applies(rule, page) {
134
+ if (rule.pagetreeId && rule.pagetreeId !== page.pagetreeId)
135
+ return false;
136
+ const pagetree = await this.svc(PagetreeServiceInternal).findById(page.pagetreeId);
137
+ if (!pagetree)
138
+ return false;
139
+ if (rule.siteId && rule.siteId !== pagetree.siteId)
140
+ return false;
141
+ const pagePath = await this.svc(PageServiceInternal).getPath(page);
142
+ if (rule.mode === RulePathMode.SELF && rule.path !== pagePath)
143
+ return false;
144
+ if (rule.mode === RulePathMode.SELFANDSUB && !pagePath.startsWith(rule.path))
145
+ return false;
146
+ if (rule.mode === RulePathMode.SUB && (rule.path === pagePath || !pagePath.startsWith(rule.path)))
147
+ return false;
148
+ return true;
149
+ }
150
+ async mayView(rule) {
151
+ if (await this.haveGlobalPerm('manageUsers'))
152
+ return true;
153
+ const role = await this.svc(RoleServiceInternal).findById(rule.roleId);
154
+ return !!role;
155
+ }
156
+ async mayWrite(rule) {
157
+ const role = await this.svc(RoleService).findById(rule.id);
158
+ return await this.svc(RoleService).mayUpdate(role);
159
+ }
160
+ asOrMorePowerful(ruleA, ruleB) {
161
+ let sitePagetreeMorePowerful = false;
162
+ if (!ruleA.siteId || ruleA.siteId === ruleB.siteId) { // ruleA is at least as powerful based on site alone
163
+ if (!ruleA.pagetreeId || ruleA.pagetreeId === ruleB.pagetreeId) { // pagetree is also at least as powerful
164
+ sitePagetreeMorePowerful = true;
165
+ }
166
+ }
167
+ else if (!ruleB.siteId) { // ruleA is less powerful than ruleB based on site alone, but maybe pagetree will equalize
168
+ if (ruleB.pagetreeId && ruleA.pagetreeId === ruleB.pagetreeId) {
169
+ sitePagetreeMorePowerful = true;
170
+ }
171
+ }
172
+ if (!sitePagetreeMorePowerful)
173
+ return false;
174
+ return comparePathsWithMode(ruleA, ruleB);
175
+ }
176
+ async tooPowerful(rule) {
177
+ return tooPowerfulHelper(rule, await this.currentPageRules(), this.asOrMorePowerful);
178
+ }
179
+ }
180
+ //# sourceMappingURL=pagerule.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagerule.service.js","sourceRoot":"","sources":["../../src/pagerule/pagerule.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Pagetree, PagetreeFilter, VersionedService, CreatePagetreeInput } from '../internal.js';
2
+ export declare function getPagetreesById(ids: string[]): Promise<Pagetree[]>;
3
+ export declare function getPagetreesBySite(siteIds: string[], filter?: PagetreeFilter): Promise<Pagetree[]>;
4
+ export declare function getPagetreesByTemplate(templateIds: number[], direct?: boolean): Promise<{
5
+ key: any;
6
+ value: Pagetree;
7
+ }[]>;
8
+ export declare function createPagetree(versionedService: VersionedService, userId: string, siteName: string, args: CreatePagetreeInput): Promise<Pagetree>;
9
+ export declare function renamePagetree(pagetreeId: string, name: string): Promise<number>;
10
+ export declare function promotePagetree(oldPrimaryId: string, newPrimaryId: string): Promise<void>;
11
+ export declare function archivePagetree(pagetreeId: string): Promise<number>;
12
+ export declare function deletePagetree(pagetreeId: string, currentUserInternalId: number): Promise<number>;
13
+ export declare function undeletePagetree(pagetreeId: string): Promise<number>;
@@ -0,0 +1,84 @@
1
+ import db from 'mysql2-async/db';
2
+ import { unique } from 'txstate-utils';
3
+ import { nanoid } from 'nanoid';
4
+ import { Pagetree, PagetreeType, formatSavedAtVersion } from '../internal.js';
5
+ function processFilters(filter) {
6
+ const binds = [];
7
+ const where = [];
8
+ if (filter?.ids?.length) {
9
+ where.push(`pagetrees.id IN (${db.in(binds, filter.ids)})`);
10
+ }
11
+ if (filter?.types?.length) {
12
+ where.push(`pagetrees.type IN (${db.in(binds, filter.types)})`);
13
+ }
14
+ return { binds, where };
15
+ }
16
+ export async function getPagetreesById(ids) {
17
+ const { binds, where } = processFilters({ ids });
18
+ const pagetrees = await db.getall(`SELECT * FROM pagetrees
19
+ WHERE (${where.join(') AND (')})`, binds);
20
+ return pagetrees.map(p => new Pagetree(p));
21
+ }
22
+ export async function getPagetreesBySite(siteIds, filter) {
23
+ const { binds, where } = processFilters(filter);
24
+ where.push(`pagetrees.siteID IN (${db.in(binds, siteIds)})`);
25
+ const pagetrees = await db.getall(`SELECT * from pagetrees
26
+ WHERE (${where.join(') AND (')})`, binds);
27
+ return pagetrees.map(p => new Pagetree(p));
28
+ }
29
+ export async function getPagetreesByTemplate(templateIds, direct) {
30
+ const directBinds = [];
31
+ const directPagetreeQuery = `SELECT pagetrees.*, pagetrees_templates.templateId as templateId FROM pagetrees
32
+ INNER JOIN pagetrees_templates ON pagetrees.id = pagetrees_templates.pagetreeId
33
+ WHERE pagetrees_templates.templateId IN (${db.in(directBinds, templateIds)})`;
34
+ const pagetrees = await db.getall(directPagetreeQuery, directBinds);
35
+ if (direct) {
36
+ return pagetrees.map(row => ({ key: row.templateId, value: new Pagetree(row) }));
37
+ }
38
+ else {
39
+ const indirectBinds = [];
40
+ const pagetreesThroughSites = await db.getall(`SELECT pagetrees.*, sites_templates.templateId as templateId
41
+ FROM pagetrees
42
+ INNER JOIN sites ON pagetrees.siteId = sites.id
43
+ INNER JOIN sites_templates ON sites.id = sites_templates.siteId
44
+ WHERE sites_templates.templateId IN (${db.in(indirectBinds, templateIds)})`, indirectBinds);
45
+ if (typeof direct === 'undefined') {
46
+ const combined = unique([...pagetrees, ...pagetreesThroughSites], 'id');
47
+ return combined.map(row => ({ key: row.templateId, value: new Pagetree(row) }));
48
+ }
49
+ else {
50
+ return pagetreesThroughSites.map(row => ({ key: row.templateId, value: new Pagetree(row) }));
51
+ }
52
+ }
53
+ }
54
+ export async function createPagetree(versionedService, userId, siteName, args) {
55
+ return await db.transaction(async (db) => {
56
+ // create the pagetree
57
+ const pagetreeId = await db.insert('INSERT INTO pagetrees (siteId, type, name, createdAt) VALUES (?, ?, ?, NOW())', [args.siteId, PagetreeType.SANDBOX, args.name]);
58
+ // create the root page for the pagetree
59
+ const dataId = await versionedService.create('page', { templateKey: args.rootPageTemplateKey, savedAtVersion: formatSavedAtVersion(args.schemaVersion) }, [{ name: 'template', values: [args.rootPageTemplateKey] }], userId, db);
60
+ await db.insert(`
61
+ INSERT INTO pages (name, path, displayOrder, pagetreeId, dataId, linkId)
62
+ VALUES (?,?,?,?,?,?)`, [siteName, '/', 1, pagetreeId, dataId, nanoid(10)]);
63
+ return new Pagetree(await db.getrow('SELECT * FROM pagetrees WHERE id=?', [pagetreeId]));
64
+ });
65
+ }
66
+ export async function renamePagetree(pagetreeId, name) {
67
+ return await db.update('UPDATE pagetrees SET name = ? WHERE id = ?', [name, pagetreeId]);
68
+ }
69
+ export async function promotePagetree(oldPrimaryId, newPrimaryId) {
70
+ return await db.transaction(async (db) => {
71
+ await db.update('UPDATE pagetrees SET type = ?, archivedAt = NOW() WHERE id = ?', [PagetreeType.ARCHIVE, oldPrimaryId]);
72
+ await db.update('UPDATE pagetrees SET type = ?, promotedAt = NOW() WHERE id = ?', [PagetreeType.PRIMARY, newPrimaryId]);
73
+ });
74
+ }
75
+ export async function archivePagetree(pagetreeId) {
76
+ return await db.update('UPDATE pagetrees SET type = ?, archivedAt = NOW() WHERE id = ?', [PagetreeType.ARCHIVE, pagetreeId]);
77
+ }
78
+ export async function deletePagetree(pagetreeId, currentUserInternalId) {
79
+ return await db.update('UPDATE pagetrees SET deletedAt = NOW(), deletedBy = ? WHERE id = ?', [currentUserInternalId, pagetreeId]);
80
+ }
81
+ export async function undeletePagetree(pagetreeId) {
82
+ return await db.update('UPDATE pagetrees SET deletedAt = NULL, deletedBy = NULL WHERE id = ?', [pagetreeId]);
83
+ }
84
+ //# sourceMappingURL=pagetree.database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagetree.database.js","sourceRoot":"","sources":["../../src/pagetree/pagetree.database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ValidatedResponse, ValidatedResponseArgs } from '@txstate-mws/graphql-server';
2
+ import { DateTime } from 'luxon';
3
+ export declare enum PagetreeType {
4
+ PRIMARY = "primary",
5
+ SANDBOX = "sandbox",
6
+ ARCHIVE = "archive"
7
+ }
8
+ export declare class Pagetree {
9
+ id: string;
10
+ type: PagetreeType;
11
+ name: string;
12
+ deleted: boolean;
13
+ deletedAt?: DateTime;
14
+ created: DateTime;
15
+ archived?: DateTime;
16
+ siteId: string;
17
+ deletedBy?: number;
18
+ constructor(row: any);
19
+ }
20
+ export declare class PagetreeFilter {
21
+ ids?: string[];
22
+ types?: PagetreeType[];
23
+ }
24
+ export declare class CreatePagetreeInput {
25
+ siteId: string;
26
+ name: string;
27
+ rootPageTemplateKey: string;
28
+ schemaVersion: DateTime;
29
+ }
30
+ export declare class PagetreeResponse extends ValidatedResponse {
31
+ pagetree?: Pagetree;
32
+ constructor(config: ValidatedResponseArgs & {
33
+ pagetree?: Pagetree;
34
+ });
35
+ }
36
+ export declare class PagetreePermissions {
37
+ }
38
+ export declare enum PagetreePermission {
39
+ RENAME = "rename",
40
+ PROMOTE = "promote",
41
+ DELETE = "delete",
42
+ UNDELETE = "undelete"
43
+ }
@@ -0,0 +1,146 @@
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
+ import { ValidatedResponse } from '@txstate-mws/graphql-server';
11
+ import { DateTime } from 'luxon';
12
+ import { Field, ID, InputType, ObjectType, registerEnumType } from 'type-graphql';
13
+ import { isNotNull } from 'txstate-utils';
14
+ export var PagetreeType;
15
+ (function (PagetreeType) {
16
+ PagetreeType["PRIMARY"] = "primary";
17
+ PagetreeType["SANDBOX"] = "sandbox";
18
+ PagetreeType["ARCHIVE"] = "archive";
19
+ })(PagetreeType || (PagetreeType = {}));
20
+ registerEnumType(PagetreeType, {
21
+ name: 'PagetreeType',
22
+ description: `An indicator of which stage of the lifecycle a pagetree represents. Page
23
+ trees are always SANDBOX when first created, become PRIMARY when promoted, and become
24
+ ARCHIVE when some other pagetree is promoted and replaces it. When a site is created
25
+ it will always be created with a single PRIMARY pagetree.`,
26
+ valuesConfig: {
27
+ PRIMARY: { description: 'The primary pagetree. There will always be exactly one of these per site.' },
28
+ SANDBOX: { description: 'A pagetree that is currently being groomed to be the next primary pagetree.' },
29
+ ARCHIVE: { description: 'A pagetree that used to be the primary pagetree.' }
30
+ }
31
+ });
32
+ let Pagetree = class Pagetree {
33
+ constructor(row) {
34
+ this.id = String(row.id);
35
+ this.type = row.type;
36
+ this.name = row.name;
37
+ this.siteId = String(row.siteId);
38
+ this.created = DateTime.fromJSDate(row.createdAt);
39
+ this.archived = row.archivedAt ? DateTime.fromJSDate(row.archivedAt) : undefined;
40
+ this.deleted = isNotNull(row.deletedAt);
41
+ this.deletedAt = DateTime.fromJSDate(row.deletedAt);
42
+ this.deletedBy = row.deletedBy;
43
+ }
44
+ };
45
+ __decorate([
46
+ Field(type => ID),
47
+ __metadata("design:type", String)
48
+ ], Pagetree.prototype, "id", void 0);
49
+ __decorate([
50
+ Field(type => PagetreeType),
51
+ __metadata("design:type", String)
52
+ ], Pagetree.prototype, "type", void 0);
53
+ __decorate([
54
+ Field(),
55
+ __metadata("design:type", String)
56
+ ], Pagetree.prototype, "name", void 0);
57
+ __decorate([
58
+ Field({ description: 'Pagetree has been soft-deleted but is still recoverable.' }),
59
+ __metadata("design:type", Boolean)
60
+ ], Pagetree.prototype, "deleted", void 0);
61
+ __decorate([
62
+ Field({ description: 'Date this pagetree was created. If it matches the site created date, it is the pagetree that was automatically created to be the site\'s PRIMARY.' }),
63
+ __metadata("design:type", DateTime)
64
+ ], Pagetree.prototype, "created", void 0);
65
+ __decorate([
66
+ Field({ nullable: true, description: 'Date this pagetree was archived. If an archive is promoted to primary and re-archived, only the last move to archive status is recorded.' }),
67
+ __metadata("design:type", DateTime)
68
+ ], Pagetree.prototype, "archived", void 0);
69
+ Pagetree = __decorate([
70
+ ObjectType({
71
+ description: `A pagetree represents the page hierarchy in a site. Each pagetree begins
72
+ with a single root page. A site may have multiple pagetrees, but only one active pagetree.
73
+ Inactive pagetrees would be archives or sandboxes.`
74
+ }),
75
+ __metadata("design:paramtypes", [Object])
76
+ ], Pagetree);
77
+ export { Pagetree };
78
+ let PagetreeFilter = class PagetreeFilter {
79
+ };
80
+ __decorate([
81
+ Field(type => [ID], { nullable: true }),
82
+ __metadata("design:type", Array)
83
+ ], PagetreeFilter.prototype, "ids", void 0);
84
+ __decorate([
85
+ Field(type => [PagetreeType], { nullable: true }),
86
+ __metadata("design:type", Array)
87
+ ], PagetreeFilter.prototype, "types", void 0);
88
+ PagetreeFilter = __decorate([
89
+ InputType()
90
+ ], PagetreeFilter);
91
+ export { PagetreeFilter };
92
+ let CreatePagetreeInput = class CreatePagetreeInput {
93
+ };
94
+ __decorate([
95
+ Field(),
96
+ __metadata("design:type", String)
97
+ ], CreatePagetreeInput.prototype, "siteId", void 0);
98
+ __decorate([
99
+ Field(),
100
+ __metadata("design:type", String)
101
+ ], CreatePagetreeInput.prototype, "name", void 0);
102
+ __decorate([
103
+ Field(type => ID),
104
+ __metadata("design:type", String)
105
+ ], CreatePagetreeInput.prototype, "rootPageTemplateKey", void 0);
106
+ __decorate([
107
+ Field({ description: 'The current schema version of the admin UI. Used to tag the root page of the new pagetree.' }),
108
+ __metadata("design:type", DateTime)
109
+ ], CreatePagetreeInput.prototype, "schemaVersion", void 0);
110
+ CreatePagetreeInput = __decorate([
111
+ InputType()
112
+ ], CreatePagetreeInput);
113
+ export { CreatePagetreeInput };
114
+ let PagetreeResponse = class PagetreeResponse extends ValidatedResponse {
115
+ constructor(config) {
116
+ super(config);
117
+ this.pagetree = config.pagetree;
118
+ }
119
+ };
120
+ __decorate([
121
+ Field({ nullable: true }),
122
+ __metadata("design:type", Pagetree)
123
+ ], PagetreeResponse.prototype, "pagetree", void 0);
124
+ PagetreeResponse = __decorate([
125
+ ObjectType(),
126
+ __metadata("design:paramtypes", [Object])
127
+ ], PagetreeResponse);
128
+ export { PagetreeResponse };
129
+ let PagetreePermissions = class PagetreePermissions {
130
+ };
131
+ PagetreePermissions = __decorate([
132
+ ObjectType()
133
+ ], PagetreePermissions);
134
+ export { PagetreePermissions };
135
+ export var PagetreePermission;
136
+ (function (PagetreePermission) {
137
+ PagetreePermission["RENAME"] = "rename";
138
+ PagetreePermission["PROMOTE"] = "promote";
139
+ PagetreePermission["DELETE"] = "delete";
140
+ PagetreePermission["UNDELETE"] = "undelete";
141
+ })(PagetreePermission || (PagetreePermission = {}));
142
+ registerEnumType(PagetreePermission, {
143
+ name: 'PagetreePermission',
144
+ description: 'All the action types that can be individually permissioned on a pagetree.'
145
+ });
146
+ //# sourceMappingURL=pagetree.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagetree.model.js","sourceRoot":"","sources":["../../src/pagetree/pagetree.model.ts"],"names":[],"mappings":"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"}