solid-ui 2.4.18 → 2.4.19

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 (119) hide show
  1. package/README.md +3 -2
  2. package/lib/acl/acl.d.ts.map +1 -1
  3. package/lib/acl/acl.js +2 -4
  4. package/lib/acl/acl.js.map +1 -1
  5. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  6. package/lib/acl/add-agent-buttons.js +5 -5
  7. package/lib/acl/add-agent-buttons.js.map +1 -1
  8. package/lib/chat/bookmarks.js +20 -22
  9. package/lib/chat/bookmarks.js.map +1 -1
  10. package/lib/chat/chatLogic.js +13 -15
  11. package/lib/chat/chatLogic.js.map +1 -1
  12. package/lib/chat/dateFolder.js +10 -10
  13. package/lib/chat/dateFolder.js.map +1 -1
  14. package/lib/chat/infinite.js +14 -16
  15. package/lib/chat/infinite.js.map +1 -1
  16. package/lib/chat/message.js +19 -23
  17. package/lib/chat/message.js.map +1 -1
  18. package/lib/chat/messageTools.js +16 -21
  19. package/lib/chat/messageTools.js.map +1 -1
  20. package/lib/chat/thread.js +24 -24
  21. package/lib/chat/thread.js.map +1 -1
  22. package/lib/create/create.d.ts.map +1 -1
  23. package/lib/create/create.js +9 -9
  24. package/lib/create/create.js.map +1 -1
  25. package/lib/folders.js +2 -6
  26. package/lib/folders.js.map +1 -1
  27. package/lib/footer/index.js +4 -4
  28. package/lib/footer/index.js.map +1 -1
  29. package/lib/header/index.d.ts.map +1 -1
  30. package/lib/header/index.js +11 -8
  31. package/lib/header/index.js.map +1 -1
  32. package/lib/index.d.ts +4 -4
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +30 -28
  35. package/lib/index.js.map +1 -1
  36. package/lib/login/login.d.ts +130 -0
  37. package/lib/login/login.d.ts.map +1 -0
  38. package/lib/login/login.js +1415 -0
  39. package/lib/login/login.js.map +1 -0
  40. package/lib/matrix/matrix.js +2 -2
  41. package/lib/matrix/matrix.js.map +1 -1
  42. package/lib/messageArea.js +9 -10
  43. package/lib/messageArea.js.map +1 -1
  44. package/lib/pad.js +2 -2
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.d.ts.map +1 -1
  47. package/lib/participation.js +4 -5
  48. package/lib/participation.js.map +1 -1
  49. package/lib/preferences.js +8 -8
  50. package/lib/preferences.js.map +1 -1
  51. package/lib/{authn → signup}/config-default.js +0 -0
  52. package/lib/signup/config-default.js.map +1 -0
  53. package/lib/{authn → signup}/signup.js +0 -0
  54. package/lib/signup/signup.js.map +1 -0
  55. package/lib/table.js +2 -3
  56. package/lib/table.js.map +1 -1
  57. package/lib/tabs.js +3 -3
  58. package/lib/tabs.js.map +1 -1
  59. package/lib/utils/index.js +6 -6
  60. package/lib/utils/index.js.map +1 -1
  61. package/lib/utils/label.js +4 -5
  62. package/lib/utils/label.js.map +1 -1
  63. package/lib/versionInfo.js +2 -2
  64. package/lib/versionInfo.js.map +1 -1
  65. package/lib/webpack-bundle.js +8230 -24429
  66. package/lib/webpack-bundle.js.map +1 -1
  67. package/lib/widgets/buttons.js +16 -16
  68. package/lib/widgets/buttons.js.map +1 -1
  69. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  70. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  71. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  72. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  73. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  74. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  75. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  76. package/lib/widgets/forms/autocomplete/language.js +7 -10
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  79. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  80. package/lib/widgets/forms/autocomplete/publicData.js +15 -16
  81. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  82. package/lib/widgets/forms/basic.d.ts +1 -1
  83. package/lib/widgets/forms/basic.d.ts.map +1 -1
  84. package/lib/widgets/forms/basic.js +2 -2
  85. package/lib/widgets/forms/basic.js.map +1 -1
  86. package/lib/widgets/forms/comment.d.ts +1 -1
  87. package/lib/widgets/forms/comment.js +3 -3
  88. package/lib/widgets/forms/comment.js.map +1 -1
  89. package/lib/widgets/forms/fieldFunction.js +2 -2
  90. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  91. package/lib/widgets/forms/formStyle.js +3 -3
  92. package/lib/widgets/forms/formStyle.js.map +1 -1
  93. package/lib/widgets/forms.js +10 -10
  94. package/lib/widgets/forms.js.map +1 -1
  95. package/lib/widgets/peoplePicker.js +2 -2
  96. package/lib/widgets/peoplePicker.js.map +1 -1
  97. package/package.json +12 -4
  98. package/lib/authn/authSession.d.ts +0 -4
  99. package/lib/authn/authSession.d.ts.map +0 -1
  100. package/lib/authn/authSession.js +0 -25
  101. package/lib/authn/authSession.js.map +0 -1
  102. package/lib/authn/authn.d.ts +0 -193
  103. package/lib/authn/authn.d.ts.map +0 -1
  104. package/lib/authn/authn.js +0 -2238
  105. package/lib/authn/authn.js.map +0 -1
  106. package/lib/authn/config-default.js.map +0 -1
  107. package/lib/authn/index.d.ts +0 -35
  108. package/lib/authn/index.d.ts.map +0 -1
  109. package/lib/authn/index.js +0 -44
  110. package/lib/authn/index.js.map +0 -1
  111. package/lib/authn/signup.js.map +0 -1
  112. package/lib/authn/types.d.ts +0 -25
  113. package/lib/authn/types.d.ts.map +0 -1
  114. package/lib/authn/types.js +0 -6
  115. package/lib/authn/types.js.map +0 -1
  116. package/lib/logic.d.ts +0 -8
  117. package/lib/logic.d.ts.map +0 -1
  118. package/lib/logic.js +0 -79
  119. package/lib/logic.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/authn/authn.ts"],"names":["authSession","authSessionImport","DEFAULT_ISSUERS","name","uri","findOriginOwner","doc","i","indexOf","j","origin","slice","saveUser","webId","context","webIdUri","me","defaultTestUser","offlineId","offlineTestID","appContext","window","SolidAppContext","viewingNoAuthPage","noAuth","document","currentPage","location","href","startsWith","params","URLSearchParams","search","viewedPage","get","decodeURI","ary","split","idp","currentUser","app","info","isLoggedIn","logIn","Promise","resolve","checkUser","then","debug","log","div","dom","box","loginStatusBox","appendChild","logInLoadProfile","publicProfile","loggedInContext","Error","solidLogicSingleton","loadProfile","widgets","errorMessageBlock","message","logInLoadPreferences","complain","statusArea","preferencesFile","loadPreferences","progressDisplay","parentNode","removeChild","UnauthorizedError","m2","CrossOriginForbiddenError","preferencesFileError","SameOriginForbiddenError","warn","NotFoundError","confirm","FetchError","status","loadIndex","isPublic","loadIndexes","err","indexes","index","loadTypeIndexes","ensureTypeIndexes","ensureOneTypeIndex","makeIndexIfNecessary","putIndex","newIndex","createEmptyRdfDoc","msg","relevant","visibility","length","dir","addMe","ns","solid","updatePromise","push","ixs","load","findAppInstances","theClass","unique","arr","Array","from","Set","undefined","thisIndex","registrations","map","ix","store","each","reduce","acc","curr","concat","instances","reg","containers","e","utils","label","cont","getContainerMembers","value","sym","registerInTypeIndex","instance","registration","newThing","ins","rdf","registrationControl","createElement","innerHTML","setAttribute","tbody","children","form","BlankNode","registrationStatements","getRegistrations","statements","buildCheckBoxForm","noun","textContent","registrationList","options","_indexes","table","firstChild","sts","vs","forEach","statementsMatching","statement","type","holds","subject","why","inst","object","personTR","deleteFunction","_x","updater","update","ok","errorBody","setACLUserPublic","docURI","aclDoc","any","ACL_LINK","fetchACLRel","aclText","genACLText","fetcher","webOperation","data","contentType","result","error","aclURI","optPublic","g","auth","a","acl","add","defaultForNew","foaf","p","$SolidTestEnvironment","username","getElementById","id","getAttribute","getDefaultSignInButtonStyle","signInOrSignUpBox","setUserCallback","signInButtonStyle","buttonStyle","magicClassName","style","signInPopUpButton","onLogin","sessionInfo","webIdURI","divs","getElementsByClassName","parent","addEventListener","offline","renderSignInPopup","signupButton","_event","signupMgr","Signup","signup","issuerPopup","body","issuerPopupBox","issuerPopupBoxTopMenu","issuerPopupBoxLabel","innerText","issuerPopupBoxCloseButton","remove","loginToIssuer","issuerUri","preLoginRedirectHash","URL","hash","localStorage","setItem","login","redirectUrl","oidcIssuer","issuerTextContainer","issuerTextInputContainer","issuerTextLabel","issuerTextInput","getItem","issuerTextGoButton","issuerButtonContainer","issuerBottonLabel","getSuggestedIssuers","issuerInfo","issuerButton","issuers","host","hosts","includes","some","existing","isSubdomainOf","unshift","subdomain","domain","dot","endsWith","webIdFromSession","session","onSessionRestore","url","toString","history","replaceState","handleIncomingRedirect","restorePreviousSession","postLoginRedirectHash","curUrl","pushState","title","listener","setIt","newidURI","refresh","logoutButtonHandler","logout","alert","logoutButton","logoutLabel","nick","signOutButton","clearElement","trackSession","onLogout","issuer","wellKnownUri","pathname","fetch","wellKnownResult","json","openidConfiguration","end_session_endpoint","credentials","reload","selectWorkspace","appDetails","callbackWS","appPathSegment","say","s","background","figureOutBase","ws","newBaseNode","space","newBaseString","now","Date","getTime","displayOptions","makeNewWorkspace","row","cell","padding","encodeURI","askName","newBase","newWs","newData","w","storages","ldp","filter","file","toLowerCase","commentStyle","baseField","textInputStyle","size","autocomplete","button","replace","x","col1","col2","col3","tr","comment","cellStyle","deselectedStyle","anyValue","ui","b","charCodeAt","bgcolor","target","rdfs","disabled","trLast","newAppInstance","callback","gotWS","base","getUserRoles","filterAvailablePanes","panes","userRoles","pane","isMatchingAudience","audience","isMatch","audienceRole","find","role","equals"],"mappings":"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","sourcesContent":["/**\n * Signing in, signing up, profile and preferences reloading\n * Type index management\n *\n * Many functions in this module take a context object which\n * holds various RDF symbols, add to it, and return a promise of it.\n *\n * * `me` RDF symbol for the user's WebID\n * * `publicProfile` The user's public profile, iff loaded\n * * `preferencesFile` The user's personal preference file, iff loaded\n * * `index.public` The user's public type index file\n * * `index.private` The user's private type index file\n *\n * Not RDF symbols:\n * * `noun` A string in english for the type of thing -- like \"address book\"\n * * `instance` An array of nodes which are existing instances\n * * `containers` An array of nodes of containers of instances\n * * `div` A DOM element where UI can be displayed\n * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages\n * @packageDocumentation\n */\nimport { graph, namedNode, NamedNode, Namespace, serialize, st, Statement, sym, BlankNode } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\nimport { Signup } from './signup'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns.js'\nimport * as utils from '../utils'\nimport { alert } from '../log'\nimport authSessionImport from './authSession'\nimport { AppDetails, AuthenticationContext } from './types'\nimport * as debug from '../debug'\nimport { textInputStyle, buttonStyle, commentStyle } from '../style'\n// eslint-disable-next-line camelcase\nimport { Quad_Object } from 'rdflib/lib/tf-types'\nimport { solidLogicSingleton } from '../logic'\nimport { CrossOriginForbiddenError, FetchError, NotFoundError, SameOriginForbiddenError, UnauthorizedError, ACL_LINK } from 'solid-logic'\n\n/* global confirm */\n\nexport const authSession = authSessionImport\n\nconst DEFAULT_ISSUERS = [\n {\n name: 'Solid Community',\n uri: 'https://solidcommunity.net'\n },\n {\n name: 'Solid Web',\n uri: 'https://solidweb.org'\n },\n {\n name: 'Inrupt.net',\n uri: 'https://inrupt.net'\n },\n {\n name: 'pod.Inrupt.com',\n uri: 'https://broker.pod.inrupt.com'\n }\n]\n\n// const userCheckSite = 'https://databox.me/'\n\n/**\n * Look for and load the User who has control over it\n */\nexport function findOriginOwner (doc: NamedNode | string): string | boolean {\n const uri = (typeof doc === 'string') ? doc : doc.uri\n const i = uri.indexOf('://')\n if (i < 0) return false\n const j = uri.indexOf('/', i + 3)\n if (j < 0) return false\n const origin = uri.slice(0, j + 1) // @@ TBC\n return origin\n}\n\n/**\n * Saves `webId` in `context.me`\n * @param webId\n * @param context\n *\n * @returns Returns the WebID, after setting it\n */\nexport function saveUser (\n webId: NamedNode | string | null,\n context?: AuthenticationContext\n): NamedNode | null {\n // @@ TODO Remove the need for having context as output argument\n let webIdUri: string\n if (webId) {\n webIdUri = (typeof webId === 'string') ? webId : webId.uri\n const me = namedNode(webIdUri)\n if (context) {\n context.me = me\n }\n return me\n }\n return null\n}\n\n/**\n * Wrapper around [[offlineTestID]]\n * @returns {NamedNode|null}\n */\nexport function defaultTestUser (): NamedNode | null {\n // Check for offline override\n const offlineId = offlineTestID()\n\n if (offlineId) {\n return offlineId\n }\n\n return null\n}\n\n/**\n * find a user or app's context as set in window.SolidAppContext\n * @return {any} - an appContext object\n */\nfunction appContext ():any {\n let { SolidAppContext }: any = window\n SolidAppContext ||= {}\n SolidAppContext.viewingNoAuthPage = false\n if (SolidAppContext.noAuth && window.document) {\n const currentPage = window.document.location.href\n if (currentPage.startsWith(SolidAppContext.noAuth)) {\n SolidAppContext.viewingNoAuthPage = true\n const params = new URLSearchParams(window.document.location.search)\n if (params) {\n let viewedPage = SolidAppContext.viewedPage = params.get('uri') || null\n if (viewedPage) {\n viewedPage = decodeURI(viewedPage)\n if (!viewedPage.startsWith(SolidAppContext.noAuth)) {\n const ary = viewedPage.split(/\\//)\n SolidAppContext.idp = ary[0] + '//' + ary[2]\n SolidAppContext.viewingNoAuthPage = false\n }\n }\n }\n }\n }\n return SolidAppContext\n}\n\n/**\n * Checks synchronously whether user is logged in\n *\n * @returns Named Node or null\n */\nexport function currentUser (): NamedNode | null {\n const app = appContext()\n if (app.viewingNoAuthPage) {\n return sym(app.webId)\n }\n if (authSession.info.webId && authSession.info.isLoggedIn) {\n return sym(authSession.info.webId)\n }\n return offlineTestID() // null unless testing\n // JSON.parse(localStorage['solid-auth-client']).session.webId\n}\n\n/**\n * Resolves with the logged in user's WebID\n *\n * @param context\n */\nexport function logIn (context: AuthenticationContext): Promise<AuthenticationContext> {\n const app = appContext()\n const me = app.viewingNoAuthPage ? sym(app.webId) : defaultTestUser() // me is a NamedNode or null\n\n if (me) {\n context.me = me\n return Promise.resolve(context)\n }\n\n return new Promise(resolve => {\n checkUser().then(webId => {\n // Already logged in?\n if (webId) {\n context.me = sym(webId as string)\n debug.log(`logIn: Already logged in as ${context.me}`)\n return resolve(context)\n }\n if (!context.div || !context.dom) {\n return resolve(context)\n }\n const box = loginStatusBox(context.dom, webIdUri => {\n saveUser(webIdUri, context)\n resolve(context) // always pass growing context\n })\n context.div.appendChild(box)\n })\n })\n}\n\n/**\n * Logs the user in and loads their WebID profile document into the store\n *\n * @param context\n *\n * @returns Resolves with the context after login / fetch\n */\nexport async function logInLoadProfile (context: AuthenticationContext): Promise<AuthenticationContext> {\n // console.log('Solid UI logInLoadProfile')\n if (context.publicProfile) {\n return context\n } // already done\n try {\n const loggedInContext = await logIn(context)\n if (!loggedInContext.me) {\n throw new Error('Could not log in')\n }\n context.publicProfile = await solidLogicSingleton.loadProfile(loggedInContext.me)\n } catch (err) {\n if (context.div && context.dom) {\n context.div.appendChild(\n widgets.errorMessageBlock(context.dom, err.message)\n )\n }\n throw new Error(`Can't log in: ${err}`)\n }\n return context\n}\n\n/**\n * Loads preference file\n * Do this after having done log in and load profile\n *\n * @private\n *\n * @param context\n */\nexport async function logInLoadPreferences (context: AuthenticationContext): Promise<AuthenticationContext> {\n // console.log('Solid UI logInLoadPreferences')\n if (context.preferencesFile) return Promise.resolve(context) // already done\n\n const statusArea = context.statusArea || context.div || null\n let progressDisplay\n function complain (message) {\n message = `logInLoadPreferences: ${message}`\n if (statusArea) {\n // statusArea.innerHTML = ''\n statusArea.appendChild(\n widgets.errorMessageBlock(context.dom, message)\n )\n }\n debug.log(message)\n // reject(new Error(message))\n }\n try {\n context = await logInLoadProfile(context)\n\n // console.log('back in Solid UI after logInLoadProfile', context)\n const preferencesFile = await solidLogicSingleton.loadPreferences(context.me as NamedNode)\n if (progressDisplay) {\n progressDisplay.parentNode.removeChild(progressDisplay)\n }\n context.preferencesFile = preferencesFile\n } catch (err) {\n let m2: string\n if (err instanceof UnauthorizedError) {\n m2 = 'Ooops - you are not authenticated (properly logged in) to for me to read your preference file. Try loggin out and logging in?'\n alert(m2)\n } else if (err instanceof CrossOriginForbiddenError) {\n m2 = `Unauthorized: Assuming preference file blocked for origin ${window.location.origin}`\n context.preferencesFileError = m2\n return context\n } else if (err instanceof SameOriginForbiddenError) {\n m2 = 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n } else if (err instanceof NotFoundError) {\n if (\n confirm(`You do not currently have a preference file. OK for me to create an empty one? ${(err as any).preferencesFile || ''}`)\n ) {\n // @@@ code me ... weird to have a name of the file but no file\n alert(`Sorry; I am not prepared to do this. Please create an empty file at ${(err as any).preferencesFile || '(?)'}`)\n complain(\n new Error('Sorry; no code yet to create a preference file at ')\n )\n } else {\n throw (\n new Error(`User declined to create a preference file at ${(err as any).preferencesFile || '(?)'}`)\n )\n }\n } else if (err instanceof FetchError) {\n m2 = `Strange: Error ${err.status} trying to read your preference file.${err.message}`\n alert(m2)\n } else {\n throw new Error(`(via loadPrefs) ${err}`)\n }\n }\n return context\n}\n\n/**\n * Resolves with the same context, outputting\n * output: index.public, index.private\n *\n * @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability\n */\nasync function loadIndex (\n context: AuthenticationContext,\n isPublic: boolean\n): Promise<AuthenticationContext> {\n const indexes = await solidLogicSingleton.loadIndexes(\n context.me as NamedNode,\n (isPublic ? context.publicProfile || null : null),\n (isPublic ? null : context.preferencesFile || null),\n async (err: Error) => widgets.complain(context, err.message)\n )\n context.index = context.index || {}\n context.index.private = indexes.private || context.index.private\n context.index.public = indexes.public || context.index.public\n return context\n}\n\nexport async function loadTypeIndexes (context: AuthenticationContext) {\n const indexes = await solidLogicSingleton.loadIndexes(\n context.me as NamedNode,\n context.publicProfile || null,\n context.preferencesFile || null,\n async (err: Error) => widgets.complain(context, err.message)\n )\n context.index = context.index || {}\n context.index.private = indexes.private || context.index.private\n context.index.public = indexes.public || context.index.public\n return context\n}\n\n/**\n * Resolves with the same context, outputting\n * @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability\n */\nasync function ensureTypeIndexes (context: AuthenticationContext): Promise<AuthenticationContext> {\n await ensureOneTypeIndex(context, true)\n await ensureOneTypeIndex(context, false)\n return context\n}\n\n/**\n * Load or create ONE type index\n * Find one or make one or fail\n * Many reasons for failing including script not having permission etc\n *\n * Adds its output to the context\n * @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability\n */\nasync function ensureOneTypeIndex (context: AuthenticationContext, isPublic: boolean): Promise<AuthenticationContext | void> {\n async function makeIndexIfNecessary (context, isPublic) {\n const relevant = isPublic ? context.publicProfile : context.preferencesFile\n const visibility = isPublic ? 'public' : 'private'\n\n async function putIndex (newIndex) {\n try {\n await solidLogicSingleton.createEmptyRdfDoc(newIndex, 'Blank initial Type index')\n return context\n } catch (e) {\n const msg = `Error creating new index ${e}`\n widgets.complain(context, msg)\n }\n } // putIndex\n\n context.index = context.index || {}\n context.index[visibility] = context.index[visibility] || []\n let newIndex\n if (context.index[visibility].length === 0) {\n newIndex = sym(`${relevant.dir().uri + visibility}TypeIndex.ttl`)\n debug.log(`Linking to new fresh type index ${newIndex}`)\n if (!confirm(`OK to create a new empty index file at ${newIndex}, overwriting anything that is now there?`)) {\n throw new Error('cancelled by user')\n }\n debug.log(`Linking to new fresh type index ${newIndex}`)\n const addMe = [\n st(context.me, ns.solid(`${visibility}TypeIndex`), newIndex, relevant)\n ]\n try {\n await solidLogicSingleton.updatePromise([], addMe)\n } catch (err) {\n const msg = `Error saving type index link saving back ${newIndex}: ${err}`\n widgets.complain(context, msg)\n return context\n }\n\n debug.log(`Creating new fresh type index file${newIndex}`)\n await putIndex(newIndex)\n context.index[visibility].push(newIndex) // @@ wait\n } else {\n // officially exists\n const ixs = context.index[visibility]\n try {\n await solidLogicSingleton.load(ixs)\n } catch (err) {\n widgets.complain(context, `ensureOneTypeIndex: loading indexes ${err}`)\n }\n }\n } // makeIndexIfNecessary\n\n try {\n await loadIndex(context, isPublic)\n if (context.index) {\n debug.log(\n `ensureOneTypeIndex: Type index exists already ${isPublic\n ? context.index.public[0]\n : context.index.private[0]\n }`\n )\n }\n return context\n } catch (error) {\n await makeIndexIfNecessary(context, isPublic)\n // widgets.complain(context, 'calling loadIndex:' + error)\n }\n}\n\n/**\n * Returns promise of context with arrays of symbols\n *\n * 2016-12-11 change to include forClass arc a la\n * https://github.com/solid/solid/blob/main/proposals/data-discovery.md\n */\nexport async function findAppInstances (\n context: AuthenticationContext,\n theClass: NamedNode,\n isPublic?: boolean\n): Promise<AuthenticationContext> {\n // console.log('findAppInstances', { context, theClass, isPublic })\n if (isPublic === undefined) {\n // Then both public and private\n // console.log('finding public app instance')\n await findAppInstances(context, theClass, true)\n // console.log('finding private app instance')\n await findAppInstances(context, theClass, false)\n // console.log('found public & private app instance', context)\n return context\n }\n\n // Loading preferences is more than loading profile\n try {\n // console.log('calling logInLoad', isPublic)\n await (isPublic\n ? logInLoadProfile(context)\n : logInLoadPreferences(context))\n // console.log('called logInLoad', isPublic)\n } catch (err) {\n widgets.complain(context, `loadIndex: login and load problem ${err}`)\n }\n // console.log('awaited LogInLoad!', context)\n const visibility = isPublic ? 'public' : 'private'\n try {\n await loadIndex(context, isPublic)\n } catch (err) {\n }\n const index = context.index as { [key: string]: Array<NamedNode> }\n const thisIndex = index[visibility]\n const registrations = thisIndex\n .map(ix => solidLogicSingleton.store.each(undefined, ns.solid('forClass'), theClass, ix))\n .reduce((acc, curr) => acc.concat(curr), [])\n const instances = registrations\n .map(reg => solidLogicSingleton.store.each(reg as NamedNode, ns.solid('instance')))\n .reduce((acc, curr) => acc.concat(curr), [])\n const containers = registrations\n .map(reg => solidLogicSingleton.store.each(reg as NamedNode, ns.solid('instanceContainer')))\n .reduce((acc, curr) => acc.concat(curr), [])\n\n function unique (arr: NamedNode[]): NamedNode[] {\n return Array.from(new Set(arr))\n }\n context.instances = context.instances || []\n context.instances = unique(context.instances.concat(instances as NamedNode[]))\n\n context.containers = context.containers || []\n context.containers = unique(context.containers.concat(containers as NamedNode[]))\n if (!containers.length) {\n return context\n }\n // If the index gives containers, then look up all things within them\n try {\n await solidLogicSingleton.load(containers as NamedNode[])\n } catch (err) {\n const e = new Error(`[FAI] Unable to load containers${err}`)\n debug.log(e) // complain\n widgets.complain(context, `Error looking for ${utils.label(theClass)}: ${err}`)\n // but then ignore it\n // throw new Error(e)\n }\n for (let i = 0; i < containers.length; i++) {\n const cont = containers[i]\n context.instances = context.instances.concat(\n (await solidLogicSingleton.getContainerMembers(cont.value)).map(uri => solidLogicSingleton.store.sym(uri)) // @@ warning: uses strings not NN\n )\n }\n return context\n}\n\n/**\n * Register a new app in a type index\n */\nexport async function registerInTypeIndex (\n context: AuthenticationContext,\n instance: NamedNode,\n theClass: NamedNode,\n isPublic: boolean\n): Promise<AuthenticationContext> {\n await ensureOneTypeIndex(context, isPublic)\n if (!context.index) {\n throw new Error('registerInTypeIndex: No type index found')\n }\n const indexes = isPublic ? context.index.public : context.index.private\n if (!indexes.length) {\n throw new Error('registerInTypeIndex: What no type index?')\n }\n const index = indexes[0]\n const registration = widgets.newThing(index)\n const ins = [\n // See https://github.com/solid/solid/blob/main/proposals/data-discovery.md\n st(registration, ns.rdf('type'), ns.solid('TypeRegistration'), index),\n st(registration, ns.solid('forClass'), theClass, index),\n st(registration, ns.solid('instance'), instance, index)\n ]\n try {\n await solidLogicSingleton.updatePromise([], ins)\n } catch (e) {\n debug.log(e)\n alert(e)\n }\n return context\n}\n\n/**\n * UI to control registration of instance\n */\nexport function registrationControl (\n context: AuthenticationContext,\n instance,\n theClass\n): Promise<AuthenticationContext | void> {\n const dom = context.dom\n if (!dom || !context.div) {\n return Promise.resolve()\n }\n const box = dom.createElement('div')\n context.div.appendChild(box)\n\n return ensureTypeIndexes(context)\n .then(function () {\n box.innerHTML = '<table><tbody><tr></tr><tr></tr></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;')\n const tbody = box.children[0].children[0]\n const form = new BlankNode() // @@ say for now\n\n const registrationStatements = function (index) {\n const registrations = solidLogicSingleton.getRegistrations(instance, theClass)\n const reg = registrations.length\n ? registrations[0]\n : widgets.newThing(index)\n return [\n st(reg, ns.solid('instance'), instance, index),\n st(reg, ns.solid('forClass'), theClass, index)\n ]\n }\n\n let index, statements\n\n if (context.index && context.index.public && context.index.public.length > 0) {\n index = context.index.public[0]\n statements = registrationStatements(index)\n tbody.children[0].appendChild(\n widgets.buildCheckBoxForm(\n context.dom,\n solidLogicSingleton.store,\n `Public link to this ${context.noun}`,\n null,\n statements,\n form,\n index\n )\n )\n }\n\n if (context.index && context.index.private && context.index.private.length > 0) {\n index = context.index.private[0]\n statements = registrationStatements(index)\n tbody.children[1].appendChild(\n widgets.buildCheckBoxForm(\n context.dom,\n solidLogicSingleton.store,\n `Personal note of this ${context.noun}`,\n null,\n statements,\n form,\n index\n )\n )\n }\n return context\n },\n function (e) {\n let msg\n if (context.div && context.preferencesFileError) {\n msg = '(Preferences not available)'\n context.div.appendChild(dom.createElement('p')).textContent = msg\n } else if (context.div) {\n msg = `registrationControl: Type indexes not available: ${e}`\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n }\n )\n .catch(function (e) {\n const msg = `registrationControl: Error making panel: ${e}`\n if (context.div) {\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n })\n}\n\n/**\n * UI to List at all registered things\n */\nexport function registrationList (context: AuthenticationContext, options: {\n private?: boolean\n public?: boolean\n type?: NamedNode\n}): Promise<AuthenticationContext> {\n const dom = context.dom as HTMLDocument\n const div = context.div as HTMLElement\n\n const box = dom.createElement('div')\n div.appendChild(box)\n\n return ensureTypeIndexes(context).then(_indexes => {\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;')\n const table = box.firstChild as HTMLElement\n\n let ix: Array<NamedNode> = []\n let sts: Statement[] = []\n const vs = ['private', 'public']\n vs.forEach(function (visibility) {\n if (context.index && options[visibility]) {\n ix = ix.concat(context.index[visibility][0])\n sts = sts.concat(\n solidLogicSingleton.store.statementsMatching(\n undefined,\n ns.solid('instance'),\n undefined,\n context.index[visibility][0]\n )\n )\n }\n })\n\n for (let i = 0; i < sts.length; i++) {\n const statement: Statement = sts[i]\n if (options.type) { // now check terms:forClass\n if (!solidLogicSingleton.store.holds(statement.subject, ns.solid('forClass'), options.type, statement.why)) {\n continue // skip irrelevant ones\n }\n }\n // const cla = statement.subject\n const inst = statement.object\n table.appendChild(widgets.personTR(dom, ns.solid('instance'), inst, {\n deleteFunction: function (_x) {\n if (!solidLogicSingleton.store.updater) {\n throw new Error('Cannot delete this, store has no updater')\n }\n solidLogicSingleton.store.updater.update([statement], [], function (uri, ok, errorBody) {\n if (ok) {\n debug.log(`Removed from index: ${statement.subject}`)\n } else {\n debug.log(`Error: Cannot delete ${statement}: ${errorBody}`)\n }\n })\n }\n }))\n } // registrationList\n\n /*\n //const containers = solidLogicSingleton.store.each(theClass, ns.solid('instanceContainer'));\n if (containers.length) {\n fetcher.load(containers).then(function(xhrs){\n for (const i=0; i<containers.length; i++) {\n const cont = containers[i];\n instances = instances.concat(solidLogicSingleton.store.each(cont, ns.ldp('contains')));\n }\n });\n }\n */\n\n return context\n })\n}\n\n/**\n * Simple Access Control\n *\n * This function sets up a simple default ACL for a resource, with\n * RWC for the owner, and a specified access (default none) for the public.\n * In all cases owner has read write control.\n * Parameter lists modes allowed to public\n *\n * @param options\n * @param options.public eg ['Read', 'Write']\n *\n * @returns Resolves with aclDoc uri on successful write\n */\nexport function setACLUserPublic (\n docURI: string,\n me: NamedNode,\n options: {\n defaultForNew?: boolean,\n public?: []\n }\n): Promise<NamedNode> {\n const aclDoc = solidLogicSingleton.store.any(\n solidLogicSingleton.store.sym(docURI),\n ACL_LINK\n )\n\n return Promise.resolve()\n .then(() => {\n if (aclDoc) {\n return aclDoc as NamedNode\n }\n\n return fetchACLRel(docURI).catch(err => {\n throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)\n })\n })\n .then(aclDoc => {\n const aclText = genACLText(docURI, me, aclDoc.uri, options)\n if (!solidLogicSingleton.store.fetcher) {\n throw new Error('Cannot PUT this, store has no fetcher')\n }\n return solidLogicSingleton.store.fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(result => {\n if (!result.ok) {\n throw new Error('Error writing ACL text: ' + result.error)\n }\n\n return aclDoc\n })\n })\n}\n\n/**\n * @param docURI\n * @returns\n */\nfunction fetchACLRel (docURI: string): Promise<NamedNode> {\n const fetcher = solidLogicSingleton.store.fetcher\n if (!fetcher) {\n throw new Error('Cannot fetch ACL rel, store has no fetcher')\n }\n\n return fetcher.load(docURI).then(result => {\n if (!result.ok) {\n throw new Error('fetchACLRel: While loading:' + (result as any).error)\n }\n\n const aclDoc = solidLogicSingleton.store.any(\n solidLogicSingleton.store.sym(docURI),\n ACL_LINK\n )\n\n if (!aclDoc) {\n throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)\n }\n\n return aclDoc as NamedNode\n })\n}\n\n/**\n * @param docURI\n * @param me\n * @param aclURI\n * @param options\n *\n * @returns Serialized ACL\n */\nfunction genACLText (\n docURI: string,\n me: NamedNode,\n aclURI: string,\n options: {\n defaultForNew?: boolean,\n public?: []\n } = {}\n): string | undefined {\n const optPublic = options.public || []\n const g = graph()\n const auth = Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(`${aclURI}#a1`)\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n if (options.defaultForNew) {\n g.add(a, auth('default'), doc, acl)\n }\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n if (optPublic.length) {\n a = g.sym(`${aclURI}#a2`)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n for (let p = 0; p < optPublic.length; p++) {\n g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc\n }\n }\n return serialize(acl, g, aclURI)\n}\n\n/**\n * Returns `sym($SolidTestEnvironment.username)` if\n * `$SolidTestEnvironment.username` is defined as a global\n * @returns {NamedNode|null}\n */\nexport function offlineTestID (): NamedNode | null {\n const { $SolidTestEnvironment }: any = window\n if (\n typeof $SolidTestEnvironment !== 'undefined' &&\n $SolidTestEnvironment.username\n ) {\n // Test setup\n debug.log('Assuming the user is ' + $SolidTestEnvironment.username)\n return sym($SolidTestEnvironment.username)\n }\n\n if (\n typeof document !== 'undefined' &&\n document.location &&\n ('' + document.location).slice(0, 16) === 'http://localhost'\n ) {\n const div = document.getElementById('appTarget')\n if (!div) return null\n const id = div.getAttribute('testID')\n if (!id) return null\n /* me = solidLogicSingleton.store.any(subject, ns.acl('owner')); // when testing on plane with no WebID\n */\n debug.log('Assuming user is ' + id)\n return sym(id)\n }\n return null\n}\n\nfunction getDefaultSignInButtonStyle (): string {\n return 'padding: 1em; border-radius:0.5em; font-size: 100%;'\n}\n\n/**\n * Bootstrapping identity\n * (Called by `loginStatusBox()`)\n *\n * @param dom\n * @param setUserCallback\n *\n * @returns\n */\nfunction signInOrSignUpBox (\n dom: HTMLDocument,\n setUserCallback: (user: string) => void,\n options: {\n buttonStyle?: string\n } = {}\n): HTMLElement {\n options = options || {}\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n const magicClassName = 'SolidSignInOrSignUpBox'\n debug.log('widgets.signInOrSignUpBox')\n box.setUserCallback = setUserCallback\n box.setAttribute('class', magicClassName)\n ;(box as any).style = 'display:flex;' // @@ fix all typecasts like this\n\n // Sign in button with PopUP\n const signInPopUpButton = dom.createElement('input') // multi\n box.appendChild(signInPopUpButton)\n signInPopUpButton.setAttribute('type', 'button')\n signInPopUpButton.setAttribute('value', 'Log in')\n signInPopUpButton.setAttribute('style', `${signInButtonStyle}background-color: #eef;`)\n\n authSession.onLogin(() => {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.isLoggedIn) {\n const webIdURI = sessionInfo.webId\n // setUserCallback(webIdURI)\n const divs = dom.getElementsByClassName(magicClassName)\n debug.log(`Logged in, ${divs.length} panels to be serviced`)\n // At the same time, satisfy all the other login boxes\n for (let i = 0; i < divs.length; i++) {\n const div: any = divs[i]\n // @@ TODO Remove the need to manipulate HTML elements\n if (div.setUserCallback) {\n try {\n div.setUserCallback(webIdURI)\n const parent = div.parentNode\n if (parent) {\n parent.removeChild(div)\n }\n } catch (e) {\n debug.log(`## Error satisfying login box: ${e}`)\n div.appendChild(widgets.errorMessageBlock(dom, e))\n }\n }\n }\n }\n })\n\n signInPopUpButton.addEventListener('click', () => {\n const offline = offlineTestID()\n if (offline) return setUserCallback(offline.uri)\n\n renderSignInPopup(dom)\n }, false)\n\n // Sign up button\n const signupButton = dom.createElement('input')\n box.appendChild(signupButton)\n signupButton.setAttribute('type', 'button')\n signupButton.setAttribute('value', 'Sign Up for Solid')\n signupButton.setAttribute('style', `${signInButtonStyle}background-color: #efe;`)\n\n signupButton.addEventListener('click', function (_event) {\n const signupMgr = new Signup()\n signupMgr.signup().then(function (uri) {\n debug.log('signInOrSignUpBox signed up ' + uri)\n setUserCallback(uri)\n })\n }, false)\n return box\n}\n\nexport function renderSignInPopup (dom: HTMLDocument) {\n /**\n * Issuer Menu\n */\n const issuerPopup = dom.createElement('div')\n issuerPopup.setAttribute('style', 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;')\n dom.body.appendChild(issuerPopup)\n const issuerPopupBox = dom.createElement('div')\n issuerPopupBox.setAttribute('style', `\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n `)\n issuerPopup.appendChild(issuerPopupBox)\n const issuerPopupBoxTopMenu = dom.createElement('div')\n issuerPopupBoxTopMenu.setAttribute('style', `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n `)\n issuerPopupBox.appendChild(issuerPopupBoxTopMenu)\n const issuerPopupBoxLabel = dom.createElement('label')\n issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800')\n issuerPopupBoxLabel.innerText = 'Select an identity provider'\n const issuerPopupBoxCloseButton = dom.createElement('button')\n issuerPopupBoxCloseButton.innerHTML = '<img src=\"https://solid.github.io/solid-ui/src/icons/noun_1180156.svg\" style=\"width: 2em; height: 2em;\" title=\"Cancel\">'\n issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;')\n issuerPopupBoxCloseButton.addEventListener('click', () => {\n issuerPopup.remove()\n })\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel)\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton)\n\n const loginToIssuer = async (issuerUri: string) => {\n try {\n // Save hash\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n // Login\n await authSession.login({\n redirectUrl: window.location.href,\n oidcIssuer: issuerUri\n })\n } catch (err) {\n alert(err.message)\n }\n }\n\n /**\n * Text-based idp selection\n */\n const issuerTextContainer = dom.createElement('div')\n issuerTextContainer.setAttribute('style', `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `)\n const issuerTextInputContainer = dom.createElement('div')\n issuerTextInputContainer.setAttribute('style', `\n display: flex;\n flex-direction: row;\n `)\n const issuerTextLabel = dom.createElement('label')\n issuerTextLabel.innerText = 'Enter the URL of your identity provider:'\n issuerTextLabel.setAttribute('style', 'color: #888')\n const issuerTextInput = dom.createElement('input')\n issuerTextInput.setAttribute('type', 'text')\n issuerTextInput.setAttribute('style', 'margin-left: 0 !important; flex: 1; margin-right: 5px !important')\n issuerTextInput.setAttribute('placeholder', 'https://example.com')\n issuerTextInput.value = localStorage.getItem('loginIssuer') || ''\n const issuerTextGoButton = dom.createElement('button')\n issuerTextGoButton.innerText = 'Go'\n issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;')\n issuerTextGoButton.addEventListener('click', () => {\n loginToIssuer(issuerTextInput.value)\n })\n issuerTextContainer.appendChild(issuerTextLabel)\n issuerTextInputContainer.appendChild(issuerTextInput)\n issuerTextInputContainer.appendChild(issuerTextGoButton)\n issuerTextContainer.appendChild(issuerTextInputContainer)\n issuerPopupBox.appendChild(issuerTextContainer)\n\n /**\n * Button-based idp selection\n */\n const issuerButtonContainer = dom.createElement('div')\n issuerButtonContainer.setAttribute('style', `\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `)\n const issuerBottonLabel = dom.createElement('label')\n issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:'\n issuerBottonLabel.setAttribute('style', 'color: #888')\n issuerButtonContainer.appendChild(issuerBottonLabel)\n getSuggestedIssuers().forEach((issuerInfo) => {\n const issuerButton = dom.createElement('button')\n issuerButton.innerText = issuerInfo.name\n issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px')\n issuerButton.addEventListener('click', () => {\n loginToIssuer(issuerInfo.uri)\n })\n issuerButtonContainer.appendChild(issuerButton)\n })\n issuerPopupBox.appendChild(issuerButtonContainer)\n}\n\n/**\n * @returns - A list of suggested OIDC issuers\n */\nfunction getSuggestedIssuers (): { name: string, uri: string }[] {\n // Suggest a default list of OIDC issuers\n const issuers = [...DEFAULT_ISSUERS]\n\n // Suggest the current host if not already included\n const { host, origin } = new URL(location.href)\n const hosts = issuers.map(({ uri }) => new URL(uri).host)\n if (!hosts.includes(host) && !hosts.some(existing => isSubdomainOf(host, existing))) {\n issuers.unshift({ name: host, uri: origin })\n }\n\n return issuers\n}\n\nfunction isSubdomainOf (subdomain: string, domain: string): boolean {\n const dot = subdomain.length - domain.length - 1\n return dot > 0 && subdomain[dot] === '.' && subdomain.endsWith(domain)\n}\n\n/**\n * @returns {Promise<string|null>} Resolves with WebID URI or null\n */\nfunction webIdFromSession (session?: { webId?: string, isLoggedIn: boolean }): string | null {\n const webId = session?.webId && session.isLoggedIn ? session.webId : null\n if (webId) {\n saveUser(webId)\n }\n return webId\n}\n\n/**\n * @returns {Promise<string|null>} Resolves with WebID URI or null\n */\n\n/*\nfunction checkCurrentUser () {\n return checkUser()\n}\n*/\n\n/**\n * Retrieves currently logged in webId from either\n * defaultTestUser or SolidAuth\n * @param [setUserCallback] Optional callback\n *\n * @returns Resolves with webId uri, if no callback provided\n */\nexport async function checkUser<T> (\n setUserCallback?: (me: NamedNode | null) => T\n): Promise<NamedNode | T | null> {\n // Save hash for \"restorePreviousSession\"\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n authSession.onSessionRestore((url) => {\n if (document.location.toString() !== url) history.replaceState(null, '', url)\n })\n\n /**\n * Handle a successful authentication redirect\n */\n await authSession\n .handleIncomingRedirect({\n restorePreviousSession: true,\n url: window.location.href\n })\n\n // Check to see if a hash was stored in local storage\n const postLoginRedirectHash = window.localStorage.getItem('preLoginRedirectHash')\n if (postLoginRedirectHash) {\n const curUrl = new URL(window.location.href)\n if (curUrl.hash !== postLoginRedirectHash) {\n if (history.pushState) {\n // console.log('Setting window.location.has using pushState')\n history.pushState(null, document.title, postLoginRedirectHash)\n } else {\n // console.warn('Setting window.location.has using location.hash')\n location.hash = postLoginRedirectHash\n }\n curUrl.hash = postLoginRedirectHash\n }\n // See https://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document\n // indow.location.href = curUrl.toString()// @@ See https://developer.mozilla.org/en-US/docs/Web/API/Window/location\n window.localStorage.setItem('preLoginRedirectHash', '')\n }\n\n // Check to see if already logged in / have the WebID\n let me = defaultTestUser()\n if (me) {\n return Promise.resolve(setUserCallback ? setUserCallback(me) : me)\n }\n\n // doc = solidLogicSingleton.store.any(doc, ns.link('userMirror')) || doc\n const webId = webIdFromSession(authSession.info)\n\n me = saveUser(webId)\n\n if (me) {\n debug.log(`(Logged in as ${me} by authentication)`)\n }\n\n return Promise.resolve(setUserCallback ? setUserCallback(me) : me)\n}\n\n/**\n * Login status box\n *\n * A big sign-up/sign in box or a logout box depending on the state\n *\n * @param dom\n * @param listener\n *\n * @returns\n */\nexport function loginStatusBox (\n dom: HTMLDocument,\n listener: ((uri: string | null) => void) | null = null,\n options: {\n buttonStyle?: string\n } = {}\n): HTMLElement {\n // 20190630\n let me = defaultTestUser()\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n\n function setIt (newidURI) {\n if (!newidURI) {\n return\n }\n\n const uri = newidURI.uri || newidURI\n // UI.preferences.set('me', uri)\n me = sym(uri)\n box.refresh()\n if (listener) listener(me.uri)\n }\n\n function logoutButtonHandler (_event) {\n // UI.preferences.set('me', '')\n authSession.logout().then(\n function () {\n const message = `Your WebID was ${me}. It has been forgotten.`\n me = null\n try {\n alert(message)\n } catch (e) {\n window.alert(message)\n }\n box.refresh()\n if (listener) listener(null)\n },\n err => {\n alert('Fail to log out:' + err)\n }\n )\n }\n\n function logoutButton (me, options) {\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n let logoutLabel = 'WebID logout'\n if (me) {\n const nick =\n solidLogicSingleton.store.any(me, ns.foaf('nick')) ||\n solidLogicSingleton.store.any(me, ns.foaf('name'))\n if (nick) {\n logoutLabel = 'Logout ' + nick.value\n }\n }\n const signOutButton = dom.createElement('input')\n // signOutButton.className = 'WebIDCancelButton'\n signOutButton.setAttribute('type', 'button')\n signOutButton.setAttribute('value', logoutLabel)\n signOutButton.setAttribute('style', `${signInButtonStyle}background-color: #eee;`)\n signOutButton.addEventListener('click', logoutButtonHandler, false)\n return signOutButton\n }\n\n box.refresh = function () {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {\n me = sym(sessionInfo.webId)\n } else {\n me = null\n }\n if ((me && box.me !== me.uri) || (!me && box.me)) {\n widgets.clearElement(box)\n if (me) {\n box.appendChild(logoutButton(me, options))\n } else {\n box.appendChild(signInOrSignUpBox(dom, setIt, options))\n }\n }\n box.me = me ? me.uri : null\n }\n\n function trackSession () {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {\n me = sym(sessionInfo.webId)\n } else {\n me = null\n }\n box.refresh()\n }\n trackSession()\n authSession.onLogin(trackSession)\n authSession.onLogout(trackSession)\n\n box.me = '99999' // Force refresh\n box.refresh()\n return box\n}\n\nauthSession.onLogout(async () => {\n const issuer = window.localStorage.getItem('loginIssuer')\n if (issuer) {\n try {\n const wellKnownUri = new URL(issuer)\n wellKnownUri.pathname = '/.well-known/openid-configuration'\n const wellKnownResult = await fetch(wellKnownUri.toString())\n if (wellKnownResult.status === 200) {\n const openidConfiguration = await wellKnownResult.json()\n if (openidConfiguration && openidConfiguration.end_session_endpoint) {\n await fetch(openidConfiguration.end_session_endpoint, { credentials: 'include' })\n }\n }\n } catch (err) {\n // Do nothing\n }\n }\n window.location.reload()\n})\n\n/**\n * Workspace selection etc\n * See https://github.com/solid/userguide/issues/16\n */\n\n/**\n * Returns a UI object which, if it selects a workspace,\n * will callback(workspace, newBase).\n * See https://github.com/solid/userguide/issues/16 for more info on workspaces.\n *\n * If necessary, will get an account, preference file, etc. In sequence:\n *\n * - If not logged in, log in.\n * - Load preference file\n * - Prompt user for workspaces\n * - Allows the user to just type in a URI by hand\n *\n * Calls back with the workspace and the base URI\n *\n * @param dom\n * @param appDetails\n * @param callbackWS\n */\nexport function selectWorkspace (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callbackWS: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const noun = appDetails.noun\n const appPathSegment = appDetails.appPathSegment\n\n const me = defaultTestUser()\n const box = dom.createElement('div')\n const context: AuthenticationContext = { me: me, dom: dom, div: box }\n\n function say (s, background) {\n box.appendChild(widgets.errorMessageBlock(dom, s, background))\n }\n\n function figureOutBase (ws) {\n const newBaseNode: NamedNode = solidLogicSingleton.store.any(ws, ns.space('uriPrefix')) as NamedNode\n let newBaseString: string\n if (!newBaseNode) {\n newBaseString = ws.uri.split('#')[0]\n } else {\n newBaseString = newBaseNode.value\n }\n if (newBaseString.slice(-1) !== '/') {\n debug.log(`${appPathSegment}: No / at end of uriPrefix ${newBaseString}`) // @@ paramater?\n newBaseString = `${newBaseString}/`\n }\n const now = new Date()\n newBaseString += `${appPathSegment}/id${now.getTime()}/` // unique id\n return newBaseString\n }\n\n function displayOptions (context) {\n // console.log('displayOptions!', context)\n async function makeNewWorkspace (_event) {\n const row = table.appendChild(dom.createElement('tr'))\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.padding = '0.5em'\n const newBase = encodeURI(await widgets.askName(dom, solidLogicSingleton.store, cell, ns.solid('URL'), ns.space('Workspace'), 'Workspace'))\n const newWs = widgets.newThing(context.preferencesFile)\n const newData = [st(context.me, ns.space('workspace'), newWs, context.preferencesFile),\n // eslint-disable-next-line camelcase\n st(newWs, ns.space('uriPrefix'), newBase as unknown as Quad_Object, context.preferencesFile)]\n if (!solidLogicSingleton.store.updater) {\n throw new Error('store has no updater')\n }\n await solidLogicSingleton.store.updater.update([], newData)\n // @@ now refresh list of workspaces\n }\n\n // const status = ''\n const id = context.me\n const preferencesFile = context.preferencesFile\n let newBase: any = null\n\n // A workspace specifically defined in the private preference file:\n let w: any = solidLogicSingleton.store.each(id, ns.space('workspace'), undefined, preferencesFile) // Only trust preference file here\n\n // A workspace in a storage in the public profile:\n const storages = solidLogicSingleton.store.each(id, ns.space('storage')) // @@ No provenance requirement at the moment\n if (w.length === 0 && storages) {\n say(`You don't seem to have any workspaces. You have ${storages.length} storage spaces.`, 'white')\n storages.map(function (s: any) {\n w = w.concat(solidLogicSingleton.store.each(s, ns.ldp('contains')))\n return w\n }).filter(file => {\n return (file.id) ? ['public', 'private'].includes(file.id().toLowerCase()) : ''\n })\n }\n\n if (w.length === 1) {\n say(`Workspace used: ${w[0].uri}`, 'white') // @@ allow user to see URI\n newBase = figureOutBase(w[0])\n // callbackWS(w[0], newBase)\n // } else if (w.length === 0) {\n }\n\n // Prompt for ws selection or creation\n // say( w.length + \" workspaces for \" + id + \"Choose one.\");\n const table = dom.createElement('table')\n table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;')\n\n // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)\n box.appendChild(table)\n\n // Add a field for directly adding the URI yourself\n\n // const hr = box.appendChild(dom.createElement('hr')) // @@\n box.appendChild(dom.createElement('hr')) // @@\n\n const p = box.appendChild(dom.createElement('p'))\n ;(p as any).style = commentStyle\n p.textContent = `Where would you like to store the data for the ${noun}?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.`\n // @@ TODO Remove the need to cast baseField to any\n const baseField: any = box.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n ;(baseField as any).style = textInputStyle\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n if (newBase) {\n // set to default\n baseField.value = newBase\n }\n\n context.baseField = baseField\n\n box.appendChild(dom.createElement('br')) // @@\n\n const button = box.appendChild(dom.createElement('button'))\n ;(button as any).style = buttonStyle\n button.textContent = `Start new ${noun} at this URI`\n button.addEventListener('click', function (_event) {\n let newBase = baseField.value.replace(' ', '%20') // do not re-encode in general, as % encodings may exist\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n callbackWS(null, newBase)\n })\n\n // Now go set up the table of spaces\n\n // const row = 0\n w = w.filter(function (x) {\n return !solidLogicSingleton.store.holds(\n x,\n ns.rdf('type'), // Ignore master workspaces\n ns.space('MasterWorkspace')\n )\n })\n let col1, col2, col3, tr, ws, style, comment\n const cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;'\n const deselectedStyle = `${cellStyle}border: 0px;`\n // const selectedStyle = cellStyle + 'border: 1px solid black;'\n for (let i = 0; i < w.length; i++) {\n ws = w[i]\n tr = dom.createElement('tr')\n if (i === 0) {\n col1 = dom.createElement('td')\n col1.setAttribute('rowspan', `${w.length}`)\n col1.textContent = 'Choose a workspace for this:'\n col1.setAttribute('style', 'vertical-align:middle;')\n tr.appendChild(col1)\n }\n col2 = dom.createElement('td')\n style = solidLogicSingleton.store.anyValue(ws, ns.ui('style'))\n if (!style) {\n // Otherwise make up arbitrary colour\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n const bgcolor = `#${((hash(ws.uri) & 0xffffff) | 0xc0c0c0).toString(16)}` // c0c0c0 forces pale\n style = `color: black ; background-color: ${bgcolor};`\n }\n col2.setAttribute('style', deselectedStyle + style)\n tr.target = ws.uri\n let label = solidLogicSingleton.store.any(ws, ns.rdfs('label'))\n if (!label) {\n label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0]\n }\n col2.textContent = label || '???'\n tr.appendChild(col2)\n if (i === 0) {\n col3 = dom.createElement('td')\n col3.setAttribute('rowspan', `${w.length}1`)\n // col3.textContent = '@@@@@ remove';\n col3.setAttribute('style', 'width:50%;')\n tr.appendChild(col3)\n }\n table.appendChild(tr)\n\n comment = solidLogicSingleton.store.any(ws, ns.rdfs('comment'))\n comment = comment ? comment.value : 'Use this workspace'\n col2.addEventListener('click', function (_event) {\n col3.textContent = comment ? comment.value : ''\n col3.setAttribute('style', deselectedStyle + style)\n const button = dom.createElement('button')\n button.textContent = 'Continue'\n // button.setAttribute('style', style);\n const newBase = figureOutBase(ws)\n baseField.value = newBase // show user proposed URI\n\n button.addEventListener('click', function (_event) {\n button.disabled = true\n callbackWS(ws, newBase)\n button.textContent = '---->'\n }, true) // capture vs bubble\n col3.appendChild(button)\n }, true) // capture vs bubble\n }\n\n // last line with \"Make new workspace\"\n const trLast = dom.createElement('tr')\n col2 = dom.createElement('td')\n col2.setAttribute('style', cellStyle)\n col2.textContent = '+ Make a new workspace'\n col2.addEventListener('click', makeNewWorkspace)\n trLast.appendChild(col2)\n table.appendChild(trLast)\n } // displayOptions\n\n // console.log('kicking off async operation')\n logInLoadPreferences(context) // kick off async operation\n .then(displayOptions)\n .catch(err => {\n // console.log(\"err from async op\")\n box.appendChild(widgets.errorMessageBlock(context.dom, err))\n })\n\n return box // return the box element, while login proceeds\n} // selectWorkspace\n\n/**\n * Creates a new instance of an app.\n *\n * An instance of an app could be e.g. an issue tracker for a given project,\n * or a chess game, or calendar, or a health/fitness record for a person.\n *\n * Note that this use of the term 'app' refers more to entries in the user's\n * type index than to actual software applications that use the personal data\n * to which these entries point.\n *\n * @param dom\n * @param appDetails\n * @param callback\n *\n * @returns A div with a button in it for making a new app instance\n */\nexport function newAppInstance (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callback: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const gotWS = function (ws, base) {\n // log.debug(\"newAppInstance: Selected workspace = \" + (ws? ws.uri : 'none'))\n callback(ws, base)\n }\n const div = dom.createElement('div')\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n div.appendChild(b)\n b.innerHTML = `Make new ${appDetails.noun}`\n b.addEventListener('click', _event => {\n div.appendChild(selectWorkspace(dom, appDetails, gotWS))\n }, false)\n div.appendChild(b)\n return div\n}\n\n/**\n * Retrieves whether the currently logged in user is a power user\n * and/or a developer\n */\nexport async function getUserRoles (): Promise<Array<NamedNode>> {\n try {\n const {\n me,\n preferencesFile,\n preferencesFileError\n } = await logInLoadPreferences({})\n if (!preferencesFile || preferencesFileError) {\n throw new Error(preferencesFileError)\n }\n return solidLogicSingleton.store.each(me, ns.rdf('type'), null, preferencesFile.doc()) as NamedNode[]\n } catch (error) {\n debug.warn('Unable to fetch your preferences - this was the error: ', error)\n }\n return []\n}\n\n/**\n * Filters which panes should be available, based on the result of [[getUserRoles]]\n */\nexport async function filterAvailablePanes (panes: Array<PaneDefinition>): Promise<Array<PaneDefinition>> {\n const userRoles = await getUserRoles()\n return panes.filter(pane => isMatchingAudience(pane, userRoles))\n}\n\nfunction isMatchingAudience (pane: PaneDefinition, userRoles: Array<NamedNode>): boolean {\n const audience = pane.audience || []\n return audience.reduce(\n (isMatch, audienceRole) => isMatch && !!userRoles.find(role => role.equals(audienceRole)),\n true as boolean\n )\n}\n"],"file":"authn.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/authn/config-default.js"],"names":["authEndpoint","fallbackAuthEndpoint","signupEndpoint","signupWindowHeight","signupWindowWidth","key","cert"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;eACe;AAAE;;AACf;AACF;AACA;AACEA,EAAAA,YAAY,EAAE,EAJD;;AAMb;AACF;AACA;AACEC,EAAAA,oBAAoB,EAAE,qBATT;;AAWb;AACF;AACA;AACEC,EAAAA,cAAc,EAAE,qCAdH;;AAgBb;AACF;AACA;AACEC,EAAAA,kBAAkB,EAAE,GAnBP;;AAqBb;AACF;AACA;AACEC,EAAAA,iBAAiB,EAAE,IAxBN;;AA0Bb;AACF;AACA;AACEC,EAAAA,GAAG,EAAE,EA7BQ;;AA+Bb;AACF;AACA;AACEC,EAAAA,IAAI,EAAE;AAlCO,C","sourcesContent":["'use strict'\n/**\n * Provides a simple configuration object for Solid web client and other\n * modules.\n * @module config-default\n */\nexport default { // @@ should not use export default\n /**\n * Primary authentication endpoint\n */\n authEndpoint: '',\n\n /**\n * Fallback authentication endpoint\n */\n fallbackAuthEndpoint: 'https://databox.me/',\n\n /**\n * Default signup endpoints (list of identity providers)\n */\n signupEndpoint: 'https://solidproject.org/use-solid/',\n\n /**\n * Default height of the Signup popup window, in pixels\n */\n signupWindowHeight: 600,\n\n /**\n * Default width of the Signup popup window, in pixels\n */\n signupWindowWidth: 1024,\n\n /**\n * Path to the client private key (only needed when running within node)\n */\n key: '',\n\n /**\n * Path to the client certificate (only needed when running within node)\n */\n cert: ''\n}\n"],"file":"config-default.js"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Re-exports all the exports from the various files in the src/authn/ folder
