solid-ui 2.4.14 → 2.4.15-348f23a8

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 (67) hide show
  1. package/lib/acl/access-groups.d.ts +1 -2
  2. package/lib/acl/access-groups.d.ts.map +1 -1
  3. package/lib/acl/access-groups.js +4 -1
  4. package/lib/acl/access-groups.js.map +1 -1
  5. package/lib/acl/acl.d.ts +1 -2
  6. package/lib/acl/acl.d.ts.map +1 -1
  7. package/lib/acl/acl.js +6 -2
  8. package/lib/acl/acl.js.map +1 -1
  9. package/lib/chat/bookmarks.js +30 -29
  10. package/lib/chat/bookmarks.js.map +1 -1
  11. package/lib/chat/chatLogic.js +340 -0
  12. package/lib/chat/chatLogic.js.map +1 -0
  13. package/lib/chat/dateFolder.js +12 -12
  14. package/lib/chat/dateFolder.js.map +1 -1
  15. package/lib/chat/infinite.js +285 -665
  16. package/lib/chat/infinite.js.map +1 -1
  17. package/lib/chat/message.js +445 -71
  18. package/lib/chat/message.js.map +1 -1
  19. package/lib/chat/messageTools.js +170 -108
  20. package/lib/chat/messageTools.js.map +1 -1
  21. package/lib/chat/thread.js +162 -32
  22. package/lib/chat/thread.js.map +1 -1
  23. package/lib/footer/index.d.ts +20 -0
  24. package/lib/footer/index.d.ts.map +1 -0
  25. package/lib/footer/index.js +147 -0
  26. package/lib/footer/index.js.map +1 -0
  27. package/lib/footer/styleMap.d.ts +8 -0
  28. package/lib/footer/styleMap.d.ts.map +1 -0
  29. package/lib/footer/styleMap.js +15 -0
  30. package/lib/footer/styleMap.js.map +1 -0
  31. package/lib/header/index.d.ts +11 -8
  32. package/lib/header/index.d.ts.map +1 -1
  33. package/lib/header/index.js +81 -69
  34. package/lib/header/index.js.map +1 -1
  35. package/lib/header/styleMap.d.ts +0 -2
  36. package/lib/header/styleMap.d.ts.map +1 -1
  37. package/lib/header/styleMap.js +1 -5
  38. package/lib/header/styleMap.js.map +1 -1
  39. package/lib/index.d.ts +3 -2
  40. package/lib/index.d.ts.map +1 -1
  41. package/lib/index.js +10 -1
  42. package/lib/index.js.map +1 -1
  43. package/lib/logic.d.ts +2 -2
  44. package/lib/logic.d.ts.map +1 -1
  45. package/lib/logic.js +16 -12
  46. package/lib/logic.js.map +1 -1
  47. package/lib/{header/headerHelpers.d.ts → utils/headerFooterHelpers.d.ts} +11 -3
  48. package/lib/utils/headerFooterHelpers.d.ts.map +1 -0
  49. package/lib/utils/headerFooterHelpers.js +189 -0
  50. package/lib/utils/headerFooterHelpers.js.map +1 -0
  51. package/lib/versionInfo.js +4 -4
  52. package/lib/versionInfo.js.map +1 -1
  53. package/lib/webpack-bundle.js +18298 -1211
  54. package/lib/webpack-bundle.js.map +1 -1
  55. package/lib/widgets/buttons.d.ts.map +1 -1
  56. package/lib/widgets/buttons.js +8 -1
  57. package/lib/widgets/buttons.js.map +1 -1
  58. package/lib/widgets/forms/autocomplete/autocompleteField.js +9 -5
  59. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  60. package/lib/widgets/forms/autocomplete/language.js +3 -1
  61. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  62. package/lib/widgets/forms/autocomplete/publicData.js +15 -8
  63. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  64. package/package.json +5 -4
  65. package/lib/header/headerHelpers.d.ts.map +0 -1
  66. package/lib/header/headerHelpers.js +0 -96
  67. package/lib/header/headerHelpers.js.map +0 -1
@@ -3,10 +3,9 @@
3
3
  * and [[AccessGroupsOptions]] classes
4
4
  * @packageDocumentation
5
5
  */
6
- import { IndexedFormula, NamedNode } from 'rdflib';
6
+ import { IndexedFormula, NamedNode, LiveStore } from 'rdflib';
7
7
  import { AccessController } from './access-controller';
8
8
  import { AgentMapMap, ComboList } from './types';
