solid-ui 2.4.27-20175fe3 → 2.4.27-2766a189
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 +222 -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 +63 -100
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +14 -14
- 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 +132 -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/keys.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare function generatePrivateKey(): string;
|
|
2
2
|
export declare function generatePublicKey(privateKey: string): string;
|
|
3
|
-
export declare function getPublicKey(webId: any): string | undefined
|
|
3
|
+
export declare function getPublicKey(webId: any): Promise<string | undefined>;
|
|
4
4
|
export declare function getPrivateKey(webId: string): Promise<string>;
|
|
5
5
|
//# sourceMappingURL=keys.d.ts.map
|
package/lib/chat/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAQA,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAQA,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAsB,YAAY,CAAE,KAAK,KAAA,+BAYxC;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,MAAM,mBAgDjD"}
|
package/lib/chat/keys.js
CHANGED
|
@@ -11,12 +11,12 @@ exports.getPrivateKey = getPrivateKey;
|
|
|
11
11
|
exports.getPublicKey = getPublicKey;
|
|
12
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
-
var debug = _interopRequireWildcard(require("../debug"));
|
|
15
14
|
var _secp256k = require("@noble/curves/secp256k1");
|
|
16
15
|
var _utils = require("@noble/hashes/utils");
|
|
17
16
|
var _signature = require("./signature");
|
|
18
17
|
var _solidLogic = require("solid-logic");
|
|
19
18
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
19
|
+
var _cryptoKeyHelpers = require("../utils/cryptoKeyHelpers");
|
|
20
20
|
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); }
|
|
21
21
|
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; }
|
|
22
22
|
function generatePrivateKey() {
|
|
@@ -25,133 +25,96 @@ function generatePrivateKey() {
|
|
|
25
25
|
function generatePublicKey(privateKey) {
|
|
26
26
|
return (0, _utils.bytesToHex)(_secp256k.schnorr.getPublicKey(privateKey));
|
|
27
27
|
}
|
|
28
|
-
function getPublicKey(
|
|
29
|
-
|
|
30
|
-
return publicKey;
|
|
28
|
+
function getPublicKey(_x) {
|
|
29
|
+
return _getPublicKey.apply(this, arguments);
|
|
31
30
|
}
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
url.hash = '';
|
|
36
|
-
/* debug.warn('Alain publicKeyExists')
|
|
37
|
-
debug.warn(webId)
|
|
38
|
-
debug.warn(url.href) */
|
|
39
|
-
_solidLogic.store.fetcher.load(url.href);
|
|
40
|
-
var publicKey = _solidLogic.store.any(_solidLogic.store.sym(webId), _solidLogic.store.sym(_signature.CERT + 'PublicKey'));
|
|
41
|
-
return publicKey === null || publicKey === void 0 ? void 0 : publicKey.value; // as NamedNode
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
var privKeyUrl = function privKeyUrl(webId) {
|
|
45
|
-
var url = new URL(webId);
|
|
46
|
-
var privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl';
|
|
47
|
-
return privateKeyUrl;
|
|
48
|
-
};
|
|
49
|
-
function privateKeyExists(_x) {
|
|
50
|
-
return _privateKeyExists.apply(this, arguments);
|
|
51
|
-
}
|
|
52
|
-
function _privateKeyExists() {
|
|
53
|
-
_privateKeyExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(webId) {
|
|
54
|
-
var privateKeyUrl, privateKey, _err$response, data, contentType, response;
|
|
31
|
+
function _getPublicKey() {
|
|
32
|
+
_getPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(webId) {
|
|
33
|
+
var publicKeyUrl, key;
|
|
55
34
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
56
35
|
while (1) switch (_context.prev = _context.next) {
|
|
57
36
|
case 0:
|
|
58
|
-
|
|
59
|
-
const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl' */
|
|
60
|
-
privateKeyUrl = privKeyUrl(webId);
|
|
61
|
-
/* debug.warn('Alain privateKeyExists')
|
|
62
|
-
debug.warn(webId)
|
|
63
|
-
debug.warn(privateKeyUrl) */
|
|
37
|
+
publicKeyUrl = (0, _cryptoKeyHelpers.pubKeyUrl)(webId);
|
|
64
38
|
_context.prev = 1;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
39
|
+
_context.next = 4;
|
|
40
|
+
return _solidLogic.store.fetcher.load(publicKeyUrl);
|
|
41
|
+
case 4:
|
|
42
|
+
// url.href)
|
|
43
|
+
key = _solidLogic.store.any(_solidLogic.store.sym(webId), _solidLogic.store.sym(_signature.CERT + 'PublicKey'));
|
|
44
|
+
return _context.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
|
|
45
|
+
case 8:
|
|
46
|
+
_context.prev = 8;
|
|
70
47
|
_context.t0 = _context["catch"](1);
|
|
71
|
-
if (!((_context.t0 === null || _context.t0 === void 0 ? void 0 : (_err$response = _context.t0.response) === null || _err$response === void 0 ? void 0 : _err$response.status) === 404)) {
|
|
72
|
-
_context.next = 24;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
_context.prev = 10;
|
|
76
|
-
// create privateKey resource
|
|
77
|
-
data = '';
|
|
78
|
-
contentType = 'text/ttl';
|
|
79
|
-
_context.next = 15;
|
|
80
|
-
return _solidLogic.store.fetcher.webOperation('PUT', privateKeyUrl, {
|
|
81
|
-
data: data,
|
|
82
|
-
contentType: contentType
|
|
83
|
-
});
|
|
84
|
-
case 15:
|
|
85
|
-
response = _context.sent;
|
|
86
|
-
_context.next = 22;
|
|
87
|
-
break;
|
|
88
|
-
case 18:
|
|
89
|
-
_context.prev = 18;
|
|
90
|
-
_context.t1 = _context["catch"](10);
|
|
91
|
-
debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + _context.t1);
|
|
92
|
-
throw _context.t1;
|
|
93
|
-
case 22:
|
|
94
|
-
delete _solidLogic.store.fetcher.requested[privateKeyUrl]; // delete cached 404 error
|
|
95
48
|
return _context.abrupt("return", undefined);
|
|
96
|
-
case
|
|
97
|
-
debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + _context.t0);
|
|
98
|
-
throw _context.t0;
|
|
99
|
-
case 26:
|
|
49
|
+
case 11:
|
|
100
50
|
case "end":
|
|
101
51
|
return _context.stop();
|
|
102
52
|
}
|
|
103
|
-
}, _callee, null, [[1,
|
|
53
|
+
}, _callee, null, [[1, 8]]);
|
|
104
54
|
}));
|
|
105
|
-
return
|
|
55
|
+
return _getPublicKey.apply(this, arguments);
|
|
106
56
|
}
|
|
107
57
|
function getPrivateKey(_x2) {
|
|
108
58
|
return _getPrivateKey.apply(this, arguments);
|
|
109
59
|
}
|
|
110
60
|
function _getPrivateKey() {
|
|
111
61
|
_getPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId) {
|
|
112
|
-
var
|
|
62
|
+
var publicKeyUrl, privateKeyUrl, publicKey, privateKey, validPublicKey, del, add;
|
|
113
63
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
114
64
|
while (1) switch (_context2.prev = _context2.next) {
|
|
115
65
|
case 0:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
66
|
+
// find key url's
|
|
67
|
+
publicKeyUrl = (0, _cryptoKeyHelpers.pubKeyUrl)(webId);
|
|
68
|
+
privateKeyUrl = (0, _cryptoKeyHelpers.privKeyUrl)(webId); // find key pair
|
|
69
|
+
_context2.next = 4;
|
|
70
|
+
return (0, _cryptoKeyHelpers.publicKeyExists)(webId);
|
|
71
|
+
case 4:
|
|
72
|
+
publicKey = _context2.sent;
|
|
73
|
+
_context2.next = 7;
|
|
74
|
+
return (0, _cryptoKeyHelpers.privateKeyExists)(webId);
|
|
75
|
+
case 7:
|
|
125
76
|
privateKey = _context2.sent;
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const newPublicKey = generatePublicKey(newPrivateKey)
|
|
132
|
-
debug.log('newPrivateKey ' + newPrivateKey)
|
|
133
|
-
debug.log('newPublicKey ' + newPublicKey) */
|
|
77
|
+
// is publicKey valid ?
|
|
78
|
+
validPublicKey = true;
|
|
79
|
+
if (privateKey && publicKey !== generatePublicKey(privateKey)) {
|
|
80
|
+
if (confirm('This is strange the publicKey is not valid for\n' + webId + '\'shall we repair keeping the private key ?')) validPublicKey = false;
|
|
81
|
+
}
|
|
134
82
|
|
|
135
|
-
// create key pair
|
|
136
|
-
if (!(!privateKey || !publicKey)) {
|
|
137
|
-
_context2.next =
|
|
83
|
+
// create key pair or repair publicKey
|
|
84
|
+
if (!(!privateKey || !publicKey || !validPublicKey)) {
|
|
85
|
+
_context2.next = 17;
|
|
138
86
|
break;
|
|
139
87
|
}
|
|
140
88
|
del = [];
|
|
141
|
-
add = [];
|
|
142
|
-
if (privateKey)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
89
|
+
add = []; // if (privateKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), $rdf.sym(privateKeyUrl)))
|
|
90
|
+
if (!privateKey) {
|
|
91
|
+
privateKey = generatePrivateKey();
|
|
92
|
+
add.push($rdf.st($rdf.sym(webId), $rdf.sym(_signature.CERT + 'PrivateKey'), $rdf.literal(privateKey), $rdf.sym(privateKeyUrl)));
|
|
93
|
+
// TODO delete privateKeyUrl.acl, it may exist !!!
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!publicKey || !validPublicKey) {
|
|
97
|
+
// delete invalid public key
|
|
98
|
+
if (publicKey) {
|
|
99
|
+
del.push($rdf.st($rdf.sym(webId), $rdf.sym(_signature.CERT + 'PublicKey'), $rdf.lit(publicKey), $rdf.sym(publicKeyUrl)));
|
|
100
|
+
}
|
|
101
|
+
// insert new valid key
|
|
102
|
+
publicKey = generatePublicKey(privateKey);
|
|
103
|
+
add.push($rdf.st($rdf.sym(webId), $rdf.sym(_signature.CERT + 'PublicKey'), $rdf.literal(publicKey), $rdf.sym(publicKeyUrl)));
|
|
104
|
+
// TODO delete privateKeyUrl.acl, it may exist !!!
|
|
105
|
+
}
|
|
106
|
+
/* debug.log('new key pair ' + webId)
|
|
107
|
+
debug.log('newPrivateKey-1 ' + privateKey)
|
|
147
108
|
debug.log('newPublicKey-1 ' + publicKey) */
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
109
|
+
/* debug.log('del')
|
|
110
|
+
debug.log(del)
|
|
111
|
+
debug.log('add')
|
|
112
|
+
debug.log(add) */
|
|
113
|
+
_context2.next = 17;
|
|
151
114
|
return _solidLogic.store.updater.updateMany(del, add);
|
|
152
|
-
case
|
|
115
|
+
case 17:
|
|
153
116
|
return _context2.abrupt("return", privateKey);
|
|
154
|
-
case
|
|
117
|
+
case 18:
|
|
155
118
|
case "end":
|
|
156
119
|
return _context2.stop();
|
|
157
120
|
}
|
package/lib/chat/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","_signature","_solidLogic","$rdf","_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","webId","publicKey","publicKeyExists","url","URL","hash","store","fetcher","load","href","any","sym","CERT","value","privKeyUrl","privateKeyUrl","protocol","host","privateKeyExists","_x","_privateKeyExists","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","_err$response","data","contentType","response","wrap","_callee$","_context","prev","next","abrupt","t0","status","webOperation","sent","t1","log","requested","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee2","del","add","_callee2$","_context2","warn","push","st","lit","literal","updater","updateMany"],"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 { CERT } from './signature'\r\nimport { store } from 'solid-logic'\r\nimport * as $rdf from 'rdflib'\r\nimport { NamedNode, literal } from 'rdflib'\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\nexport function getPublicKey (webId) {\r\n const publicKey = publicKeyExists(webId)\r\n return publicKey\r\n}\r\n\r\nfunction publicKeyExists (webId: string) {\r\n // find publickey\r\n const url = new URL(webId)\r\n url.hash = ''\r\n /* debug.warn('Alain publicKeyExists')\r\n debug.warn(webId)\r\n debug.warn(url.href) */\r\n store.fetcher.load(url.href)\r\n const publicKey = store.any(store.sym(webId), store.sym(CERT + 'PublicKey'))\r\n return publicKey?.value // as NamedNode\r\n}\r\n\r\nconst privKeyUrl = (webId: string) => {\r\n const url = new URL(webId)\r\n const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl'\r\n return privateKeyUrl\r\n}\r\n\r\nasync function privateKeyExists (webId: string) {\r\n /* const url = new URL(webId)\r\n const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl' */\r\n const privateKeyUrl = privKeyUrl(webId)\r\n /* debug.warn('Alain privateKeyExists')\r\n debug.warn(webId)\r\n debug.warn(privateKeyUrl) */\r\n try {\r\n store.fetcher.load(privateKeyUrl)\r\n const privateKey = store.any(store.sym(webId), store.sym(CERT + 'PrivateKey'))\r\n return privateKey?.value // as NamedNode\r\n } catch (err) {\r\n if (err?.response?.status === 404) {\r\n try {\r\n // create privateKey resource\r\n const data = ''\r\n const contentType = 'text/ttl'\r\n const response = await store.fetcher.webOperation('PUT', privateKeyUrl, {\r\n data,\r\n contentType\r\n })\r\n // create ACL resource\r\n } catch (err) {\r\n debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + err)\r\n throw err\r\n }\r\n delete store.fetcher.requested[privateKeyUrl] // delete cached 404 error\r\n return undefined\r\n }\r\n debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + err)\r\n throw err\r\n }\r\n}\r\n\r\nexport async function getPrivateKey (webId: string) {\r\n const url = new URL(webId)\r\n url.hash = ''\r\n /* const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl' */\r\n const privateKeyUrl = privKeyUrl(webId)\r\n\r\n // find publickey\r\n let publicKey = publicKeyExists(webId)\r\n // debug.warn('publicKey ' + publicKey)\r\n // find privateKey\r\n let privateKey = await privateKeyExists(webId)\r\n // debug.warn('privateKey ' + privateKey)\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) debug.warn('publicKey is not valid')\r\n\r\n // simulate new key pair\r\n /* const newPrivateKey = generatePrivateKey()\r\n const newPublicKey = generatePublicKey(newPrivateKey)\r\n debug.log('newPrivateKey ' + newPrivateKey)\r\n debug.log('newPublicKey ' + newPublicKey) */\r\n\r\n // create key pair\r\n if (!privateKey || !publicKey) {\r\n const del: any[] = []\r\n const add: any[] = []\r\n if (privateKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), $rdf.sym(privateKeyUrl)))\r\n if (publicKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.lit(publicKey), $rdf.sym(url.href)))\r\n\r\n privateKey = generatePrivateKey()\r\n publicKey = generatePublicKey(privateKey)\r\n /* debug.log('newPrivateKey-1 ' + privateKey)\r\n debug.log('newPublicKey-1 ' + publicKey) */\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.literal(privateKey), $rdf.sym(privateKeyUrl)))\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.literal(publicKey), $rdf.sym(url.href)))\r\n await store.updater.updateMany(del, add)\r\n }\r\n return privateKey as string\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","names":["_secp256k","require","_utils","_signature","_solidLogic","$rdf","_interopRequireWildcard","_cryptoKeyHelpers","_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","_callee","webId","publicKeyUrl","wrap","_callee$","_context","prev","next","pubKeyUrl","store","fetcher","load","any","sym","CERT","abrupt","value","t0","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee2","privateKeyUrl","publicKey","validPublicKey","del","add","_callee2$","_context2","privKeyUrl","publicKeyExists","sent","privateKeyExists","confirm","push","st","literal","lit","updater","updateMany"],"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 { CERT } from './signature'\r\nimport { store } from 'solid-logic'\r\nimport * as $rdf from 'rdflib'\r\nimport { publicKeyExists, pubKeyUrl, privKeyUrl, privateKeyExists } from '../utils/cryptoKeyHelpers'\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\nexport async function getPublicKey (webId) {\r\n const publicKeyUrl = pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyUrl) // url.href)\r\n const key = store.any(store.sym(webId), store.sym(CERT + 'PublicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n return undefined\r\n }\r\n // this is called in display message and should not try to create a publicKeyUrl\r\n // const publicKey = await publicKeyExists(webId)\r\n // return publicKey\r\n}\r\n\r\nexport async function getPrivateKey (webId: string) {\r\n // find key url's\r\n const publicKeyUrl = pubKeyUrl(webId)\r\n const privateKeyUrl = privKeyUrl(webId)\r\n\r\n // find key pair\r\n let publicKey = await publicKeyExists(webId)\r\n let privateKey = await privateKeyExists(webId)\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 +\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 const del: any[] = []\r\n const add: any[] = []\r\n // if (privateKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), $rdf.sym(privateKeyUrl)))\r\n\r\n if (!privateKey) {\r\n privateKey = generatePrivateKey()\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.literal(privateKey), $rdf.sym(privateKeyUrl)))\r\n // TODO delete privateKeyUrl.acl, it may exist !!!\r\n }\r\n if (!publicKey || !validPublicKey) {\r\n // delete invalid public key\r\n if (publicKey) {\r\n del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.lit(publicKey), $rdf.sym(publicKeyUrl)))\r\n }\r\n // insert new valid key\r\n publicKey = generatePublicKey(privateKey)\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.literal(publicKey), $rdf.sym(publicKeyUrl)))\r\n // TODO delete privateKeyUrl.acl, it may exist !!!\r\n }\r\n /* debug.log('new key pair ' + webId)\r\n debug.log('newPrivateKey-1 ' + privateKey)\r\n debug.log('newPublicKey-1 ' + publicKey) */\r\n /* debug.log('del')\r\n debug.log(del)\r\n debug.log('add')\r\n debug.log(add) */\r\n await store.updater.updateMany(del, add)\r\n // TODO create READ ACL's\r\n }\r\n return privateKey as string\r\n}\r\n"],"mappings":"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"}
|
package/lib/chat/message.js
CHANGED
|
@@ -117,10 +117,9 @@ function renderMessageRow(channelObject, message, fresh, options, userContext) {
|
|
|
117
117
|
var latestVersion = (0, _chatLogic.mostRecentVersion)(message);
|
|
118
118
|
var latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker'));
|
|
119
119
|
// use latest content if same owner, else use original
|
|
120
|
-
var msgId = creator === latestVersionCreator ? latestVersion : message;
|
|
120
|
+
var msgId = creator.uri === latestVersionCreator.uri ? latestVersion : message;
|
|
121
121
|
var content = _solidLogic.store.any(msgId, ns.sioc('content'));
|
|
122
122
|
var signature = _solidLogic.store.any(msgId, $rdf.sym("".concat(_signature.SEC, "Proof")));
|
|
123
|
-
debug.log('alain ' + (signature === null || signature === void 0 ? void 0 : signature.value));
|
|
124
123
|
|
|
125
124
|
// verify signature
|
|
126
125
|
var msg = (0, _signature.getBlankMsg)();
|
|
@@ -128,18 +127,19 @@ function renderMessageRow(channelObject, message, fresh, options, userContext) {
|
|
|
128
127
|
msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
|
|
129
128
|
msg.content = content.value;
|
|
130
129
|
msg.maker = creator.uri;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
130
|
+
|
|
131
|
+
// unsigned message
|
|
132
|
+
if (signature !== null && signature !== void 0 && signature.value) debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
|
|
133
|
+
// get public key and check signature
|
|
134
|
+
else {
|
|
135
|
+
(0, _keys.getPublicKey)(creator.uri).then(function (publicKey) {
|
|
136
|
+
if (!publicKey) debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
|
|
137
|
+
// check publicKey is valid hex string
|
|
138
|
+
var regex = /[0-9A-Fa-f]{6}/g;
|
|
139
|
+
if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
|
|
140
|
+
// verify signature
|
|
141
|
+
else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
|
|
142
|
+
});
|
|
143
143
|
}
|
|
144
144
|
var originalMessage = (0, _chatLogic.originalVersion)(message);
|
|
145
145
|
var edited = !message.sameTerm(originalMessage);
|
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","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 // 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 // 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 // unsigned message\n if (signature?.value) debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n // get public key and check signature\n else {\n getPublicKey(creator.uri).then(publicKey => {\n if (!publicKey) debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n // check publicKey is 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,WAItC,CAAA;AAED,wBAAsB,eAAe,CAAE,KAAK,EAAE,MAAM,+BAInD;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,WAIvC,CAAA;AAED,wBAAsB,gBAAgB,CAAE,KAAK,EAAE,MAAM,+BAIpD"}
|