solid-ui 2.4.28-df3d9431 → 2.4.28-e21f60c1

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 (86) hide show
  1. package/dist/805.solid-ui.min.js +1 -1
  2. package/dist/805.solid-ui.min.js.map +1 -1
  3. package/dist/solid-ui.js +1550 -2267
  4. package/dist/solid-ui.js.map +1 -1
  5. package/dist/solid-ui.min.js +1 -1
  6. package/dist/solid-ui.min.js.map +1 -1
  7. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1955 -1955
  8. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
  9. package/lib/chat/bookmarks.js +7 -6
  10. package/lib/chat/bookmarks.js.map +1 -1
  11. package/lib/chat/chatLogic.js +65 -249
  12. package/lib/chat/chatLogic.js.map +1 -1
  13. package/lib/chat/dateFolder.js +126 -129
  14. package/lib/chat/dateFolder.js.map +1 -1
  15. package/lib/chat/infinite.js +423 -637
  16. package/lib/chat/infinite.js.map +1 -1
  17. package/lib/chat/keys.d.ts +0 -3
  18. package/lib/chat/keys.d.ts.map +1 -1
  19. package/lib/chat/keys.js +80 -124
  20. package/lib/chat/keys.js.map +1 -1
  21. package/lib/chat/message.js +194 -333
  22. package/lib/chat/message.js.map +1 -1
  23. package/lib/chat/messageTools.js +277 -463
  24. package/lib/chat/messageTools.js.map +1 -1
  25. package/lib/chat/signature.d.ts +2 -0
  26. package/lib/chat/signature.d.ts.map +1 -1
  27. package/lib/chat/signature.js +70 -1
  28. package/lib/chat/signature.js.map +1 -1
  29. package/lib/chat/thread.js +209 -299
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/header/index.js +0 -5
  32. package/lib/header/index.js.map +1 -1
  33. package/lib/log.js +5 -5
  34. package/lib/log.js.map +1 -1
  35. package/lib/login/login.d.ts.map +1 -1
  36. package/lib/login/login.js +31 -65
  37. package/lib/login/login.js.map +1 -1
  38. package/lib/media/media-capture.d.ts +2 -2
  39. package/lib/media/media-capture.d.ts.map +1 -1
  40. package/lib/media/media-capture.js +11 -15
  41. package/lib/media/media-capture.js.map +1 -1
  42. package/lib/pad.d.ts +2 -2
  43. package/lib/pad.d.ts.map +1 -1
  44. package/lib/pad.js +15 -41
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.d.ts +5 -5
  47. package/lib/participation.d.ts.map +1 -1
  48. package/lib/participation.js +22 -23
  49. package/lib/participation.js.map +1 -1
  50. package/lib/preferences.js +0 -4
  51. package/lib/preferences.js.map +1 -1
  52. package/lib/style.js +32 -3
  53. package/lib/style.js.map +1 -1
  54. package/lib/tabs.d.ts.map +1 -1
  55. package/lib/tabs.js +14 -8
  56. package/lib/tabs.js.map +1 -1
  57. package/lib/utils/headerFooterHelpers.js +0 -2
  58. package/lib/utils/headerFooterHelpers.js.map +1 -1
  59. package/lib/utils/keyHelpers/accessData.d.ts +2 -2
  60. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  61. package/lib/utils/keyHelpers/accessData.js +131 -51
  62. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  63. package/lib/versionInfo.js +6 -6
  64. package/lib/versionInfo.js.map +1 -1
  65. package/lib/widgets/buttons.js +2 -0
  66. package/lib/widgets/buttons.js.map +1 -1
  67. package/lib/widgets/dragAndDrop.js +10 -18
  68. package/lib/widgets/dragAndDrop.js.map +1 -1
  69. package/lib/widgets/error.d.ts.map +1 -1
  70. package/lib/widgets/error.js +7 -2
  71. package/lib/widgets/error.js.map +1 -1
  72. package/lib/widgets/forms/autocomplete/autocompleteBar.js +1 -8
  73. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  74. package/lib/widgets/forms/autocomplete/autocompletePicker.js +3 -8
  75. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  76. package/lib/widgets/forms/autocomplete/language.js +0 -5
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms.js +1 -4
  79. package/lib/widgets/forms.js.map +1 -1
  80. package/lib/widgets/peoplePicker.js +0 -11
  81. package/lib/widgets/peoplePicker.js.map +1 -1
  82. package/package.json +2 -5
  83. package/lib/utils/keyHelpers/otherHelpers.d.ts +0 -3
  84. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +0 -1
  85. package/lib/utils/keyHelpers/otherHelpers.js +0 -23
  86. package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","error","undefined","t1","stop","validPublicKey","publicKey","confirm","uri","generateAndStoreNewPublicKey","_x2","_x3","_x4","_x5","_generateAndStoreNewPublicKey","_callee3","del","newPublicKey","add","_callee3$","_context3","st","lit","sym","literal","saveKeyAndHandleAcl","createAndSaveKeyPairs","_x6","_x7","_x8","_x9","_createAndSaveKeyPairs","_callee4","privateKeyDoc","_callee4$","_context4","getPrivateKey","_x10","_getPrivateKey","_callee5","keyContainer","_callee5$","_context5","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","log","status","Error","_x11","_x12","_x13","_x14","_saveKeyAndHandleAcl","me","length","_callee6","aclBody","_callee6$","_context6","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n try {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n}\r\n\r\nexport function validPublicKey (webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean {\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) return false\r\n }\r\n return true\r\n}\r\n\r\nexport async function generateAndStoreNewPublicKey (webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string) {\r\n const del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey || ''), store.sym(publicKeyDoc))]\r\n const newPublicKey = generatePublicKey(privateKey)\r\n const add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKeyAndHandleAcl(publicKeyDoc, del, add)\r\n}\r\n\r\nexport async function createAndSaveKeyPairs (webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string) {\r\n const privateKey = generatePrivateKey()\r\n const add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri)\r\n\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n\r\n return privateKey\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n if (!privateKey) {\r\n privateKey = await createAndSaveKeyPairs(webId, publicKey, privateKeyDoc, publicKeyDoc)\r\n }\r\n if (!validPublicKey(webId, publicKey, privateKey)) {\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n }\r\n\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKeyAndHandleAcl (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee3","privateKeyDoc","publicKey","validPublicKey","del","add","newPublicKey","keyContainer","_callee3$","_context3","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","confirm","uri","st","literal","sym","saveKey","lit","log","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","status","Error","_x3","_x4","_x5","_x6","_saveKey","me","length","_callee4","aclBody","_callee4$","_context4","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n return undefined\r\n }\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n // is publicKey valid ?\r\n let validPublicKey = true\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) validPublicKey = false\r\n }\r\n\r\n // create key pair or repair publicKey\r\n if (!privateKey || !publicKey || !validPublicKey) {\r\n let del: any[] = []\r\n let add: any[] = []\r\n\r\n if (!privateKey) {\r\n // add = []\r\n privateKey = generatePrivateKey()\r\n add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKey(privateKeyDoc, [], add, webId.uri)\r\n }\r\n if (!publicKey || !validPublicKey) {\r\n del = []\r\n // delete invalid public key\r\n if (publicKey) {\r\n del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), store.sym(publicKeyDoc))]\r\n debug.log(del)\r\n }\r\n // update new valid key\r\n const newPublicKey = generatePublicKey(privateKey)\r\n add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKey(publicKeyDoc, del, add)\r\n }\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n }\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKey (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":"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"}