9
- import { LiveStore } from 'pane-registry';
10
9
  /**
11
10
  * Type for the options parameter of [[AccessGroups]]
12
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"access-groups.d.ts","sourceRoot":"","sources":["../../src/acl/access-groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,cAAc,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;AAIhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,SAAS,CAAA;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA8BzC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IASrB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IACP,UAAU,EAAE,gBAAgB;IAEnC,OAAO,CAAC,OAAO;IAZjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAC3B,OAAO,EAAE,SAAS,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,MAAM,CAAW;gBAGf,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,EAClB,UAAU,EAAE,gBAAgB,EACnC,KAAK,EAAE,cAAc,EACb,OAAO,GAAE,mBAAwB;IAgB3C,IAAW,KAAK,cAEf;IAED,IAAW,KAAK,CAAE,KAAK,WAAA,EAItB;IAEM,MAAM,IAAK,WAAW;IAS7B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,WAAW;YAWL,WAAW;IASZ,SAAS,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKrC,iBAAiB;YASjB,gBAAgB;IAqB9B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,qBAAqB;CAY9B"}
1
+ {"version":3,"file":"access-groups.d.ts","sourceRoot":"","sources":["../../src/acl/access-groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,cAAc,EAAE,SAAS,EAAO,SAAS,EAAE,MAAM,QAAQ,CAAA;AAI3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,SAAS,CAAA;AAgCpE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IASrB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IACP,UAAU,EAAE,gBAAgB;IAEnC,OAAO,CAAC,OAAO;IAZjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAC3B,OAAO,EAAE,SAAS,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,MAAM,CAAW;gBAGf,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,EAClB,UAAU,EAAE,gBAAgB,EACnC,KAAK,EAAE,cAAc,EACb,OAAO,GAAE,mBAAwB;IAgB3C,IAAW,KAAK,cAEf;IAED,IAAW,KAAK,CAAE,KAAK,WAAA,EAItB;IAEM,MAAM,IAAK,WAAW;IAS7B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,WAAW;YAWL,WAAW;IASZ,SAAS,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKrC,iBAAiB;YASjB,gBAAgB;IAqB9B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,qBAAqB;CAY9B"}
@@ -325,9 +325,12 @@ var AccessGroups = /*#__PURE__*/function () {
325
325
  var secondAttempt,
326
326
  agent,
327
327
  thing,
328
+ _this$_store,
329
+ _this$_store$fetcher,
328
330
  message,
329
331
  error,
330
332
  _args4 = arguments;
333
+
331
334
  return _regenerator["default"].wrap(function _callee4$(_context4) {
332
335
  while (1) {
333
336
  switch (_context4.prev = _context4.next) {
@@ -345,7 +348,7 @@ var AccessGroups = /*#__PURE__*/function () {
345
348
  debug.log(" Not obvious: looking up dropped thing ".concat(thing));
346
349
  _context4.prev = 5;
347
350
  _context4.next = 8;
348
- return this._store.fetcher.load(thing.doc());
351
+ return (_this$_store = this._store) === null || _this$_store === void 0 ? void 0 : (_this$_store$fetcher = _this$_store.fetcher) === null || _this$_store$fetcher === void 0 ? void 0 : _this$_store$fetcher.load(thing.doc());
349
352
 
350
353
  case 8:
351
354
  _context4.next = 15;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/acl/access-groups.ts"],"names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","byCombo","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { fetcher, IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\nimport { LiveStore } from 'pane-registry'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solid/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: LiveStore\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: IndexedFormula,\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n fetcher(store, {})\n\n // The store will already have an updater at this point:\n // store.updater = new UpdateManager(store)\n\n this._store = store as LiveStore // TODO hacky, find a better solution\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store.fetcher.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj: obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj: obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj: obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj: obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj: obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj: obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj: obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"file":"access-groups.js"}
1
+ {"version":3,"sources":["../../src/acl/access-groups.ts"],"names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","byCombo","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { fetcher, IndexedFormula, NamedNode, sym, LiveStore } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solid/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: LiveStore\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: IndexedFormula,\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n fetcher(store, {})\n\n // The store will already have an updater at this point:\n // store.updater = new UpdateManager(store)\n\n this._store = store as LiveStore // TODO hacky, find a better solution\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj: obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj: obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj: obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj: obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj: obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj: obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj: obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"file":"access-groups.js"}
package/lib/acl/acl.d.ts CHANGED
@@ -5,8 +5,7 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
  import { AgentMapMap, AgentMapUnion, ComboList } from './types';
8
- import { IndexedFormula, NamedNode } from 'rdflib';
9
- import { LiveStore } from 'pane-registry';
8
+ import { IndexedFormula, NamedNode, LiveStore } from 'rdflib';
10
9
  /**
11
10
  * Take the "default" ACL and convert it into the equivlent ACL
12
11
  * which the resource would have had. Return it as a new separate store.
@@ -1 +1 @@
1
- {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../../src/acl/acl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE/D,OAAO,EAAS,cAAc,EAAE,SAAS,EAAiC,MAAM,QAAQ,CAAA;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAKzC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,EACjB,eAAe,EAAE,SAAS,EAC1B,aAAa,EAAE,SAAS,GACvB,cAAc,CA+BhB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,EACjB,GAAG,GAAE,cAAmB,EACxB,WAAW,GAAE,OAAe,GAC3B,WAAW,CA8Bb;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAE,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,OAAO,CAsBhG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAE,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,aAAa,CAmBjF;AAED,aAAK,oBAAoB,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,KAAK,IAAI,CAAA;AAE7G;;GAEG;AACH,wBAAgB,YAAY,CAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CA2BzG;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAE,EAAE,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAe5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAGxG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CA6BN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAE,EAAE,EAAE,WAAW,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,OAAO,EAAE,SAAS,GAAG,MAAM,CAqBzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAIvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,SAAS,EACb,CAAC,EAAE,SAAS,EACZ,EAAE,EAAE,WAAW,GAAG,aAAa,EAC/B,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,GACxD,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,SAAS,EACb,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,GACxD,IAAI,CAoBN;AAED,aAAK,4BAA4B,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,KAAK,IAAI,CAAA;AACrH,aAAK,wBAAwB,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,KAAK,IAAI,CAAA;AAEjH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,4BAA4B,GAAG,IAAI,CAU5H;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,wBAAwB,GAAG,IAAI,CAoC9I;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACvD,IAAI,CA2CN;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,EACd,gBAAgB,EAAE,CAChB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,CAAC,CAAC,EAAE,SAAS,EACb,CAAC,CAAC,EAAE,SAAS,KACV,IAAI,GACR,IAAI,CA4FN;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,SAAS,EACd,gBAAgB,EAAE,CAChB,EAAE,EAAE,OAAO,EACX,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,EACjC,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,GACR,IAAI,CA4CN;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAanG"}
1
+ {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../../src/acl/acl.ts"],"names":[],"mappings":"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"}
package/lib/acl/acl.js CHANGED
@@ -344,14 +344,18 @@ function putACLObject(kb, x, ac, aclDoc, callbackFunction) {
344
344
 
345
345
 
346
346
  function putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction) {
347
+ var _kb$updater;
348
+
347
349
  var kb2 = (0, _rdflib.graph)();
348
350
  makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true); // const str = makeACLString = function(x, ac, aclDoc)
349
351
 
350
- kb.updater.put(aclDoc, kb2.statementsMatching(undefined, undefined, undefined, aclDoc), 'text/turtle', function (uri, ok, message) {
352
+ (_kb$updater = kb.updater) === null || _kb$updater === void 0 ? void 0 : _kb$updater.put(aclDoc, kb2.statementsMatching(undefined, undefined, undefined, aclDoc), 'text/turtle', function (uri, ok, message) {
351
353
  if (!ok) {
352
354
  callbackFunction(ok, message);
353
355
  } else {
354
- kb.fetcher.unload(aclDoc);
356
+ var _kb$fetcher;
357
+
358
+ (_kb$fetcher = kb.fetcher) === null || _kb$fetcher === void 0 ? void 0 : _kb$fetcher.unload(aclDoc);
355
359
  makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true);
356
360
  kb.fetcher.requested[aclDoc.uri] = 'done'; // missing: save headers
357
361
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/acl/acl.ts"],"names":["kb","solidLogicSingleton","store","adoptACLDefault","doc","aclDoc","defaultResource","defaultACLDoc","ACL","ns","acl","isContainer","uri","slice","defaults","each","undefined","concat","proposed","reduce","accumulatedStatements","da","statementsMatching","rdf","kb2","forEach","st","add","move","subject","predicate","object","symbol","y","length","readACL","getDefaults","auths","getDefaultsFallback","ac","agent","agentClass","agentGroup","origin","originClass","Object","keys","pred","a","mode","sameACL","b","contains","ACLunion","list","ag","k","loadUnionACL","subjectList","callbackFunction","aclList","doList","shift","getACLorDefault","ok","p2","targetDoc","targetACLDoc","defaultHolder","defa","push","ACLbyCombination","byCombo","combo","sort","combo2","join","makeACLGraph","x","makeACLGraphbyCombo","main","pairs","modeURIs","split","short","map","u","sym","i","ACLToString","comboToString","str","initials","sameTerm","foaf","utils","label","makeACLString","putACLObject","putACLbyCombo","updater","put","message","fetcher","unload","requested","fixIndividualCardACL","person","log","groups","vcard","fixIndividualACL","item","subjects","debug","exists","union","setACL","docURI","aclText","any","ACL_LINK","Error","webOperation","value","data","contentType","then","res","error","nowOrWhenFetched","body","getACL","status","tryParent","right","lastIndexOf","left","indexOf","doc2","nonexistent","response","getProspectiveHolder","targetDirectory","Promise","resolve","reject","isDirectACL"],"mappings":"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","sourcesContent":["/**\n * Non-UI functions for access control.\n * See https://github.com/solid/web-access-control-spec\n * for the spec that defines how ACL documents work.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport { solidLogicSingleton } from '../logic'\nimport * as utils from '../utils'\nimport { AgentMapMap, AgentMapUnion, ComboList } from './types'\nimport * as debug from '../debug'\nimport { graph, IndexedFormula, NamedNode, serialize, st, Statement, sym } from 'rdflib'\nimport { LiveStore } from 'pane-registry'\nimport { ACL_LINK } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\n/**\n * Take the \"default\" ACL and convert it into the equivlent ACL\n * which the resource would have had. Return it as a new separate store.\n * The \"defaultForNew\" predicate is also accepted, as a deprecated\n * synonym for \"default\".\n */\nexport function adoptACLDefault (\n doc: NamedNode,\n aclDoc: NamedNode,\n defaultResource: NamedNode,\n defaultACLDoc: NamedNode\n): IndexedFormula {\n const ACL = ns.acl\n const isContainer = doc.uri.slice(-1) === '/' // Give default for all directories\n\n const defaults = kb\n .each(undefined, ACL('default'), defaultResource, defaultACLDoc)\n .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc))\n\n const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements\n .concat(kb.statementsMatching(da as NamedNode, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agent'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentGroup'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('origin'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('originClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('mode'), undefined, defaultACLDoc))\n .concat(st(da as NamedNode, ACL('accessTo'), doc, defaultACLDoc))\n .concat(isContainer ? st(da as NamedNode, ACL('default'), doc, defaultACLDoc) : []), [] as Statement[])\n\n const kb2 = graph() // Potential - derived is kept apart\n proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)))\n return kb2\n\n function move (symbol) {\n const y = defaultACLDoc.uri.length // The default ACL file\n return sym(\n symbol.uri.slice(0, y) === defaultACLDoc.uri\n ? aclDoc.uri + symbol.uri.slice(y)\n : symbol.uri\n )\n }\n}\n\n/**\n * Read and canonicalize the ACL for x in aclDoc\n *\n * Accumulate the access rights which each agent or class has\n */\nexport function readACL (\n doc: NamedNode,\n aclDoc: NamedNode,\n kb2: IndexedFormula = kb,\n getDefaults: boolean = false\n): AgentMapMap {\n const auths: Array<NamedNode> = getDefaults\n ? getDefaultsFallback(kb2, ns)\n : kb2.each(undefined, ns.acl('accessTo'), doc)\n\n const ACL = ns.acl\n const ac = {\n agent: {},\n agentClass: {},\n agentGroup: {},\n origin: {},\n originClass: {}\n }\n Object.keys(ac).forEach(pred => {\n auths.forEach(function (a) {\n (kb2.each(a, ACL('mode')) as Array<NamedNode>).forEach(function (mode) {\n (kb2.each(a, ACL(pred)) as Array<NamedNode>).forEach(function (agent) {\n ac[pred][agent.uri] = ac[pred][agent.uri] || {}\n ac[pred][agent.uri][mode.uri] = a // could be \"true\" but leave pointer just in case\n })\n })\n })\n })\n return ac\n\n function getDefaultsFallback (kb, ns) {\n return kb\n .each(undefined, ns.acl('default'), doc)\n .concat(kb.each(undefined, ns.acl('defaultForNew'), doc))\n }\n}\n\n/**\n * Compare two ACLs\n */\nexport function sameACL (a: AgentMapMap | AgentMapUnion, b: AgentMapMap | AgentMapUnion): boolean {\n const contains = function (a, b) {\n for (const pred in {\n agent: true,\n agentClass: true,\n agentGroup: true,\n origin: true,\n originClass: true\n }) {\n if (a[pred]) {\n for (const agent in a[pred]) {\n for (const mode in a[pred][agent]) {\n if (!b[pred][agent] || !b[pred][agent][mode]) {\n return false\n }\n }\n }\n }\n }\n return true\n }\n return contains(a, b) && contains(b, a)\n}\n\n/**\n * Union N ACLs\n */\nexport function ACLunion (list: Array<AgentMapMap | AgentMapUnion>): AgentMapUnion {\n const b = list[0]\n let a, ag\n for (let k = 1; k < list.length; k++) {\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(\n function (pred) {\n a = list[k]\n if (a[pred]) {\n for (ag in a[pred]) {\n for (const mode in a[pred][ag]) {\n if (!b[pred][ag]) b[pred][ag] = []\n b[pred][ag][mode] = true\n }\n }\n }\n }\n )\n }\n return b as AgentMapUnion\n}\n\ntype loadUnionACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Merge ACLs lists from things to form union\n */\nexport function loadUnionACL (subjectList: Array<NamedNode>, callbackFunction: loadUnionACLCallback): void {\n const aclList: Array<AgentMapMap> = []\n const doList = function (list) {\n if (list.length) {\n const doc = list.shift().doc()\n getACLorDefault(doc, function (\n ok,\n p2,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n const defa = !p2\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc)\n const acl = defa\n ? readACL(defaultHolder, defaultACLDoc)\n : readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n aclList.push(acl)\n doList(list.slice(1))\n })\n } else {\n // all gone\n callbackFunction(true, ACLunion(aclList))\n }\n }\n doList(subjectList)\n}\n\n/**\n * Represents these as an RDF graph by combination of modes\n *\n * Each agent can only be in one place in this model, one combination of modes.\n * Combos are like full control, read append, read only etc.\n */\nexport function ACLbyCombination (ac: AgentMapMap | AgentMapUnion): ComboList {\n const byCombo = {}\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {\n for (const agent in ac[pred]) {\n const combo: string[] = []\n for (const mode in ac[pred][agent]) {\n combo.push(mode)\n }\n combo.sort()\n const combo2 = combo.join('\\n')\n if (!byCombo[combo2]) byCombo[combo2] = []\n byCombo[combo2].push([pred, agent])\n }\n })\n return byCombo\n}\n\n/**\n * Write ACL graph to store from AC\n */\nexport function makeACLGraph (kb: IndexedFormula, x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): void {\n const byCombo = ACLbyCombination(ac)\n return makeACLGraphbyCombo(kb, x, byCombo, aclDoc)\n}\n\n/**\n * Write ACL graph to store from combo\n */\nexport function makeACLGraphbyCombo (\n kb: IndexedFormula,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n main?: boolean,\n defa?: boolean\n): void {\n const ACL = ns.acl\n for (const combo in byCombo) {\n const pairs = byCombo[combo]\n if (!pairs.length) continue // do not add to store when no agent\n const modeURIs = combo.split('\\n')\n let short = modeURIs\n .map(function (u) {\n return u.split('#')[1]\n })\n .join('')\n if (defa && !main) short += 'Default' // don't muddle authorizations\n const a = kb.sym(aclDoc.uri + '#' + short)\n kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc)\n if (main) {\n kb.add(a, ACL('accessTo'), x, aclDoc)\n }\n if (defa) {\n kb.add(a, ACL('default'), x, aclDoc)\n }\n for (let i = 0; i < modeURIs.length; i++) {\n kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc)\n }\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = pairs[i][1]\n kb.add(a, ACL(pred), kb.sym(ag), aclDoc)\n }\n }\n}\n\n/**\n * Debugging short strings for dumping ACL\n * and possibly in the UI\n */\nexport function ACLToString (ac: AgentMapMap): string {\n return comboToString(ACLbyCombination(ac))\n}\n\n/**\n * Convert a [[ComboList]] to a string\n */\nexport function comboToString (byCombo: ComboList): string {\n let str = ''\n for (const combo in byCombo) {\n const modeURIs = combo.split('\\n')\n const initials = modeURIs\n .map(function (u) {\n return u.split('#')[1][0]\n })\n .join('')\n str += initials + ':'\n const pairs = byCombo[combo]\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = sym(pairs[i][1])\n str += pred === 'agent' ? '@' : ''\n str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag)\n if (i < pairs.length - 1) str += ','\n }\n str += ';'\n }\n return '{' + str.slice(0, -1) + '}' // drop extra semicolon\n}\n\n/**\n * Write ACL graph as Turtle\n */\nexport function makeACLString (x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): string {\n const kb2 = graph()\n makeACLGraph(kb2, x, ac, aclDoc)\n return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || ''\n}\n\n/**\n * Write ACL graph to web\n */\nexport function putACLObject (\n kb: LiveStore,\n x: NamedNode,\n ac: AgentMapMap | AgentMapUnion,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const byCombo = ACLbyCombination(ac)\n return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction)\n}\n\n/**\n * Write ACL graph to web from a [[ComboList]]\n */\nexport function putACLbyCombo (\n kb: LiveStore,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const kb2 = graph()\n makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true)\n\n // const str = makeACLString = function(x, ac, aclDoc)\n kb.updater.put(\n aclDoc,\n kb2.statementsMatching(undefined, undefined, undefined, aclDoc),\n 'text/turtle',\n function (uri, ok, message) {\n if (!ok) {\n callbackFunction(ok, message)\n } else {\n kb.fetcher.unload(aclDoc)\n makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true)\n kb.fetcher.requested[aclDoc.uri] = 'done' // missing: save headers\n callbackFunction(ok)\n }\n }\n )\n}\n\ntype fixIndividualCardACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\ntype fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Fix the ACl for an individual card as a function of the groups it is in\n *\n * All group files must be loaded first\n */\nexport function fixIndividualCardACL (person: NamedNode, log: Function, callbackFunction: fixIndividualCardACLCallback): void {\n const groups = kb.each(undefined, ns.vcard('hasMember'), person) as NamedNode[]\n // const doc = person.doc()\n if (groups) {\n fixIndividualACL(person, groups, log, callbackFunction)\n } else {\n log('This card is in no groups')\n callbackFunction(true) // fine, no requirements to access. default should be ok\n }\n // @@ if no groups, then use default for People container or the book top container.?\n}\n\n/**\n * This function is used by [[fixIndividualCardACL]]\n */\nexport function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, log: Function, callbackFunction: fixIndividualACLCallback): void {\n log = log || debug.log\n const doc = item.doc()\n getACLorDefault(doc, function (\n ok,\n exists,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(false, targetACLDoc) // ie message\n const ac = exists\n ? readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n : readACL(defaultHolder, defaultACLDoc)\n loadUnionACL(subjects, function (ok, union) {\n if (!ok) return callbackFunction(false, union)\n if (sameACL(union as AgentMapMap | AgentMapUnion, ac)) {\n log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc)\n } else {\n log('Group ACLs differ for ' + utils.label(item) + ' ' + doc)\n\n // log(\"Group ACLs: \" + makeACLString(targetDoc, union, targetACLDoc))\n // log((exists ? \"Previous set\" : \"Default\") + \" ACLs: \" +\n // makeACLString(targetDoc, ac, targetACLDoc))\n\n putACLObject(\n kb as unknown as LiveStore,\n targetDoc as NamedNode,\n union as AgentMapMap | AgentMapUnion,\n targetACLDoc as NamedNode,\n callbackFunction\n )\n }\n })\n })\n}\n\n/**\n * Set an ACL\n */\nexport function setACL (\n docURI: NamedNode,\n aclText: string,\n callbackFunction: (ok: boolean, message: string) => void\n): void {\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n }) // @@@ check params\n } else {\n kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {\n if (!ok) return callbackFunction(ok, 'Gettting headers for ACL: ' + body)\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n callbackFunction(false, 'No Link rel=ACL header for ' + docURI)\n } else {\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n })\n }\n })\n }\n}\n\n/**\n * Get ACL file or default if necessary\n *\n * @param callbackFunction Will be called in the following ways, in the following cases:\n * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist\n * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did\n * * `callbackFunction(false, false, status, message)` when there was an error getting the original\n * * `callbackFunction(false, true, status, message)` when there was an error getting the default\n */\nexport function getACLorDefault (\n doc: NamedNode,\n callbackFunction: (\n a: boolean,\n b: boolean,\n statusOrMessage: number | NamedNode,\n message: string | NamedNode,\n c?: NamedNode,\n d?: NamedNode\n ) => void\n): void {\n getACL(doc, function (ok, status, aclDoc, message): string | void {\n const ACL = ns.acl\n if (!ok) return callbackFunction(false, false, status as number, message as string)\n\n // Recursively search for the ACL file which gives default access\n const tryParent = function (uri) {\n if (uri.slice(-1) === '/') {\n uri = uri.slice(0, -1)\n }\n const right = uri.lastIndexOf('/')\n const left = uri.indexOf('/', uri.indexOf('//') + 2)\n if (left > right) {\n return callbackFunction(false, true, 404, 'Found no ACL resource')\n }\n uri = uri.slice(0, right + 1)\n const doc2 = sym(uri)\n getACL(doc2, function (ok, status, defaultACLDoc: any): NamedNode | void {\n if (!ok) {\n return callbackFunction(\n false,\n true,\n status as number,\n `( No ACL pointer ${uri} ${status})${defaultACLDoc}`\n ) as void\n } else if (status === 403) {\n return callbackFunction(\n false,\n true,\n status,\n `( default ACL file FORBIDDEN. Stop.${uri})`\n )\n } else if (status === 404) {\n return tryParent(uri)\n } else if (status !== 200) {\n return callbackFunction(\n false,\n true,\n status as number,\n `Error status '${status}' searching for default for ${doc2}`\n )\n }\n // 200\n // statusBlock.textContent += (\" ACCESS set at \" + uri + \". End search.\")\n const defaults = kb\n .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)\n .concat(\n kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc)\n )\n if (!defaults.length) {\n return tryParent(uri) // Keep searching\n }\n const defaultHolder = kb.sym(uri)\n return callbackFunction(\n true,\n false,\n doc,\n aclDoc as NamedNode,\n defaultHolder,\n defaultACLDoc as NamedNode\n )\n })\n } // tryParent\n\n if (!ok) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error accessing Access Control information for ${doc}) ${message}`\n )\n } else if (status === 404) {\n tryParent(doc.uri) // @@ construct default one - the server should do that\n } else if (status === 403) {\n return callbackFunction(\n false,\n false,\n status,\n `(Sharing not available to you)${message}`\n )\n } else if (status !== 200) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error ${status} accessing Access Control information for ${doc}: ${message}`\n )\n } else {\n // 200\n return callbackFunction(true, true, doc, aclDoc as NamedNode)\n }\n }) // Call to getACL\n}\n\n/**\n * Calls back `(ok, status, acldoc, message)` as follows\n *\n * * `(false, 900, errormessage)` if no link header\n * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized\n * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist\n * * `(true, 200, documentSymbol)` if file exists and read OK\n */\nexport function getACL (\n doc: NamedNode,\n callbackFunction: (\n ok: boolean,\n messageOrStatus: number | string,\n messageOrDoc?: NamedNode | string,\n message?: string\n ) => void\n): void {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {\n if (!ok) {\n return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`)\n }\n const aclDoc = kb.any(\n doc,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`)\n } else {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n if (kb.fetcher.nonexistent[aclDoc.value]) {\n return callbackFunction(\n true,\n 404,\n aclDoc as NamedNode,\n `ACL file ${aclDoc} does not exist.`\n )\n }\n kb.fetcher.nowOrWhenFetched(aclDoc as NamedNode, undefined, function (\n ok,\n message,\n response\n ) {\n if (!ok) {\n callbackFunction(\n true,\n response.status,\n aclDoc as NamedNode,\n `Can't read Access Control File ${aclDoc}: ${message}`\n )\n } else {\n callbackFunction(true, 200, aclDoc as NamedNode)\n }\n })\n }\n })\n}\n\n/**\n * Calls [[getACLorDefault]] and then (?)\n */\nexport async function getProspectiveHolder (targetDirectory: string): Promise<NamedNode | undefined> {\n return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder\n ) => {\n if (ok) {\n return resolve((isDirectACL ? targetDoc : defaultHolder) as NamedNode)\n }\n return reject(new Error(`Error loading ${targetDirectory}`))\n }))\n}\n"],"file":"acl.js"}
1
+ {"version":3,"sources":["../../src/acl/acl.ts"],"names":["kb","solidLogicSingleton","store","adoptACLDefault","doc","aclDoc","defaultResource","defaultACLDoc","ACL","ns","acl","isContainer","uri","slice","defaults","each","undefined","concat","proposed","reduce","accumulatedStatements","da","statementsMatching","rdf","kb2","forEach","st","add","move","subject","predicate","object","symbol","y","length","readACL","getDefaults","auths","getDefaultsFallback","ac","agent","agentClass","agentGroup","origin","originClass","Object","keys","pred","a","mode","sameACL","b","contains","ACLunion","list","ag","k","loadUnionACL","subjectList","callbackFunction","aclList","doList","shift","getACLorDefault","ok","p2","targetDoc","targetACLDoc","defaultHolder","defa","push","ACLbyCombination","byCombo","combo","sort","combo2","join","makeACLGraph","x","makeACLGraphbyCombo","main","pairs","modeURIs","split","short","map","u","sym","i","ACLToString","comboToString","str","initials","sameTerm","foaf","utils","label","makeACLString","putACLObject","putACLbyCombo","updater","put","message","fetcher","unload","requested","fixIndividualCardACL","person","log","groups","vcard","fixIndividualACL","item","subjects","debug","exists","union","setACL","docURI","aclText","any","ACL_LINK","Error","webOperation","value","data","contentType","then","res","error","nowOrWhenFetched","body","getACL","status","tryParent","right","lastIndexOf","left","indexOf","doc2","nonexistent","response","getProspectiveHolder","targetDirectory","Promise","resolve","reject","isDirectACL"],"mappings":"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","sourcesContent":["/**\n * Non-UI functions for access control.\n * See https://github.com/solid/web-access-control-spec\n * for the spec that defines how ACL documents work.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport { solidLogicSingleton } from '../logic'\nimport * as utils from '../utils'\nimport { AgentMapMap, AgentMapUnion, ComboList } from './types'\nimport * as debug from '../debug'\nimport { graph, IndexedFormula, NamedNode, serialize, st, Statement, sym, LiveStore } from 'rdflib'\nimport { ACL_LINK } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\n/**\n * Take the \"default\" ACL and convert it into the equivlent ACL\n * which the resource would have had. Return it as a new separate store.\n * The \"defaultForNew\" predicate is also accepted, as a deprecated\n * synonym for \"default\".\n */\nexport function adoptACLDefault (\n doc: NamedNode,\n aclDoc: NamedNode,\n defaultResource: NamedNode,\n defaultACLDoc: NamedNode\n): IndexedFormula {\n const ACL = ns.acl\n const isContainer = doc.uri.slice(-1) === '/' // Give default for all directories\n\n const defaults = kb\n .each(undefined, ACL('default'), defaultResource, defaultACLDoc)\n .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc))\n\n const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements\n .concat(kb.statementsMatching(da as NamedNode, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agent'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentGroup'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('origin'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('originClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('mode'), undefined, defaultACLDoc))\n .concat(st(da as NamedNode, ACL('accessTo'), doc, defaultACLDoc))\n .concat(isContainer ? st(da as NamedNode, ACL('default'), doc, defaultACLDoc) : []), [] as Statement[])\n\n const kb2 = graph() // Potential - derived is kept apart\n proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)))\n return kb2\n\n function move (symbol) {\n const y = defaultACLDoc.uri.length // The default ACL file\n return sym(\n symbol.uri.slice(0, y) === defaultACLDoc.uri\n ? aclDoc.uri + symbol.uri.slice(y)\n : symbol.uri\n )\n }\n}\n\n/**\n * Read and canonicalize the ACL for x in aclDoc\n *\n * Accumulate the access rights which each agent or class has\n */\nexport function readACL (\n doc: NamedNode,\n aclDoc: NamedNode,\n kb2: IndexedFormula = kb,\n getDefaults: boolean = false\n): AgentMapMap {\n const auths: Array<NamedNode> = getDefaults\n ? getDefaultsFallback(kb2, ns)\n : kb2.each(undefined, ns.acl('accessTo'), doc)\n\n const ACL = ns.acl\n const ac = {\n agent: {},\n agentClass: {},\n agentGroup: {},\n origin: {},\n originClass: {}\n }\n Object.keys(ac).forEach(pred => {\n auths.forEach(function (a) {\n (kb2.each(a, ACL('mode')) as Array<NamedNode>).forEach(function (mode) {\n (kb2.each(a, ACL(pred)) as Array<NamedNode>).forEach(function (agent) {\n ac[pred][agent.uri] = ac[pred][agent.uri] || {}\n ac[pred][agent.uri][mode.uri] = a // could be \"true\" but leave pointer just in case\n })\n })\n })\n })\n return ac\n\n function getDefaultsFallback (kb, ns) {\n return kb\n .each(undefined, ns.acl('default'), doc)\n .concat(kb.each(undefined, ns.acl('defaultForNew'), doc))\n }\n}\n\n/**\n * Compare two ACLs\n */\nexport function sameACL (a: AgentMapMap | AgentMapUnion, b: AgentMapMap | AgentMapUnion): boolean {\n const contains = function (a, b) {\n for (const pred in {\n agent: true,\n agentClass: true,\n agentGroup: true,\n origin: true,\n originClass: true\n }) {\n if (a[pred]) {\n for (const agent in a[pred]) {\n for (const mode in a[pred][agent]) {\n if (!b[pred][agent] || !b[pred][agent][mode]) {\n return false\n }\n }\n }\n }\n }\n return true\n }\n return contains(a, b) && contains(b, a)\n}\n\n/**\n * Union N ACLs\n */\nexport function ACLunion (list: Array<AgentMapMap | AgentMapUnion>): AgentMapUnion {\n const b = list[0]\n let a, ag\n for (let k = 1; k < list.length; k++) {\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(\n function (pred) {\n a = list[k]\n if (a[pred]) {\n for (ag in a[pred]) {\n for (const mode in a[pred][ag]) {\n if (!b[pred][ag]) b[pred][ag] = []\n b[pred][ag][mode] = true\n }\n }\n }\n }\n )\n }\n return b as AgentMapUnion\n}\n\ntype loadUnionACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Merge ACLs lists from things to form union\n */\nexport function loadUnionACL (subjectList: Array<NamedNode>, callbackFunction: loadUnionACLCallback): void {\n const aclList: Array<AgentMapMap> = []\n const doList = function (list) {\n if (list.length) {\n const doc = list.shift().doc()\n getACLorDefault(doc, function (\n ok,\n p2,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n const defa = !p2\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc)\n const acl = defa\n ? readACL(defaultHolder, defaultACLDoc)\n : readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n aclList.push(acl)\n doList(list.slice(1))\n })\n } else {\n // all gone\n callbackFunction(true, ACLunion(aclList))\n }\n }\n doList(subjectList)\n}\n\n/**\n * Represents these as an RDF graph by combination of modes\n *\n * Each agent can only be in one place in this model, one combination of modes.\n * Combos are like full control, read append, read only etc.\n */\nexport function ACLbyCombination (ac: AgentMapMap | AgentMapUnion): ComboList {\n const byCombo = {}\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {\n for (const agent in ac[pred]) {\n const combo: string[] = []\n for (const mode in ac[pred][agent]) {\n combo.push(mode)\n }\n combo.sort()\n const combo2 = combo.join('\\n')\n if (!byCombo[combo2]) byCombo[combo2] = []\n byCombo[combo2].push([pred, agent])\n }\n })\n return byCombo\n}\n\n/**\n * Write ACL graph to store from AC\n */\nexport function makeACLGraph (kb: IndexedFormula, x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): void {\n const byCombo = ACLbyCombination(ac)\n return makeACLGraphbyCombo(kb, x, byCombo, aclDoc)\n}\n\n/**\n * Write ACL graph to store from combo\n */\nexport function makeACLGraphbyCombo (\n kb: IndexedFormula,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n main?: boolean,\n defa?: boolean\n): void {\n const ACL = ns.acl\n for (const combo in byCombo) {\n const pairs = byCombo[combo]\n if (!pairs.length) continue // do not add to store when no agent\n const modeURIs = combo.split('\\n')\n let short = modeURIs\n .map(function (u) {\n return u.split('#')[1]\n })\n .join('')\n if (defa && !main) short += 'Default' // don't muddle authorizations\n const a = kb.sym(aclDoc.uri + '#' + short)\n kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc)\n if (main) {\n kb.add(a, ACL('accessTo'), x, aclDoc)\n }\n if (defa) {\n kb.add(a, ACL('default'), x, aclDoc)\n }\n for (let i = 0; i < modeURIs.length; i++) {\n kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc)\n }\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = pairs[i][1]\n kb.add(a, ACL(pred), kb.sym(ag), aclDoc)\n }\n }\n}\n\n/**\n * Debugging short strings for dumping ACL\n * and possibly in the UI\n */\nexport function ACLToString (ac: AgentMapMap): string {\n return comboToString(ACLbyCombination(ac))\n}\n\n/**\n * Convert a [[ComboList]] to a string\n */\nexport function comboToString (byCombo: ComboList): string {\n let str = ''\n for (const combo in byCombo) {\n const modeURIs = combo.split('\\n')\n const initials = modeURIs\n .map(function (u) {\n return u.split('#')[1][0]\n })\n .join('')\n str += initials + ':'\n const pairs = byCombo[combo]\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = sym(pairs[i][1])\n str += pred === 'agent' ? '@' : ''\n str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag)\n if (i < pairs.length - 1) str += ','\n }\n str += ';'\n }\n return '{' + str.slice(0, -1) + '}' // drop extra semicolon\n}\n\n/**\n * Write ACL graph as Turtle\n */\nexport function makeACLString (x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): string {\n const kb2 = graph()\n makeACLGraph(kb2, x, ac, aclDoc)\n return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || ''\n}\n\n/**\n * Write ACL graph to web\n */\nexport function putACLObject (\n kb: LiveStore,\n x: NamedNode,\n ac: AgentMapMap | AgentMapUnion,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const byCombo = ACLbyCombination(ac)\n return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction)\n}\n\n/**\n * Write ACL graph to web from a [[ComboList]]\n */\nexport function putACLbyCombo (\n kb: LiveStore,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const kb2 = graph()\n makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true)\n\n // const str = makeACLString = function(x, ac, aclDoc)\n kb.updater?.put(\n aclDoc,\n kb2.statementsMatching(undefined, undefined, undefined, aclDoc),\n 'text/turtle',\n function (uri, ok, message) {\n if (!ok) {\n callbackFunction(ok, message)\n } else {\n kb.fetcher?.unload(aclDoc)\n makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true)\n kb.fetcher!.requested[aclDoc.uri] = 'done' // missing: save headers\n callbackFunction(ok)\n }\n }\n )\n}\n\ntype fixIndividualCardACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\ntype fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Fix the ACl for an individual card as a function of the groups it is in\n *\n * All group files must be loaded first\n */\nexport function fixIndividualCardACL (person: NamedNode, log: Function, callbackFunction: fixIndividualCardACLCallback): void {\n const groups = kb.each(undefined, ns.vcard('hasMember'), person) as NamedNode[]\n // const doc = person.doc()\n if (groups) {\n fixIndividualACL(person, groups, log, callbackFunction)\n } else {\n log('This card is in no groups')\n callbackFunction(true) // fine, no requirements to access. default should be ok\n }\n // @@ if no groups, then use default for People container or the book top container.?\n}\n\n/**\n * This function is used by [[fixIndividualCardACL]]\n */\nexport function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, log: Function, callbackFunction: fixIndividualACLCallback): void {\n log = log || debug.log\n const doc = item.doc()\n getACLorDefault(doc, function (\n ok,\n exists,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(false, targetACLDoc) // ie message\n const ac = exists\n ? readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n : readACL(defaultHolder, defaultACLDoc)\n loadUnionACL(subjects, function (ok, union) {\n if (!ok) return callbackFunction(false, union)\n if (sameACL(union as AgentMapMap | AgentMapUnion, ac)) {\n log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc)\n } else {\n log('Group ACLs differ for ' + utils.label(item) + ' ' + doc)\n\n // log(\"Group ACLs: \" + makeACLString(targetDoc, union, targetACLDoc))\n // log((exists ? \"Previous set\" : \"Default\") + \" ACLs: \" +\n // makeACLString(targetDoc, ac, targetACLDoc))\n\n putACLObject(\n kb as unknown as LiveStore,\n targetDoc as NamedNode,\n union as AgentMapMap | AgentMapUnion,\n targetACLDoc as NamedNode,\n callbackFunction\n )\n }\n })\n })\n}\n\n/**\n * Set an ACL\n */\nexport function setACL (\n docURI: NamedNode,\n aclText: string,\n callbackFunction: (ok: boolean, message: string) => void\n): void {\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n }) // @@@ check params\n } else {\n kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {\n if (!ok) return callbackFunction(ok, 'Gettting headers for ACL: ' + body)\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n callbackFunction(false, 'No Link rel=ACL header for ' + docURI)\n } else {\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n })\n }\n })\n }\n}\n\n/**\n * Get ACL file or default if necessary\n *\n * @param callbackFunction Will be called in the following ways, in the following cases:\n * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist\n * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did\n * * `callbackFunction(false, false, status, message)` when there was an error getting the original\n * * `callbackFunction(false, true, status, message)` when there was an error getting the default\n */\nexport function getACLorDefault (\n doc: NamedNode,\n callbackFunction: (\n a: boolean,\n b: boolean,\n statusOrMessage: number | NamedNode,\n message: string | NamedNode,\n c?: NamedNode,\n d?: NamedNode\n ) => void\n): void {\n getACL(doc, function (ok, status, aclDoc, message): string | void {\n const ACL = ns.acl\n if (!ok) return callbackFunction(false, false, status as number, message as string)\n\n // Recursively search for the ACL file which gives default access\n const tryParent = function (uri) {\n if (uri.slice(-1) === '/') {\n uri = uri.slice(0, -1)\n }\n const right = uri.lastIndexOf('/')\n const left = uri.indexOf('/', uri.indexOf('//') + 2)\n if (left > right) {\n return callbackFunction(false, true, 404, 'Found no ACL resource')\n }\n uri = uri.slice(0, right + 1)\n const doc2 = sym(uri)\n getACL(doc2, function (ok, status, defaultACLDoc: any): NamedNode | void {\n if (!ok) {\n return callbackFunction(\n false,\n true,\n status as number,\n `( No ACL pointer ${uri} ${status})${defaultACLDoc}`\n ) as void\n } else if (status === 403) {\n return callbackFunction(\n false,\n true,\n status,\n `( default ACL file FORBIDDEN. Stop.${uri})`\n )\n } else if (status === 404) {\n return tryParent(uri)\n } else if (status !== 200) {\n return callbackFunction(\n false,\n true,\n status as number,\n `Error status '${status}' searching for default for ${doc2}`\n )\n }\n // 200\n // statusBlock.textContent += (\" ACCESS set at \" + uri + \". End search.\")\n const defaults = kb\n .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)\n .concat(\n kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc)\n )\n if (!defaults.length) {\n return tryParent(uri) // Keep searching\n }\n const defaultHolder = kb.sym(uri)\n return callbackFunction(\n true,\n false,\n doc,\n aclDoc as NamedNode,\n defaultHolder,\n defaultACLDoc as NamedNode\n )\n })\n } // tryParent\n\n if (!ok) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error accessing Access Control information for ${doc}) ${message}`\n )\n } else if (status === 404) {\n tryParent(doc.uri) // @@ construct default one - the server should do that\n } else if (status === 403) {\n return callbackFunction(\n false,\n false,\n status,\n `(Sharing not available to you)${message}`\n )\n } else if (status !== 200) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error ${status} accessing Access Control information for ${doc}: ${message}`\n )\n } else {\n // 200\n return callbackFunction(true, true, doc, aclDoc as NamedNode)\n }\n }) // Call to getACL\n}\n\n/**\n * Calls back `(ok, status, acldoc, message)` as follows\n *\n * * `(false, 900, errormessage)` if no link header\n * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized\n * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist\n * * `(true, 200, documentSymbol)` if file exists and read OK\n */\nexport function getACL (\n doc: NamedNode,\n callbackFunction: (\n ok: boolean,\n messageOrStatus: number | string,\n messageOrDoc?: NamedNode | string,\n message?: string\n ) => void\n): void {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {\n if (!ok) {\n return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`)\n }\n const aclDoc = kb.any(\n doc,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`)\n } else {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n if (kb.fetcher.nonexistent[aclDoc.value]) {\n return callbackFunction(\n true,\n 404,\n aclDoc as NamedNode,\n `ACL file ${aclDoc} does not exist.`\n )\n }\n kb.fetcher.nowOrWhenFetched(aclDoc as NamedNode, undefined, function (\n ok,\n message,\n response\n ) {\n if (!ok) {\n callbackFunction(\n true,\n response.status,\n aclDoc as NamedNode,\n `Can't read Access Control File ${aclDoc}: ${message}`\n )\n } else {\n callbackFunction(true, 200, aclDoc as NamedNode)\n }\n })\n }\n })\n}\n\n/**\n * Calls [[getACLorDefault]] and then (?)\n */\nexport async function getProspectiveHolder (targetDirectory: string): Promise<NamedNode | undefined> {\n return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder\n ) => {\n if (ok) {\n return resolve((isDirectACL ? targetDoc : defaultHolder) as NamedNode)\n }\n return reject(new Error(`Error loading ${targetDirectory}`))\n }))\n}\n"],"file":"acl.js"}
@@ -63,7 +63,6 @@ var UI = {
63
63
  var $rdf = UI.rdf;
64
64
  var BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#');
65
65
  var BOOKMARK_ICON = 'noun_45961.svg';
66
- var kb = _logic.store;
67
66
  var label = utils.label;
68
67
  var dom = window.document || null;
69
68
  /** Create a resource if it really does not exist
@@ -74,19 +73,20 @@ var dom = window.document || null;
74
73
 
75
74
  function createIfNotExists(doc) {
76
75
  return new Promise(function (resolve, reject) {
77
- kb.fetcher.load(doc).then(function (response) {
78
- debug.log('createIfNotExists doc exists, all good ' + doc); // kb.fetcher.webOperation('HEAD', doc.uri).then(response => {
76
+ _logic.store.fetcher.load(doc).then(function (response) {
77
+ debug.log('createIfNotExists doc exists, all good ' + doc); // store.fetcher.webOperation('HEAD', doc.uri).then(response => {
79
78
 
80
79
  resolve(response);
81
80
  }, function (err) {
82
81
  if (err.response.status === 404) {
83
82
  debug.log('createIfNotExists doc does NOT exist, will create... ' + doc);
84
- kb.fetcher.webOperation('PUT', doc.uri, {
83
+
84
+ _logic.store.fetcher.webOperation('PUT', doc.uri, {
85
85
  data: '',
86
86
  contentType: 'text/turtle'
87
87
  }).then(function (response) {
88
88
  // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers
89
- delete kb.fetcher.requested[doc.uri]; // delete cached 404 error
89
+ delete _logic.store.fetcher.requested[doc.uri]; // delete cached 404 error
90
90
 
91
91
  debug.log('createIfNotExists doc created ok ' + doc);
92
92
  resolve(response);
@@ -105,13 +105,14 @@ function createIfNotExists(doc) {
105
105
 
106
106
  function updatePromise(del, ins) {
107
107
  return new Promise(function (resolve, reject) {
108
- kb.updater.update(del, ins, function (uri, ok, errorBody) {
108
+ _logic.store.updater.update(del, ins, function (uri, ok, errorBody) {
109
109
  if (!ok) {
110
110
  reject(new Error(errorBody));
111
111
  } else {
112
112
  resolve();
113
113
  }
114
114
  }); // callback
115
+
115
116
  }); // promise
116
117
  } // export findBookmarkDocument,
117
118
 
@@ -240,8 +241,8 @@ function _addBookmark() {
240
241
  throw new Error('Must be logged on to add Bookmark');
241
242
 
242
243
  case 4:
243
- author = kb.any(target, ns.foaf('maker'));
244
- title = label(author) + ': ' + kb.anyValue(target, ns.sioc('content')).slice(0, 80); // @@ add chat title too?
244
+ author = _logic.store.any(target, ns.foaf('maker'));
245
+ title = label(author) + ': ' + _logic.store.anyValue(target, ns.sioc('content')).slice(0, 80); // @@ add chat title too?
245
246
 
246
247
  bookmarkDoc = context.bookmarkDocument;
247
248
  bookmark = UI.widgets.newThing(bookmarkDoc, title);
@@ -279,17 +280,17 @@ function toggleBookmark(_x4, _x5, _x6) {
279
280
  }
280
281
 
281
282
  function _toggleBookmark() {
282
- _toggleBookmark = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(userContext, target, bookmarkButton) {
283
+ _toggleBookmark = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(userContext, target, bookmarstoreutton) {
283
284
  var bookmarks, i, bookmark;
284
285
  return _regenerator["default"].wrap(function _callee3$(_context3) {
285
286
  while (1) {
286
287
  switch (_context3.prev = _context3.next) {
287
288
  case 0:
288
289
  _context3.next = 2;
289
- return kb.fetcher.load(userContext.bookmarkDocument);
290
+ return _logic.store.fetcher.load(userContext.bookmarkDocument);
290
291
 
291
292
  case 2:
292
- bookmarks = kb.each(null, BOOK('recalls'), target, userContext.bookmarkDocument);
293
+ bookmarks = _logic.store.each(null, BOOK('recalls'), target, userContext.bookmarkDocument);
293
294
 
294
295
  if (!bookmarks.length) {
295
296
  _context3.next = 24;
@@ -314,10 +315,10 @@ function _toggleBookmark() {
314
315
 
315
316
  _context3.prev = 8;
316
317
  _context3.next = 11;
317
- return updatePromise(kb.connectedStatements(bookmarks[i]), []);
318
+ return updatePromise(_logic.store.connectedStatements(bookmarks[i]), []);
318
319
 
319
320
  case 11:
320
- bookmarkButton.style.backgroundColor = 'white';
321
+ bookmarstoreutton.style.backgroundColor = 'white';
321
322
  debug.log('Bookmark deleted: ' + bookmarks[i]);
322
323
  _context3.next = 19;
323
324
  break;
@@ -343,7 +344,7 @@ function _toggleBookmark() {
343
344
 
344
345
  case 26:
345
346
  bookmark = _context3.sent;
346
- bookmarkButton.style.backgroundColor = 'yellow';
347
+ bookmarstoreutton.style.backgroundColor = 'yellow';
347
348
  debug.log('Bookmark added: ' + bookmark);
348
349
 
349
350
  case 29:
@@ -362,26 +363,26 @@ function renderBookmarksButton(_x7, _x8) {
362
363
 
363
364
  function _renderBookmarksButton() {
364
365
  _renderBookmarksButton = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(userContext, target) {
365
- var setBookmarkButtonColor, _setBookmarkButtonColor, bookmarkButton;
366
+ var setBookmarstoreuttonColor, _setBookmarstoreuttonColor, bookmarstoreutton;
366
367
 
367
368
  return _regenerator["default"].wrap(function _callee5$(_context5) {
368
369
  while (1) {
369
370
  switch (_context5.prev = _context5.next) {
370
371
  case 0:
371
- _setBookmarkButtonColor = function _setBookmarkButtonCol2() {
372
- _setBookmarkButtonColor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(bookmarkButton) {
372
+ _setBookmarstoreuttonColor = function _setBookmarstoreutton2() {
373
+ _setBookmarstoreuttonColor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(bookmarstoreutton) {
373
374
  var bookmarked;
374
375
  return _regenerator["default"].wrap(function _callee4$(_context4) {
375
376
  while (1) {
376
377
  switch (_context4.prev = _context4.next) {
377
378
  case 0:
378
379
  _context4.next = 2;
379
- return kb.fetcher.load(userContext.bookmarkDocument);
380
+ return _logic.store.fetcher.load(userContext.bookmarkDocument);
380
381
 
381
382
  case 2:
382
- bookmarked = kb.any(null, BOOK('recalls'), bookmarkButton.target, userContext.bookmarkDocument);
383
- bookmarkButton.style = UI.style.buttonStyle;
384
- if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow';
383
+ bookmarked = _logic.store.any(null, BOOK('recalls'), bookmarstoreutton.target, userContext.bookmarkDocument);
384
+ bookmarstoreutton.style = UI.style.buttonStyle;
385
+ if (bookmarked) bookmarstoreutton.style.backgroundColor = 'yellow';
385
386
 
386
387
  case 5:
387
388
  case "end":
@@ -390,11 +391,11 @@ function _renderBookmarksButton() {
390
391
  }
391
392
  }, _callee4);
392
393
  }));
393
- return _setBookmarkButtonColor.apply(this, arguments);
394
+ return _setBookmarstoreuttonColor.apply(this, arguments);
394
395
  };
395
396
 
396
- setBookmarkButtonColor = function _setBookmarkButtonCol(_x9) {
397
- return _setBookmarkButtonColor.apply(this, arguments);
397
+ setBookmarstoreuttonColor = function _setBookmarstoreutton(_x9) {
398
+ return _setBookmarstoreuttonColor.apply(this, arguments);
398
399
  };
399
400
 
400
401
  if (!userContext.bookmarkDocument) {
@@ -402,15 +403,15 @@ function _renderBookmarksButton() {
402
403
  break;
403
404
  }
404
405
 
405
- bookmarkButton = UI.widgets.button(dom, UI.icons.iconBase + BOOKMARK_ICON, label(BOOK('Bookmark')), function () {
406
- toggleBookmark(userContext, target, bookmarkButton);
406
+ bookmarstoreutton = UI.widgets.button(dom, UI.icons.iconBase + BOOKMARK_ICON, label(BOOK('Bookmark')), function () {
407
+ toggleBookmark(userContext, target, bookmarstoreutton);
407
408
  });
408
- bookmarkButton.target = target;
409
+ bookmarstoreutton.target = target;
409
410
  _context5.next = 7;
410
- return setBookmarkButtonColor(bookmarkButton);
411
+ return setBookmarstoreuttonColor(bookmarstoreutton);
411
412
 
412
413
  case 7:
413
- return _context5.abrupt("return", bookmarkButton);
414
+ return _context5.abrupt("return", bookmarstoreutton);
414
415
 
415
416
  case 8:
416
417
  case "end":