solid-ui 2.4.27-dc50c4e2 → 2.4.27-e6d67dd8
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.
- package/dist/solid-ui.js +351 -117
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.map +1 -1
- package/lib/chat/keys.d.ts +1 -1
- package/lib/chat/keys.d.ts.map +1 -1
- package/lib/chat/keys.js +171 -99
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +22 -15
- package/lib/chat/message.js.map +1 -1
- package/lib/utils/cryptoKeyHelpers.d.ts +5 -0
- package/lib/utils/cryptoKeyHelpers.d.ts.map +1 -0
- package/lib/utils/cryptoKeyHelpers.js +145 -0
- package/lib/utils/cryptoKeyHelpers.js.map +1 -0
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +1 -1
package/lib/chat/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","names":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","colorizeByAuthor","dct","latestVersion","mostRecentVersion","latestVersionCreator","msgId","content","sioc","signature","concat","SEC","log","msg","getBlankMsg","id","created","maker","pubKey","getPublicKey","verifySignature","Error","originalMessage","originalVersion","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","para","isImage","expandImagesInline","anc","href","bgcolor","lightColorHash","getBgColor","strip","sentimentStripLinked","children","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","messageToolbar","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","_x","_handleFieldInput","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee5","wrap","_callee5$","_context6","prev","sendMessage","field","stop","_x2","_x3","_sendMessage","_callee6","fromMainField","sendComplete","statusArea","_callee6$","_context7","_sendComplete","_text2","insertMessageIntoTable","oldRow","warn","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","sent","t0","errorMessageBlock","abrupt","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x4","_x5","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x6","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x7","_tookPicture","_callee4","_callee4$","_context5","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","_ref3","_callee3","_callee3$","_context4","code","shiftKey","shiftEnterSendsMessage","_x8","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","then","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"sourcesContent":["/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { ensureLoggedIn } from '../login/login'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message, read-only mode\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = mostRecentVersion(message)\n const latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n // use latest content if same owner, else use original\n const msgId = creator === latestVersionCreator ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n const signature = store.any(msgId, $rdf.sym(`${SEC}Proof`))\n debug.log('alain ' + signature?.value)\n\n // verify signature\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n try {\n // pubKey could be store in a cache for all makers\n const pubKey = getPublicKey(creator.uri)\n /* const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'\n debug.warn('publicKeys\\n' + pubKey0 + '\\n' + pubKey)\n const privKey0 = getPrivateKey(creator.uri) // alain to remove\n // unsigned messages should be signaled as unsecured\n debug.warn(msg)\n debug.warn(signature?.value) */\n if (signature?.value && !verifySignature(signature.value, msg, pubKey)) throw new Error('invalid signature')\n } catch (err) {\n debug.log(err)\n }\n const originalMessage = originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) // In message\n\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n\nexport function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom }\n\n ensureLoggedIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // console.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.js","names":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","colorizeByAuthor","dct","latestVersion","mostRecentVersion","latestVersionCreator","msgId","content","sioc","signature","concat","SEC","msg","getBlankMsg","id","created","maker","warn","getPublicKey","then","publicKey","log","regex","match","verifySignature","originalMessage","originalVersion","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","para","isImage","expandImagesInline","anc","href","bgcolor","lightColorHash","getBgColor","strip","sentimentStripLinked","children","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","messageToolbar","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","_x","_handleFieldInput","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee5","wrap","_callee5$","_context6","prev","sendMessage","field","stop","_x2","_x3","_sendMessage","_callee6","fromMainField","sendComplete","statusArea","_callee6$","_context7","_sendComplete","_text2","insertMessageIntoTable","oldRow","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","sent","t0","errorMessageBlock","abrupt","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x4","_x5","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x6","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x7","_tookPicture","_callee4","_callee4$","_context5","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","_ref3","_callee3","_callee3$","_context4","code","shiftKey","shiftEnterSendsMessage","_x8","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"sourcesContent":["/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { ensureLoggedIn } from '../login/login'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message, read-only mode\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = mostRecentVersion(message)\n const latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n const msgId = creator.uri === latestVersionCreator.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n const signature = store.any(msgId, $rdf.sym(`${SEC}Proof`))\n\n // set message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n // unsigned message\n if (!signature?.value) debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n\n // signed message, get public key and check signature\n else {\n getPublicKey(creator.uri).then(publicKey => {\n debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n // TODO try to recreate the publicKey\n // if(me.uri === creator.uri) await getPrivateKey(creator.uri)\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n if (!publicKey?.match(regex)) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n // verify signature\n else if (signature?.value && !verifySignature(signature?.value, msg, publicKey)) debug.warn('invalid signature\\n' + msg.id)\n })\n }\n\n const originalMessage = originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) // In message\n\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n\nexport function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom }\n\n ensureLoggedIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // console.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const pubKeyUrl: (webId: string) => string;
|
|
2
|
+
export declare function publicKeyExists(webId: string): Promise<string | undefined>;
|
|
3
|
+
export declare const privKeyUrl: (webId: string) => string;
|
|
4
|
+
export declare function privateKeyExists(webId: string): Promise<string | undefined>;
|
|
5
|
+
//# sourceMappingURL=cryptoKeyHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoKeyHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/cryptoKeyHelpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,UAAW,MAAM,WAStC,CAAA;AAED,wBAAsB,eAAe,CAAE,KAAK,EAAE,MAAM,+BAInD;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,WASvC,CAAA;AAED,wBAAsB,gBAAgB,CAAE,KAAK,EAAE,MAAM,+BAIpD"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.privKeyUrl = void 0;
|
|
9
|
+
exports.privateKeyExists = privateKeyExists;
|
|
10
|
+
exports.pubKeyUrl = void 0;
|
|
11
|
+
exports.publicKeyExists = publicKeyExists;
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
+
var debug = _interopRequireWildcard(require("../debug"));
|
|
15
|
+
var _signature = require("../chat/signature");
|
|
16
|
+
var _solidLogic = require("solid-logic");
|
|
17
|
+
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); }
|
|
18
|
+
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; }
|
|
19
|
+
var pubKeyUrl = function pubKeyUrl(webId) {
|
|
20
|
+
var url = new URL(webId);
|
|
21
|
+
// find storage in webId
|
|
22
|
+
var storage = _solidLogic.store.each(_solidLogic.store.sym(webId), _solidLogic.store.sym('http://www.w3.org/ns/pim/space#storage'));
|
|
23
|
+
var pod = storage.length === 1 ? storage : storage.find(function (node) {
|
|
24
|
+
return url.origin === new URL(node.value).origin;
|
|
25
|
+
});
|
|
26
|
+
var podUrl = Array.isArray(pod) ? pod[0] : pod;
|
|
27
|
+
if (!(podUrl !== null && podUrl !== void 0 && podUrl.value)) throw Error('No space:storage in ' + webId);
|
|
28
|
+
var publicKeyUrl = podUrl.value + 'profile/keys/publicKey.ttl';
|
|
29
|
+
return publicKeyUrl;
|
|
30
|
+
};
|
|
31
|
+
exports.pubKeyUrl = pubKeyUrl;
|
|
32
|
+
function publicKeyExists(_x) {
|
|
33
|
+
return _publicKeyExists.apply(this, arguments);
|
|
34
|
+
}
|
|
35
|
+
function _publicKeyExists() {
|
|
36
|
+
_publicKeyExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(webId) {
|
|
37
|
+
var publicKeyUrl;
|
|
38
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
39
|
+
while (1) switch (_context.prev = _context.next) {
|
|
40
|
+
case 0:
|
|
41
|
+
// find publickey
|
|
42
|
+
publicKeyUrl = pubKeyUrl(webId);
|
|
43
|
+
_context.next = 3;
|
|
44
|
+
return keyExists(webId, publicKeyUrl, 'PublicKey');
|
|
45
|
+
case 3:
|
|
46
|
+
return _context.abrupt("return", _context.sent);
|
|
47
|
+
case 4:
|
|
48
|
+
case "end":
|
|
49
|
+
return _context.stop();
|
|
50
|
+
}
|
|
51
|
+
}, _callee);
|
|
52
|
+
}));
|
|
53
|
+
return _publicKeyExists.apply(this, arguments);
|
|
54
|
+
}
|
|
55
|
+
var privKeyUrl = function privKeyUrl(webId) {
|
|
56
|
+
var url = new URL(webId);
|
|
57
|
+
// find storage in webId
|
|
58
|
+
var storage = _solidLogic.store.each(_solidLogic.store.sym(webId), _solidLogic.store.sym('http://www.w3.org/ns/pim/space#storage'));
|
|
59
|
+
var pod = storage.length === 1 ? storage : storage.find(function (node) {
|
|
60
|
+
return url.origin === new URL(node.value).origin;
|
|
61
|
+
});
|
|
62
|
+
var podUrl = Array.isArray(pod) ? pod[0] : pod;
|
|
63
|
+
if (!(podUrl !== null && podUrl !== void 0 && podUrl.value)) throw Error('Expected space:storage in ' + webId);
|
|
64
|
+
var privateKeyUrl = (podUrl === null || podUrl === void 0 ? void 0 : podUrl.value) + 'profile/keys/privateKey.ttl';
|
|
65
|
+
return privateKeyUrl;
|
|
66
|
+
};
|
|
67
|
+
exports.privKeyUrl = privKeyUrl;
|
|
68
|
+
function privateKeyExists(_x2) {
|
|
69
|
+
return _privateKeyExists.apply(this, arguments);
|
|
70
|
+
}
|
|
71
|
+
function _privateKeyExists() {
|
|
72
|
+
_privateKeyExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId) {
|
|
73
|
+
var privateKeyUrl;
|
|
74
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
75
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
// find privateKey
|
|
78
|
+
privateKeyUrl = privKeyUrl(webId);
|
|
79
|
+
_context2.next = 3;
|
|
80
|
+
return keyExists(webId, privateKeyUrl, 'PrivateKey');
|
|
81
|
+
case 3:
|
|
82
|
+
return _context2.abrupt("return", _context2.sent);
|
|
83
|
+
case 4:
|
|
84
|
+
case "end":
|
|
85
|
+
return _context2.stop();
|
|
86
|
+
}
|
|
87
|
+
}, _callee2);
|
|
88
|
+
}));
|
|
89
|
+
return _privateKeyExists.apply(this, arguments);
|
|
90
|
+
}
|
|
91
|
+
function keyExists(_x3, _x4, _x5) {
|
|
92
|
+
return _keyExists.apply(this, arguments);
|
|
93
|
+
}
|
|
94
|
+
function _keyExists() {
|
|
95
|
+
_keyExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId, keyUrl, keyType) {
|
|
96
|
+
var key, _err$response, data, contentType, response;
|
|
97
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
98
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
99
|
+
case 0:
|
|
100
|
+
_context3.prev = 0;
|
|
101
|
+
_context3.next = 3;
|
|
102
|
+
return _solidLogic.store.fetcher.load(keyUrl);
|
|
103
|
+
case 3:
|
|
104
|
+
key = _solidLogic.store.any(_solidLogic.store.sym(webId), _solidLogic.store.sym(_signature.CERT + keyType));
|
|
105
|
+
return _context3.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
|
|
106
|
+
case 7:
|
|
107
|
+
_context3.prev = 7;
|
|
108
|
+
_context3.t0 = _context3["catch"](0);
|
|
109
|
+
if (!((_context3.t0 === null || _context3.t0 === void 0 ? void 0 : (_err$response = _context3.t0.response) === null || _err$response === void 0 ? void 0 : _err$response.status) === 404)) {
|
|
110
|
+
_context3.next = 24;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
_context3.prev = 10;
|
|
114
|
+
// create privateKey resource
|
|
115
|
+
data = '';
|
|
116
|
+
contentType = 'text/turtle';
|
|
117
|
+
_context3.next = 15;
|
|
118
|
+
return _solidLogic.store.fetcher.webOperation('PUT', keyUrl, {
|
|
119
|
+
data: data,
|
|
120
|
+
contentType: contentType
|
|
121
|
+
});
|
|
122
|
+
case 15:
|
|
123
|
+
response = _context3.sent;
|
|
124
|
+
_context3.next = 22;
|
|
125
|
+
break;
|
|
126
|
+
case 18:
|
|
127
|
+
_context3.prev = 18;
|
|
128
|
+
_context3.t1 = _context3["catch"](10);
|
|
129
|
+
debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context3.t1);
|
|
130
|
+
throw _context3.t1;
|
|
131
|
+
case 22:
|
|
132
|
+
delete _solidLogic.store.fetcher.requested[keyUrl]; // delete cached 404 error
|
|
133
|
+
return _context3.abrupt("return", undefined);
|
|
134
|
+
case 24:
|
|
135
|
+
debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context3.t0);
|
|
136
|
+
throw _context3.t0;
|
|
137
|
+
case 26:
|
|
138
|
+
case "end":
|
|
139
|
+
return _context3.stop();
|
|
140
|
+
}
|
|
141
|
+
}, _callee3, null, [[0, 7], [10, 18]]);
|
|
142
|
+
}));
|
|
143
|
+
return _keyExists.apply(this, arguments);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=cryptoKeyHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoKeyHelpers.js","names":["debug","_interopRequireWildcard","require","_signature","_solidLogic","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","pubKeyUrl","webId","url","URL","storage","store","each","sym","pod","length","find","node","origin","value","podUrl","Array","isArray","Error","publicKeyUrl","exports","publicKeyExists","_x","_publicKeyExists","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","keyExists","abrupt","sent","stop","privKeyUrl","privateKeyUrl","privateKeyExists","_x2","_privateKeyExists","_callee2","_callee2$","_context2","_x3","_x4","_x5","_keyExists","_callee3","keyUrl","keyType","_err$response","data","contentType","response","_callee3$","_context3","fetcher","load","any","CERT","t0","status","webOperation","t1","log","requested","undefined"],"sources":["../../src/utils/cryptoKeyHelpers.ts"],"sourcesContent":["import * as debug from '../debug'\nimport { CERT } from '../chat/signature'\nimport { store } from 'solid-logic'\n\nexport const pubKeyUrl = (webId: string) => {\n const url = new URL(webId)\n // find storage in webId\n const storage = store.each(store.sym(webId), store.sym('http://www.w3.org/ns/pim/space#storage'))\n const pod = storage.length === 1 ? storage : storage.find(node => url.origin === new URL(node.value).origin)\n const podUrl = Array.isArray(pod) ? pod[0] : pod\n if (!podUrl?.value) throw Error('No space:storage in ' + webId)\n const publicKeyUrl = podUrl.value + 'profile/keys/publicKey.ttl'\n return publicKeyUrl\n}\n\nexport async function publicKeyExists (webId: string) {\n // find publickey\n const publicKeyUrl = pubKeyUrl(webId)\n return await keyExists(webId, publicKeyUrl, 'PublicKey')\n}\n\nexport const privKeyUrl = (webId: string) => {\n const url = new URL(webId)\n // find storage in webId\n const storage = store.each(store.sym(webId), store.sym('http://www.w3.org/ns/pim/space#storage'))\n const pod = storage.length === 1 ? storage : storage.find(node => url.origin === new URL(node.value).origin)\n const podUrl = Array.isArray(pod) ? pod[0] : pod\n if (!podUrl?.value) throw Error('Expected space:storage in ' + webId)\n const privateKeyUrl = podUrl?.value + 'profile/keys/privateKey.ttl'\n return privateKeyUrl\n}\n\nexport async function privateKeyExists (webId: string) {\n // find privateKey\n const privateKeyUrl = privKeyUrl(webId)\n return await keyExists(webId, privateKeyUrl, 'PrivateKey')\n}\n\ntype KeyType = 'PublicKey' | 'PrivateKey'\n\nasync function keyExists (webId, keyUrl, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(store.sym(webId), store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err?.response?.status === 404) { // If PATCH on some server do not all create intermediate containers\n try {\n // create privateKey resource\n const data = ''\n const contentType = 'text/turtle'\n const response = await store.fetcher.webOperation('PUT', keyUrl, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n return undefined\n }\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n}\n"],"mappings":"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"}
|
package/lib/versionInfo.js
CHANGED
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.versionInfo = void 0;
|
|
7
7
|
var versionInfo = {
|
|
8
|
-
buildTime: '2023-04-
|
|
9
|
-
commit: '
|
|
8
|
+
buildTime: '2023-04-29T23:09:27Z',
|
|
9
|
+
commit: 'e6d67dd8caf3c8261ced536258b78723fd07f0a8',
|
|
10
10
|
npmInfo: {
|
|
11
11
|
'solid-ui': '2.4.27',
|
|
12
12
|
npm: '8.19.4',
|
package/lib/versionInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionInfo.js","names":["versionInfo","buildTime","commit","npmInfo","npm","node","v8","uv","zlib","brotli","ares","modules","nghttp2","napi","llhttp","openssl","cldr","icu","tz","unicode","ngtcp2","nghttp3","exports"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export const versionInfo = {\n buildTime: '2023-04-
|
|
1
|
+
{"version":3,"file":"versionInfo.js","names":["versionInfo","buildTime","commit","npmInfo","npm","node","v8","uv","zlib","brotli","ares","modules","nghttp2","napi","llhttp","openssl","cldr","icu","tz","unicode","ngtcp2","nghttp3","exports"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export const versionInfo = {\n buildTime: '2023-04-29T23:09:27Z',\n commit: 'e6d67dd8caf3c8261ced536258b78723fd07f0a8',\n npmInfo:\n{\n 'solid-ui': '2.4.27',\n npm: '8.19.4',\n node: '16.20.0',\n v8: '9.4.146.26-node.26',\n uv: '1.43.0',\n zlib: '1.2.11',\n brotli: '1.0.9',\n ares: '1.19.0',\n modules: '93',\n nghttp2: '1.47.0',\n napi: '8',\n llhttp: '6.0.10',\n openssl: '1.1.1t+quic',\n cldr: '41.0',\n icu: '71.1',\n tz: '2022f',\n unicode: '14.0',\n ngtcp2: '0.8.1',\n nghttp3: '0.7.0'\n}\n}\n"],"mappings":";;;;;;AAAO,IAAMA,WAAW,GAAG;EACzBC,SAAS,EAAE,sBAAsB;EACjCC,MAAM,EAAE,0CAA0C;EAClDC,OAAO,EACT;IACE,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,QAAQ;IACbC,IAAI,EAAE,SAAS;IACfC,EAAE,EAAE,oBAAoB;IACxBC,EAAE,EAAE,QAAQ;IACZC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE,OAAO;IACfC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,IAAI;IACbC,OAAO,EAAE,QAAQ;IACjBC,IAAI,EAAE,GAAG;IACTC,MAAM,EAAE,QAAQ;IAChBC,OAAO,EAAE,aAAa;IACtBC,IAAI,EAAE,MAAM;IACZC,GAAG,EAAE,MAAM;IACXC,EAAE,EAAE,OAAO;IACXC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,OAAO;IACfC,OAAO,EAAE;EACX;AACA,CAAC;AAAAC,OAAA,CAAAtB,WAAA,GAAAA,WAAA"}
|