@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 @@
1
+ {"version":3,"file":"siterule.model.js","sourceRoot":"","sources":["../../src/siterule/siterule.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAIzC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAsB9B,YAAa,GAAS;QACpB,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAA;YACtC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,CAAA;YAC5C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,CAAA;YAC5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAA;SAC/B;IACH,CAAC;CACF,CAAA;AA/BC;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,oEAAoE,EAAE,CAAC;;mDAC7E;AAGhB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;;mDAC7C;AAGhB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,6EAA6E,EAAE,CAAC;;yDAChF;AAGtB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,qFAAqF,EAAE,CAAC;;4DACrF;AAGzB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,mHAAmH,EAAE,CAAC;;4DACnH;AAGzB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;;mDAC7C;AAGhB;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;;qDAC7C;AApBP,mBAAmB;IAF/B,UAAU,EAAE;IACZ,SAAS,EAAE;;GACC,mBAAmB,CAiC/B;SAjCY,mBAAmB;AAoChC,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,mBAAmB;IAIrD,YAAa,GAAS;QACpB,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;SACxB;IACH,CAAC;CACF,CAAA;AARC;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,kIAAkI,EAAE,CAAC;;mDACtI;AAFV,cAAc;IAD1B,UAAU,EAAE;;GACA,cAAc,CAU1B;SAVY,cAAc;AAa3B,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAanB,YAAa,GAAQ;QARrB,SAAI,GAAW,QAAQ,CAAC,IAAI,CAAA;QAS1B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;CACF,CAAA;AAjBC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;;oCACR;AAGV;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,2DAA2D,EAAE,CAAC;;sCAC1E;AAG5B;IADC,KAAK,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;8BACpD,cAAc;wCAAA;AARX,QAAQ;IADpB,UAAU,CAAC,EAAE,WAAW,EAAE,4QAA4Q,EAAE,CAAC;;GAC7R,QAAQ,CAmBpB;SAnBY,QAAQ;AAsBrB,IAAa,cAAc,GAA3B,MAAa,cAAc;CA6B1B,CAAA;AAzBC;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACtB;AAGlB;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACf;AAGzB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;;8CACzE;AAGhB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;;8CACzE;AAGhB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;;oDACzE;AAGtB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;;uDACzE;AAGzB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;;uDACzE;AAGzB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;;8CACzE;AAGhB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;;gDACzE;AA5BP,cAAc;IAD1B,SAAS,EAAE;GACC,cAAc,CA6B1B;SA7BY,cAAc;AAgC3B,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;CAS/B,CAAA;AAPC;IADC,KAAK,EAAE;;mDACO;AAGf;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACX;AAGf;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,mBAAmB;mDAAA;AARjB,mBAAmB;IAD/B,SAAS,EAAE;GACC,mBAAmB,CAS/B;SATY,mBAAmB;AAYhC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;CAS/B,CAAA;AAPC;IADC,KAAK,EAAE;;mDACO;AAGf;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACX;AAGf;IADC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,mBAAmB;mDAAA;AARjB,mBAAmB;IAD/B,SAAS,EAAE;GACC,mBAAmB,CAS/B;SATY,mBAAmB;AAYhC,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,iBAAiB;IAIrD,YAAa,MAAuD;QAClE,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IACjC,CAAC;CACF,CAAA;AANC;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,QAAQ;kDAAA;AAFR,gBAAgB;IAD5B,UAAU,EAAE;;GACA,gBAAgB,CAQ5B;SARY,gBAAgB;AAW7B,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;CAAG,CAAA;AAAtB,mBAAmB;IAD/B,UAAU,EAAE;GACA,mBAAmB,CAAG;SAAtB,mBAAmB"}
@@ -0,0 +1,12 @@
1
+ import { Context } from '@txstate-mws/graphql-server';
2
+ import { Role, Site, CreateSiteRuleInput, SiteRule, UpdateSiteRuleInput } from '../internal.js';
3
+ export declare class SiteRuleResolver {
4
+ role(ctx: Context, siterule: SiteRule): Promise<Role | undefined>;
5
+ site(ctx: Context, siterule: SiteRule): Promise<Site | null | undefined>;
6
+ permissions(siterule: SiteRule): SiteRule;
7
+ createSiteRule(ctx: Context, args: CreateSiteRuleInput): Promise<import("@txstate-mws/graphql-server").ValidatedResponse>;
8
+ updateSiteRule(ctx: Context, args: UpdateSiteRuleInput): Promise<import("@txstate-mws/graphql-server").ValidatedResponse>;
9
+ }
10
+ export declare class SiteRulePermissionsResolver {
11
+ write(ctx: Context, rule: SiteRule): Promise<boolean>;
12
+ }
@@ -0,0 +1,100 @@
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 } from 'txstate-utils';
15
+ import { Resolver, Ctx, FieldResolver, Root, Mutation, Arg } from 'type-graphql';
16
+ import { Role, RoleService, Site, SiteService, CreateSiteRuleInput, SiteRule, SiteRulePermissions, SiteRuleResponse, UpdateSiteRuleInput, SiteRuleService } from '../internal.js';
17
+ let SiteRuleResolver = class SiteRuleResolver {
18
+ async role(ctx, siterule) {
19
+ return await ctx.svc(RoleService).getRoleForRule(siterule.roleId);
20
+ }
21
+ async site(ctx, siterule) {
22
+ if (isNull(siterule.siteId))
23
+ return null;
24
+ else
25
+ return await ctx.svc(SiteService).findById(siterule.siteId);
26
+ }
27
+ permissions(siterule) {
28
+ return siterule;
29
+ }
30
+ async createSiteRule(ctx, args) {
31
+ return await ctx.svc(SiteRuleService).create(args);
32
+ }
33
+ async updateSiteRule(ctx, args) {
34
+ return await ctx.svc(SiteRuleService).update(args);
35
+ }
36
+ };
37
+ __decorate([
38
+ FieldResolver(returns => Role),
39
+ __param(0, Ctx()),
40
+ __param(1, Root()),
41
+ __metadata("design:type", Function),
42
+ __metadata("design:paramtypes", [Context, SiteRule]),
43
+ __metadata("design:returntype", Promise)
44
+ ], SiteRuleResolver.prototype, "role", null);
45
+ __decorate([
46
+ FieldResolver(returns => Site, { nullable: true, description: 'The site targeted by this rule. Null means it targets all sites.' }),
47
+ __param(0, Ctx()),
48
+ __param(1, Root()),
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", [Context, SiteRule]),
51
+ __metadata("design:returntype", Promise)
52
+ ], SiteRuleResolver.prototype, "site", null);
53
+ __decorate([
54
+ FieldResolver(returns => SiteRulePermissions, {
55
+ description: `Reveal the simplified results after all authorization rules are taken into account
56
+ for the current user. Makes it easy to light up, disable, or hide buttons in the UI.`
57
+ }),
58
+ __param(0, Root()),
59
+ __metadata("design:type", Function),
60
+ __metadata("design:paramtypes", [SiteRule]),
61
+ __metadata("design:returntype", void 0)
62
+ ], SiteRuleResolver.prototype, "permissions", null);
63
+ __decorate([
64
+ Mutation(returns => SiteRuleResponse),
65
+ __param(0, Ctx()),
66
+ __param(1, Arg('args', type => CreateSiteRuleInput)),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", [Context, CreateSiteRuleInput]),
69
+ __metadata("design:returntype", Promise)
70
+ ], SiteRuleResolver.prototype, "createSiteRule", null);
71
+ __decorate([
72
+ Mutation(returns => SiteRuleResponse),
73
+ __param(0, Ctx()),
74
+ __param(1, Arg('args', type => UpdateSiteRuleInput)),
75
+ __metadata("design:type", Function),
76
+ __metadata("design:paramtypes", [Context, UpdateSiteRuleInput]),
77
+ __metadata("design:returntype", Promise)
78
+ ], SiteRuleResolver.prototype, "updateSiteRule", null);
79
+ SiteRuleResolver = __decorate([
80
+ Resolver(of => SiteRule)
81
+ ], SiteRuleResolver);
82
+ export { SiteRuleResolver };
83
+ let SiteRulePermissionsResolver = class SiteRulePermissionsResolver {
84
+ async write(ctx, rule) {
85
+ return await ctx.svc(SiteRuleService).mayWrite(rule);
86
+ }
87
+ };
88
+ __decorate([
89
+ FieldResolver(returns => Boolean, { description: 'User may edit the grants on this rule.' }),
90
+ __param(0, Ctx()),
91
+ __param(1, Root()),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [Context, SiteRule]),
94
+ __metadata("design:returntype", Promise)
95
+ ], SiteRulePermissionsResolver.prototype, "write", null);
96
+ SiteRulePermissionsResolver = __decorate([
97
+ Resolver(of => SiteRulePermissions)
98
+ ], SiteRulePermissionsResolver);
99
+ export { SiteRulePermissionsResolver };
100
+ //# sourceMappingURL=siterule.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siterule.resolver.js","sourceRoot":"","sources":["../../src/siterule/siterule.resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
2
+ import { Site, DosGatoService, SiteRule, SiteRuleFilter, CreateSiteRuleInput, UpdateSiteRuleInput, Pagetree } from '../internal.js';
3
+ export declare class SiteRuleServiceInternal extends BaseService {
4
+ findById(ruleId: string): Promise<SiteRule | undefined>;
5
+ findByRoleId(roleId: string, filter?: SiteRuleFilter): Promise<SiteRule[]>;
6
+ findBySiteId(siteId?: string): Promise<SiteRule[]>;
7
+ findByPagetree(pagetree: Pagetree): Promise<SiteRule[]>;
8
+ }
9
+ export declare class SiteRuleService extends DosGatoService<SiteRule> {
10
+ raw: SiteRuleServiceInternal;
11
+ findById(ruleId: string): Promise<SiteRule | undefined>;
12
+ findByRoleId(roleId: string, filter?: SiteRuleFilter): Promise<SiteRule[]>;
13
+ findBySiteId(siteId?: string): Promise<SiteRule[]>;
14
+ findByPagetree(pagetree: Pagetree): Promise<SiteRule[]>;
15
+ create(args: CreateSiteRuleInput): Promise<ValidatedResponse>;
16
+ update(args: UpdateSiteRuleInput): Promise<ValidatedResponse>;
17
+ delete(ruleId: string): Promise<ValidatedResponse>;
18
+ applies(rule: SiteRule, site: Site): Promise<boolean>;
19
+ asOrMorePowerful(ruleA: SiteRule, ruleB: SiteRule): boolean;
20
+ tooPowerful(rule: SiteRule): Promise<boolean>;
21
+ mayWrite(rule: SiteRule): Promise<boolean>;
22
+ mayView(rule: SiteRule): Promise<boolean>;
23
+ }
@@ -0,0 +1,148 @@
1
+ import { OneToManyLoader, PrimaryKeyLoader } from 'dataloader-factory';
2
+ import { BaseService, ValidatedResponse } from '@txstate-mws/graphql-server';
3
+ import { Cache } from 'txstate-utils';
4
+ import { DosGatoService, tooPowerfulHelper, getSiteRules, SiteRule, RoleService, createSiteRule, SiteRuleResponse, deleteSiteRule, updateSiteRule, RoleServiceInternal } from '../internal.js';
5
+ const siteRulesByIdLoader = new PrimaryKeyLoader({
6
+ fetch: async (ids) => {
7
+ return await getSiteRules({ ids });
8
+ }
9
+ });
10
+ const siteRulesByRoleLoader = new OneToManyLoader({
11
+ fetch: async (roleIds, filter) => {
12
+ return await getSiteRules({ ...filter, roleIds });
13
+ },
14
+ extractKey: (r) => r.roleId,
15
+ keysFromFilter: (filter) => filter?.roleIds ?? []
16
+ });
17
+ const siteRulesBySiteLoader = new OneToManyLoader({
18
+ fetch: async (siteIds) => await getSiteRules({ siteIds }),
19
+ extractKey: r => r.siteId,
20
+ idLoader: siteRulesByIdLoader
21
+ });
22
+ const globalSiteRulesCache = new Cache(async () => await getSiteRules({ siteIds: [null] }), { freshseconds: 3 });
23
+ export class SiteRuleServiceInternal extends BaseService {
24
+ async findById(ruleId) {
25
+ return await this.loaders.get(siteRulesByIdLoader).load(ruleId);
26
+ }
27
+ async findByRoleId(roleId, filter) {
28
+ return await this.loaders.get(siteRulesByRoleLoader, filter).load(roleId);
29
+ }
30
+ async findBySiteId(siteId) {
31
+ const [siteSpecificSiteRules, globalSiteRules] = await Promise.all([
32
+ siteId ? this.loaders.get(siteRulesBySiteLoader).load(siteId) : [],
33
+ globalSiteRulesCache.get()
34
+ ]);
35
+ return [...siteSpecificSiteRules, ...globalSiteRules];
36
+ }
37
+ async findByPagetree(pagetree) {
38
+ // TODO: Do these need to be filtered? Any rules that apply to the site will apply to this pagetree
39
+ return await this.findBySiteId(pagetree?.siteId);
40
+ }
41
+ }
42
+ export class SiteRuleService extends DosGatoService {
43
+ constructor() {
44
+ super(...arguments);
45
+ this.raw = this.svc(SiteRuleServiceInternal);
46
+ }
47
+ async findById(ruleId) {
48
+ return await this.removeUnauthorized(await this.raw.findById(ruleId));
49
+ }
50
+ async findByRoleId(roleId, filter) {
51
+ return await this.removeUnauthorized(await this.raw.findByRoleId(roleId, filter));
52
+ }
53
+ async findBySiteId(siteId) {
54
+ return await this.removeUnauthorized(await this.raw.findBySiteId(siteId));
55
+ }
56
+ async findByPagetree(pagetree) {
57
+ return await this.removeUnauthorized(await this.raw.findByPagetree(pagetree));
58
+ }
59
+ async create(args) {
60
+ const role = await this.svc(RoleServiceInternal).findById(args.roleId);
61
+ if (!role)
62
+ throw new Error('Role to be modified does not exist.');
63
+ if (!await this.svc(RoleService).mayCreateRules(role))
64
+ throw new Error('You are not permitted to add rules to this role.');
65
+ const newRule = new SiteRule({ id: '0', roleId: args.roleId, siteId: args.siteId, ...args.grants });
66
+ if (await this.tooPowerful(newRule))
67
+ return ValidatedResponse.error('The proposed rule would have more privilege than you currently have, so you cannot create it.');
68
+ try {
69
+ const ruleId = await createSiteRule(args);
70
+ this.loaders.clear();
71
+ if (!newRule.siteId)
72
+ await globalSiteRulesCache.clear();
73
+ const rule = await this.loaders.get(siteRulesByIdLoader).load(String(ruleId));
74
+ return new SiteRuleResponse({ siteRule: rule, success: true });
75
+ }
76
+ catch (err) {
77
+ console.error(err);
78
+ throw new Error('An unknown error occurred while creating the site rule.');
79
+ }
80
+ }
81
+ async update(args) {
82
+ const rule = await this.raw.findById(args.ruleId);
83
+ if (!rule)
84
+ throw new Error('Rule to be updated does not exist.');
85
+ if (!await this.mayWrite(rule))
86
+ throw new Error('Current user is not permitted to update this site rule.');
87
+ const updatedGrants = { ...rule.grants, ...args.grants };
88
+ const newRule = new SiteRule({
89
+ id: '0',
90
+ roleId: rule.roleId,
91
+ siteId: args.siteId ?? rule.siteId,
92
+ ...updatedGrants
93
+ });
94
+ if (await this.tooPowerful(newRule))
95
+ return ValidatedResponse.error('The updated rule would have more privilege than you currently have, so you cannot create it.');
96
+ try {
97
+ await updateSiteRule(args);
98
+ this.loaders.clear();
99
+ if (!rule.siteId || !newRule.siteId)
100
+ await globalSiteRulesCache.clear();
101
+ const updatedRule = await this.raw.findById(args.ruleId);
102
+ return new SiteRuleResponse({ siteRule: updatedRule, success: true });
103
+ }
104
+ catch (err) {
105
+ console.error(err);
106
+ throw new Error('An error occurred while updating the asset rule.');
107
+ }
108
+ }
109
+ async delete(ruleId) {
110
+ const rule = await this.raw.findById(ruleId);
111
+ if (!rule)
112
+ throw new Error('Rule to be deleted does not exist.');
113
+ if (!await this.mayWrite(rule))
114
+ throw new Error('Current user is not permitted to remove this site rule.');
115
+ try {
116
+ await deleteSiteRule(ruleId);
117
+ this.loaders.clear();
118
+ if (!rule.siteId)
119
+ await globalSiteRulesCache.clear();
120
+ return new ValidatedResponse({ success: true });
121
+ }
122
+ catch (err) {
123
+ throw new Error('An error occurred while deleting the site rule.');
124
+ }
125
+ }
126
+ async applies(rule, site) {
127
+ if (rule.siteId && rule.siteId !== site.id)
128
+ return false;
129
+ return true;
130
+ }
131
+ asOrMorePowerful(ruleA, ruleB) {
132
+ return !ruleA.siteId || ruleA.siteId === ruleB.siteId;
133
+ }
134
+ async tooPowerful(rule) {
135
+ return tooPowerfulHelper(rule, await this.currentSiteRules(), this.asOrMorePowerful);
136
+ }
137
+ async mayWrite(rule) {
138
+ const role = await this.svc(RoleService).findById(rule.id);
139
+ return await this.svc(RoleService).mayUpdate(role);
140
+ }
141
+ async mayView(rule) {
142
+ if (await this.haveGlobalPerm('manageUsers'))
143
+ return true;
144
+ const role = await this.svc(RoleServiceInternal).findById(rule.roleId);
145
+ return !!role;
146
+ }
147
+ }
148
+ //# sourceMappingURL=siterule.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siterule.service.js","sourceRoot":"","sources":["../../src/siterule/siterule.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TemplateFilter, Template } from '../internal.js';
2
+ export declare function getTemplates(filter?: TemplateFilter): Promise<Template[]>;
3
+ export declare function getTemplatesBySite(siteIds: string[], filter?: TemplateFilter): Promise<{
4
+ key: string;
5
+ value: Template;
6
+ }[]>;
7
+ export declare function getTemplatesByPagetree(pagetreeIds: string[], filter?: TemplateFilter): Promise<{
8
+ key: string;
9
+ value: Template;
10
+ }[]>;
11
+ export declare function authorizeForPagetree(templateId: string, pagetreeId: string): Promise<number>;
12
+ export declare function deauthorizeForPagetree(templateId: string, pagetreeId: string): Promise<number>;
13
+ export declare function authorizeForSite(templateId: string, siteId: string): Promise<number>;
14
+ export declare function deauthorizeForSite(templateId: string, siteId: string): Promise<number>;
15
+ export declare function setUniversal(templateId: string, universal: boolean): Promise<number>;
@@ -0,0 +1,61 @@
1
+ import db from 'mysql2-async/db';
2
+ import { Template } from '../internal.js';
3
+ const columns = ['templates.id', 'templates.key', 'templates.name', 'templates.type', 'templates.deleted'];
4
+ function processFilters(filter) {
5
+ const where = ['deleted = 0'];
6
+ const binds = [];
7
+ if (filter?.ids?.length) {
8
+ where.push(`templates.id IN (${db.in(binds, filter.ids)})`);
9
+ }
10
+ if (filter?.keys?.length) {
11
+ where.push(`templates.key IN (${db.in(binds, filter.keys)})`);
12
+ }
13
+ if (filter?.names?.length) {
14
+ where.push(`templates.name IN (${db.in(binds, filter.names)})`);
15
+ }
16
+ if (filter?.types?.length) {
17
+ where.push(`templates.type IN (${db.in(binds, filter.types)})`);
18
+ }
19
+ return { where, binds };
20
+ }
21
+ export async function getTemplates(filter) {
22
+ const { where, binds } = processFilters(filter);
23
+ let query = `SELECT ${columns.join(', ')} FROM templates`;
24
+ if (where.length) {
25
+ query += ` WHERE (${where.join(') AND (')})`;
26
+ }
27
+ const templates = await db.getall(query, binds);
28
+ return templates.map(t => new Template(t));
29
+ }
30
+ export async function getTemplatesBySite(siteIds, filter) {
31
+ const { where, binds } = processFilters(filter);
32
+ where.push(`sites_templates.siteId IN (${db.in(binds, siteIds)})`);
33
+ const sites = await db.getall(`SELECT ${columns.join(', ')}, sites_templates.siteId as siteId FROM templates
34
+ INNER JOIN sites_templates ON templates.id = sites_templates.templateId
35
+ WHERE (${where.join(') AND (')})`, binds);
36
+ return sites.map(row => ({ key: String(row.siteId), value: new Template(row) }));
37
+ }
38
+ export async function getTemplatesByPagetree(pagetreeIds, filter) {
39
+ const { where, binds } = processFilters(filter);
40
+ where.push(`pagetrees_templates.pagetreeId IN (${db.in(binds, pagetreeIds)})`);
41
+ const rows = await db.getall(`SELECT ${columns.join(', ')}, pagetrees_templates.pagetreeId as pagetreeId FROM templates
42
+ INNER JOIN pagetrees_templates ON templates.id = pagetrees_templates.templateId
43
+ WHERE (${where.join(') AND (')})`, binds);
44
+ return rows.map(row => ({ key: String(row.pagetreeId), value: new Template(row) }));
45
+ }
46
+ export async function authorizeForPagetree(templateId, pagetreeId) {
47
+ return await db.insert('INSERT INTO pagetrees_templates (templateId, pagetreeId) VALUES (?,?)', [templateId, pagetreeId]);
48
+ }
49
+ export async function deauthorizeForPagetree(templateId, pagetreeId) {
50
+ return await db.delete('DELETE FROM pagetrees_templates WHERE templateId = ? and pagetreeId = ?', [templateId, pagetreeId]);
51
+ }
52
+ export async function authorizeForSite(templateId, siteId) {
53
+ return await db.insert('INSERT INTO sites_templates (templateId, siteId) VALUES (?,?)', [templateId, siteId]);
54
+ }
55
+ export async function deauthorizeForSite(templateId, siteId) {
56
+ return await db.delete('DELETE FROM sites_templates WHERE templateId = ? and siteId = ?', [templateId, siteId]);
57
+ }
58
+ export async function setUniversal(templateId, universal) {
59
+ return await db.update('UPDATE templates SET universal = ? where id = ?', [templateId, universal]);
60
+ }
61
+ //# sourceMappingURL=template.database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.database.js","sourceRoot":"","sources":["../../src/template/template.database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { UrlSafeString } from '../internal.js';
2
+ export declare enum TemplateType {
3
+ PAGE = "page",
4
+ COMPONENT = "component",
5
+ DATA = "data"
6
+ }
7
+ export declare class Template {
8
+ id: number;
9
+ key: string;
10
+ name: string;
11
+ type: TemplateType;
12
+ universal: boolean;
13
+ deleted: boolean;
14
+ areas: TemplateArea[];
15
+ templateProperties?: any;
16
+ constructor(row: any);
17
+ }
18
+ export declare class TemplateFilter {
19
+ ids?: number[];
20
+ keys?: string[];
21
+ names?: UrlSafeString[];
22
+ types?: TemplateType[];
23
+ }
24
+ export declare class TemplatePermissions {
25
+ }
26
+ export declare class TemplateArea {
27
+ name: string;
28
+ _availableComponentSet: Set<string>;
29
+ availableComponents: string[];
30
+ constructor(name: string, availableComponents: string[]);
31
+ addAvailableComponent(availableComponent: string): void;
32
+ }
@@ -0,0 +1,124 @@
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 { Field, ID, InputType, ObjectType, registerEnumType } from 'type-graphql';
11
+ import { templateRegistry, JsonData, UrlSafeString } from '../internal.js';
12
+ export var TemplateType;
13
+ (function (TemplateType) {
14
+ TemplateType["PAGE"] = "page";
15
+ TemplateType["COMPONENT"] = "component";
16
+ TemplateType["DATA"] = "data";
17
+ })(TemplateType || (TemplateType = {}));
18
+ registerEnumType(TemplateType, {
19
+ name: 'TemplateType',
20
+ description: 'Determine whether a template is a page, component, or data template.',
21
+ valuesConfig: {
22
+ PAGE: { description: 'Template is appropriate for pages.' },
23
+ COMPONENT: { description: 'Template is appropriate for components.' },
24
+ DATA: { description: 'Template defines a type of data.' }
25
+ }
26
+ });
27
+ let Template = class Template {
28
+ constructor(row) {
29
+ this.id = row.id;
30
+ this.key = row.key;
31
+ this.name = row.name;
32
+ this.type = row.type;
33
+ this.deleted = !!row.deleted;
34
+ this.universal = !!row.universal;
35
+ const tmpl = templateRegistry.get(this.key);
36
+ this.areas = Object.entries(tmpl.areas).map(([key, area]) => new TemplateArea(key, area.availableComponents));
37
+ this.templateProperties = tmpl.templateProperties;
38
+ }
39
+ };
40
+ __decorate([
41
+ Field(type => ID, { description: 'This is a globally unique identifier that matches specific pieces of supporting source code. Upon startup, any new template keys detected in the source code will be automatically added to the database. When a piece of content is tagged with a template, it should be by key, NOT id, as id could differ from instance to instance and we want content to be easily migratable.' }),
42
+ __metadata("design:type", String)
43
+ ], Template.prototype, "key", void 0);
44
+ __decorate([
45
+ Field({ description: 'A human readable name describing this template.' }),
46
+ __metadata("design:type", String)
47
+ ], Template.prototype, "name", void 0);
48
+ __decorate([
49
+ Field(type => TemplateType),
50
+ __metadata("design:type", String)
51
+ ], Template.prototype, "type", void 0);
52
+ __decorate([
53
+ Field({ description: 'This template may be used on any site. It does not require site-by-site permission.' }),
54
+ __metadata("design:type", Boolean)
55
+ ], Template.prototype, "universal", void 0);
56
+ __decorate([
57
+ Field({ description: 'Any template not found in the currently running source code will be marked as deleted upon startup.' }),
58
+ __metadata("design:type", Boolean)
59
+ ], Template.prototype, "deleted", void 0);
60
+ __decorate([
61
+ Field(type => [TemplateArea], { description: 'If this template is a page or component template, areas are the slots it provides for child placement. Each area will have a list of acceptable child component templates. These will be validated when creating a new component on a page.' }),
62
+ __metadata("design:type", Array)
63
+ ], Template.prototype, "areas", void 0);
64
+ __decorate([
65
+ Field(type => JsonData, { nullable: true, description: 'Hard-coded properties that may be set on page templates to influence the rendering of components on the page. For instance, a set of color choices that are customized for each template design. Components on the page may refer to the color information stored in the template during dialogs and while rendering. Changing to a different page template could then result in different color choices for components like buttons. Will be null for non-page templates.' }),
66
+ __metadata("design:type", Object)
67
+ ], Template.prototype, "templateProperties", void 0);
68
+ Template = __decorate([
69
+ ObjectType({
70
+ description: `Each page, component, and data entry has a template that defines its
71
+ schema and other configuration. Most of that configuration lives in source code instead
72
+ of the database and is not available in this API. What IS controlled in the database
73
+ and included in this API is the authorization of each template per site (or pagetree),
74
+ so that certain page, component, and data templates can be added to sites as the site's
75
+ editors receive training or demonstrate a need.`
76
+ }),
77
+ __metadata("design:paramtypes", [Object])
78
+ ], Template);
79
+ export { Template };
80
+ let TemplateFilter = class TemplateFilter {
81
+ };
82
+ __decorate([
83
+ Field(type => [ID], { nullable: true }),
84
+ __metadata("design:type", Array)
85
+ ], TemplateFilter.prototype, "keys", void 0);
86
+ __decorate([
87
+ Field(type => [UrlSafeString], { nullable: true }),
88
+ __metadata("design:type", Array)
89
+ ], TemplateFilter.prototype, "names", void 0);
90
+ __decorate([
91
+ Field(type => [TemplateType], { nullable: true }),
92
+ __metadata("design:type", Array)
93
+ ], TemplateFilter.prototype, "types", void 0);
94
+ TemplateFilter = __decorate([
95
+ InputType()
96
+ ], TemplateFilter);
97
+ export { TemplateFilter };
98
+ let TemplatePermissions = class TemplatePermissions {
99
+ };
100
+ TemplatePermissions = __decorate([
101
+ ObjectType()
102
+ ], TemplatePermissions);
103
+ export { TemplatePermissions };
104
+ let TemplateArea = class TemplateArea {
105
+ constructor(name, availableComponents) {
106
+ this.name = name;
107
+ this.availableComponents = availableComponents;
108
+ this._availableComponentSet = new Set(availableComponents);
109
+ }
110
+ addAvailableComponent(availableComponent) {
111
+ this._availableComponentSet.add(availableComponent);
112
+ this.availableComponents = Array.from(this._availableComponentSet);
113
+ }
114
+ };
115
+ __decorate([
116
+ Field(),
117
+ __metadata("design:type", String)
118
+ ], TemplateArea.prototype, "name", void 0);
119
+ TemplateArea = __decorate([
120
+ ObjectType(),
121
+ __metadata("design:paramtypes", [String, Array])
122
+ ], TemplateArea);
123
+ export { TemplateArea };
124
+ //# sourceMappingURL=template.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.model.js","sourceRoot":"","sources":["../../src/template/template.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Context, ValidatedResponse } from '@txstate-mws/graphql-server';
2
+ import { Data, DataFilter, Page, PageFilter, Pagetree, Site, Template, TemplateArea, TemplateFilter } from '../internal.js';
3
+ export declare class TemplateResolver {
4
+ templates(ctx: Context, filter?: TemplateFilter): Promise<Template[]>;
5
+ pagetrees(ctx: Context, template: Template, direct?: boolean): Promise<Pagetree[]>;
6
+ pages(ctx: Context, template: Template, filter?: PageFilter): Promise<Page[]>;
7
+ sites(ctx: Context, template: Template, atLeastOneTree?: boolean): Promise<Site[]>;
8
+ data(ctx: Context, template: Template, filter?: DataFilter): Promise<Data[]>;
9
+ permissions(template: Template): Template;
10
+ authorizePagetreeTemplate(ctx: Context, templateId: string, pagetreeId: string): Promise<ValidatedResponse>;
11
+ authorizeSiteTemplate(ctx: Context, templateId: string, siteId: string): Promise<ValidatedResponse>;
12
+ deauthorizePagetreeTemplate(ctx: Context, templateId: string, pagetreeId: string): Promise<ValidatedResponse>;
13
+ deauthorizeSiteTemplate(ctx: Context, templateId: string, siteId: string): Promise<ValidatedResponse>;
14
+ setTemplateUniversal(ctx: Context, templateId: string, universal: boolean): Promise<ValidatedResponse>;
15
+ }
16
+ export declare class TemplatePermissionsResolver {
17
+ assign(ctx: Context, template: Template): Promise<boolean>;
18
+ setUniversal(ctx: Context, template: Template): Promise<boolean>;
19
+ }
20
+ export declare class TemplateAreaResolver {
21
+ availableComponents(ctx: Context, templateArea: TemplateArea): Promise<Template[]>;
22
+ }