solid-ui 2.4.16-9d8eda18 → 2.4.16-9e276990

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 (126) hide show
  1. package/README.md +2 -2
  2. package/lib/acl/access-controller.d.ts.map +1 -1
  3. package/lib/acl/access-controller.js +5 -1
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.d.ts +2 -2
  6. package/lib/acl/access-groups.d.ts.map +1 -1
  7. package/lib/acl/access-groups.js +1 -5
  8. package/lib/acl/access-groups.js.map +1 -1
  9. package/lib/acl/acl.d.ts.map +1 -1
  10. package/lib/acl/acl.js +4 -2
  11. package/lib/acl/acl.js.map +1 -1
  12. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  13. package/lib/acl/add-agent-buttons.js +5 -5
  14. package/lib/acl/add-agent-buttons.js.map +1 -1
  15. package/lib/authn/authSession.d.ts +4 -0
  16. package/lib/authn/authSession.d.ts.map +1 -0
  17. package/lib/authn/authSession.js +25 -0
  18. package/lib/authn/authSession.js.map +1 -0
  19. package/lib/authn/authn.d.ts +193 -0
  20. package/lib/authn/authn.d.ts.map +1 -0
  21. package/lib/authn/authn.js +2238 -0
  22. package/lib/authn/authn.js.map +1 -0
  23. package/lib/{signup → authn}/config-default.js +0 -0
  24. package/lib/authn/config-default.js.map +1 -0
  25. package/lib/authn/index.d.ts +35 -0
  26. package/lib/authn/index.d.ts.map +1 -0
  27. package/lib/authn/index.js +44 -0
  28. package/lib/authn/index.js.map +1 -0
  29. package/lib/{signup → authn}/signup.js +0 -0
  30. package/lib/authn/signup.js.map +1 -0
  31. package/lib/authn/types.d.ts +25 -0
  32. package/lib/authn/types.d.ts.map +1 -0
  33. package/lib/authn/types.js +6 -0
  34. package/lib/authn/types.js.map +1 -0
  35. package/lib/chat/bookmarks.js +22 -20
  36. package/lib/chat/bookmarks.js.map +1 -1
  37. package/lib/chat/chatLogic.js +15 -13
  38. package/lib/chat/chatLogic.js.map +1 -1
  39. package/lib/chat/dateFolder.js +10 -10
  40. package/lib/chat/dateFolder.js.map +1 -1
  41. package/lib/chat/infinite.js +16 -14
  42. package/lib/chat/infinite.js.map +1 -1
  43. package/lib/chat/message.js +21 -17
  44. package/lib/chat/message.js.map +1 -1
  45. package/lib/chat/messageTools.js +21 -16
  46. package/lib/chat/messageTools.js.map +1 -1
  47. package/lib/chat/thread.js +24 -24
  48. package/lib/chat/thread.js.map +1 -1
  49. package/lib/create/create.d.ts.map +1 -1
  50. package/lib/create/create.js +9 -9
  51. package/lib/create/create.js.map +1 -1
  52. package/lib/folders.js +6 -2
  53. package/lib/folders.js.map +1 -1
  54. package/lib/footer/index.js +4 -4
  55. package/lib/footer/index.js.map +1 -1
  56. package/lib/header/index.d.ts.map +1 -1
  57. package/lib/header/index.js +8 -11
  58. package/lib/header/index.js.map +1 -1
  59. package/lib/index.d.ts +4 -4
  60. package/lib/index.d.ts.map +1 -1
  61. package/lib/index.js +34 -27
  62. package/lib/index.js.map +1 -1
  63. package/lib/logic.d.ts +8 -0
  64. package/lib/logic.d.ts.map +1 -0
  65. package/lib/logic.js +79 -0
  66. package/lib/logic.js.map +1 -0
  67. package/lib/matrix/matrix.js +2 -2
  68. package/lib/matrix/matrix.js.map +1 -1
  69. package/lib/messageArea.js +10 -9
  70. package/lib/messageArea.js.map +1 -1
  71. package/lib/pad.js +2 -2
  72. package/lib/pad.js.map +1 -1
  73. package/lib/participation.d.ts.map +1 -1
  74. package/lib/participation.js +63 -33
  75. package/lib/participation.js.map +1 -1
  76. package/lib/preferences.js +8 -8
  77. package/lib/preferences.js.map +1 -1
  78. package/lib/table.js +3 -2
  79. package/lib/table.js.map +1 -1
  80. package/lib/tabs.js +3 -3
  81. package/lib/tabs.js.map +1 -1
  82. package/lib/utils/index.js +6 -6
  83. package/lib/utils/index.js.map +1 -1
  84. package/lib/utils/label.js +4 -4
  85. package/lib/utils/label.js.map +1 -1
  86. package/lib/versionInfo.js +9 -9
  87. package/lib/versionInfo.js.map +1 -1
  88. package/lib/webpack-bundle.js +84796 -68391
  89. package/lib/webpack-bundle.js.map +1 -1
  90. package/lib/widgets/buttons.js +16 -16
  91. package/lib/widgets/buttons.js.map +1 -1
  92. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  93. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  94. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  95. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  96. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  97. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  98. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  99. package/lib/widgets/forms/autocomplete/language.js +11 -6
  100. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  101. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  102. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  103. package/lib/widgets/forms/autocomplete/publicData.js +22 -14
  104. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  105. package/lib/widgets/forms/basic.d.ts +1 -1
  106. package/lib/widgets/forms/basic.d.ts.map +1 -1
  107. package/lib/widgets/forms/basic.js +2 -2
  108. package/lib/widgets/forms/basic.js.map +1 -1
  109. package/lib/widgets/forms/comment.d.ts +1 -1
  110. package/lib/widgets/forms/comment.js +3 -3
  111. package/lib/widgets/forms/comment.js.map +1 -1
  112. package/lib/widgets/forms/fieldFunction.js +2 -2
  113. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  114. package/lib/widgets/forms/formStyle.js +3 -3
  115. package/lib/widgets/forms/formStyle.js.map +1 -1
  116. package/lib/widgets/forms.js +10 -10
  117. package/lib/widgets/forms.js.map +1 -1
  118. package/lib/widgets/peoplePicker.js +2 -2
  119. package/lib/widgets/peoplePicker.js.map +1 -1
  120. package/package.json +2 -2
  121. package/lib/login/login.d.ts +0 -130
  122. package/lib/login/login.d.ts.map +0 -1
  123. package/lib/login/login.js +0 -1412
  124. package/lib/login/login.js.map +0 -1
  125. package/lib/signup/config-default.js.map +0 -1
  126. package/lib/signup/signup.js.map +0 -1
