solid-ui 2.6.1 → 3.0.0-63a1640
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/LICENSE.md +3 -1
- package/README.md +236 -30
- package/dist/acl/access-controller.js +238 -0
- package/dist/acl/access-controller.js.map +1 -0
- package/{lib → dist}/acl/access-groups.d.ts +2 -2
- package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
- package/dist/acl/access-groups.js +323 -0
- package/dist/acl/access-groups.js.map +1 -0
- package/dist/acl/acl-control.js +173 -0
- package/dist/acl/acl-control.js.map +1 -0
- package/dist/acl/acl.js +495 -0
- package/dist/acl/acl.js.map +1 -0
- package/dist/acl/add-agent-buttons.js +217 -0
- package/dist/acl/add-agent-buttons.js.map +1 -0
- package/dist/acl/index.js +32 -0
- package/dist/acl/index.js.map +1 -0
- package/dist/acl/types.js +6 -0
- package/dist/acl/types.js.map +1 -0
- package/dist/chat/keys.js +106 -0
- package/dist/chat/keys.js.map +1 -0
- package/dist/chat/signature.js +63 -0
- package/dist/chat/signature.js.map +1 -0
- package/dist/create/create.js +249 -0
- package/dist/create/create.js.map +1 -0
- package/dist/create/index.js +5 -0
- package/dist/create/index.js.map +1 -0
- package/dist/create/types.js +2 -0
- package/dist/create/types.js.map +1 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +13 -0
- package/dist/debug.js.map +1 -0
- package/dist/footer/index.js +67 -0
- package/dist/footer/index.js.map +1 -0
- package/dist/header/empty-profile.js +11 -0
- package/dist/header/empty-profile.js.map +1 -0
- package/dist/header/index.js +260 -0
- package/dist/header/index.js.map +1 -0
- package/dist/iconBase.js +37 -0
- package/dist/iconBase.js.map +1 -0
- package/dist/icons/solid_logo.js.map +1 -0
- package/{lib → dist}/index.d.ts +7 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/{lib → dist}/log.d.ts.map +1 -1
- package/dist/log.js +182 -0
- package/dist/log.js.map +1 -0
- package/dist/login/login.js +858 -0
- package/dist/login/login.js.map +1 -0
- package/dist/matrix/index.js +5 -0
- package/dist/matrix/index.js.map +1 -0
- package/dist/matrix/matrix.js +217 -0
- package/dist/matrix/matrix.js.map +1 -0
- package/dist/matrix/types.js +2 -0
- package/dist/matrix/types.js.map +1 -0
- package/dist/media/index.js +6 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/media-capture.js +161 -0
- package/dist/media/media-capture.js.map +1 -0
- package/dist/pad.js +775 -0
- package/dist/pad.js.map +1 -0
- package/{lib → dist}/participation.d.ts.map +1 -1
- package/dist/participation.js +184 -0
- package/dist/participation.js.map +1 -0
- package/dist/solid-ui.esm.js +25531 -0
- package/dist/solid-ui.esm.js.map +1 -0
- package/dist/solid-ui.esm.min.js +43 -0
- package/dist/solid-ui.esm.min.js.map +1 -0
- package/dist/solid-ui.js +23479 -68931
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +40 -2
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/tabs.js +388 -0
- package/dist/tabs.js.map +1 -0
- package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
- package/dist/utils/headerFooterHelpers.js +114 -0
- package/dist/utils/headerFooterHelpers.js.map +1 -0
- package/dist/utils/keyHelpers/accessData.js +64 -0
- package/dist/utils/keyHelpers/accessData.js.map +1 -0
- package/dist/utils/keyHelpers/acl.js +74 -0
- package/dist/utils/keyHelpers/acl.js.map +1 -0
- package/dist/utils/keyHelpers/otherHelpers.js +13 -0
- package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
- package/dist/utils/label.js +111 -0
- package/dist/utils/label.js.map +1 -0
- package/dist/versionInfo.js +30 -0
- package/dist/versionInfo.js.map +1 -0
- package/dist/widgets/buttons/iconLinks.js +44 -0
- package/dist/widgets/buttons/iconLinks.js.map +1 -0
- package/dist/widgets/buttons.js +1280 -0
- package/dist/widgets/buttons.js.map +1 -0
- package/dist/widgets/error.d.ts +14 -0
- package/dist/widgets/error.d.ts.map +1 -0
- package/dist/widgets/error.js +35 -0
- package/dist/widgets/error.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
- package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
- package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
- package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
- package/dist/widgets/forms/autocomplete/language.js +104 -0
- package/dist/widgets/forms/autocomplete/language.js.map +1 -0
- package/dist/widgets/forms/autocomplete/publicData.js +460 -0
- package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
- package/dist/widgets/forms/basic.js +241 -0
- package/dist/widgets/forms/basic.js.map +1 -0
- package/dist/widgets/forms/comment.js +46 -0
- package/dist/widgets/forms/comment.js.map +1 -0
- package/dist/widgets/forms/fieldFunction.js +44 -0
- package/dist/widgets/forms/fieldFunction.js.map +1 -0
- package/dist/widgets/forms/fieldParams.js +89 -0
- package/dist/widgets/forms/fieldParams.js.map +1 -0
- package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
- package/dist/widgets/forms/formStyle.js +36 -0
- package/dist/widgets/forms/formStyle.js.map +1 -0
- package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
- package/{lib → dist}/widgets/widgetHelpers.js +14 -25
- package/dist/widgets/widgetHelpers.js.map +1 -0
- package/package.json +48 -52
- package/dist/789.solid-ui.min.js +0 -1
- package/dist/841.solid-ui.min.js +0 -3
- package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
- package/dist/841.solid-ui.min.js.map +0 -1
- package/dist/_2b19.solid-ui.js +0 -14
- package/dist/_2b19.solid-ui.js.map +0 -1
- package/dist/index.html +0 -1
- package/dist/solid-ui.min.js.LICENSE.txt +0 -57
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
- package/lib/acl/access-controller.js +0 -391
- package/lib/acl/access-controller.js.map +0 -1
- package/lib/acl/access-groups.js +0 -507
- package/lib/acl/access-groups.js.map +0 -1
- package/lib/acl/acl-control.js +0 -237
- package/lib/acl/acl-control.js.map +0 -1
- package/lib/acl/acl.js +0 -517
- package/lib/acl/acl.js.map +0 -1
- package/lib/acl/add-agent-buttons.js +0 -434
- package/lib/acl/add-agent-buttons.js.map +0 -1
- package/lib/acl/index.js +0 -39
- package/lib/acl/index.js.map +0 -1
- package/lib/acl/types.js +0 -6
- package/lib/acl/types.js.map +0 -1
- package/lib/chat/bookmarks.js +0 -303
- package/lib/chat/bookmarks.js.map +0 -1
- package/lib/chat/chatLogic.js +0 -420
- package/lib/chat/chatLogic.js.map +0 -1
- package/lib/chat/dateFolder.js +0 -328
- package/lib/chat/dateFolder.js.map +0 -1
- package/lib/chat/infinite.js +0 -994
- package/lib/chat/infinite.js.map +0 -1
- package/lib/chat/keys.js +0 -232
- package/lib/chat/keys.js.map +0 -1
- package/lib/chat/message.js +0 -715
- package/lib/chat/message.js.map +0 -1
- package/lib/chat/messageTools.js +0 -538
- package/lib/chat/messageTools.js.map +0 -1
- package/lib/chat/signature.js +0 -109
- package/lib/chat/signature.js.map +0 -1
- package/lib/chat/thread.js +0 -535
- package/lib/chat/thread.js.map +0 -1
- package/lib/create/create.js +0 -242
- package/lib/create/create.js.map +0 -1
- package/lib/create/index.js +0 -11
- package/lib/create/index.js.map +0 -1
- package/lib/create/types.js +0 -6
- package/lib/create/types.js.map +0 -1
- package/lib/debug.d.ts.map +0 -1
- package/lib/debug.js +0 -30
- package/lib/debug.js.map +0 -1
- package/lib/folders.js +0 -132
- package/lib/folders.js.map +0 -1
- package/lib/footer/index.js +0 -123
- package/lib/footer/index.js.map +0 -1
- package/lib/header/empty-profile.js +0 -8
- package/lib/header/empty-profile.js.map +0 -1
- package/lib/header/index.js +0 -375
- package/lib/header/index.js.map +0 -1
- package/lib/iconBase.js +0 -44
- package/lib/iconBase.js.map +0 -1
- package/lib/icons/solid_logo.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -223
- package/lib/index.js.map +0 -1
- package/lib/log.js +0 -213
- package/lib/log.js.map +0 -1
- package/lib/login/login.js +0 -1241
- package/lib/login/login.js.map +0 -1
- package/lib/matrix/index.js +0 -11
- package/lib/matrix/index.js.map +0 -1
- package/lib/matrix/matrix.js +0 -216
- package/lib/matrix/matrix.js.map +0 -1
- package/lib/matrix/types.js +0 -6
- package/lib/matrix/types.js.map +0 -1
- package/lib/media/index.js +0 -12
- package/lib/media/index.js.map +0 -1
- package/lib/media/media-capture.js +0 -194
- package/lib/media/media-capture.js.map +0 -1
- package/lib/messageArea.js +0 -319
- package/lib/messageArea.js.map +0 -1
- package/lib/noun_Camera_1618446_000000.js +0 -8
- package/lib/noun_Camera_1618446_000000.js.map +0 -1
- package/lib/ns.js +0 -17
- package/lib/ns.js.map +0 -1
- package/lib/pad.js +0 -805
- package/lib/pad.js.map +0 -1
- package/lib/participation.js +0 -219
- package/lib/participation.js.map +0 -1
- package/lib/preferences.js +0 -215
- package/lib/preferences.js.map +0 -1
- package/lib/signup/config-default.js +0 -43
- package/lib/signup/config-default.js.map +0 -1
- package/lib/signup/signup.js +0 -74
- package/lib/signup/signup.js.map +0 -1
- package/lib/stories/decorators.js +0 -10
- package/lib/stories/decorators.js.map +0 -1
- package/lib/style.js +0 -158
- package/lib/style.js.map +0 -1
- package/lib/styleConstants.js +0 -35
- package/lib/styleConstants.js.map +0 -1
- package/lib/style_multiSelect.js +0 -62
- package/lib/style_multiSelect.js.map +0 -1
- package/lib/table.js +0 -1573
- package/lib/table.js.map +0 -1
- package/lib/tabs.js +0 -448
- package/lib/tabs.js.map +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/typings.d.js.map +0 -1
- package/lib/utils/headerFooterHelpers.js +0 -165
- package/lib/utils/headerFooterHelpers.js.map +0 -1
- package/lib/utils/index.js +0 -527
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/keyHelpers/accessData.js +0 -131
- package/lib/utils/keyHelpers/accessData.js.map +0 -1
- package/lib/utils/keyHelpers/acl.js +0 -90
- package/lib/utils/keyHelpers/acl.js.map +0 -1
- package/lib/utils/keyHelpers/otherHelpers.js +0 -21
- package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
- package/lib/utils/label.js +0 -103
- package/lib/utils/label.js.map +0 -1
- package/lib/versionInfo.d.ts +0 -32
- package/lib/versionInfo.d.ts.map +0 -1
- package/lib/versionInfo.js +0 -37
- package/lib/versionInfo.js.map +0 -1
- package/lib/widgets/buttons/iconLinks.js +0 -53
- package/lib/widgets/buttons/iconLinks.js.map +0 -1
- package/lib/widgets/buttons.js +0 -1306
- package/lib/widgets/buttons.js.map +0 -1
- package/lib/widgets/dragAndDrop.js +0 -194
- package/lib/widgets/dragAndDrop.js.map +0 -1
- package/lib/widgets/error.d.ts +0 -2
- package/lib/widgets/error.d.ts.map +0 -1
- package/lib/widgets/error.js +0 -46
- package/lib/widgets/error.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
- package/lib/widgets/forms/autocomplete/language.js +0 -189
- package/lib/widgets/forms/autocomplete/language.js.map +0 -1
- package/lib/widgets/forms/autocomplete/publicData.js +0 -636
- package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
- package/lib/widgets/forms/basic.js +0 -254
- package/lib/widgets/forms/basic.js.map +0 -1
- package/lib/widgets/forms/comment.js +0 -54
- package/lib/widgets/forms/comment.js.map +0 -1
- package/lib/widgets/forms/fieldFunction.js +0 -52
- package/lib/widgets/forms/fieldFunction.js.map +0 -1
- package/lib/widgets/forms/fieldParams.js +0 -77
- package/lib/widgets/forms/fieldParams.js.map +0 -1
- package/lib/widgets/forms/formStyle.js +0 -44
- package/lib/widgets/forms/formStyle.js.map +0 -1
- package/lib/widgets/forms.js +0 -2045
- package/lib/widgets/forms.js.map +0 -1
- package/lib/widgets/index.js +0 -110
- package/lib/widgets/index.js.map +0 -1
- package/lib/widgets/multiSelect.js +0 -658
- package/lib/widgets/multiSelect.js.map +0 -1
- package/lib/widgets/peoplePicker.js +0 -467
- package/lib/widgets/peoplePicker.js.map +0 -1
- package/lib/widgets/widgetHelpers.js.map +0 -1
- /package/{lib → dist}/acl/access-controller.d.ts +0 -0
- /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
- /package/{lib → dist}/acl/acl-control.d.ts +0 -0
- /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
- /package/{lib → dist}/acl/acl.d.ts +0 -0
- /package/{lib → dist}/acl/acl.d.ts.map +0 -0
- /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
- /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
- /package/{lib → dist}/acl/index.d.ts +0 -0
- /package/{lib → dist}/acl/index.d.ts.map +0 -0
- /package/{lib → dist}/acl/types.d.ts +0 -0
- /package/{lib → dist}/acl/types.d.ts.map +0 -0
- /package/{lib → dist}/chat/keys.d.ts +0 -0
- /package/{lib → dist}/chat/keys.d.ts.map +0 -0
- /package/{lib → dist}/chat/signature.d.ts +0 -0
- /package/{lib → dist}/chat/signature.d.ts.map +0 -0
- /package/{lib → dist}/create/create.d.ts +0 -0
- /package/{lib → dist}/create/create.d.ts.map +0 -0
- /package/{lib → dist}/create/index.d.ts +0 -0
- /package/{lib → dist}/create/index.d.ts.map +0 -0
- /package/{lib → dist}/create/types.d.ts +0 -0
- /package/{lib → dist}/create/types.d.ts.map +0 -0
- /package/{lib → dist}/debug.d.ts +0 -0
- /package/{lib → dist}/footer/index.d.ts +0 -0
- /package/{lib → dist}/footer/index.d.ts.map +0 -0
- /package/{lib → dist}/header/empty-profile.d.ts +0 -0
- /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
- /package/{lib → dist}/header/index.d.ts +0 -0
- /package/{lib → dist}/header/index.d.ts.map +0 -0
- /package/{lib → dist}/iconBase.d.ts +0 -0
- /package/{lib → dist}/iconBase.d.ts.map +0 -0
- /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
- /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
- /package/{lib → dist}/icons/solid_logo.js +0 -0
- /package/{lib → dist}/log.d.ts +0 -0
- /package/{lib → dist}/login/login.d.ts +0 -0
- /package/{lib → dist}/login/login.d.ts.map +0 -0
- /package/{lib → dist}/matrix/index.d.ts +0 -0
- /package/{lib → dist}/matrix/index.d.ts.map +0 -0
- /package/{lib → dist}/matrix/matrix.d.ts +0 -0
- /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
- /package/{lib → dist}/matrix/types.d.ts +0 -0
- /package/{lib → dist}/matrix/types.d.ts.map +0 -0
- /package/{lib → dist}/media/index.d.ts +0 -0
- /package/{lib → dist}/media/index.d.ts.map +0 -0
- /package/{lib → dist}/media/media-capture.d.ts +0 -0
- /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
- /package/{lib → dist}/pad.d.ts +0 -0
- /package/{lib → dist}/pad.d.ts.map +0 -0
- /package/{lib → dist}/participation.d.ts +0 -0
- /package/{lib → dist}/tabs.d.ts +0 -0
- /package/{lib → dist}/tabs.d.ts.map +0 -0
- /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
- /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
- /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
- /package/{lib → dist}/utils/label.d.ts +0 -0
- /package/{lib → dist}/utils/label.d.ts.map +0 -0
- /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
- /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
- /package/{lib → dist}/widgets/buttons.d.ts +0 -0
- /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
- /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contains the [[AddAgentButtons]] class
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import * as debug from '../debug';
|
|
6
|
+
import { icons } from '../iconBase';
|
|
7
|
+
import { ensureLoadedProfile } from '../login/login';
|
|
8
|
+
import ns from '../ns';
|
|
9
|
+
import * as utils from '../utils';
|
|
10
|
+
import * as widgets from '../widgets';
|
|
11
|
+
import { style } from '../style';
|
|
12
|
+
/**
|
|
13
|
+
* Renders the Sharing pane's "+" button and the menus behind it,
|
|
14
|
+
* see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add
|
|
15
|
+
*/
|
|
16
|
+
export class AddAgentButtons {
|
|
17
|
+
constructor(groupList) {
|
|
18
|
+
this.groupList = groupList;
|
|
19
|
+
this.isExpanded = false;
|
|
20
|
+
this.rootElement = groupList.controller.dom.createElement('div');
|
|
21
|
+
this.barElement = groupList.controller.dom.createElement('div');
|
|
22
|
+
}
|
|
23
|
+
render() {
|
|
24
|
+
this.rootElement.innerHTML = '';
|
|
25
|
+
this.rootElement.appendChild(this.renderAddButton());
|
|
26
|
+
this.rootElement.appendChild(this.barElement);
|
|
27
|
+
return this.rootElement;
|
|
28
|
+
}
|
|
29
|
+
renderAddButton() {
|
|
30
|
+
return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_34653_green.svg`, 'Add ...', () => {
|
|
31
|
+
this.toggleBar();
|
|
32
|
+
this.renderBar();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
renderBar() {
|
|
36
|
+
this.barElement.innerHTML = '';
|
|
37
|
+
if (!this.isExpanded) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.barElement.appendChild(this.renderPersonButton());
|
|
41
|
+
this.barElement.appendChild(this.renderGroupButton());
|
|
42
|
+
this.barElement.appendChild(this.renderPublicButton());
|
|
43
|
+
this.barElement.appendChild(this.renderAuthenticatedAgentButton());
|
|
44
|
+
this.barElement.appendChild(this.renderBotButton());
|
|
45
|
+
this.barElement.appendChild(this.renderAppsButton());
|
|
46
|
+
}
|
|
47
|
+
renderSimplifiedBar(button) {
|
|
48
|
+
Array.from(this.barElement.children)
|
|
49
|
+
.filter(element => element !== button)
|
|
50
|
+
.forEach(element => this.barElement.removeChild(element));
|
|
51
|
+
}
|
|
52
|
+
renderPersonButton() {
|
|
53
|
+
return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['vcard:Individual'], 'Add Person', event => {
|
|
54
|
+
this.renderSimplifiedBar(event.target);
|
|
55
|
+
this.renderNameForm(ns.vcard('Individual'), 'person')
|
|
56
|
+
.then(name => this.addPerson(name))
|
|
57
|
+
.then(() => this.renderCleanup())
|
|
58
|
+
.catch(error => this.groupList.controller.renderStatus(error));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
renderGroupButton() {
|
|
62
|
+
return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['vcard:Group'], 'Add Group', event => {
|
|
63
|
+
this.renderSimplifiedBar(event.target);
|
|
64
|
+
this.renderNameForm(ns.vcard('Group'), 'group')
|
|
65
|
+
.then(name => this.addGroup(name))
|
|
66
|
+
.then(() => this.renderCleanup())
|
|
67
|
+
.catch(error => this.groupList.controller.renderStatus(error));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
renderNameForm(type, noun) {
|
|
71
|
+
return widgets.askName(this.groupList.controller.dom, this.groupList.store, this.barElement, ns.vcard('URI'), type, noun);
|
|
72
|
+
}
|
|
73
|
+
renderPublicButton() {
|
|
74
|
+
return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['foaf:Agent'], 'Add Everyone', () => this.addAgent(ns.foaf('Agent').uri)
|
|
75
|
+
.then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))
|
|
76
|
+
.then(() => this.renderCleanup()));
|
|
77
|
+
}
|
|
78
|
+
renderAuthenticatedAgentButton() {
|
|
79
|
+
return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_99101.svg`, 'Anyone logged In', () => this.addAgent(ns.acl('AuthenticatedAgent').uri)
|
|
80
|
+
.then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))
|
|
81
|
+
.then(() => this.renderCleanup()));
|
|
82
|
+
}
|
|
83
|
+
renderBotButton() {
|
|
84
|
+
return widgets.button(this.groupList.controller.dom, icons.iconBase + 'noun_Robot_849764.svg', 'A Software Agent (bot)', event => {
|
|
85
|
+
this.renderSimplifiedBar(event.target);
|
|
86
|
+
this.renderNameForm(ns.schema('Application'), 'bot')
|
|
87
|
+
.then(name => this.addBot(name))
|
|
88
|
+
.then(() => this.renderCleanup());
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
renderAppsButton() {
|
|
92
|
+
return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_15177.svg`, 'A Web App (origin)', event => {
|
|
93
|
+
this.renderSimplifiedBar(event.target);
|
|
94
|
+
const eventContext = {
|
|
95
|
+
div: this.barElement,
|
|
96
|
+
dom: this.groupList.controller.dom
|
|
97
|
+
};
|
|
98
|
+
const existingApps = this.renderAppsTable(eventContext)
|
|
99
|
+
.catch(error => this.groupList.controller.renderStatus(error));
|
|
100
|
+
this.renderAppsView();
|
|
101
|
+
const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')
|
|
102
|
+
.then(name => this.getOriginFromName(name));
|
|
103
|
+
Promise.race([
|
|
104
|
+
existingApps,
|
|
105
|
+
newApp
|
|
106
|
+
])
|
|
107
|
+
.then(origin => {
|
|
108
|
+
if (origin) {
|
|
109
|
+
this.groupList.addNewURI(origin);
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
.then(() => this.renderCleanup());
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
renderAppsView() {
|
|
116
|
+
const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications');
|
|
117
|
+
if (trustedApplications) {
|
|
118
|
+
const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context);
|
|
119
|
+
trustedApplicationsElement.setAttribute('style', style.trustedAppController);
|
|
120
|
+
const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup());
|
|
121
|
+
cancelButton.setAttribute('style', style.trustedAppCancelButton);
|
|
122
|
+
trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild);
|
|
123
|
+
this.barElement.appendChild(trustedApplicationsElement);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async renderAppsTable(eventContext) {
|
|
127
|
+
await ensureLoadedProfile(eventContext);
|
|
128
|
+
const trustedApps = this.groupList.store.each(eventContext.me, ns.acl('trustedApp')); // @@ TODO fix as
|
|
129
|
+
const trustedOrigins = trustedApps.flatMap(app => this.groupList.store.each(app, ns.acl('origin'))); // @@ TODO fix as
|
|
130
|
+
this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`;
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'));
|
|
133
|
+
appsTable.setAttribute('style', style.trustedAppAddApplicationsTable);
|
|
134
|
+
trustedApps.forEach(app => {
|
|
135
|
+
const origin = this.groupList.store.any(app, ns.acl('origin')); // @@ TODO fix as
|
|
136
|
+
if (!origin) {
|
|
137
|
+
reject(new Error(`Unable to pick app: ${app.value}`));
|
|
138
|
+
}
|
|
139
|
+
const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {});
|
|
140
|
+
const innerTable = this.groupList.controller.dom.createElement('table');
|
|
141
|
+
const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'));
|
|
142
|
+
const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
|
|
143
|
+
innerLeftColumn.appendChild(thingTR);
|
|
144
|
+
const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
|
|
145
|
+
innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`;
|
|
146
|
+
const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
|
|
147
|
+
innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin.value)));
|
|
148
|
+
appsTable.appendChild(innerTable);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
renderCleanup() {
|
|
153
|
+
this.renderBar();
|
|
154
|
+
this.groupList.render();
|
|
155
|
+
}
|
|
156
|
+
async addPerson(name) {
|
|
157
|
+
if (!name)
|
|
158
|
+
return this.toggleBar(); // user cancelled
|
|
159
|
+
const domainNameRegexp = /^https?:/i;
|
|
160
|
+
if (!name.match(domainNameRegexp)) {
|
|
161
|
+
// @@ enforce in user input live like a form element
|
|
162
|
+
return Promise.reject(new Error('Not a http URI'));
|
|
163
|
+
}
|
|
164
|
+
// @@ check it actually is a person and has an owner who agrees they own it
|
|
165
|
+
debug.log(`Adding to ACL person: ${name}`);
|
|
166
|
+
await this.groupList.addNewURI(name);
|
|
167
|
+
this.toggleBar();
|
|
168
|
+
}
|
|
169
|
+
async addGroup(name) {
|
|
170
|
+
if (!name)
|
|
171
|
+
return this.toggleBar(); // user cancelled
|
|
172
|
+
const domainNameRegexp = /^https?:/i;
|
|
173
|
+
if (!name.match(domainNameRegexp)) {
|
|
174
|
+
// @@ enforce in user input live like a form element
|
|
175
|
+
return Promise.reject(new Error('Not a http URI'));
|
|
176
|
+
}
|
|
177
|
+
// @@ check it actually is a group and has an owner who agrees they own it
|
|
178
|
+
debug.log('Adding to ACL group: ' + name);
|
|
179
|
+
await this.groupList.addNewURI(name);
|
|
180
|
+
this.toggleBar();
|
|
181
|
+
}
|
|
182
|
+
async addAgent(agentUri) {
|
|
183
|
+
await this.groupList.addNewURI(agentUri);
|
|
184
|
+
this.toggleBar();
|
|
185
|
+
}
|
|
186
|
+
async addBot(name) {
|
|
187
|
+
if (!name)
|
|
188
|
+
return this.toggleBar(); // user cancelled
|
|
189
|
+
const domainNameRegexp = /^https?:/i;
|
|
190
|
+
if (!name.match(domainNameRegexp)) {
|
|
191
|
+
// @@ enforce in user input live like a form element
|
|
192
|
+
return Promise.reject(new Error('Not a http URI'));
|
|
193
|
+
}
|
|
194
|
+
// @@ check it actually is a bot and has an owner who agrees they own it
|
|
195
|
+
debug.log('Adding to ACL bot: ' + name);
|
|
196
|
+
await this.groupList.addNewURI(name);
|
|
197
|
+
this.toggleBar();
|
|
198
|
+
}
|
|
199
|
+
async getOriginFromName(name) {
|
|
200
|
+
if (!name)
|
|
201
|
+
return Promise.resolve(); // user cancelled
|
|
202
|
+
const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i;
|
|
203
|
+
// https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html
|
|
204
|
+
if (!name.match(domainNameRegexp)) {
|
|
205
|
+
// @@ enforce in user input live like a form element
|
|
206
|
+
return Promise.reject(new Error('Not a domain name'));
|
|
207
|
+
}
|
|
208
|
+
const origin = 'https://' + name;
|
|
209
|
+
debug.log('Adding to ACL origin: ' + origin);
|
|
210
|
+
this.toggleBar();
|
|
211
|
+
return origin;
|
|
212
|
+
}
|
|
213
|
+
toggleBar() {
|
|
214
|
+
this.isExpanded = !this.isExpanded;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=add-agent-buttons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-agent-buttons.js","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports all the exports from the various files in the src/acl/ folder
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import { ACLbyCombination, ACLToString, ACLunion, adoptACLDefault, comboToString, fixIndividualACL, fixIndividualCardACL, getACL, getACLorDefault, loadUnionACL, makeACLGraph, makeACLGraphbyCombo, makeACLString, putACLbyCombo, putACLObject, readACL, sameACL, setACL } from './acl';
|
|
6
|
+
import { ACLControlBox5, preventBrowserDropEvents, shortNameForFolder } from './acl-control';
|
|
7
|
+
export const acl = {
|
|
8
|
+
adoptACLDefault,
|
|
9
|
+
readACL,
|
|
10
|
+
sameACL,
|
|
11
|
+
ACLunion,
|
|
12
|
+
loadUnionACL,
|
|
13
|
+
ACLbyCombination,
|
|
14
|
+
makeACLGraph,
|
|
15
|
+
makeACLGraphbyCombo,
|
|
16
|
+
ACLToString,
|
|
17
|
+
comboToString,
|
|
18
|
+
makeACLString,
|
|
19
|
+
putACLObject,
|
|
20
|
+
putACLbyCombo,
|
|
21
|
+
fixIndividualCardACL,
|
|
22
|
+
fixIndividualACL,
|
|
23
|
+
setACL,
|
|
24
|
+
getACLorDefault,
|
|
25
|
+
getACL
|
|
26
|
+
};
|
|
27
|
+
export const aclControl = {
|
|
28
|
+
preventBrowserDropEvents,
|
|
29
|
+
shortNameForFolder,
|
|
30
|
+
ACLControlBox5
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/acl/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,EACN,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,OAAO,EACP,MAAM,EACP,MAAM,OAAO,CAAA;AACd,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,eAAe;IACf,OAAO;IACP,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,aAAa;IACb,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,gBAAgB;IAChB,MAAM;IACN,eAAe;IACf,MAAM;CACP,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,cAAc;CACf,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/acl/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as debug from '../debug';
|
|
2
|
+
import { schnorr } from '@noble/curves/secp256k1';
|
|
3
|
+
import { bytesToHex } from '@noble/hashes/utils';
|
|
4
|
+
import ns from '../ns';
|
|
5
|
+
import { store } from 'solid-logic';
|
|
6
|
+
import * as $rdf from 'rdflib';
|
|
7
|
+
import { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData';
|
|
8
|
+
import { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl';
|
|
9
|
+
export function generatePrivateKey() {
|
|
10
|
+
return bytesToHex(schnorr.utils.randomPrivateKey());
|
|
11
|
+
}
|
|
12
|
+
export function generatePublicKey(privateKey) {
|
|
13
|
+
return bytesToHex(schnorr.getPublicKey(privateKey));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* getPublicKey
|
|
17
|
+
* used for displaying messages in chat, therefore does not
|
|
18
|
+
* create a new key if not found
|
|
19
|
+
* @param webId
|
|
20
|
+
* @returns string | undefined
|
|
21
|
+
*/
|
|
22
|
+
export async function getPublicKey(webId) {
|
|
23
|
+
await store.fetcher.load(webId);
|
|
24
|
+
const publicKeyDoc = await pubKeyUrl(webId);
|
|
25
|
+
try {
|
|
26
|
+
await store.fetcher.load(publicKeyDoc); // url.href)
|
|
27
|
+
const key = store.any(webId, ns.solid('publicKey'));
|
|
28
|
+
return key === null || key === void 0 ? void 0 : key.value; // as NamedNode
|
|
29
|
+
}
|
|
30
|
+
catch (_err) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function getPrivateKey(webId) {
|
|
35
|
+
await store.fetcher.load(webId);
|
|
36
|
+
// find keys url's
|
|
37
|
+
const publicKeyDoc = await pubKeyUrl(webId);
|
|
38
|
+
const privateKeyDoc = await privKeyUrl(webId);
|
|
39
|
+
// find key pair
|
|
40
|
+
const publicKey = await getExistingPublicKey(webId, publicKeyDoc);
|
|
41
|
+
let privateKey = await getExistingPrivateKey(webId, privateKeyDoc);
|
|
42
|
+
// is publicKey valid ?
|
|
43
|
+
let validPublicKey = true;
|
|
44
|
+
if (privateKey && (publicKey !== generatePublicKey(privateKey))) {
|
|
45
|
+
if (confirm('This is strange the publicKey is not valid for\n' + (webId === null || webId === void 0 ? void 0 : webId.uri) +
|
|
46
|
+
'\'shall we repair keeping the private key ?'))
|
|
47
|
+
validPublicKey = false;
|
|
48
|
+
}
|
|
49
|
+
// create key pair or repair publicKey
|
|
50
|
+
if (!privateKey || !publicKey || !validPublicKey) {
|
|
51
|
+
let del = [];
|
|
52
|
+
let add = [];
|
|
53
|
+
if (!privateKey) {
|
|
54
|
+
// add = []
|
|
55
|
+
privateKey = generatePrivateKey();
|
|
56
|
+
add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))];
|
|
57
|
+
await saveKey(privateKeyDoc, [], add, webId.uri);
|
|
58
|
+
}
|
|
59
|
+
if (!publicKey || !validPublicKey) {
|
|
60
|
+
del = [];
|
|
61
|
+
// delete invalid public key
|
|
62
|
+
if (publicKey) {
|
|
63
|
+
del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), store.sym(publicKeyDoc))];
|
|
64
|
+
debug.log('delete invalid publicKey ' + del);
|
|
65
|
+
}
|
|
66
|
+
// update new valid key
|
|
67
|
+
const newPublicKey = generatePublicKey(privateKey);
|
|
68
|
+
add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))];
|
|
69
|
+
await saveKey(publicKeyDoc, del, add);
|
|
70
|
+
}
|
|
71
|
+
const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
|
|
72
|
+
await setAcl(keyContainer, keyContainerAclBody(webId.uri)); // includes DELETE and PUT
|
|
73
|
+
}
|
|
74
|
+
return privateKey;
|
|
75
|
+
}
|
|
76
|
+
const deleteKeyAcl = async (keyDoc) => {
|
|
77
|
+
await store.fetcher.load(keyDoc);
|
|
78
|
+
const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'));
|
|
79
|
+
if (keyAclDoc) {
|
|
80
|
+
// delete READ only keyAclDoc. This is possible if the webId is an owner
|
|
81
|
+
try {
|
|
82
|
+
const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value); // this may fail if webId is not an owner
|
|
83
|
+
debug.log('delete keyAcl' + keyAclDoc.value + ' ' + response.status); // should test 404 and 2xx
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (err.response.status !== 404) {
|
|
87
|
+
throw new Error(err);
|
|
88
|
+
}
|
|
89
|
+
debug.log('delete keyAcl' + keyAclDoc.value + ' ' + err.response.status); // should test 404 and 2xx
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* delete acl if keydoc exists
|
|
95
|
+
* create/edit keyDoc
|
|
96
|
+
* set keyDoc acl
|
|
97
|
+
*/
|
|
98
|
+
async function saveKey(keyDoc, del, add, me = '') {
|
|
99
|
+
await deleteKeyAcl(keyDoc);
|
|
100
|
+
// save key
|
|
101
|
+
await store.updater.updateMany(del, add); // or a promise store.updater.update ?
|
|
102
|
+
// create READ only ACL
|
|
103
|
+
const aclBody = keyAclBody(keyDoc, me);
|
|
104
|
+
await setAcl(keyDoc, aclBody);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { schnorr } from '@noble/curves/secp256k1';
|
|
2
|
+
import { bytesToHex } from '@noble/hashes/utils';
|
|
3
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
4
|
+
// import {utf8Encoder} from './utils'
|
|
5
|
+
// import { getPublicKey } from './keys'
|
|
6
|
+
export const utf8Decoder = new TextDecoder('utf-8');
|
|
7
|
+
export const utf8Encoder = new TextEncoder();
|
|
8
|
+
export const SEC = 'https://w3id.org/security#'; // Proof, VerificationMethod
|
|
9
|
+
export function getBlankMsg() {
|
|
10
|
+
return {
|
|
11
|
+
id: '',
|
|
12
|
+
created: '',
|
|
13
|
+
dateDeleted: '', // TODO to remove if not used
|
|
14
|
+
content: '',
|
|
15
|
+
maker: '',
|
|
16
|
+
sig: '' // TODO to remove if not used
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/* export function finishMsg (t: MsgTemplate, privateKey: string): Message {
|
|
20
|
+
// to update to chat message triples
|
|
21
|
+
const message = t as Message
|
|
22
|
+
// message.pubkey = getPublicKey(privateKey)
|
|
23
|
+
message.id = getMsgHash(message)
|
|
24
|
+
message.sig = signMsg(message, privateKey)
|
|
25
|
+
return message
|
|
26
|
+
} */
|
|
27
|
+
export function serializeMsg(msg) {
|
|
28
|
+
// to update to chat messages triples
|
|
29
|
+
/* if (!validateMsg(msg))
|
|
30
|
+
throw new Error("can't serialize message with wrong or missing properties") */
|
|
31
|
+
return JSON.stringify(msg);
|
|
32
|
+
}
|
|
33
|
+
export function getMsgHash(message) {
|
|
34
|
+
const msgHash = sha256(utf8Encoder.encode(serializeMsg(message)));
|
|
35
|
+
return bytesToHex(msgHash);
|
|
36
|
+
}
|
|
37
|
+
// const isRecord = (obj: unknown): obj is Record<string, unknown> => obj instanceof Object
|
|
38
|
+
/* export function validateMsg<T> (message: T): message is T & UnsignedMsg {
|
|
39
|
+
if (!isRecord(message)) return false
|
|
40
|
+
if (typeof message.kind !== 'number') return false
|
|
41
|
+
if (typeof message.content !== 'string') return false
|
|
42
|
+
if (typeof message.created_at !== 'number') return false
|
|
43
|
+
if (typeof message.pubkey !== 'string') return false
|
|
44
|
+
if (!message.pubkey.match(/^[a-f0-9]{64}$/)) return false
|
|
45
|
+
|
|
46
|
+
if (!Array.isArray(message.tags)) return false
|
|
47
|
+
for (let i = 0; i < message.tags.length; i++) {
|
|
48
|
+
let tag = message.tags[i]
|
|
49
|
+
if (!Array.isArray(tag)) return false
|
|
50
|
+
for (let j = 0; j < tag.length; j++) {
|
|
51
|
+
if (typeof tag[j] === 'object') return false
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return true
|
|
56
|
+
} */
|
|
57
|
+
export function verifySignature(sig, message, pubKey) {
|
|
58
|
+
return schnorr.verify(sig, getMsgHash(message), pubKey);
|
|
59
|
+
}
|
|
60
|
+
export function signMsg(message, key) {
|
|
61
|
+
return bytesToHex(schnorr.sign(getMsgHash(message), key));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/chat/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,sCAAsC;AACtC,wCAAwC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAE5C,MAAM,CAAC,MAAM,GAAG,GAAG,4BAA4B,CAAA,CAAC,4BAA4B;AA6C5E,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,EAAE,EAAE,EAAE;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE,EAAE,6BAA6B;QAC9C,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE,CAAC,6BAA6B;KACtC,CAAA;AACH,CAAC;AAED;;;;;;;IAOI;AAEJ,MAAM,UAAU,YAAY,CAAE,GAAgB;IAC5C,qCAAqC;IACrC;oFACgF;IAEhF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,OAAoB;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,2FAA2F;AAE3F;;;;;;;;;;;;;;;;;;IAkBI;AAEJ,MAAM,UAAU,eAAe,CAAE,GAAW,EAAE,OAAgB,EAAE,MAAc;IAC5E,OAAO,OAAO,CAAC,MAAM,CACnB,GAAG,EACH,UAAU,CAAC,OAAO,CAAC,EACnB,MAAM,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,OAAoB,EAAE,GAAW;IACxD,OAAO,UAAU,CACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CACvC,CAAA;AACH,CAAC"}
|