solid-ui 2.6.1-e5ad2945 → 2.6.1-e78cbe5

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 (369) hide show
  1. package/LICENSE.md +3 -1
  2. package/README.md +85 -26
  3. package/dist/acl/access-controller.js +238 -0
  4. package/dist/acl/access-controller.js.map +1 -0
  5. package/{lib → dist}/acl/access-groups.d.ts +2 -2
  6. package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
  7. package/dist/acl/access-groups.js +323 -0
  8. package/dist/acl/access-groups.js.map +1 -0
  9. package/dist/acl/acl-control.js +173 -0
  10. package/dist/acl/acl-control.js.map +1 -0
  11. package/dist/acl/acl.js +495 -0
  12. package/dist/acl/acl.js.map +1 -0
  13. package/dist/acl/add-agent-buttons.js +217 -0
  14. package/dist/acl/add-agent-buttons.js.map +1 -0
  15. package/dist/acl/index.js +32 -0
  16. package/dist/acl/index.js.map +1 -0
  17. package/dist/acl/types.js +6 -0
  18. package/dist/acl/types.js.map +1 -0
  19. package/dist/chat/keys.js +106 -0
  20. package/dist/chat/keys.js.map +1 -0
  21. package/dist/chat/signature.js +63 -0
  22. package/dist/chat/signature.js.map +1 -0
  23. package/dist/create/create.js +249 -0
  24. package/dist/create/create.js.map +1 -0
  25. package/dist/create/index.js +5 -0
  26. package/dist/create/index.js.map +1 -0
  27. package/dist/create/types.js +2 -0
  28. package/dist/create/types.js.map +1 -0
  29. package/dist/debug.d.ts.map +1 -0
  30. package/dist/debug.js +13 -0
  31. package/dist/debug.js.map +1 -0
  32. package/dist/footer/index.js +67 -0
  33. package/dist/footer/index.js.map +1 -0
  34. package/dist/header/empty-profile.js +11 -0
  35. package/dist/header/empty-profile.js.map +1 -0
  36. package/dist/header/index.js +260 -0
  37. package/dist/header/index.js.map +1 -0
  38. package/dist/iconBase.js +37 -0
  39. package/dist/iconBase.js.map +1 -0
  40. package/dist/icons/solid_logo.js.map +1 -0
  41. package/{lib → dist}/index.d.ts +7 -9
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +102 -0
  44. package/dist/index.js.map +1 -0
  45. package/{lib → dist}/log.d.ts.map +1 -1
  46. package/dist/log.js +182 -0
  47. package/dist/log.js.map +1 -0
  48. package/dist/login/login.js +858 -0
  49. package/dist/login/login.js.map +1 -0
  50. package/dist/matrix/index.js +5 -0
  51. package/dist/matrix/index.js.map +1 -0
  52. package/dist/matrix/matrix.js +217 -0
  53. package/dist/matrix/matrix.js.map +1 -0
  54. package/dist/matrix/types.js +2 -0
  55. package/dist/matrix/types.js.map +1 -0
  56. package/dist/media/index.js +6 -0
  57. package/dist/media/index.js.map +1 -0
  58. package/dist/media/media-capture.js +161 -0
  59. package/dist/media/media-capture.js.map +1 -0
  60. package/dist/pad.js +775 -0
  61. package/dist/pad.js.map +1 -0
  62. package/{lib → dist}/participation.d.ts.map +1 -1
  63. package/dist/participation.js +184 -0
  64. package/dist/participation.js.map +1 -0
  65. package/dist/solid-ui.esm.js +25531 -0
  66. package/dist/solid-ui.esm.js.map +1 -0
  67. package/dist/solid-ui.esm.min.js +43 -0
  68. package/dist/solid-ui.esm.min.js.map +1 -0
  69. package/dist/solid-ui.js +23479 -68931
  70. package/dist/solid-ui.js.map +1 -1
  71. package/dist/solid-ui.min.js +40 -2
  72. package/dist/solid-ui.min.js.map +1 -1
  73. package/dist/tabs.js +388 -0
  74. package/dist/tabs.js.map +1 -0
  75. package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
  76. package/dist/utils/headerFooterHelpers.js +114 -0
  77. package/dist/utils/headerFooterHelpers.js.map +1 -0
  78. package/dist/utils/keyHelpers/accessData.js +64 -0
  79. package/dist/utils/keyHelpers/accessData.js.map +1 -0
  80. package/dist/utils/keyHelpers/acl.js +74 -0
  81. package/dist/utils/keyHelpers/acl.js.map +1 -0
  82. package/dist/utils/keyHelpers/otherHelpers.js +13 -0
  83. package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
  84. package/dist/utils/label.js +111 -0
  85. package/dist/utils/label.js.map +1 -0
  86. package/dist/versionInfo.js +31 -0
  87. package/dist/versionInfo.js.map +1 -0
  88. package/dist/widgets/buttons/iconLinks.js +44 -0
  89. package/dist/widgets/buttons/iconLinks.js.map +1 -0
  90. package/dist/widgets/buttons.js +1280 -0
  91. package/dist/widgets/buttons.js.map +1 -0
  92. package/dist/widgets/error.d.ts +14 -0
  93. package/dist/widgets/error.d.ts.map +1 -0
  94. package/dist/widgets/error.js +35 -0
  95. package/dist/widgets/error.js.map +1 -0
  96. package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
  97. package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
  98. package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
  99. package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
  100. package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
  101. package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
  102. package/dist/widgets/forms/autocomplete/language.js +104 -0
  103. package/dist/widgets/forms/autocomplete/language.js.map +1 -0
  104. package/dist/widgets/forms/autocomplete/publicData.js +460 -0
  105. package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
  106. package/dist/widgets/forms/basic.js +241 -0
  107. package/dist/widgets/forms/basic.js.map +1 -0
  108. package/dist/widgets/forms/comment.js +46 -0
  109. package/dist/widgets/forms/comment.js.map +1 -0
  110. package/dist/widgets/forms/fieldFunction.js +44 -0
  111. package/dist/widgets/forms/fieldFunction.js.map +1 -0
  112. package/dist/widgets/forms/fieldParams.js +89 -0
  113. package/dist/widgets/forms/fieldParams.js.map +1 -0
  114. package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
  115. package/dist/widgets/forms/formStyle.js +36 -0
  116. package/dist/widgets/forms/formStyle.js.map +1 -0
  117. package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
  118. package/{lib → dist}/widgets/widgetHelpers.js +14 -25
  119. package/dist/widgets/widgetHelpers.js.map +1 -0
  120. package/package.json +48 -52
  121. package/dist/789.solid-ui.min.js +0 -1
  122. package/dist/841.solid-ui.min.js +0 -3
  123. package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
  124. package/dist/841.solid-ui.min.js.map +0 -1
  125. package/dist/_2b19.solid-ui.js +0 -14
  126. package/dist/_2b19.solid-ui.js.map +0 -1
  127. package/dist/index.html +0 -1
  128. package/dist/solid-ui.min.js.LICENSE.txt +0 -57
  129. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
  130. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
  131. package/lib/acl/access-controller.js +0 -391
  132. package/lib/acl/access-controller.js.map +0 -1
  133. package/lib/acl/access-groups.js +0 -507
  134. package/lib/acl/access-groups.js.map +0 -1
  135. package/lib/acl/acl-control.js +0 -237
  136. package/lib/acl/acl-control.js.map +0 -1
  137. package/lib/acl/acl.js +0 -517
  138. package/lib/acl/acl.js.map +0 -1
  139. package/lib/acl/add-agent-buttons.js +0 -434
  140. package/lib/acl/add-agent-buttons.js.map +0 -1
  141. package/lib/acl/index.js +0 -39
  142. package/lib/acl/index.js.map +0 -1
  143. package/lib/acl/types.js +0 -6
  144. package/lib/acl/types.js.map +0 -1
  145. package/lib/chat/bookmarks.js +0 -303
  146. package/lib/chat/bookmarks.js.map +0 -1
  147. package/lib/chat/chatLogic.js +0 -420
  148. package/lib/chat/chatLogic.js.map +0 -1
  149. package/lib/chat/dateFolder.js +0 -328
  150. package/lib/chat/dateFolder.js.map +0 -1
  151. package/lib/chat/infinite.js +0 -994
  152. package/lib/chat/infinite.js.map +0 -1
  153. package/lib/chat/keys.js +0 -232
  154. package/lib/chat/keys.js.map +0 -1
  155. package/lib/chat/message.js +0 -715
  156. package/lib/chat/message.js.map +0 -1
  157. package/lib/chat/messageTools.js +0 -538
  158. package/lib/chat/messageTools.js.map +0 -1
  159. package/lib/chat/signature.js +0 -109
  160. package/lib/chat/signature.js.map +0 -1
  161. package/lib/chat/thread.js +0 -535
  162. package/lib/chat/thread.js.map +0 -1
  163. package/lib/create/create.js +0 -242
  164. package/lib/create/create.js.map +0 -1
  165. package/lib/create/index.js +0 -11
  166. package/lib/create/index.js.map +0 -1
  167. package/lib/create/types.js +0 -6
  168. package/lib/create/types.js.map +0 -1
  169. package/lib/debug.d.ts.map +0 -1
  170. package/lib/debug.js +0 -30
  171. package/lib/debug.js.map +0 -1
  172. package/lib/folders.js +0 -132
  173. package/lib/folders.js.map +0 -1
  174. package/lib/footer/index.js +0 -123
  175. package/lib/footer/index.js.map +0 -1
  176. package/lib/header/empty-profile.js +0 -8
  177. package/lib/header/empty-profile.js.map +0 -1
  178. package/lib/header/index.js +0 -375
  179. package/lib/header/index.js.map +0 -1
  180. package/lib/iconBase.js +0 -44
  181. package/lib/iconBase.js.map +0 -1
  182. package/lib/icons/solid_logo.js.map +0 -1
  183. package/lib/index.d.ts.map +0 -1
  184. package/lib/index.js +0 -223
  185. package/lib/index.js.map +0 -1
  186. package/lib/log.js +0 -213
  187. package/lib/log.js.map +0 -1
  188. package/lib/login/login.js +0 -1241
  189. package/lib/login/login.js.map +0 -1
  190. package/lib/matrix/index.js +0 -11
  191. package/lib/matrix/index.js.map +0 -1
  192. package/lib/matrix/matrix.js +0 -216
  193. package/lib/matrix/matrix.js.map +0 -1
  194. package/lib/matrix/types.js +0 -6
  195. package/lib/matrix/types.js.map +0 -1
  196. package/lib/media/index.js +0 -12
  197. package/lib/media/index.js.map +0 -1
  198. package/lib/media/media-capture.js +0 -194
  199. package/lib/media/media-capture.js.map +0 -1
  200. package/lib/messageArea.js +0 -319
  201. package/lib/messageArea.js.map +0 -1
  202. package/lib/noun_Camera_1618446_000000.js +0 -8
  203. package/lib/noun_Camera_1618446_000000.js.map +0 -1
  204. package/lib/ns.js +0 -17
  205. package/lib/ns.js.map +0 -1
  206. package/lib/pad.js +0 -805
  207. package/lib/pad.js.map +0 -1
  208. package/lib/participation.js +0 -219
  209. package/lib/participation.js.map +0 -1
  210. package/lib/preferences.js +0 -215
  211. package/lib/preferences.js.map +0 -1
  212. package/lib/signup/config-default.js +0 -43
  213. package/lib/signup/config-default.js.map +0 -1
  214. package/lib/signup/signup.js +0 -74
  215. package/lib/signup/signup.js.map +0 -1
  216. package/lib/stories/decorators.js +0 -10
  217. package/lib/stories/decorators.js.map +0 -1
  218. package/lib/style.js +0 -158
  219. package/lib/style.js.map +0 -1
  220. package/lib/styleConstants.js +0 -35
  221. package/lib/styleConstants.js.map +0 -1
  222. package/lib/style_multiSelect.js +0 -62
  223. package/lib/style_multiSelect.js.map +0 -1
  224. package/lib/table.js +0 -1573
  225. package/lib/table.js.map +0 -1
  226. package/lib/tabs.js +0 -448
  227. package/lib/tabs.js.map +0 -1
  228. package/lib/typings.d.js +0 -2
  229. package/lib/typings.d.js.map +0 -1
  230. package/lib/utils/headerFooterHelpers.js +0 -165
  231. package/lib/utils/headerFooterHelpers.js.map +0 -1
  232. package/lib/utils/index.js +0 -527
  233. package/lib/utils/index.js.map +0 -1
  234. package/lib/utils/keyHelpers/accessData.js +0 -131
  235. package/lib/utils/keyHelpers/accessData.js.map +0 -1
  236. package/lib/utils/keyHelpers/acl.js +0 -90
  237. package/lib/utils/keyHelpers/acl.js.map +0 -1
  238. package/lib/utils/keyHelpers/otherHelpers.js +0 -21
  239. package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
  240. package/lib/utils/label.js +0 -103
  241. package/lib/utils/label.js.map +0 -1
  242. package/lib/versionInfo.d.ts +0 -32
  243. package/lib/versionInfo.d.ts.map +0 -1
  244. package/lib/versionInfo.js +0 -37
  245. package/lib/versionInfo.js.map +0 -1
  246. package/lib/widgets/buttons/iconLinks.js +0 -53
  247. package/lib/widgets/buttons/iconLinks.js.map +0 -1
  248. package/lib/widgets/buttons.js +0 -1306
  249. package/lib/widgets/buttons.js.map +0 -1
  250. package/lib/widgets/dragAndDrop.js +0 -194
  251. package/lib/widgets/dragAndDrop.js.map +0 -1
  252. package/lib/widgets/error.d.ts +0 -2
  253. package/lib/widgets/error.d.ts.map +0 -1
  254. package/lib/widgets/error.js +0 -46
  255. package/lib/widgets/error.js.map +0 -1
  256. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
  257. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
  258. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
  259. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
  260. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
  261. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
  262. package/lib/widgets/forms/autocomplete/language.js +0 -189
  263. package/lib/widgets/forms/autocomplete/language.js.map +0 -1
  264. package/lib/widgets/forms/autocomplete/publicData.js +0 -636
  265. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
  266. package/lib/widgets/forms/basic.js +0 -254
  267. package/lib/widgets/forms/basic.js.map +0 -1
  268. package/lib/widgets/forms/comment.js +0 -54
  269. package/lib/widgets/forms/comment.js.map +0 -1
  270. package/lib/widgets/forms/fieldFunction.js +0 -52
  271. package/lib/widgets/forms/fieldFunction.js.map +0 -1
  272. package/lib/widgets/forms/fieldParams.js +0 -77
  273. package/lib/widgets/forms/fieldParams.js.map +0 -1
  274. package/lib/widgets/forms/formStyle.js +0 -44
  275. package/lib/widgets/forms/formStyle.js.map +0 -1
  276. package/lib/widgets/forms.js +0 -2045
  277. package/lib/widgets/forms.js.map +0 -1
  278. package/lib/widgets/index.js +0 -110
  279. package/lib/widgets/index.js.map +0 -1
  280. package/lib/widgets/multiSelect.js +0 -658
  281. package/lib/widgets/multiSelect.js.map +0 -1
  282. package/lib/widgets/peoplePicker.js +0 -467
  283. package/lib/widgets/peoplePicker.js.map +0 -1
  284. package/lib/widgets/widgetHelpers.js.map +0 -1
  285. /package/{lib → dist}/acl/access-controller.d.ts +0 -0
  286. /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
  287. /package/{lib → dist}/acl/acl-control.d.ts +0 -0
  288. /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
  289. /package/{lib → dist}/acl/acl.d.ts +0 -0
  290. /package/{lib → dist}/acl/acl.d.ts.map +0 -0
  291. /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
  292. /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
  293. /package/{lib → dist}/acl/index.d.ts +0 -0
  294. /package/{lib → dist}/acl/index.d.ts.map +0 -0
  295. /package/{lib → dist}/acl/types.d.ts +0 -0
  296. /package/{lib → dist}/acl/types.d.ts.map +0 -0
  297. /package/{lib → dist}/chat/keys.d.ts +0 -0
  298. /package/{lib → dist}/chat/keys.d.ts.map +0 -0
  299. /package/{lib → dist}/chat/signature.d.ts +0 -0
  300. /package/{lib → dist}/chat/signature.d.ts.map +0 -0
  301. /package/{lib → dist}/create/create.d.ts +0 -0
  302. /package/{lib → dist}/create/create.d.ts.map +0 -0
  303. /package/{lib → dist}/create/index.d.ts +0 -0
  304. /package/{lib → dist}/create/index.d.ts.map +0 -0
  305. /package/{lib → dist}/create/types.d.ts +0 -0
  306. /package/{lib → dist}/create/types.d.ts.map +0 -0
  307. /package/{lib → dist}/debug.d.ts +0 -0
  308. /package/{lib → dist}/footer/index.d.ts +0 -0
  309. /package/{lib → dist}/footer/index.d.ts.map +0 -0
  310. /package/{lib → dist}/header/empty-profile.d.ts +0 -0
  311. /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
  312. /package/{lib → dist}/header/index.d.ts +0 -0
  313. /package/{lib → dist}/header/index.d.ts.map +0 -0
  314. /package/{lib → dist}/iconBase.d.ts +0 -0
  315. /package/{lib → dist}/iconBase.d.ts.map +0 -0
  316. /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
  317. /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
  318. /package/{lib → dist}/icons/solid_logo.js +0 -0
  319. /package/{lib → dist}/log.d.ts +0 -0
  320. /package/{lib → dist}/login/login.d.ts +0 -0
  321. /package/{lib → dist}/login/login.d.ts.map +0 -0
  322. /package/{lib → dist}/matrix/index.d.ts +0 -0
  323. /package/{lib → dist}/matrix/index.d.ts.map +0 -0
  324. /package/{lib → dist}/matrix/matrix.d.ts +0 -0
  325. /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
  326. /package/{lib → dist}/matrix/types.d.ts +0 -0
  327. /package/{lib → dist}/matrix/types.d.ts.map +0 -0
  328. /package/{lib → dist}/media/index.d.ts +0 -0
  329. /package/{lib → dist}/media/index.d.ts.map +0 -0
  330. /package/{lib → dist}/media/media-capture.d.ts +0 -0
  331. /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
  332. /package/{lib → dist}/pad.d.ts +0 -0
  333. /package/{lib → dist}/pad.d.ts.map +0 -0
  334. /package/{lib → dist}/participation.d.ts +0 -0
  335. /package/{lib → dist}/tabs.d.ts +0 -0
  336. /package/{lib → dist}/tabs.d.ts.map +0 -0
  337. /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
  338. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
  339. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
  340. /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
  341. /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
  342. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
  343. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
  344. /package/{lib → dist}/utils/label.d.ts +0 -0
  345. /package/{lib → dist}/utils/label.d.ts.map +0 -0
  346. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
  347. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
  348. /package/{lib → dist}/widgets/buttons.d.ts +0 -0
  349. /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
  350. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  351. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  352. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  353. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  354. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  355. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  356. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
  357. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
  358. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
  359. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  360. /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
  361. /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
  362. /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
  363. /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
  364. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
  365. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
  366. /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
  367. /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
  368. /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
  369. /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