@@ -19,17 +19,17 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
19
19
 
20
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
21
 
22
- var debug = _interopRequireWildcard(require("../debug"));
23
-
24
22
  var _iconBase = require("../iconBase");
25
23
 
26
- var _login = require("../login/login");
24
+ var widgets = _interopRequireWildcard(require("../widgets"));
27
25
 
28
26
  var ns = _interopRequireWildcard(require("../ns"));
29
27
 
28
+ var _authn = require("../authn/authn");
29
+
30
30
  var utils = _interopRequireWildcard(require("../utils"));
31
31
 
32
- var widgets = _interopRequireWildcard(require("../widgets"));
32
+ var debug = _interopRequireWildcard(require("../debug"));
33
33
 
34
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
35
 
@@ -243,7 +243,7 @@ var AddAgentButtons = /*#__PURE__*/function () {
243
243
  switch (_context.prev = _context.next) {
244
244
  case 0:
245
245
  _context.next = 2;
246
- return (0, _login.logInLoadProfile)(eventContext);
246
+ return (0, _authn.logInLoadProfile)(eventContext);
247
247
 
248
248
  case 2:
249
249
  trustedApps = this.groupList.store.each(eventContext.me, ns.acl('trustedApp')); // @@ TODO fix as
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/acl/add-agent-buttons.ts"],"names":["AddAgentButtons","groupList","rootElement","controller","dom","createElement","barElement","innerHTML","appendChild","renderAddButton","widgets","button","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","Array","from","children","filter","element","forEach","removeChild","iconForClass","event","renderSimplifiedBar","target","renderNameForm","ns","vcard","then","name","addPerson","renderCleanup","error","renderStatus","addGroup","type","noun","askName","store","addAgent","foaf","uri","renderTemporaryStatus","acl","schema","addBot","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","render","classList","add","classes","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","trustedApps","each","me","trustedOrigins","flatMap","app","textContent","length","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","value","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","utils","label","subject","innerRightColumn","continueButton","domainNameRegexp","match","debug","log","agentUri"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { logInLoadProfile } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { AccessGroups } from './access-groups'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solid/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.classList.add(this.groupList.controller.classes.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.classList.add(this.groupList.controller.classes.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await logInLoadProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.classList.add(this.groupList.controller.classes.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"file":"add-agent-buttons.js"}
1
+ {"version":3,"sources":["../../src/acl/add-agent-buttons.ts"],"names":["AddAgentButtons","groupList","rootElement","controller","dom","createElement","barElement","innerHTML","appendChild","renderAddButton","widgets","button","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","Array","from","children","filter","element","forEach","removeChild","iconForClass","event","renderSimplifiedBar","target","renderNameForm","ns","vcard","then","name","addPerson","renderCleanup","error","renderStatus","addGroup","type","noun","askName","store","addAgent","foaf","uri","renderTemporaryStatus","acl","schema","addBot","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","render","classList","add","classes","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","trustedApps","each","me","trustedOrigins","flatMap","app","textContent","length","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","value","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","utils","label","subject","innerRightColumn","continueButton","domainNameRegexp","match","debug","log","agentUri"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { AccessGroups } from './access-groups'\nimport { icons } from '../iconBase'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { logInLoadProfile } from '../authn/authn'\nimport * as utils from '../utils'\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from '../authn/types'\nimport * as debug from '../debug'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solid/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.classList.add(this.groupList.controller.classes.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.classList.add(this.groupList.controller.classes.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await logInLoadProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.classList.add(this.groupList.controller.classes.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"file":"add-agent-buttons.js"}
@@ -0,0 +1,4 @@
1
+ import { Session } from '@inrupt/solid-client-authn-browser';
2
+ declare let authSession: Session;
3
+ export default authSession;
4
+ //# sourceMappingURL=authSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSession.d.ts","sourceRoot":"","sources":["../../src/authn/authSession.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAER,MAAM,oCAAoC,CAAA;AAE3C,QAAA,IAAI,WAAW,EAAE,OAAO,CAAA;AAgBxB,eAAe,WAAW,CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _solidClientAuthnBrowser = require("@inrupt/solid-client-authn-browser");
9
+
10
+ var authSession; // @ts-ignore
11
+
12
+ if (!window.authSession) {
13
+ authSession = new _solidClientAuthnBrowser.Session({
14
+ clientAuthentication: (0, _solidClientAuthnBrowser.getClientAuthenticationWithDependencies)({})
15
+ }, 'mySession'); // @ts-ignore
16
+
17
+ window.authSession = authSession;
18
+ } else {
19
+ // @ts-ignore
20
+ authSession = window.authSession;
21
+ }
22
+
23
+ var _default = authSession;
24
+ exports["default"] = _default;
25
+ //# sourceMappingURL=authSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/authn/authSession.ts"],"names":["authSession","window","Session","clientAuthentication"],"mappings":";;;;;;;AAAA;;AAKA,IAAIA,WAAJ,C,CACA;;AACA,IAAI,CAACC,MAAM,CAACD,WAAZ,EAAyB;AACvBA,EAAAA,WAAW,GAAG,IAAIE,gCAAJ,CACZ;AACEC,IAAAA,oBAAoB,EAAE,sEAAwC,EAAxC;AADxB,GADY,EAIZ,WAJY,CAAd,CADuB,CAOvB;;AACAF,EAAAA,MAAM,CAACD,WAAP,GAAqBA,WAArB;AACD,CATD,MASO;AACL;AACAA,EAAAA,WAAW,GAAGC,MAAM,CAACD,WAArB;AACD;;eAEcA,W","sourcesContent":["import {\n Session,\n getClientAuthenticationWithDependencies\n} from '@inrupt/solid-client-authn-browser'\n\nlet authSession: Session\n// @ts-ignore\nif (!window.authSession) {\n authSession = new Session(\n {\n clientAuthentication: getClientAuthenticationWithDependencies({})\n },\n 'mySession'\n )\n // @ts-ignore\n window.authSession = authSession\n} else {\n // @ts-ignore\n authSession = window.authSession\n}\n\nexport default authSession\n"],"file":"authSession.js"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Signing in, signing up, profile and preferences reloading
3
+ * Type index management
4
+ *
5
+ * Many functions in this module take a context object which
6
+ * holds various RDF symbols, add to it, and return a promise of it.
7
+ *
8
+ * * `me` RDF symbol for the user's WebID
9
+ * * `publicProfile` The user's public profile, iff loaded
10
+ * * `preferencesFile` The user's personal preference file, iff loaded
11
+ * * `index.public` The user's public type index file
12
+ * * `index.private` The user's private type index file
13
+ *
14
+ * Not RDF symbols:
15
+ * * `noun` A string in english for the type of thing -- like "address book"
16
+ * * `instance` An array of nodes which are existing instances
17
+ * * `containers` An array of nodes of containers of instances
18
+ * * `div` A DOM element where UI can be displayed
19
+ * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages
20
+ * @packageDocumentation
21
+ */
22
+ import { NamedNode } from 'rdflib';
23
+ import { PaneDefinition } from 'pane-registry';
24
+ import { AppDetails, AuthenticationContext } from './types';
25
+ export declare const authSession: import("@inrupt/solid-client-authn-browser").Session;
26
+ /**
27
+ * Look for and load the User who has control over it
28
+ */
29
+ export declare function findOriginOwner(doc: NamedNode | string): string | boolean;
30
+ /**
31
+ * Saves `webId` in `context.me`
32
+ * @param webId
33
+ * @param context
34
+ *
35
+ * @returns Returns the WebID, after setting it
36
+ */
37
+ export declare function saveUser(webId: NamedNode | string | null, context?: AuthenticationContext): NamedNode | null;
38
+ /**
39
+ * Wrapper around [[offlineTestID]]
40
+ * @returns {NamedNode|null}
41
+ */
42
+ export declare function defaultTestUser(): NamedNode | null;
43
+ /**
44
+ * Checks synchronously whether user is logged in
45
+ *
46
+ * @returns Named Node or null
47
+ */
48
+ export declare function currentUser(): NamedNode | null;
49
+ /**
50
+ * Resolves with the logged in user's WebID
51
+ *
52
+ * @param context
53
+ */
54
+ export declare function logIn(context: AuthenticationContext): Promise<AuthenticationContext>;
55
+ /**
56
+ * Logs the user in and loads their WebID profile document into the store
57
+ *
58
+ * @param context
59
+ *
60
+ * @returns Resolves with the context after login / fetch
61
+ */
62
+ export declare function logInLoadProfile(context: AuthenticationContext): Promise<AuthenticationContext>;
63
+ /**
64
+ * Loads preference file
65
+ * Do this after having done log in and load profile
66
+ *
67
+ * @private
68
+ *
69
+ * @param context
70
+ */
71
+ export declare function logInLoadPreferences(context: AuthenticationContext): Promise<AuthenticationContext>;
72
+ export declare function loadTypeIndexes(context: AuthenticationContext): Promise<AuthenticationContext>;
73
+ /**
74
+ * Returns promise of context with arrays of symbols
75
+ *
76
+ * 2016-12-11 change to include forClass arc a la
77
+ * https://github.com/solid/solid/blob/main/proposals/data-discovery.md
78
+ */
79
+ export declare function findAppInstances(context: AuthenticationContext, theClass: NamedNode, isPublic?: boolean): Promise<AuthenticationContext>;
80
+ /**
81
+ * Register a new app in a type index
82
+ */
83
+ export declare function registerInTypeIndex(context: AuthenticationContext, instance: NamedNode, theClass: NamedNode, isPublic: boolean): Promise<AuthenticationContext>;
84
+ /**
85
+ * UI to control registration of instance
86
+ */
87
+ export declare function registrationControl(context: AuthenticationContext, instance: any, theClass: any): Promise<AuthenticationContext | void>;
88
+ /**
89
+ * UI to List at all registered things
90
+ */
91
+ export declare function registrationList(context: AuthenticationContext, options: {
92
+ private?: boolean;
93
+ public?: boolean;
94
+ type?: NamedNode;
95
+ }): Promise<AuthenticationContext>;
96
+ /**
97
+ * Simple Access Control
98
+ *
99
+ * This function sets up a simple default ACL for a resource, with
100
+ * RWC for the owner, and a specified access (default none) for the public.
101
+ * In all cases owner has read write control.
102
+ * Parameter lists modes allowed to public
103
+ *
104
+ * @param options
105
+ * @param options.public eg ['Read', 'Write']
106
+ *
107
+ * @returns Resolves with aclDoc uri on successful write
108
+ */
109
+ export declare function setACLUserPublic(docURI: string, me: NamedNode, options: {
110
+ defaultForNew?: boolean;
111
+ public?: [];
112
+ }): Promise<NamedNode>;
113
+ /**
114
+ * Returns `sym($SolidTestEnvironment.username)` if
115
+ * `$SolidTestEnvironment.username` is defined as a global
116
+ * @returns {NamedNode|null}
117
+ */
118
+ export declare function offlineTestID(): NamedNode | null;
119
+ export declare function renderSignInPopup(dom: HTMLDocument): void;
120
+ /**
121
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
122
+ */
123
+ /**
124
+ * Retrieves currently logged in webId from either
125
+ * defaultTestUser or SolidAuth
126
+ * @param [setUserCallback] Optional callback
127
+ *
128
+ * @returns Resolves with webId uri, if no callback provided
129
+ */
130
+ export declare function checkUser<T>(setUserCallback?: (me: NamedNode | null) => T): Promise<NamedNode | T | null>;
131
+ /**
132
+ * Login status box
133
+ *
134
+ * A big sign-up/sign in box or a logout box depending on the state
135
+ *
136
+ * @param dom
137
+ * @param listener
138
+ *
139
+ * @returns
140
+ */
141
+ export declare function loginStatusBox(dom: HTMLDocument, listener?: ((uri: string | null) => void) | null, options?: {
142
+ buttonStyle?: string;
143
+ }): HTMLElement;
144
+ /**
145
+ * Workspace selection etc
146
+ * See https://github.com/solid/userguide/issues/16
147
+ */
148
+ /**
149
+ * Returns a UI object which, if it selects a workspace,
150
+ * will callback(workspace, newBase).
151
+ * See https://github.com/solid/userguide/issues/16 for more info on workspaces.
152
+ *
153
+ * If necessary, will get an account, preference file, etc. In sequence:
154
+ *
155
+ * - If not logged in, log in.
156
+ * - Load preference file
157
+ * - Prompt user for workspaces
158
+ * - Allows the user to just type in a URI by hand
159
+ *
160
+ * Calls back with the workspace and the base URI
161
+ *
162
+ * @param dom
163
+ * @param appDetails
164
+ * @param callbackWS
165
+ */
166
+ export declare function selectWorkspace(dom: HTMLDocument, appDetails: AppDetails, callbackWS: (workspace: string | null, newBase: string) => void): HTMLElement;
167
+ /**
168
+ * Creates a new instance of an app.
169
+ *
170
+ * An instance of an app could be e.g. an issue tracker for a given project,
171
+ * or a chess game, or calendar, or a health/fitness record for a person.
172
+ *
173
+ * Note that this use of the term 'app' refers more to entries in the user's
174
+ * type index than to actual software applications that use the personal data
175
+ * to which these entries point.
176
+ *
177
+ * @param dom
178
+ * @param appDetails
179
+ * @param callback
180
+ *
181
+ * @returns A div with a button in it for making a new app instance
182
+ */
183
+ export declare function newAppInstance(dom: HTMLDocument, appDetails: AppDetails, callback: (workspace: string | null, newBase: string) => void): HTMLElement;
184
+ /**
185
+ * Retrieves whether the currently logged in user is a power user
186
+ * and/or a developer
187
+ */
188
+ export declare function getUserRoles(): Promise<Array<NamedNode>>;
189
+ /**
190
+ * Filters which panes should be available, based on the result of [[getUserRoles]]
191
+ */
192
+ export declare function filterAvailablePanes(panes: Array<PaneDefinition>): Promise<Array<PaneDefinition>>;
193
+ //# sourceMappingURL=authn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authn.d.ts","sourceRoot":"","sources":["../../src/authn/authn.ts"],"names":[],"mappings":"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"}