3
- * @packageDocumentation
4
- */
5
- import { checkUser, // Async
6
- currentUser, // Sync
7
- defaultTestUser, // Sync
8
- filterAvailablePanes, // Async
9
- findAppInstances, findOriginOwner, getUserRoles, // Async
10
- loadTypeIndexes, logIn, logInLoadProfile, logInLoadPreferences, loginStatusBox, newAppInstance, offlineTestID, registerInTypeIndex, registrationControl, registrationList, selectWorkspace, setACLUserPublic, saveUser, renderSignInPopup } from './authn';
11
- export declare const authn: {
12
- checkUser: typeof checkUser;
13
- currentUser: typeof currentUser;
14
- defaultTestUser: typeof defaultTestUser;
15
- filterAvailablePanes: typeof filterAvailablePanes;
16
- findAppInstances: typeof findAppInstances;
17
- findOriginOwner: typeof findOriginOwner;
18
- getUserRoles: typeof getUserRoles;
19
- loadTypeIndexes: typeof loadTypeIndexes;
20
- logIn: typeof logIn;
21
- logInLoadProfile: typeof logInLoadProfile;
22
- logInLoadPreferences: typeof logInLoadPreferences;
23
- loginStatusBox: typeof loginStatusBox;
24
- newAppInstance: typeof newAppInstance;
25
- offlineTestID: typeof offlineTestID;
26
- registerInTypeIndex: typeof registerInTypeIndex;
27
- registrationControl: typeof registrationControl;
28
- registrationList: typeof registrationList;
29
- selectWorkspace: typeof selectWorkspace;
30
- setACLUserPublic: typeof setACLUserPublic;
31
- saveUser: typeof saveUser;
32
- authSession: import("@inrupt/solid-client-authn-browser").Session;
33
- renderSignInPopup: typeof renderSignInPopup;
34
- };
35
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authn/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EAAE,QAAQ;AACnB,WAAW,EAAE,OAAO;AACpB,eAAe,EAAE,OAAO;AACxB,oBAAoB,EAAE,QAAQ;AAC9B,gBAAgB,EAChB,eAAe,EACf,YAAY,EAAE,QAAQ;AACtB,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EAER,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;CAuBjB,CAAA"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.authn = void 0;
7
-
8
- var _authn = require("./authn");
9
-
10
- /**
11
- * Re-exports all the exports from the various files in the src/authn/ folder
12
- * @packageDocumentation
13
- */
14
- var authn = {
15
- checkUser: _authn.checkUser,
16
- // Async
17
- currentUser: _authn.currentUser,
18
- // Sync
19
- defaultTestUser: _authn.defaultTestUser,
20
- // Sync
21
- filterAvailablePanes: _authn.filterAvailablePanes,
22
- // Async
23
- findAppInstances: _authn.findAppInstances,
24
- findOriginOwner: _authn.findOriginOwner,
25
- getUserRoles: _authn.getUserRoles,
26
- // Async
27
- loadTypeIndexes: _authn.loadTypeIndexes,
28
- logIn: _authn.logIn,
29
- logInLoadProfile: _authn.logInLoadProfile,
30
- logInLoadPreferences: _authn.logInLoadPreferences,
31
- loginStatusBox: _authn.loginStatusBox,
32
- newAppInstance: _authn.newAppInstance,
33
- offlineTestID: _authn.offlineTestID,
34
- registerInTypeIndex: _authn.registerInTypeIndex,
35
- registrationControl: _authn.registrationControl,
36
- registrationList: _authn.registrationList,
37
- selectWorkspace: _authn.selectWorkspace,
38
- setACLUserPublic: _authn.setACLUserPublic,
39
- saveUser: _authn.saveUser,
40
- authSession: _authn.authSession,
41
- renderSignInPopup: _authn.renderSignInPopup
42
- };
43
- exports.authn = authn;
44
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/authn/index.ts"],"names":["authn","checkUser","currentUser","defaultTestUser","filterAvailablePanes","findAppInstances","findOriginOwner","getUserRoles","loadTypeIndexes","logIn","logInLoadProfile","logInLoadPreferences","loginStatusBox","newAppInstance","offlineTestID","registerInTypeIndex","registrationControl","registrationList","selectWorkspace","setACLUserPublic","saveUser","authSession","renderSignInPopup"],"mappings":";;;;;;;AAKA;;AALA;AACA;AACA;AACA;AA2BO,IAAMA,KAAK,GAAG;AACnBC,EAAAA,SAAS,EAATA,gBADmB;AACR;AACXC,EAAAA,WAAW,EAAXA,kBAFmB;AAEN;AACbC,EAAAA,eAAe,EAAfA,sBAHmB;AAGF;AACjBC,EAAAA,oBAAoB,EAApBA,2BAJmB;AAIG;AACtBC,EAAAA,gBAAgB,EAAhBA,uBALmB;AAMnBC,EAAAA,eAAe,EAAfA,sBANmB;AAOnBC,EAAAA,YAAY,EAAZA,mBAPmB;AAOL;AACdC,EAAAA,eAAe,EAAfA,sBARmB;AASnBC,EAAAA,KAAK,EAALA,YATmB;AAUnBC,EAAAA,gBAAgB,EAAhBA,uBAVmB;AAWnBC,EAAAA,oBAAoB,EAApBA,2BAXmB;AAYnBC,EAAAA,cAAc,EAAdA,qBAZmB;AAanBC,EAAAA,cAAc,EAAdA,qBAbmB;AAcnBC,EAAAA,aAAa,EAAbA,oBAdmB;AAenBC,EAAAA,mBAAmB,EAAnBA,0BAfmB;AAgBnBC,EAAAA,mBAAmB,EAAnBA,0BAhBmB;AAiBnBC,EAAAA,gBAAgB,EAAhBA,uBAjBmB;AAkBnBC,EAAAA,eAAe,EAAfA,sBAlBmB;AAmBnBC,EAAAA,gBAAgB,EAAhBA,uBAnBmB;AAoBnBC,EAAAA,QAAQ,EAARA,eApBmB;AAqBnBC,EAAAA,WAAW,EAAXA,kBArBmB;AAsBnBC,EAAAA,iBAAiB,EAAjBA;AAtBmB,CAAd","sourcesContent":["/**\n * Re-exports all the exports from the various files in the src/authn/ folder\n * @packageDocumentation\n */\n\nimport {\n checkUser, // Async\n currentUser, // Sync\n defaultTestUser, // Sync\n filterAvailablePanes, // Async\n findAppInstances,\n findOriginOwner,\n getUserRoles, // Async\n loadTypeIndexes,\n logIn,\n logInLoadProfile,\n logInLoadPreferences,\n loginStatusBox,\n newAppInstance,\n offlineTestID,\n registerInTypeIndex,\n registrationControl,\n registrationList,\n selectWorkspace,\n setACLUserPublic,\n saveUser,\n authSession,\n renderSignInPopup\n} from './authn'\n\nexport const authn = {\n checkUser, // Async\n currentUser, // Sync\n defaultTestUser, // Sync\n filterAvailablePanes, // Async\n findAppInstances,\n findOriginOwner,\n getUserRoles, // Async\n loadTypeIndexes,\n logIn,\n logInLoadProfile,\n logInLoadPreferences,\n loginStatusBox,\n newAppInstance,\n offlineTestID,\n registerInTypeIndex,\n registrationControl,\n registrationList,\n selectWorkspace,\n setACLUserPublic,\n saveUser,\n authSession,\n renderSignInPopup\n}\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/authn/signup.js"],"names":["Signup","config","defaultConfig","prototype","listen","promise","Promise","resolve","reject","eventMethod","window","addEventListener","eventListener","messageEvent","e","u","data","slice","user","length","signup","signupUrl","signupEndpoint","width","signupWindowWidth","height","signupWindowHeight","leftPosition","screen","topPosition","windowTitle","windowUrl","encodeURIComponent","location","origin","windowSpecs","open","self","then","webid"],"mappings":";;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAASA,MAAT,CAAiBC,MAAjB,EAAyB;AAC9B,OAAKA,MAAL,GAAcA,MAAM,IAAIC,yBAAxB;AACD;AAED;AACA;AACA;AACA;AACA;;;AACAF,MAAM,CAACG,SAAP,CAAiBC,MAAjB,GAA0B,SAASA,MAAT,GAAmB;AAC3C,MAAMC,OAAO,GAAG,IAAIC,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;AACrD,QAAMC,WAAW,GAAGC,MAAM,CAACC,gBAAP,GAChB,kBADgB,GAEhB,aAFJ;AAGA,QAAMC,aAAa,GAAGF,MAAM,CAACD,WAAD,CAA5B;AACA,QAAMI,YAAY,GAAGJ,WAAW,KAAK,aAAhB,GACjB,WADiB,GAEjB,SAFJ;AAGAG,IAAAA,aAAa,CAACC,YAAD,EAAe,UAAUC,CAAV,EAAa;AACvC,UAAMC,CAAC,GAAGD,CAAC,CAACE,IAAZ;;AACA,UAAID,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAW,CAAX,MAAkB,OAAtB,EAA+B;AAC7B,YAAMC,IAAI,GAAGH,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAWF,CAAC,CAACI,MAAb,CAAb;;AACA,YAAID,IAAI,IAAIA,IAAI,CAACC,MAAL,GAAc,CAAtB,IAA2BD,IAAI,CAACD,KAAL,CAAW,CAAX,EAAc,CAAd,MAAqB,MAApD,EAA4D;AAC1D,iBAAOV,OAAO,CAACW,IAAD,CAAd;AACD,SAFD,MAEO;AACL,iBAAOV,MAAM,CAACU,IAAD,CAAb;AACD;AACF;AACF,KAVY,EAUV,IAVU,CAAb;AAWD,GAnBe,CAAhB;AAoBA,SAAOb,OAAP;AACD,CAtBD;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAL,MAAM,CAACG,SAAP,CAAiBiB,MAAjB,GAA0B,SAASA,MAAT,CAAiBC,SAAjB,EAA4B;AACpDA,EAAAA,SAAS,GAAGA,SAAS,IAAI,KAAKpB,MAAL,CAAYqB,cAArC;AACA,MAAMC,KAAK,GAAG,KAAKtB,MAAL,CAAYuB,iBAA1B;AACA,MAAMC,MAAM,GAAG,KAAKxB,MAAL,CAAYyB,kBAA3B,CAHoD,CAIpD;;AACA,MAAMC,YAAY,GAAIjB,MAAM,CAACkB,MAAP,CAAcL,KAAd,GAAsB,CAAvB,IAA8BA,KAAK,GAAG,CAAT,GAAc,EAA3C,CAArB,CALoD,CAMpD;;AACA,MAAMM,WAAW,GAAInB,MAAM,CAACkB,MAAP,CAAcH,MAAd,GAAuB,CAAxB,IAA+BA,MAAM,GAAG,CAAV,GAAe,EAA7C,CAApB;AACA,MAAMK,WAAW,GAAG,cAApB;AACA,MAAMC,SAAS,GAAGV,SAAS,GAAG,UAAZ,GAChBW,kBAAkB,CAACtB,MAAM,CAACuB,QAAP,CAAgBC,MAAjB,CADpB;AAEA,MAAMC,WAAW,GAAG,uCAAuCZ,KAAvC,GAA+C,UAA/C,GAClBE,MADkB,GACT,QADS,GACEE,YADF,GACiB,OADjB,GAC2BE,WAD/C;AAEAnB,EAAAA,MAAM,CAAC0B,IAAP,CAAYL,SAAZ,EAAuBD,WAAvB,EAAoCK,WAApC;AACA,MAAME,IAAI,GAAG,IAAb;AACA,SAAO,IAAI/B,OAAJ,CAAY,UAAUC,OAAV,EAAmB;AACpC8B,IAAAA,IAAI,CAACjC,MAAL,GACGkC,IADH,CACQ,UAAUC,KAAV,EAAiB;AACrB,aAAOhC,OAAO,CAACgC,KAAD,CAAd;AACD,KAHH;AAID,GALM,CAAP;AAMD,CArBD","sourcesContent":["import defaultConfig from './config-default'\n\n/**\n * Provides functionality for signing up with a Solid provider\n * @module signup\n */\n\n/**\n * Creates a Signup UI manager\n * @class\n */\nexport function Signup (config) {\n this.config = config || defaultConfig\n}\n\n/**\n * Sets up an event listener to monitor login messages from child window/iframe\n * @method listen\n * @return {Promise<String>} Event listener promise, resolves to user's WebID\n */\nSignup.prototype.listen = function listen () {\n const promise = new Promise(function (resolve, reject) {\n const eventMethod = window.addEventListener\n ? 'addEventListener'\n : 'attachEvent'\n const eventListener = window[eventMethod]\n const messageEvent = eventMethod === 'attachEvent'\n ? 'onmessage'\n : 'message'\n eventListener(messageEvent, function (e) {\n const u = e.data\n if (u.slice(0, 5) === 'User:') {\n const user = u.slice(5, u.length)\n if (user && user.length > 0 && user.slice(0, 4) === 'http') {\n return resolve(user)\n } else {\n return reject(user)\n }\n }\n }, true)\n })\n return promise\n}\n\n/**\n * Opens a signup popup window, sets up `listen()`.\n * @method signup\n * @static\n * @param signupUrl {String} Location of a Solid server for user signup.\n * @return {Promise<String>} Returns a listener promise, resolves with signed\n * up user's WebID.\n */\nSignup.prototype.signup = function signup (signupUrl) {\n signupUrl = signupUrl || this.config.signupEndpoint\n const width = this.config.signupWindowWidth\n const height = this.config.signupWindowHeight\n // set borders\n const leftPosition = (window.screen.width / 2) - ((width / 2) + 10)\n // set title and status bars\n const topPosition = (window.screen.height / 2) - ((height / 2) + 50)\n const windowTitle = 'Solid signup'\n const windowUrl = signupUrl + '?origin=' +\n encodeURIComponent(window.location.origin)\n const windowSpecs = 'resizable,scrollbars,status,width=' + width + ',height=' +\n height + ',left=' + leftPosition + ',top=' + topPosition\n window.open(windowUrl, windowTitle, windowSpecs)\n const self = this\n return new Promise(function (resolve) {\n self.listen()\n .then(function (webid) {\n return resolve(webid)\n })\n })\n}\n"],"file":"signup.js"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Contains types for src/acl/
3
- * @packageDocumentation
4
- */
5
- import { NamedNode } from 'rdflib';
6
- export declare type AppDetails = {
7
- noun: string;
8
- appPathSegment: string;
9
- };
10
- export declare type AuthenticationContext = {
11
- containers?: Array<NamedNode>;
12
- div?: HTMLElement;
13
- dom?: HTMLDocument;
14
- index?: {
15
- [key: string]: Array<NamedNode>;
16
- };
17
- instances?: Array<NamedNode>;
18
- me?: NamedNode | null;
19
- noun?: string;
20
- preferencesFile?: NamedNode;
21
- preferencesFileError?: string;
22
- publicProfile?: NamedNode;
23
- statusArea?: HTMLElement;
24
- };
25
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/authn/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,oBAAY,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;KAAE,CAAA;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5B,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,SAAS,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,CAAA"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
package/lib/logic.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { SolidLogic } from 'solid-logic';
2
- export declare const solidLogicSingleton: SolidLogic;
3
- export declare const store: import("rdflib").LiveStore;
4
- export declare const kb: import("rdflib").LiveStore;
5
- export declare const authn: import("solid-logic/lib/authn").AuthnLogic;
6
- export declare const chat: import("solid-logic/lib/chat/ChatLogic").ChatLogic;
7
- export declare const profile: import("solid-logic/lib/profile/ProfileLogic").ProfileLogic;
8
- //# sourceMappingURL=logic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAYxC,eAAO,MAAM,mBAAmB,YAAoD,CAAA;AAGpF,eAAO,MAAM,KAAK,4BAA4B,CAAA;AAC9C,eAAO,MAAM,EAAE,4BAAQ,CAAA;AAEvB,eAAO,MAAM,KAAK,4CAA4B,CAAA;AAC9C,eAAO,MAAM,IAAI,oDAA2B,CAAA;AAI5C,eAAO,MAAM,OAAO,6DAA8B,CAAA"}
package/lib/logic.js DELETED
@@ -1,79 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.store = exports.solidLogicSingleton = exports.profile = exports.kb = exports.chat = exports.authn = void 0;
11
-
12
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var debug = _interopRequireWildcard(require("./debug"));
17
-
18
- var _authSession = _interopRequireDefault(require("./authn/authSession"));
19
-
20
- var _solidLogic = require("solid-logic");
21
-
22
- 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); }
23
-
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
- // This module of solid-ui has a main quadstore for the app to use
27
- //
28
- function thisFetch(_x, _x2) {
29
- return _thisFetch.apply(this, arguments);
30
- }
31
-
32
- function _thisFetch() {
33
- _thisFetch = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(url, requestInit) {
34
- var omitCreds;
35
- return _regenerator["default"].wrap(function _callee$(_context) {
36
- while (1) {
37
- switch (_context.prev = _context.next) {
38
- case 0:
39
- omitCreds = requestInit && requestInit.credentials && requestInit.credentials === 'omit';
40
-
41
- if (!(_authSession["default"].info.webId && !omitCreds)) {
42
- _context.next = 5;
43
- break;
44
- }
45
-
46
- return _context.abrupt("return", _authSession["default"].fetch(url, requestInit));
47
-
48
- case 5:
49
- return _context.abrupt("return", window.fetch(url, requestInit));
50
-
51
- case 6:
52
- case "end":
53
- return _context.stop();
54
- }
55
- }
56
- }, _callee);
57
- }));
58
- return _thisFetch.apply(this, arguments);
59
- }
60
-
61
- var solidLogicSingleton = new _solidLogic.SolidLogic({
62
- fetch: thisFetch
63
- }, _authSession["default"]); // Make this directly accessible as it is what you need most of the time
64
-
65
- exports.solidLogicSingleton = solidLogicSingleton;
66
- var store = solidLogicSingleton.store;
67
- exports.store = store;
68
- var kb = store; // Very commonly used synonym of store - Knowledge Base
69
-
70
- exports.kb = kb;
71
- var authn = solidLogicSingleton.authn;
72
- exports.authn = authn;
73
- var chat = solidLogicSingleton.chat; // export const language = solidLogicSingleton.language // Does not work
74
-
75
- exports.chat = chat;
76
- var profile = solidLogicSingleton.profile;
77
- exports.profile = profile;
78
- debug.log('Unique quadstore initialized.'); // ends
79
- //# sourceMappingURL=logic.js.map
package/lib/logic.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logic.ts"],"names":["thisFetch","url","requestInit","omitCreds","credentials","authSession","info","webId","fetch","window","solidLogicSingleton","SolidLogic","store","kb","authn","chat","profile","debug","log"],"mappings":";;;;;;;;;;;;;;;AAGA;;AACA;;AACA;;;;;;AALA;AACA;SAMeA,S;;;;;6FAAf,iBAA0BC,GAA1B,EAA+BC,WAA/B;AAAA;AAAA;AAAA;AAAA;AAAA;AACQC,YAAAA,SADR,GACoBD,WAAW,IAAIA,WAAW,CAACE,WAA3B,IAA0CF,WAAW,CAACE,WAAZ,KAA4B,MAD1F;;AAAA,kBAEMC,wBAAYC,IAAZ,CAAiBC,KAAjB,IAA0B,CAACJ,SAFjC;AAAA;AAAA;AAAA;;AAAA,6CAIWE,wBAAYG,KAAZ,CAAkBP,GAAlB,EAAuBC,WAAvB,CAJX;;AAAA;AAAA,6CAMWO,MAAM,CAACD,KAAP,CAAaP,GAAb,EAAkBC,WAAlB,CANX;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAUO,IAAMQ,mBAAmB,GAAG,IAAIC,sBAAJ,CAAe;AAAEH,EAAAA,KAAK,EAAER;AAAT,CAAf,EAAqCK,uBAArC,CAA5B,C,CAEP;;;AACO,IAAMO,KAAK,GAAGF,mBAAmB,CAACE,KAAlC;;AACA,IAAMC,EAAE,GAAGD,KAAX,C,CAAiB;;;AAEjB,IAAME,KAAK,GAAGJ,mBAAmB,CAACI,KAAlC;;AACA,IAAMC,IAAI,GAAGL,mBAAmB,CAACK,IAAjC,C,CAEP;;;AAEO,IAAMC,OAAO,GAAGN,mBAAmB,CAACM,OAApC;;AAEPC,KAAK,CAACC,GAAN,CAAU,+BAAV,E,CAEA","sourcesContent":["// This module of solid-ui has a main quadstore for the app to use\n//\n\nimport * as debug from './debug'\nimport authSession from './authn/authSession'\nimport { SolidLogic } from 'solid-logic'\n\nasync function thisFetch (url, requestInit) {\n const omitCreds = requestInit && requestInit.credentials && requestInit.credentials === 'omit'\n if (authSession.info.webId && !omitCreds) { // see https://github.com/solid/solidos/issues/114\n // In fact ftech should respect crentials omit itself\n return authSession.fetch(url, requestInit)\n } else {\n return window.fetch(url, requestInit)\n }\n}\n\nexport const solidLogicSingleton = new SolidLogic({ fetch: thisFetch }, authSession)\n\n// Make this directly accessible as it is what you need most of the time\nexport const store = solidLogicSingleton.store\nexport const kb = store // Very commonly used synonym of store - Knowledge Base\n\nexport const authn = solidLogicSingleton.authn\nexport const chat = solidLogicSingleton.chat\n\n// export const language = solidLogicSingleton.language // Does not work\n\nexport const profile = solidLogicSingleton.profile\n\ndebug.log('Unique quadstore initialized.')\n\n// ends\n"],"file":"logic.js"}