@@ -0,0 +1,495 @@
1
+ /**
2
+ * Non-UI functions for access control.
3
+ * See https://github.com/solidos/web-access-control-spec
4
+ * for the spec that defines how ACL documents work.
5
+ * @packageDocumentation
6
+ */
7
+ import ns from '../ns';
8
+ import { solidLogicSingleton, ACL_LINK } from 'solid-logic';
9
+ import * as utils from '../utils';
10
+ import * as debug from '../debug';
11
+ import { graph, serialize, st, sym } from 'rdflib';
12
+ const kb = solidLogicSingleton.store;
13
+ /**
14
+ * Take the "default" ACL and convert it into the equivalent ACL
15
+ * which the resource would have had. Return it as a new separate store.
16
+ * The "defaultForNew" predicate is also accepted, as a deprecated
17
+ * synonym for "default".
18
+ */
19
+ export function adoptACLDefault(doc, aclDoc, defaultResource, defaultACLDoc) {
20
+ const ACL = ns.acl;
21
+ const isContainer = doc.uri.slice(-1) === '/'; // Give default for all directories
22
+ const defaults = kb
23
+ .each(undefined, ACL('default'), defaultResource, defaultACLDoc)
24
+ .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc));
25
+ const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements
26
+ .concat(kb.statementsMatching(da, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))
27
+ .concat(kb.statementsMatching(da, ACL('agent'), undefined, defaultACLDoc))
28
+ .concat(kb.statementsMatching(da, ACL('agentClass'), undefined, defaultACLDoc))
29
+ .concat(kb.statementsMatching(da, ACL('agentGroup'), undefined, defaultACLDoc))
30
+ .concat(kb.statementsMatching(da, ACL('origin'), undefined, defaultACLDoc))
31
+ .concat(kb.statementsMatching(da, ACL('originClass'), undefined, defaultACLDoc))
32
+ .concat(kb.statementsMatching(da, ACL('mode'), undefined, defaultACLDoc))
33
+ .concat(st(da, ACL('accessTo'), doc, defaultACLDoc))
34
+ .concat(isContainer ? st(da, ACL('default'), doc, defaultACLDoc) : []), []);
35
+ const kb2 = graph(); // Potential - derived is kept apart
36
+ proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)));
37
+ return kb2;
38
+ function move(symbol) {
39
+ const y = defaultACLDoc.uri.length; // The default ACL file
40
+ return sym(symbol.uri.slice(0, y) === defaultACLDoc.uri
41
+ ? aclDoc.uri + symbol.uri.slice(y)
42
+ : symbol.uri);
43
+ }
44
+ }
45
+ /**
46
+ * Read and canonicalize the ACL for x in aclDoc
47
+ *
48
+ * Accumulate the access rights which each agent or class has
49
+ */
50
+ export function readACL(doc, aclDoc, kb2 = kb, getDefaults = false) {
51
+ const auths = getDefaults
52
+ ? getDefaultsFallback(kb2, ns)
53
+ : kb2.each(undefined, ns.acl('accessTo'), doc);
54
+ const ACL = ns.acl;
55
+ const ac = {
56
+ agent: {},
57
+ agentClass: {},
58
+ agentGroup: {},
59
+ origin: {},
60
+ originClass: {}
61
+ };
62
+ Object.keys(ac).forEach(pred => {
63
+ auths.forEach(function (a) {
64
+ kb2.each(a, ACL('mode')).forEach(function (mode) {
65
+ kb2.each(a, ACL(pred)).forEach(function (agent) {
66
+ ac[pred][agent.uri] = ac[pred][agent.uri] || {};
67
+ ac[pred][agent.uri][mode.uri] = a; // could be "true" but leave pointer just in case
68
+ });
69
+ });
70
+ });
71
+ });
72
+ return ac;
73
+ function getDefaultsFallback(kb, ns) {
74
+ return kb
75
+ .each(undefined, ns.acl('default'), doc)
76
+ .concat(kb.each(undefined, ns.acl('defaultForNew'), doc));
77
+ }
78
+ }
79
+ /**
80
+ * Compare two ACLs
81
+ */
82
+ export function sameACL(a, b) {
83
+ const contains = function (a, b) {
84
+ for (const pred in {
85
+ agent: true,
86
+ agentClass: true,
87
+ agentGroup: true,
88
+ origin: true,
89
+ originClass: true
90
+ }) {
91
+ if (a[pred]) {
92
+ for (const agent in a[pred]) {
93
+ for (const mode in a[pred][agent]) {
94
+ if (!b[pred][agent] || !b[pred][agent][mode]) {
95
+ return false;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ return true;
102
+ };
103
+ return contains(a, b) && contains(b, a);
104
+ }
105
+ /**
106
+ * Union N ACLs
107
+ */
108
+ export function ACLunion(list) {
109
+ const b = list[0];
110
+ let a, ag;
111
+ for (let k = 1; k < list.length; k++) {
112
+ ;
113
+ ['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {
114
+ a = list[k];
115
+ if (a[pred]) {
116
+ for (ag in a[pred]) {
117
+ for (const mode in a[pred][ag]) {
118
+ if (!b[pred][ag])
119
+ b[pred][ag] = [];
120
+ b[pred][ag][mode] = true;
121
+ }
122
+ }
123
+ }
124
+ });
125
+ }
126
+ return b;
127
+ }
128
+ /**
129
+ * Merge ACLs lists from things to form union
130
+ */
131
+ export function loadUnionACL(subjectList, callbackFunction) {
132
+ const aclList = [];
133
+ const doList = function (list) {
134
+ if (list.length) {
135
+ const doc = list.shift().doc();
136
+ getACLorDefault(doc, function (ok, p2, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
137
+ const defa = !p2;
138
+ if (!ok || !defaultHolder || !defaultACLDoc)
139
+ return callbackFunction(ok, targetACLDoc);
140
+ const acl = defa
141
+ ? readACL(defaultHolder, defaultACLDoc)
142
+ : readACL(targetDoc, targetACLDoc);
143
+ aclList.push(acl);
144
+ doList(list.slice(1));
145
+ });
146
+ }
147
+ else {
148
+ // all gone
149
+ callbackFunction(true, ACLunion(aclList));
150
+ }
151
+ };
152
+ doList(subjectList);
153
+ }
154
+ /**
155
+ * Represents these as an RDF graph by combination of modes
156
+ *
157
+ * Each agent can only be in one place in this model, one combination of modes.
158
+ * Combos are like full control, read append, read only etc.
159
+ */
160
+ export function ACLbyCombination(ac) {
161
+ const byCombo = {};
162
+ ['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {
163
+ for (const agent in ac[pred]) {
164
+ const combo = [];
165
+ for (const mode in ac[pred][agent]) {
166
+ combo.push(mode);
167
+ }
168
+ combo.sort();
169
+ const combo2 = combo.join('\n');
170
+ if (!byCombo[combo2])
171
+ byCombo[combo2] = [];
172
+ byCombo[combo2].push([pred, agent]);
173
+ }
174
+ });
175
+ return byCombo;
176
+ }
177
+ /**
178
+ * Write ACL graph to store from AC
179
+ */
180
+ export function makeACLGraph(kb, x, ac, aclDoc) {
181
+ const byCombo = ACLbyCombination(ac);
182
+ return makeACLGraphbyCombo(kb, x, byCombo, aclDoc);
183
+ }
184
+ /**
185
+ * Write ACL graph to store from combo
186
+ */
187
+ export function makeACLGraphbyCombo(kb, x, byCombo, aclDoc, main, defa) {
188
+ const ACL = ns.acl;
189
+ for (const combo in byCombo) {
190
+ const pairs = byCombo[combo];
191
+ if (!pairs.length)
192
+ continue; // do not add to store when no agent
193
+ const modeURIs = combo.split('\n');
194
+ let short = modeURIs
195
+ .map(function (u) {
196
+ return u.split('#')[1];
197
+ })
198
+ .join('');
199
+ if (defa && !main)
200
+ short += 'Default'; // don't muddle authorizations
201
+ const a = kb.sym(aclDoc.uri + '#' + short);
202
+ kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc);
203
+ if (main) {
204
+ kb.add(a, ACL('accessTo'), x, aclDoc);
205
+ }
206
+ if (defa) {
207
+ kb.add(a, ACL('default'), x, aclDoc);
208
+ }
209
+ for (let i = 0; i < modeURIs.length; i++) {
210
+ kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc);
211
+ }
212
+ for (let i = 0; i < pairs.length; i++) {
213
+ const pred = pairs[i][0];
214
+ const ag = pairs[i][1];
215
+ kb.add(a, ACL(pred), kb.sym(ag), aclDoc);
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * Debugging short strings for dumping ACL
221
+ * and possibly in the UI
222
+ */
223
+ export function ACLToString(ac) {
224
+ return comboToString(ACLbyCombination(ac));
225
+ }
226
+ /**
227
+ * Convert a [[ComboList]] to a string
228
+ */
229
+ export function comboToString(byCombo) {
230
+ let str = '';
231
+ for (const combo in byCombo) {
232
+ const modeURIs = combo.split('\n');
233
+ const initials = modeURIs
234
+ .map(function (u) {
235
+ return u.split('#')[1][0];
236
+ })
237
+ .join('');
238
+ str += initials + ':';
239
+ const pairs = byCombo[combo];
240
+ for (let i = 0; i < pairs.length; i++) {
241
+ const pred = pairs[i][0];
242
+ const ag = sym(pairs[i][1]);
243
+ str += pred === 'agent' ? '@' : '';
244
+ str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag);
245
+ if (i < pairs.length - 1)
246
+ str += ',';
247
+ }
248
+ str += ';';
249
+ }
250
+ return '{' + str.slice(0, -1) + '}'; // drop extra semicolon
251
+ }
252
+ /**
253
+ * Write ACL graph as Turtle
254
+ */
255
+ export function makeACLString(x, ac, aclDoc) {
256
+ const kb2 = graph();
257
+ makeACLGraph(kb2, x, ac, aclDoc);
258
+ return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || '';
259
+ }
260
+ /**
261
+ * Write ACL graph to web
262
+ */
263
+ export function putACLObject(kb, x, ac, aclDoc, callbackFunction) {
264
+ const byCombo = ACLbyCombination(ac);
265
+ return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction);
266
+ }
267
+ /**
268
+ * Write ACL graph to web from a [[ComboList]]
269
+ */
270
+ export function putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction) {
271
+ var _a;
272
+ const kb2 = graph();
273
+ makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true);
274
+ // const str = makeACLString = function(x, ac, aclDoc)
275
+ (_a = kb.updater) === null || _a === void 0 ? void 0 : _a.put(aclDoc, kb2.statementsMatching(undefined, undefined, undefined, aclDoc), 'text/turtle', function (uri, ok, message) {
276
+ var _a;
277
+ if (!ok) {
278
+ callbackFunction(ok, message);
279
+ }
280
+ else {
281
+ (_a = kb.fetcher) === null || _a === void 0 ? void 0 : _a.unload(aclDoc);
282
+ makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true);
283
+ kb.fetcher.requested[aclDoc.uri] = 'done'; // missing: save headers
284
+ callbackFunction(ok);
285
+ }
286
+ });
287
+ }
288
+ /**
289
+ * Fix the ACl for an individual card as a function of the groups it is in
290
+ *
291
+ * All group files must be loaded first
292
+ */
293
+ export function fixIndividualCardACL(person, log, callbackFunction) {
294
+ const groups = kb.each(undefined, ns.vcard('hasMember'), person);
295
+ // const doc = person.doc()
296
+ if (groups) {
297
+ fixIndividualACL(person, groups, log, callbackFunction);
298
+ }
299
+ else {
300
+ log('This card is in no groups');
301
+ callbackFunction(true); // fine, no requirements to access. default should be ok
302
+ }
303
+ // @@ if no groups, then use default for People container or the book top container.?
304
+ }
305
+ /**
306
+ * This function is used by [[fixIndividualCardACL]]
307
+ */
308
+ export function fixIndividualACL(item, subjects, log, callbackFunction) {
309
+ log = log || debug.log;
310
+ const doc = item.doc();
311
+ getACLorDefault(doc, function (ok, exists, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
312
+ if (!ok || !defaultHolder || !defaultACLDoc)
313
+ return callbackFunction(false, targetACLDoc); // ie message
314
+ const ac = exists
315
+ ? readACL(targetDoc, targetACLDoc)
316
+ : readACL(defaultHolder, defaultACLDoc);
317
+ loadUnionACL(subjects, function (ok, union) {
318
+ if (!ok)
319
+ return callbackFunction(false, union);
320
+ if (sameACL(union, ac)) {
321
+ log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc);
322
+ }
323
+ else {
324
+ log('Group ACLs differ for ' + utils.label(item) + ' ' + doc);
325
+ // log("Group ACLs: " + makeACLString(targetDoc, union, targetACLDoc))
326
+ // log((exists ? "Previous set" : "Default") + " ACLs: " +
327
+ // makeACLString(targetDoc, ac, targetACLDoc))
328
+ putACLObject(kb, targetDoc, union, targetACLDoc, callbackFunction);
329
+ }
330
+ });
331
+ });
332
+ }
333
+ /**
334
+ * Set an ACL
335
+ */
336
+ export function setACL(docURI, aclText, callbackFunction) {
337
+ const aclDoc = kb.any(docURI, ACL_LINK); // @@ check that this get set by web.js
338
+ if (!kb.fetcher) {
339
+ throw new Error('Store has no fetcher');
340
+ }
341
+ if (aclDoc) {
342
+ // Great we already know where it is
343
+ kb.fetcher
344
+ .webOperation('PUT', aclDoc.value, {
345
+ data: aclText,
346
+ contentType: 'text/turtle'
347
+ })
348
+ .then((res) => {
349
+ callbackFunction(res.ok, res.error || '');
350
+ }); // @@@ check params
351
+ }
352
+ else {
353
+ kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {
354
+ if (!ok)
355
+ return callbackFunction(ok, 'Gettting headers for ACL: ' + body);
356
+ const aclDoc = kb.any(docURI, ACL_LINK); // @@ check that this get set by web.js
357
+ if (!aclDoc) {
358
+ // complainIfBad(false, "No Link rel=ACL header for " + docURI)
359
+ callbackFunction(false, 'No Link rel=ACL header for ' + docURI);
360
+ }
361
+ else {
362
+ if (!kb.fetcher) {
363
+ throw new Error('Store has no fetcher');
364
+ }
365
+ kb.fetcher
366
+ .webOperation('PUT', aclDoc.value, {
367
+ data: aclText,
368
+ contentType: 'text/turtle'
369
+ })
370
+ .then((res) => {
371
+ callbackFunction(res.ok, res.error || '');
372
+ });
373
+ }
374
+ });
375
+ }
376
+ }
377
+ /**
378
+ * Get ACL file or default if necessary
379
+ *
380
+ * @param callbackFunction Will be called in the following ways, in the following cases:
381
+ * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist
382
+ * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did
383
+ * * `callbackFunction(false, false, status, message)` when there was an error getting the original
384
+ * * `callbackFunction(false, true, status, message)` when there was an error getting the default
385
+ */
386
+ export function getACLorDefault(doc, callbackFunction) {
387
+ getACL(doc, function (ok, status, aclDoc, message) {
388
+ const ACL = ns.acl;
389
+ if (!ok)
390
+ return callbackFunction(false, false, status, message);
391
+ // Recursively search for the ACL file which gives default access
392
+ const tryParent = function (uri) {
393
+ if (uri.slice(-1) === '/') {
394
+ uri = uri.slice(0, -1);
395
+ }
396
+ const right = uri.lastIndexOf('/');
397
+ const left = uri.indexOf('/', uri.indexOf('//') + 2);
398
+ if (left > right) {
399
+ return callbackFunction(false, true, 404, 'Found no ACL resource');
400
+ }
401
+ uri = uri.slice(0, right + 1);
402
+ const doc2 = sym(uri);
403
+ getACL(doc2, function (ok, status, defaultACLDoc) {
404
+ if (!ok) {
405
+ return callbackFunction(false, true, status, `( No ACL pointer ${uri} ${status})${defaultACLDoc}`);
406
+ }
407
+ else if (status === 403) {
408
+ return callbackFunction(false, true, status, `( default ACL file FORBIDDEN. Stop.${uri})`);
409
+ }
410
+ else if (status === 404) {
411
+ return tryParent(uri);
412
+ }
413
+ else if (status !== 200) {
414
+ return callbackFunction(false, true, status, `Error status '${status}' searching for default for ${doc2}`);
415
+ }
416
+ // 200
417
+ // statusBlock.textContent += (" ACCESS set at " + uri + ". End search.")
418
+ const defaults = kb
419
+ .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)
420
+ .concat(kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc));
421
+ if (!defaults.length) {
422
+ return tryParent(uri); // Keep searching
423
+ }
424
+ const defaultHolder = kb.sym(uri);
425
+ return callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc);
426
+ });
427
+ }; // tryParent
428
+ if (!ok) {
429
+ return callbackFunction(false, false, status, `Error accessing Access Control information for ${doc}) ${message}`);
430
+ }
431
+ else if (status === 404) {
432
+ tryParent(doc.uri); // @@ construct default one - the server should do that
433
+ }
434
+ else if (status === 403) {
435
+ return callbackFunction(false, false, status, `(Sharing not available to you)${message}`);
436
+ }
437
+ else if (status !== 200) {
438
+ return callbackFunction(false, false, status, `Error ${status} accessing Access Control information for ${doc}: ${message}`);
439
+ }
440
+ else {
441
+ // 200
442
+ return callbackFunction(true, true, doc, aclDoc);
443
+ }
444
+ }); // Call to getACL
445
+ }
446
+ /**
447
+ * Calls back `(ok, status, acldoc, message)` as follows
448
+ *
449
+ * * `(false, 900, errormessage)` if no link header
450
+ * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized
451
+ * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist
452
+ * * `(true, 200, documentSymbol)` if file exists and read OK
453
+ */
454
+ export function getACL(doc, callbackFunction) {
455
+ if (!kb.fetcher) {
456
+ throw new Error('kb has no fetcher');
457
+ }
458
+ kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {
459
+ if (!ok) {
460
+ return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`);
461
+ }
462
+ const aclDoc = kb.any(doc, ACL_LINK); // @@ check that this get set by web.js
463
+ if (!aclDoc) {
464
+ callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`);
465
+ }
466
+ else {
467
+ if (!kb.fetcher) {
468
+ throw new Error('kb has no fetcher');
469
+ }
470
+ if (kb.fetcher.nonexistent[aclDoc.value]) {
471
+ return callbackFunction(true, 404, aclDoc, `ACL file ${aclDoc} does not exist.`);
472
+ }
473
+ kb.fetcher.nowOrWhenFetched(aclDoc, undefined, function (ok, message, response) {
474
+ if (!ok) {
475
+ callbackFunction(true, response.status, aclDoc, `Can't read Access Control File ${aclDoc}: ${message}`);
476
+ }
477
+ else {
478
+ callbackFunction(true, 200, aclDoc);
479
+ }
480
+ });
481
+ }
482
+ });
483
+ }
484
+ /**
485
+ * Calls [[getACLorDefault]] and then (?)
486
+ */
487
+ export async function getProspectiveHolder(targetDirectory) {
488
+ return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (ok, isDirectACL, targetDoc, targetACLDoc, defaultHolder) => {
489
+ if (ok) {
490
+ return resolve((isDirectACL ? targetDoc : defaultHolder));
491
+ }
492
+ return reject(new Error(`Error loading ${targetDirectory}`));
493
+ }));
494
+ }
495
+ //# sourceMappingURL=acl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl.js","sourceRoot":"","sources":["../../src/acl/acl.ts"],"names":[],"mappings":"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"}