chat-pane 2.4.17 → 2.4.18
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/longChatPane.js +217 -169
- package/dist/longChatPane.js.map +1 -1
- package/dist/main.js +217 -169
- package/dist/main.js.map +1 -1
- package/dist/shortChatPane.js +217 -169
- package/dist/shortChatPane.js.map +1 -1
- package/package.json +8 -8
package/dist/longChatPane.js
CHANGED
|
@@ -3137,6 +3137,31 @@ function freeze(object, oc) {
|
|
|
3137
3137
|
return oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object
|
|
3138
3138
|
}
|
|
3139
3139
|
|
|
3140
|
+
/**
|
|
3141
|
+
* Since we can not rely on `Object.assign` we provide a simplified version
|
|
3142
|
+
* that is sufficient for our needs.
|
|
3143
|
+
*
|
|
3144
|
+
* @param {Object} target
|
|
3145
|
+
* @param {Object | null | undefined} source
|
|
3146
|
+
*
|
|
3147
|
+
* @returns {Object} target
|
|
3148
|
+
* @throws TypeError if target is not an object
|
|
3149
|
+
*
|
|
3150
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
|
|
3151
|
+
* @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign
|
|
3152
|
+
*/
|
|
3153
|
+
function assign(target, source) {
|
|
3154
|
+
if (target === null || typeof target !== 'object') {
|
|
3155
|
+
throw new TypeError('target is not an object')
|
|
3156
|
+
}
|
|
3157
|
+
for (var key in source) {
|
|
3158
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3159
|
+
target[key] = source[key]
|
|
3160
|
+
}
|
|
3161
|
+
}
|
|
3162
|
+
return target
|
|
3163
|
+
}
|
|
3164
|
+
|
|
3140
3165
|
/**
|
|
3141
3166
|
* All mime types that are allowed as input to `DOMParser.parseFromString`
|
|
3142
3167
|
*
|
|
@@ -3254,6 +3279,7 @@ var NAMESPACE = freeze({
|
|
|
3254
3279
|
XMLNS: 'http://www.w3.org/2000/xmlns/',
|
|
3255
3280
|
})
|
|
3256
3281
|
|
|
3282
|
+
exports.assign = assign;
|
|
3257
3283
|
exports.freeze = freeze;
|
|
3258
3284
|
exports.MIME_TYPE = MIME_TYPE;
|
|
3259
3285
|
exports.NAMESPACE = NAMESPACE;
|
|
@@ -4788,9 +4814,10 @@ function needNamespaceDefine(node, isHTML, visibleNamespaces) {
|
|
|
4788
4814
|
* are serialized as their entity references, so they will be preserved.
|
|
4789
4815
|
* (In contrast to whitespace literals in the input which are normalized to spaces)
|
|
4790
4816
|
* @see https://www.w3.org/TR/xml11/#AVNormalize
|
|
4817
|
+
* @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes
|
|
4791
4818
|
*/
|
|
4792
4819
|
function addSerializedAttribute(buf, qualifiedName, value) {
|
|
4793
|
-
buf.push(' ', qualifiedName, '="', value.replace(/[
|
|
4820
|
+
buf.push(' ', qualifiedName, '="', value.replace(/[<>&"\t\n\r]/g, _xmlEncoder), '"')
|
|
4794
4821
|
}
|
|
4795
4822
|
|
|
4796
4823
|
function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){
|
|
@@ -4935,10 +4962,10 @@ function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){
|
|
|
4935
4962
|
* and does not include the CDATA-section-close delimiter, `]]>`.
|
|
4936
4963
|
*
|
|
4937
4964
|
* @see https://www.w3.org/TR/xml/#NT-CharData
|
|
4965
|
+
* @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node
|
|
4938
4966
|
*/
|
|
4939
4967
|
return buf.push(node.data
|
|
4940
|
-
.replace(/[
|
|
4941
|
-
.replace(/]]>/g, ']]>')
|
|
4968
|
+
.replace(/[<&>]/g,_xmlEncoder)
|
|
4942
4969
|
);
|
|
4943
4970
|
case CDATA_SECTION_NODE:
|
|
4944
4971
|
return buf.push( '<![CDATA[',node.data,']]>');
|
|
@@ -43194,7 +43221,7 @@ function offlineTestID() {
|
|
|
43194
43221
|
return (0, rdflib_1.sym)($SolidTestEnvironment.username);
|
|
43195
43222
|
}
|
|
43196
43223
|
// hack that makes SolidOS work in offline mode by adding the webId directly in html
|
|
43197
|
-
// example usage: https://github.com/
|
|
43224
|
+
// example usage: https://github.com/solidos/mashlib/blob/29b8b53c46bf02e0e219f0bacd51b0e9951001dd/test/contact/local.html#L37
|
|
43198
43225
|
if (typeof document !== 'undefined' &&
|
|
43199
43226
|
document.location &&
|
|
43200
43227
|
('' + document.location).slice(0, 16) === 'http://localhost') {
|
|
@@ -44348,7 +44375,7 @@ var _fetch = function (url, requestInit) { return __awaiter(void 0, void 0, void
|
|
|
44348
44375
|
var omitCreds;
|
|
44349
44376
|
return __generator(this, function (_a) {
|
|
44350
44377
|
omitCreds = requestInit && requestInit.credentials && requestInit.credentials == 'omit';
|
|
44351
|
-
if (authSession_1.authSession.info.webId && !omitCreds) { // see https://github.com/
|
|
44378
|
+
if (authSession_1.authSession.info.webId && !omitCreds) { // see https://github.com/solidos/solidos/issues/114
|
|
44352
44379
|
// In fact ftech should respect crentials omit itself
|
|
44353
44380
|
return [2 /*return*/, authSession_1.authSession.fetch(url, requestInit)];
|
|
44354
44381
|
}
|
|
@@ -44579,7 +44606,7 @@ function ensureLoadedPreferences(context) {
|
|
|
44579
44606
|
* Resolves with the same context, outputting
|
|
44580
44607
|
* output: index.public, index.private
|
|
44581
44608
|
* @@ This is a very bizare function
|
|
44582
|
-
* @see https://github.com/
|
|
44609
|
+
* @see https://github.com/solidos/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
44583
44610
|
*/
|
|
44584
44611
|
function loadIndex(context, isPublic) {
|
|
44585
44612
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -44642,7 +44669,7 @@ function loadTypeIndexes(context) {
|
|
|
44642
44669
|
exports.loadTypeIndexes = loadTypeIndexes;
|
|
44643
44670
|
/**
|
|
44644
44671
|
* Resolves with the same context, outputting
|
|
44645
|
-
* @see https://github.com/
|
|
44672
|
+
* @see https://github.com/solidos/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
44646
44673
|
*/
|
|
44647
44674
|
function ensureTypeIndexes(context, agent) {
|
|
44648
44675
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -44670,7 +44697,7 @@ exports.ensureTypeIndexes = ensureTypeIndexes;
|
|
|
44670
44697
|
* Many reasons for failing including script not having permission etc
|
|
44671
44698
|
*
|
|
44672
44699
|
* Adds its output to the context
|
|
44673
|
-
* @see https://github.com/
|
|
44700
|
+
* @see https://github.com/solidos/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
44674
44701
|
*/
|
|
44675
44702
|
function ensureOneTypeIndex(context, isPublic, agent) {
|
|
44676
44703
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -44823,7 +44850,7 @@ function registerInTypeIndex(context, instance, theClass, isPublic, agent // Def
|
|
|
44823
44850
|
index = indexes[0];
|
|
44824
44851
|
registration = (0, uri_1.newThing)(index);
|
|
44825
44852
|
ins = [
|
|
44826
|
-
// See https://github.com/
|
|
44853
|
+
// See https://github.com/solidos/solid/blob/main/proposals/data-discovery.md
|
|
44827
44854
|
(0, rdflib_1.st)(registration, exports.ns.rdf('type'), exports.ns.solid('TypeRegistration'), index),
|
|
44828
44855
|
(0, rdflib_1.st)(registration, exports.ns.solid('forClass'), theClass, index),
|
|
44829
44856
|
(0, rdflib_1.st)(registration, exports.ns.solid('instance'), instance, index)
|
|
@@ -44927,7 +44954,7 @@ var UtilityLogic = /** @class */ (function () {
|
|
|
44927
44954
|
});
|
|
44928
44955
|
});
|
|
44929
44956
|
};
|
|
44930
|
-
// Copied from https://github.com/
|
|
44957
|
+
// Copied from https://github.com/solidos/web-access-control-tests/blob/v3.0.0/test/surface/delete.test.ts#L5
|
|
44931
44958
|
UtilityLogic.prototype.setSinglePeerAccess = function (options) {
|
|
44932
44959
|
return __awaiter(this, void 0, void 0, function () {
|
|
44933
44960
|
var str, aclDocUrl;
|
|
@@ -45015,7 +45042,7 @@ var UtilityLogic = /** @class */ (function () {
|
|
|
45015
45042
|
headers: {
|
|
45016
45043
|
"Content-Type": "text/turtle",
|
|
45017
45044
|
"If-None-Match": "*",
|
|
45018
|
-
Link: '<http://www.w3.org/ns/ldp#BasicContainer>; rel="type"', // See https://github.com/
|
|
45045
|
+
Link: '<http://www.w3.org/ns/ldp#BasicContainer>; rel="type"', // See https://github.com/solidos/node-solid-server/issues/1465
|
|
45019
45046
|
},
|
|
45020
45047
|
body: " ", // work around https://github.com/michielbdejong/community-server/issues/4#issuecomment-776222863
|
|
45021
45048
|
})];
|
|
@@ -45475,7 +45502,7 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
45475
45502
|
value: function renderTemporaryStatus(message) {
|
|
45476
45503
|
var _this5 = this;
|
|
45477
45504
|
|
|
45478
|
-
// @@ TODO Introduce better system for error notification to user https://github.com/
|
|
45505
|
+
// @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87
|
|
45479
45506
|
this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed);
|
|
45480
45507
|
this.statusElement.innerText = message;
|
|
45481
45508
|
this.statusElement.classList.add(this.classes.temporaryStatusInit);
|
|
@@ -45489,7 +45516,7 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
45489
45516
|
}, {
|
|
45490
45517
|
key: "renderStatus",
|
|
45491
45518
|
value: function renderStatus(message) {
|
|
45492
|
-
// @@ TODO Introduce better system for error notification to user https://github.com/
|
|
45519
|
+
// @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87
|
|
45493
45520
|
this.statusElement.classList.toggle(this.classes.aclControlBoxStatusRevealed, !!message);
|
|
45494
45521
|
this.statusElement.innerText = message;
|
|
45495
45522
|
}
|
|
@@ -45811,7 +45838,7 @@ var EXPLANATION = {
|
|
|
45811
45838
|
|
|
45812
45839
|
/**
|
|
45813
45840
|
* Renders the table of Owners, Editors, Posters, Submitters, Viewers
|
|
45814
|
-
* for https://github.com/
|
|
45841
|
+
* for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md
|
|
45815
45842
|
*/
|
|
45816
45843
|
var AccessGroups = /*#__PURE__*/function () {
|
|
45817
45844
|
// @@ was LiveStore but does not need to be connected to web
|
|
@@ -46314,7 +46341,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
46314
46341
|
|
|
46315
46342
|
/**
|
|
46316
46343
|
* Functions for rendering the ACL User Interface.
|
|
46317
|
-
* See https://github.com/
|
|
46344
|
+
* See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view
|
|
46318
46345
|
* for a screenshot.
|
|
46319
46346
|
* @packageDocumentation
|
|
46320
46347
|
*/
|
|
@@ -46411,7 +46438,7 @@ function shortNameForFolder(x) {
|
|
|
46411
46438
|
if (slash >= 0) {
|
|
46412
46439
|
str = str.slice(slash + 1);
|
|
46413
46440
|
} // Return the folder's filename, or '/' if nothing found
|
|
46414
|
-
// (but see https://github.com/
|
|
46441
|
+
// (but see https://github.com/solidos/solid-ui/issues/196
|
|
46415
46442
|
// regarding whether this happens at the domain root or
|
|
46416
46443
|
// not)
|
|
46417
46444
|
|
|
@@ -46424,7 +46451,7 @@ function shortNameForFolder(x) {
|
|
|
46424
46451
|
* Presumably the '5' is a version number of some sort,
|
|
46425
46452
|
* but all we know is it was already called ACLControlBox5
|
|
46426
46453
|
* when it was introduced into solid-ui in
|
|
46427
|
-
* https://github.com/
|
|
46454
|
+
* https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54
|
|
46428
46455
|
*/
|
|
46429
46456
|
|
|
46430
46457
|
|
|
@@ -46541,13 +46568,13 @@ function getDirectory(doc) {
|
|
|
46541
46568
|
function isStorage(doc, aclDoc, store) {
|
|
46542
46569
|
// @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is
|
|
46543
46570
|
// @@ underway to standardize a behavior that does not rely upon this hack
|
|
46544
|
-
// @@ hopefully fixed as part of https://github.com/
|
|
46571
|
+
// @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10
|
|
46545
46572
|
return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc);
|
|
46546
46573
|
}
|
|
46547
46574
|
|
|
46548
46575
|
function hasProtectedAcl(targetDoc) {
|
|
46549
46576
|
// @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed
|
|
46550
|
-
// Hopefully we'll find a better, standardized solution to this - https://github.com/
|
|
46577
|
+
// Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37
|
|
46551
46578
|
return targetDoc.uri === targetDoc.site().uri;
|
|
46552
46579
|
}
|
|
46553
46580
|
/** @internal */
|
|
@@ -46616,7 +46643,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
46616
46643
|
|
|
46617
46644
|
/**
|
|
46618
46645
|
* Non-UI functions for access control.
|
|
46619
|
-
* See https://github.com/
|
|
46646
|
+
* See https://github.com/solidos/web-access-control-spec
|
|
46620
46647
|
* for the spec that defines how ACL documents work.
|
|
46621
46648
|
* @packageDocumentation
|
|
46622
46649
|
*/
|
|
@@ -47218,7 +47245,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
47218
47245
|
|
|
47219
47246
|
/**
|
|
47220
47247
|
* Renders the Sharing pane's "+" button and the menus behind it,
|
|
47221
|
-
* see https://github.com/
|
|
47248
|
+
* see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add
|
|
47222
47249
|
*/
|
|
47223
47250
|
var AddAgentButtons = /*#__PURE__*/function () {
|
|
47224
47251
|
function AddAgentButtons(groupList) {
|
|
@@ -47787,7 +47814,7 @@ exports.styles = void 0;
|
|
|
47787
47814
|
|
|
47788
47815
|
/**
|
|
47789
47816
|
* Contains CSS styles for the Sharing pane,
|
|
47790
|
-
* see https://github.com/
|
|
47817
|
+
* see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md
|
|
47791
47818
|
* @packageDocumentation
|
|
47792
47819
|
*/
|
|
47793
47820
|
var styles = {
|
|
@@ -52358,11 +52385,11 @@ var _debug = __webpack_require__(/*! ./debug */ "./node_modules/solid-ui/lib/deb
|
|
|
52358
52385
|
*
|
|
52359
52386
|
* You can also use it if you want to just run a mashlib whhich takes its
|
|
52360
52387
|
* icons seved by other than github.
|
|
52361
|
-
*/
|
|
52388
|
+
*/
|
|
52362
52389
|
|
|
52363
52390
|
/* eslint-disable multiline-ternary */
|
|
52364
52391
|
// Do not export. lways us this module to find the icons, as it varies
|
|
52365
|
-
var iconsOnGithub = 'https://
|
|
52392
|
+
var iconsOnGithub = 'https://solidos.github.io/solid-ui/src';
|
|
52366
52393
|
var icons = module.scriptURI // Firefox extension
|
|
52367
52394
|
? {
|
|
52368
52395
|
iconBase: module.scriptURI.slice(0, module.scriptURI.lastIndexOf('/')) + '/icons/',
|
|
@@ -52418,7 +52445,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
52418
52445
|
SOFTWARE.
|
|
52419
52446
|
|
|
52420
52447
|
If you would like to know more about the solid Solid project, please see
|
|
52421
|
-
https://github.com/
|
|
52448
|
+
https://github.com/solidos/solid
|
|
52422
52449
|
*/
|
|
52423
52450
|
|
|
52424
52451
|
/**
|
|
@@ -52692,7 +52719,7 @@ var stylesheetsMap = new Map();
|
|
|
52692
52719
|
/**
|
|
52693
52720
|
* returns a StyleSheet object.
|
|
52694
52721
|
* See https://cssinjs.org/ for more info about JSS.
|
|
52695
|
-
* (despite the name, see https://github.com/
|
|
52722
|
+
* (despite the name, see https://github.com/solidos/solid-ui/issues/199)
|
|
52696
52723
|
*/
|
|
52697
52724
|
|
|
52698
52725
|
function getClasses(insertionPoint, styles) {
|
|
@@ -52702,7 +52729,7 @@ function getClasses(insertionPoint, styles) {
|
|
|
52702
52729
|
/**
|
|
52703
52730
|
* returns a JSS object.
|
|
52704
52731
|
* See https://cssinjs.org/ for more info about JSS.
|
|
52705
|
-
* (despite the name, see https://github.com/
|
|
52732
|
+
* (despite the name, see https://github.com/solidos/solid-ui/issues/199)
|
|
52706
52733
|
*/
|
|
52707
52734
|
|
|
52708
52735
|
|
|
@@ -53039,6 +53066,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
53039
53066
|
|
|
53040
53067
|
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; }
|
|
53041
53068
|
|
|
53069
|
+
/* eslint-disable camelcase */
|
|
53070
|
+
|
|
53042
53071
|
/**
|
|
53043
53072
|
* Signing in, signing up, profile and preferences reloading
|
|
53044
53073
|
* Type index management
|
|
@@ -53065,10 +53094,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
53065
53094
|
*/
|
|
53066
53095
|
|
|
53067
53096
|
/**
|
|
53068
|
-
|
|
53069
|
-
|
|
53070
|
-
|
|
53071
|
-
|
|
53097
|
+
* Resolves with the logged in user's WebID
|
|
53098
|
+
*
|
|
53099
|
+
* @param context
|
|
53100
|
+
*/
|
|
53072
53101
|
// used to be logIn
|
|
53073
53102
|
function ensureLoggedIn(context) {
|
|
53074
53103
|
var me = _solidLogic.authn.currentUser();
|
|
@@ -53262,11 +53291,11 @@ function ensureLoadedProfile(_x3) {
|
|
|
53262
53291
|
return _ensureLoadedProfile.apply(this, arguments);
|
|
53263
53292
|
}
|
|
53264
53293
|
/**
|
|
53265
|
-
|
|
53266
|
-
|
|
53267
|
-
|
|
53268
|
-
|
|
53269
|
-
|
|
53294
|
+
* Returns promise of context with arrays of symbols
|
|
53295
|
+
*
|
|
53296
|
+
* 2016-12-11 change to include forClass arc a la
|
|
53297
|
+
* https://github.com/solid/solid/blob/main/proposals/data-discovery.md
|
|
53298
|
+
*/
|
|
53270
53299
|
|
|
53271
53300
|
|
|
53272
53301
|
function _ensureLoadedProfile() {
|
|
@@ -53334,8 +53363,8 @@ function findAppInstances(_x4, _x5, _x6) {
|
|
|
53334
53363
|
return _findAppInstances.apply(this, arguments);
|
|
53335
53364
|
}
|
|
53336
53365
|
/**
|
|
53337
|
-
|
|
53338
|
-
|
|
53366
|
+
* UI to control registration of instance
|
|
53367
|
+
*/
|
|
53339
53368
|
|
|
53340
53369
|
|
|
53341
53370
|
function _findAppInstances() {
|
|
@@ -53484,8 +53513,8 @@ function registrationControl(_x7, _x8, _x9) {
|
|
|
53484
53513
|
return _registrationControl.apply(this, arguments);
|
|
53485
53514
|
}
|
|
53486
53515
|
/**
|
|
53487
|
-
|
|
53488
|
-
|
|
53516
|
+
* UI to List at all registered things
|
|
53517
|
+
*/
|
|
53489
53518
|
|
|
53490
53519
|
|
|
53491
53520
|
function _registrationControl() {
|
|
@@ -53711,14 +53740,14 @@ function getDefaultSignInButtonStyle() {
|
|
|
53711
53740
|
return 'padding: 1em; border-radius:0.5em; font-size: 100%;';
|
|
53712
53741
|
}
|
|
53713
53742
|
/**
|
|
53714
|
-
|
|
53715
|
-
|
|
53716
|
-
|
|
53717
|
-
|
|
53718
|
-
|
|
53719
|
-
|
|
53720
|
-
|
|
53721
|
-
|
|
53743
|
+
* Bootstrapping identity
|
|
53744
|
+
* (Called by `loginStatusBox()`)
|
|
53745
|
+
*
|
|
53746
|
+
* @param dom
|
|
53747
|
+
* @param setUserCallback
|
|
53748
|
+
*
|
|
53749
|
+
* @returns
|
|
53750
|
+
*/
|
|
53722
53751
|
|
|
53723
53752
|
|
|
53724
53753
|
function signInOrSignUpBox(dom, setUserCallback) {
|
|
@@ -53796,8 +53825,8 @@ function signInOrSignUpBox(dom, setUserCallback) {
|
|
|
53796
53825
|
|
|
53797
53826
|
function renderSignInPopup(dom) {
|
|
53798
53827
|
/**
|
|
53799
|
-
|
|
53800
|
-
|
|
53828
|
+
* Issuer Menu
|
|
53829
|
+
*/
|
|
53801
53830
|
var issuerPopup = dom.createElement('div');
|
|
53802
53831
|
issuerPopup.setAttribute('style', 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;');
|
|
53803
53832
|
dom.body.appendChild(issuerPopup);
|
|
@@ -53811,7 +53840,7 @@ function renderSignInPopup(dom) {
|
|
|
53811
53840
|
issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800');
|
|
53812
53841
|
issuerPopupBoxLabel.innerText = 'Select an identity provider';
|
|
53813
53842
|
var issuerPopupBoxCloseButton = dom.createElement('button');
|
|
53814
|
-
issuerPopupBoxCloseButton.innerHTML = '<img src="https://
|
|
53843
|
+
issuerPopupBoxCloseButton.innerHTML = '<img src="https://solidos.github.io/solid-ui/src/icons/noun_1180156.svg" style="width: 2em; height: 2em;" title="Cancel">';
|
|
53815
53844
|
issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;');
|
|
53816
53845
|
issuerPopupBoxCloseButton.addEventListener('click', function () {
|
|
53817
53846
|
issuerPopup.remove();
|
|
@@ -53864,8 +53893,8 @@ function renderSignInPopup(dom) {
|
|
|
53864
53893
|
};
|
|
53865
53894
|
}();
|
|
53866
53895
|
/**
|
|
53867
|
-
|
|
53868
|
-
|
|
53896
|
+
* Text-based idp selection
|
|
53897
|
+
*/
|
|
53869
53898
|
|
|
53870
53899
|
|
|
53871
53900
|
var issuerTextContainer = dom.createElement('div');
|
|
@@ -53892,8 +53921,8 @@ function renderSignInPopup(dom) {
|
|
|
53892
53921
|
issuerTextContainer.appendChild(issuerTextInputContainer);
|
|
53893
53922
|
issuerPopupBox.appendChild(issuerTextContainer);
|
|
53894
53923
|
/**
|
|
53895
|
-
|
|
53896
|
-
|
|
53924
|
+
* Button-based idp selection
|
|
53925
|
+
*/
|
|
53897
53926
|
|
|
53898
53927
|
var issuerButtonContainer = dom.createElement('div');
|
|
53899
53928
|
issuerButtonContainer.setAttribute('style', "\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n ");
|
|
@@ -53913,15 +53942,15 @@ function renderSignInPopup(dom) {
|
|
|
53913
53942
|
issuerPopupBox.appendChild(issuerButtonContainer);
|
|
53914
53943
|
}
|
|
53915
53944
|
/**
|
|
53916
|
-
|
|
53917
|
-
|
|
53918
|
-
|
|
53919
|
-
|
|
53920
|
-
|
|
53921
|
-
|
|
53922
|
-
|
|
53923
|
-
|
|
53924
|
-
|
|
53945
|
+
* Login status box
|
|
53946
|
+
*
|
|
53947
|
+
* A big sign-up/sign in box or a logout box depending on the state
|
|
53948
|
+
*
|
|
53949
|
+
* @param dom
|
|
53950
|
+
* @param listener
|
|
53951
|
+
*
|
|
53952
|
+
* @returns
|
|
53953
|
+
*/
|
|
53925
53954
|
|
|
53926
53955
|
|
|
53927
53956
|
function loginStatusBox(dom) {
|
|
@@ -54082,28 +54111,28 @@ _solidLogic.authSession.onLogout( /*#__PURE__*/(0, _asyncToGenerator2["default"]
|
|
|
54082
54111
|
}, _callee2, null, [[2, 17]]);
|
|
54083
54112
|
})));
|
|
54084
54113
|
/**
|
|
54085
|
-
|
|
54086
|
-
|
|
54087
|
-
|
|
54114
|
+
* Workspace selection etc
|
|
54115
|
+
* See https://github.com/solidos/userguide/issues/16
|
|
54116
|
+
*/
|
|
54088
54117
|
|
|
54089
54118
|
/**
|
|
54090
|
-
|
|
54091
|
-
|
|
54092
|
-
|
|
54093
|
-
|
|
54094
|
-
|
|
54095
|
-
|
|
54096
|
-
|
|
54097
|
-
|
|
54098
|
-
|
|
54099
|
-
|
|
54100
|
-
|
|
54101
|
-
|
|
54102
|
-
|
|
54103
|
-
|
|
54104
|
-
|
|
54105
|
-
|
|
54106
|
-
|
|
54119
|
+
* Returns a UI object which, if it selects a workspace,
|
|
54120
|
+
* will callback(workspace, newBase).
|
|
54121
|
+
* See https://github.com/solidos/userguide/issues/16 for more info on workspaces.
|
|
54122
|
+
*
|
|
54123
|
+
* If necessary, will get an account, preference file, etc. In sequence:
|
|
54124
|
+
*
|
|
54125
|
+
* - If not logged in, log in.
|
|
54126
|
+
* - Load preference file
|
|
54127
|
+
* - Prompt user for workspaces
|
|
54128
|
+
* - Allows the user to just type in a URI by hand
|
|
54129
|
+
*
|
|
54130
|
+
* Calls back with the workspace and the base URI
|
|
54131
|
+
*
|
|
54132
|
+
* @param dom
|
|
54133
|
+
* @param appDetails
|
|
54134
|
+
* @param callbackWS
|
|
54135
|
+
*/
|
|
54107
54136
|
|
|
54108
54137
|
|
|
54109
54138
|
function selectWorkspace(dom, appDetails, callbackWS) {
|
|
@@ -54366,21 +54395,21 @@ function selectWorkspace(dom, appDetails, callbackWS) {
|
|
|
54366
54395
|
} // selectWorkspace
|
|
54367
54396
|
|
|
54368
54397
|
/**
|
|
54369
|
-
|
|
54370
|
-
|
|
54371
|
-
|
|
54372
|
-
|
|
54373
|
-
|
|
54374
|
-
|
|
54375
|
-
|
|
54376
|
-
|
|
54377
|
-
|
|
54378
|
-
|
|
54379
|
-
|
|
54380
|
-
|
|
54381
|
-
|
|
54382
|
-
|
|
54383
|
-
|
|
54398
|
+
* Creates a new instance of an app.
|
|
54399
|
+
*
|
|
54400
|
+
* An instance of an app could be e.g. an issue tracker for a given project,
|
|
54401
|
+
* or a chess game, or calendar, or a health/fitness record for a person.
|
|
54402
|
+
*
|
|
54403
|
+
* Note that this use of the term 'app' refers more to entries in the user's
|
|
54404
|
+
* type index than to actual software applications that use the personal data
|
|
54405
|
+
* to which these entries point.
|
|
54406
|
+
*
|
|
54407
|
+
* @param dom
|
|
54408
|
+
* @param appDetails
|
|
54409
|
+
* @param callback
|
|
54410
|
+
*
|
|
54411
|
+
* @returns A div with a button in it for making a new app instance
|
|
54412
|
+
*/
|
|
54384
54413
|
|
|
54385
54414
|
|
|
54386
54415
|
function newAppInstance(dom, appDetails, callback) {
|
|
@@ -56661,7 +56690,7 @@ function participationObject(subject, padDoc, me) {
|
|
|
56661
56690
|
});
|
|
56662
56691
|
|
|
56663
56692
|
if (parps.length > 1) {
|
|
56664
|
-
// This can happen. https://github.com/
|
|
56693
|
+
// This can happen. https://github.com/solidos/chat-pane/issues/71
|
|
56665
56694
|
var candidates = [];
|
|
56666
56695
|
|
|
56667
56696
|
var _iterator = _createForOfIteratorHelper(parps),
|
|
@@ -59006,7 +59035,7 @@ var TabElement = /*#__PURE__*/function (_HTMLElement3) {
|
|
|
59006
59035
|
/**
|
|
59007
59036
|
* Use this widget to generate tabs from triples set in the global store.
|
|
59008
59037
|
*
|
|
59009
|
-
* [Here you can see examples of the tabs](https://
|
|
59038
|
+
* [Here you can see examples of the tabs](https://solidos.github.io/solid-ui/examples/tabs/).
|
|
59010
59039
|
*
|
|
59011
59040
|
* It assumes that items to use for tabs will be in a collection by default,
|
|
59012
59041
|
* e.g.:
|
|
@@ -59186,7 +59215,9 @@ function tabWidget(options) {
|
|
|
59186
59215
|
var selectedTabURI = options.selectedTab.uri;
|
|
59187
59216
|
var selectedTab1 = Array.from(tabContainer.children) // @ts-ignore
|
|
59188
59217
|
.find(function (tab) {
|
|
59189
|
-
return tab.subject &&
|
|
59218
|
+
return tab.subject && // @ts-ignore
|
|
59219
|
+
tab.subject.uri && // @ts-ignore
|
|
59220
|
+
tab.subject.uri === selectedTabURI;
|
|
59190
59221
|
});
|
|
59191
59222
|
var tab = selectedTab1 || selectedTab0 || tabContainer.children[0];
|
|
59192
59223
|
var clickMe = tab.firstChild; // @ts-ignore
|
|
@@ -59201,7 +59232,7 @@ function tabWidget(options) {
|
|
|
59201
59232
|
function addCancelButton(tabContainer) {
|
|
59202
59233
|
if (tabContainer.dataset.onCloseSet) {
|
|
59203
59234
|
// @@ TODO: this is only here to make the browser tests work
|
|
59204
|
-
// Discussion at https://github.com/
|
|
59235
|
+
// Discussion at https://github.com/solidos/solid-ui/pull/110#issuecomment-527080663
|
|
59205
59236
|
var existingCancelButton = tabContainer.querySelector('.unstyled');
|
|
59206
59237
|
tabContainer.removeChild(existingCancelButton);
|
|
59207
59238
|
}
|
|
@@ -59490,94 +59521,115 @@ function getPodOwner(_x, _x2) {
|
|
|
59490
59521
|
|
|
59491
59522
|
function _getPodOwner() {
|
|
59492
59523
|
_getPodOwner = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(pod, store) {
|
|
59493
|
-
var podOwner, guess;
|
|
59524
|
+
var response, containerTurtle, podOwner, guess;
|
|
59494
59525
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
59495
59526
|
while (1) {
|
|
59496
59527
|
switch (_context.prev = _context.next) {
|
|
59497
59528
|
case 0:
|
|
59498
59529
|
_context.prev = 0;
|
|
59499
|
-
|
|
59500
|
-
store.
|
|
59501
|
-
|
|
59502
|
-
|
|
59530
|
+
|
|
59531
|
+
if (store.any(pod, null, _.ns.ldp('Container'), pod)) {
|
|
59532
|
+
_context.next = 7;
|
|
59533
|
+
break;
|
|
59534
|
+
}
|
|
59535
|
+
|
|
59536
|
+
_context.next = 4;
|
|
59537
|
+
return store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, {
|
|
59538
|
+
headers: {
|
|
59539
|
+
accept: 'text/turtle'
|
|
59540
|
+
}
|
|
59541
|
+
}));
|
|
59503
59542
|
|
|
59504
59543
|
case 4:
|
|
59505
|
-
|
|
59544
|
+
response = _context.sent;
|
|
59545
|
+
containerTurtle = response.responseText;
|
|
59546
|
+
(0, _rdflib.parse)(containerTurtle, store, pod.uri, 'text/turtle');
|
|
59547
|
+
|
|
59548
|
+
case 7:
|
|
59549
|
+
_context.next = 13;
|
|
59550
|
+
break;
|
|
59551
|
+
|
|
59552
|
+
case 9:
|
|
59553
|
+
_context.prev = 9;
|
|
59506
59554
|
_context.t0 = _context["catch"](0);
|
|
59507
59555
|
console.error('Error loading pod ' + pod + ': ' + _context.t0);
|
|
59508
59556
|
return _context.abrupt("return", null);
|
|
59509
59557
|
|
|
59510
|
-
case
|
|
59558
|
+
case 13:
|
|
59511
59559
|
if (store.holds(pod, _.ns.rdf('type'), _.ns.space('Storage'), pod)) {
|
|
59512
|
-
_context.next =
|
|
59560
|
+
_context.next = 16;
|
|
59513
59561
|
break;
|
|
59514
59562
|
}
|
|
59515
59563
|
|
|
59516
59564
|
console.warn('Pod ' + pod + ' does not declare itself as a space:Storage');
|
|
59517
59565
|
return _context.abrupt("return", null);
|
|
59518
59566
|
|
|
59519
|
-
case
|
|
59567
|
+
case 16:
|
|
59520
59568
|
podOwner = store.any(pod, _.ns.solid('owner'), null, pod) || store.any(null, _.ns.space('storage'), pod, pod);
|
|
59521
59569
|
|
|
59522
59570
|
if (!podOwner) {
|
|
59523
|
-
_context.next =
|
|
59571
|
+
_context.next = 31;
|
|
59524
59572
|
break;
|
|
59525
59573
|
}
|
|
59526
59574
|
|
|
59527
|
-
_context.prev =
|
|
59528
|
-
// @ts-ignore LiveStore always has fetcher
|
|
59529
|
-
store.fetcher.load(podOwner.doc());
|
|
59575
|
+
_context.prev = 18;
|
|
59530
59576
|
_context.next = 21;
|
|
59577
|
+
return store.fetcher.load(podOwner.doc());
|
|
59578
|
+
|
|
59579
|
+
case 21:
|
|
59580
|
+
_context.next = 27;
|
|
59531
59581
|
break;
|
|
59532
59582
|
|
|
59533
|
-
case
|
|
59534
|
-
_context.prev =
|
|
59535
|
-
_context.t1 = _context["catch"](
|
|
59583
|
+
case 23:
|
|
59584
|
+
_context.prev = 23;
|
|
59585
|
+
_context.t1 = _context["catch"](18);
|
|
59536
59586
|
console.warn('Unable to load profile of pod owner ' + podOwner);
|
|
59537
59587
|
return _context.abrupt("return", null);
|
|
59538
59588
|
|
|
59539
|
-
case
|
|
59589
|
+
case 27:
|
|
59540
59590
|
if (!store.holds(podOwner, _.ns.space('storage'), pod, podOwner.doc())) {
|
|
59541
59591
|
console.warn("Pod owner ".concat(podOwner, " does NOT list pod ").concat(pod, " as their storage"));
|
|
59542
59592
|
}
|
|
59543
59593
|
|
|
59544
59594
|
return _context.abrupt("return", podOwner);
|
|
59545
59595
|
|
|
59546
|
-
case
|
|
59596
|
+
case 31:
|
|
59547
59597
|
// pod owner not declared in pod
|
|
59548
59598
|
// @@ TODO: This is given the structure that NSS provides
|
|
59549
59599
|
// This is a massive guess. For old pods which don't have owner link
|
|
59550
59600
|
guess = (0, _rdflib.sym)("".concat(pod.uri, "profile/card#me"));
|
|
59551
|
-
_context.prev =
|
|
59552
|
-
|
|
59553
|
-
store.fetcher.load(guess);
|
|
59554
|
-
|
|
59601
|
+
_context.prev = 32;
|
|
59602
|
+
_context.next = 35;
|
|
59603
|
+
return store.fetcher.load(guess);
|
|
59604
|
+
|
|
59605
|
+
case 35:
|
|
59606
|
+
_context.next = 41;
|
|
59555
59607
|
break;
|
|
59556
59608
|
|
|
59557
|
-
case
|
|
59558
|
-
_context.prev =
|
|
59559
|
-
_context.t2 = _context["catch"](
|
|
59609
|
+
case 37:
|
|
59610
|
+
_context.prev = 37;
|
|
59611
|
+
_context.t2 = _context["catch"](32);
|
|
59560
59612
|
console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\'t load it.');
|
|
59561
59613
|
return _context.abrupt("return", null);
|
|
59562
59614
|
|
|
59563
|
-
case
|
|
59615
|
+
case 41:
|
|
59564
59616
|
if (!store.holds(guess, _.ns.space('storage'), pod, guess.doc())) {
|
|
59565
|
-
_context.next =
|
|
59617
|
+
_context.next = 44;
|
|
59566
59618
|
break;
|
|
59567
59619
|
}
|
|
59568
59620
|
|
|
59569
59621
|
console.warn('Using guessed pod owner webid but it links back.');
|
|
59570
59622
|
return _context.abrupt("return", guess);
|
|
59571
59623
|
|
|
59572
|
-
case
|
|
59624
|
+
case 44:
|
|
59573
59625
|
return _context.abrupt("return", null);
|
|
59574
59626
|
|
|
59575
|
-
case
|
|
59627
|
+
case 45:
|
|
59576
59628
|
case "end":
|
|
59577
59629
|
return _context.stop();
|
|
59578
59630
|
}
|
|
59579
59631
|
}
|
|
59580
|
-
}, _callee, null, [[0,
|
|
59632
|
+
}, _callee, null, [[0, 9], [18, 23], [32, 37]]);
|
|
59581
59633
|
}));
|
|
59582
59634
|
return _getPodOwner.apply(this, arguments);
|
|
59583
59635
|
}
|
|
@@ -60423,28 +60475,26 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
60423
60475
|
}));
|
|
60424
60476
|
exports.versionInfo = void 0;
|
|
60425
60477
|
var versionInfo = {
|
|
60426
|
-
buildTime: '2022-
|
|
60427
|
-
commit: '
|
|
60478
|
+
buildTime: '2022-04-14T16:35:17Z',
|
|
60479
|
+
commit: 'deb2e922d6e6ae79a8dc9b2702fefa134ba9c14a',
|
|
60428
60480
|
npmInfo: {
|
|
60429
|
-
'solid-ui': '2.4.
|
|
60430
|
-
npm: '
|
|
60431
|
-
|
|
60432
|
-
v8: '9.4.146.24-node.20',
|
|
60433
|
-
uv: '1.43.0',
|
|
60434
|
-
zlib: '1.2.11',
|
|
60481
|
+
'solid-ui': '2.4.21',
|
|
60482
|
+
npm: '6.14.13',
|
|
60483
|
+
ares: '1.17.1',
|
|
60435
60484
|
brotli: '1.0.9',
|
|
60436
|
-
|
|
60437
|
-
|
|
60438
|
-
|
|
60485
|
+
cldr: '39.0',
|
|
60486
|
+
icu: '69.1',
|
|
60487
|
+
llhttp: '2.1.3',
|
|
60488
|
+
modules: '83',
|
|
60439
60489
|
napi: '8',
|
|
60440
|
-
|
|
60441
|
-
|
|
60442
|
-
|
|
60443
|
-
|
|
60444
|
-
|
|
60445
|
-
|
|
60446
|
-
|
|
60447
|
-
|
|
60490
|
+
nghttp2: '1.42.0',
|
|
60491
|
+
node: '14.17.3',
|
|
60492
|
+
openssl: '1.1.1k',
|
|
60493
|
+
tz: '2021a',
|
|
60494
|
+
unicode: '13.0',
|
|
60495
|
+
uv: '1.41.0',
|
|
60496
|
+
v8: '8.4.371.23-node.67',
|
|
60497
|
+
zlib: '1.2.11'
|
|
60448
60498
|
}
|
|
60449
60499
|
};
|
|
60450
60500
|
exports.versionInfo = versionInfo;
|
|
@@ -62245,7 +62295,7 @@ function uploadFiles(fetcher, files, fileBase, imageBase, successHandler) {
|
|
|
62245
62295
|
} else {
|
|
62246
62296
|
var extension = mime.extension(theFile.type); // Note not simple: eg .mp3 => audio/mpeg; .mpga => audio/mpeg; audio/mp3 => .mp3
|
|
62247
62297
|
|
|
62248
|
-
if (extension && !theFile.name.endsWith('.' + extension) && // Not already has preferred extension? and ...
|
|
62298
|
+
if (extension && extension !== 'false' && !theFile.name.endsWith('.' + extension) && // Not already has preferred extension? and ...
|
|
62249
62299
|
theFile.type !== mime.lookup(theFile.name)) {
|
|
62250
62300
|
// the mime type of this ext is not the right one?
|
|
62251
62301
|
suffix = '_.' + extension; // console.log('MIME TYPE MISMATCH: ' + mime.lookup(theFile.name) + ': adding extension: ' + suffix)
|
|
@@ -66009,7 +66059,7 @@ function queryESCODataByName(_x, _x2, _x3) {
|
|
|
66009
66059
|
*
|
|
66010
66060
|
* Wikidata bug: https://phabricator.wikimedia.org/T283962
|
|
66011
66061
|
* This will not be needed whn that WDQS bug fixed.
|
|
66012
|
-
* This is aptured in https://github.com/
|
|
66062
|
+
* This is aptured in https://github.com/solidos/solid-ui/issues/403
|
|
66013
66063
|
*/
|
|
66014
66064
|
|
|
66015
66065
|
|
|
@@ -76850,8 +76900,9 @@ class LocalJWKSet {
|
|
|
76850
76900
|
}
|
|
76851
76901
|
async getKey(protectedHeader, token) {
|
|
76852
76902
|
const { alg, kid } = { ...protectedHeader, ...token.header };
|
|
76903
|
+
const kty = getKtyFromAlg(alg);
|
|
76853
76904
|
const candidates = this._jwks.keys.filter((jwk) => {
|
|
76854
|
-
let candidate =
|
|
76905
|
+
let candidate = kty === jwk.kty;
|
|
76855
76906
|
if (candidate && typeof kid === 'string') {
|
|
76856
76907
|
candidate = kid === jwk.kid;
|
|
76857
76908
|
}
|
|
@@ -78068,21 +78119,15 @@ function lengthAndInput(input) {
|
|
|
78068
78119
|
}
|
|
78069
78120
|
async function concatKdf(secret, bits, value) {
|
|
78070
78121
|
const iterations = Math.ceil((bits >> 3) / 32);
|
|
78071
|
-
|
|
78072
|
-
for (let iter =
|
|
78122
|
+
const res = new Uint8Array(iterations * 32);
|
|
78123
|
+
for (let iter = 0; iter < iterations; iter++) {
|
|
78073
78124
|
const buf = new Uint8Array(4 + secret.length + value.length);
|
|
78074
|
-
buf.set(uint32be(iter));
|
|
78125
|
+
buf.set(uint32be(iter + 1));
|
|
78075
78126
|
buf.set(secret, 4);
|
|
78076
78127
|
buf.set(value, 4 + secret.length);
|
|
78077
|
-
|
|
78078
|
-
res = await (0,_runtime_digest_js__WEBPACK_IMPORTED_MODULE_0__["default"])('sha256', buf);
|
|
78079
|
-
}
|
|
78080
|
-
else {
|
|
78081
|
-
res = concat(res, await (0,_runtime_digest_js__WEBPACK_IMPORTED_MODULE_0__["default"])('sha256', buf));
|
|
78082
|
-
}
|
|
78128
|
+
res.set(await (0,_runtime_digest_js__WEBPACK_IMPORTED_MODULE_0__["default"])('sha256', buf), iter * 32);
|
|
78083
78129
|
}
|
|
78084
|
-
|
|
78085
|
-
return res;
|
|
78130
|
+
return res.slice(0, bits >> 3);
|
|
78086
78131
|
}
|
|
78087
78132
|
|
|
78088
78133
|
|
|
@@ -79297,9 +79342,12 @@ const encode = (input) => {
|
|
|
79297
79342
|
return encodeBase64(input).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
|
|
79298
79343
|
};
|
|
79299
79344
|
const decodeBase64 = (encoded) => {
|
|
79300
|
-
|
|
79301
|
-
|
|
79302
|
-
|
|
79345
|
+
const binary = atob(encoded);
|
|
79346
|
+
const bytes = new Uint8Array(binary.length);
|
|
79347
|
+
for (let i = 0; i < binary.length; i++) {
|
|
79348
|
+
bytes[i] = binary.charCodeAt(i);
|
|
79349
|
+
}
|
|
79350
|
+
return bytes;
|
|
79303
79351
|
};
|
|
79304
79352
|
const decode = (input) => {
|
|
79305
79353
|
let encoded = input;
|