solid-ui 2.4.22-fd0ccabe → 2.4.22-fd705c8d
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/main.js +2059 -1163
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +9 -14
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +10 -15
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +9 -13
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +7 -11
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +13 -19
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js.map +1 -1
- package/lib/acl/types.js.map +1 -1
- package/lib/chat/bookmarks.js +14 -19
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +9 -15
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +12 -17
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +29 -37
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +14 -14
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +10 -23
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +4 -9
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js.map +1 -1
- package/lib/create/types.js.map +1 -1
- package/lib/debug.js.map +1 -1
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +8 -10
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +9 -17
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js.map +1 -1
- package/lib/icons/solid_logo.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +21 -63
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/matrix/types.js.map +1 -1
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +4 -20
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js.map +1 -1
- package/lib/pad.js.map +1 -1
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +67 -0
- package/lib/style_multiSelect.js.map +1 -0
- package/lib/table.js.map +1 -1
- package/lib/tabs.d.ts +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +38 -22
- package/lib/tabs.js.map +1 -1
- package/lib/typings.d.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +5 -7
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +1 -1
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +5 -5
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +17 -15
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +5 -8
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +21 -19
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +8 -15
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +22 -27
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +504 -203
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +784 -0
- package/lib/widgets/multiSelect.js.map +1 -0
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +5 -3
|
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.AccessController = void 0;
|
|
11
11
|
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
13
|
|
|
16
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -35,10 +33,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
35
33
|
|
|
36
34
|
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; }
|
|
37
35
|
|
|
38
|
-
/**
|
|
39
|
-
* Contains the [[AccessController]] class
|
|
40
|
-
* @packageDocumentation
|
|
41
|
-
*/
|
|
36
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
42
37
|
|
|
43
38
|
/**
|
|
44
39
|
* Rendered HTML component used in the databrowser's Sharing pane.
|
|
@@ -230,12 +225,12 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
230
225
|
}, {
|
|
231
226
|
key: "addAcls",
|
|
232
227
|
value: function () {
|
|
233
|
-
var _addAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
228
|
+
var _addAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
234
229
|
var _this6 = this;
|
|
235
230
|
|
|
236
231
|
var message, aclGraph, _message;
|
|
237
232
|
|
|
238
|
-
return
|
|
233
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
239
234
|
while (1) {
|
|
240
235
|
switch (_context.prev = _context.next) {
|
|
241
236
|
case 0:
|
|
@@ -285,8 +280,8 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
285
280
|
}, {
|
|
286
281
|
key: "addDefaults",
|
|
287
282
|
value: function () {
|
|
288
|
-
var _addDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
289
|
-
return
|
|
283
|
+
var _addDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
284
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
290
285
|
while (1) {
|
|
291
286
|
switch (_context2.prev = _context2.next) {
|
|
292
287
|
case 0:
|
|
@@ -312,9 +307,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
312
307
|
}, {
|
|
313
308
|
key: "removeAcls",
|
|
314
309
|
value: function () {
|
|
315
|
-
var _removeAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
310
|
+
var _removeAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
316
311
|
var message;
|
|
317
|
-
return
|
|
312
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
318
313
|
while (1) {
|
|
319
314
|
switch (_context3.prev = _context3.next) {
|
|
320
315
|
case 0:
|
|
@@ -367,9 +362,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
367
362
|
}, {
|
|
368
363
|
key: "removeDefaults",
|
|
369
364
|
value: function () {
|
|
370
|
-
var _removeDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
365
|
+
var _removeDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
371
366
|
var fallbackCombo;
|
|
372
|
-
return
|
|
367
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
373
368
|
while (1) {
|
|
374
369
|
switch (_context4.prev = _context4.next) {
|
|
375
370
|
case 0:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/acl/access-controller.ts"],"names":["AccessController","subject","noun","context","statusElement","classes","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","rootElement","createElement","classList","add","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","aclMap","innerHTML","renderStatus","defaultHolderLink","appendChild","href","innerText","render","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","useDefaultButton","utils","label","bigButton","addEventListener","removeAcls","then","error","addAclButton","addAcls","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","removeDefaults","message","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","toggle","debug","Promise","reject","aclGraph","statements","forEach","st","predicate","object","fetcher","putBack","resolve","warn","fallbackCombo","save","newAClGraph","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public classes: Record<string, string>,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.classList.add(classes.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.classList.add(this.classes.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.classList.add(this.classes.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.classList.add(this.classes.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.classList.add(this.classes.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.toggle(this.classes.aclControlBoxStatusRevealed, !!message)\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"file":"access-controller.js"}
|
|
1
|
+
{"version":3,"file":"access-controller.js","names":["AccessController","subject","noun","context","statusElement","classes","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","rootElement","createElement","classList","add","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","adoptACLDefault","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","sameACL","aclMap","innerHTML","renderStatus","defaultHolderLink","appendChild","href","innerText","shortNameForFolder","render","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","useDefaultButton","utils","label","bigButton","addEventListener","removeAcls","then","error","addAclButton","addAcls","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","removeDefaults","message","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","toggle","debug","Promise","reject","aclGraph","statements","forEach","st","predicate","object","fetcher","putBack","resolve","getProspectiveHolder","warn","fallbackCombo","save","newAClGraph","graph","makeACLGraphbyCombo","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"sources":["../../src/acl/access-controller.ts"],"sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public classes: Record<string, string>,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.classList.add(classes.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.classList.add(this.classes.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.classList.add(this.classes.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.classList.add(this.classes.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.classList.add(this.classes.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.toggle(this.classes.aclControlBoxStatusRevealed, !!message)\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;+CAVA,oJ;;AAYA;AACA;AACA;IACaA,gB;EAQX,0BACSC,OADT,EAESC,IAFT,EAGSC,OAHT,EAIUC,aAJV,EAKSC,OALT,EAMSC,iBANT,EAOUC,SAPV,EAQUC,YARV,EASUC,aATV,EAUUC,aAVV,EAWUC,wBAXV,EAYSC,KAZT,EAaSC,GAbT,EAcE;IAAA;IAAA,KAbOZ,OAaP,GAbOA,OAaP;IAAA,KAZOC,IAYP,GAZOA,IAYP;IAAA,KAXOC,OAWP,GAXOA,OAWP;IAAA,KAVQC,aAUR,GAVQA,aAUR;IAAA,KATOC,OASP,GATOA,OASP;IAAA,KAROC,iBAQP,GAROA,iBAQP;IAAA,KAPQC,SAOR,GAPQA,SAOR;IAAA,KANQC,YAMR,GANQA,YAMR;IAAA,KALQC,aAKR,GALQA,aAKR;IAAA,KAJQC,aAIR,GAJQA,aAIR;IAAA,KAHQC,wBAGR,GAHQA,wBAGR;IAAA,KAFOC,KAEP,GAFOA,KAEP;IAAA,KADOC,GACP,GADOA,GACP;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IACA,KAAKC,WAAL,GAAmBD,GAAG,CAACE,aAAJ,CAAkB,KAAlB,CAAnB;IACA,KAAKD,WAAL,CAAiBE,SAAjB,CAA2BC,GAA3B,CAA+BZ,OAAO,CAACa,eAAvC;IACA,KAAKC,WAAL,GAAmBZ,SAAS,CAACa,GAAV,CAAcC,KAAd,CAAoB,CAAC,CAArB,MAA4B,GAA/C,CAHA,CAGmD;;IACnD,IAAIZ,aAAa,IAAIC,aAArB,EAAoC;MAClC,KAAKY,eAAL,GAAuB,IAAvB;MACA,IAAMC,eAAe,GAAG,IAAAC,oBAAA,EAAgB,KAAKjB,SAArB,EAAgCC,YAAhC,EAA8CC,aAA9C,EAA6DC,aAA7D,CAAxB;MACA,KAAKe,SAAL,GAAiB,IAAIC,0BAAJ,CAAiBnB,SAAjB,EAA4BC,YAA5B,EAA0C,IAA1C,EAAgDe,eAAhD,EAAiE;QAAEI,QAAQ,EAAE,KAAKR;MAAjB,CAAjE,CAAjB;MACA,KAAKS,aAAL,GAAqB,IAArB;MACA,KAAKC,cAAL,GAAsB,KAAtB;IACD,CAND,MAMO;MACL,KAAKP,eAAL,GAAuB,KAAvB;MACA,KAAKG,SAAL,GAAiB,IAAIC,0BAAJ,CAAiBnB,SAAjB,EAA4BC,YAA5B,EAA0C,IAA1C,EAAgDI,KAAhD,CAAjB;MACA,KAAKgB,aAAL,GAAqB,IAAIF,0BAAJ,CAAiBnB,SAAjB,EAA4BC,YAA5B,EAA0C,IAA1C,EAAgDI,KAAhD,EAAuD;QAAEe,QAAQ,EAAE,KAAKR;MAAjB,CAAvD,CAArB;MACA,KAAKU,cAAL,GAAsB,CAAC,IAAAC,YAAA,EAAQ,KAAKL,SAAL,CAAeM,MAAvB,EAA+B,KAAKH,aAAL,CAAmBG,MAAlD,CAAvB;IACD;EACF;;;;SAED,eAAkC;MAChC,OAAO,CAAC,KAAKT,eAAb;IACD;;;WAED,kBAA8B;MAC5B,KAAKR,WAAL,CAAiBkB,SAAjB,GAA6B,EAA7B;;MACA,IAAI,KAAKV,eAAT,EAA0B;QACxB,KAAKW,YAAL,gCAA0C,KAAK/B,IAA/C;;QACA,IAAI,KAAKO,aAAT,EAAwB;UACtB,IAAMyB,iBAAiB,GAAG,KAAK9B,aAAL,CAAmB+B,WAAnB,CAA+B,KAAKtB,GAAL,CAASE,aAAT,CAAuB,GAAvB,CAA/B,CAA1B;UACAmB,iBAAiB,CAACE,IAAlB,GAAyB,KAAK3B,aAAL,CAAmBW,GAA5C;UACAc,iBAAiB,CAACG,SAAlB,GAA8B,IAAAC,8BAAA,EAAmB,KAAK7B,aAAxB,CAA9B;QACD;MACF,CAPD,MAOO,IAAI,CAAC,KAAKoB,cAAN,IAAwB,KAAKV,WAAjC,EAA8C;QACnD,KAAKc,YAAL,CAAkB,qDAAlB;MACD,CAFM,MAEA;QACL,KAAKA,YAAL,CAAkB,EAAlB;MACD;;MACD,KAAKnB,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKV,SAAL,CAAec,MAAf,EAA7B;;MACA,IAAI,KAAKX,aAAL,IAAsB,KAAKC,cAA/B,EAA+C;QAC7C,KAAKf,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKK,8BAAL,EAA7B;QACA,KAAK1B,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKP,aAAL,CAAmBW,MAAnB,EAA7B;MACD,CAHD,MAGO,IAAI,KAAKE,UAAL,IAAmB,KAAKtB,WAA5B,EAAyC;QAC9C,KAAKL,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKO,2BAAL,EAA7B;MACD;;MACD,IAAI,CAAC,KAAKpC,iBAAN,IAA2B,KAAKgB,eAApC,EAAqD;QACnD,KAAKR,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKQ,uBAAL,EAA7B;MACD,CAFD,MAEO,IAAI,CAAC,KAAKrC,iBAAV,EAA6B;QAClC,KAAKQ,WAAL,CAAiBqB,WAAjB,CAA6B,KAAKS,0BAAL,EAA7B;MACD;;MACD,OAAO,KAAK9B,WAAZ;IACD;;;WAED,sCAAmD;MAAA;;MACjD,IAAM+B,gBAAgB,GAAG,KAAKhC,GAAL,CAASE,aAAT,CAAuB,QAAvB,CAAzB;MACA8B,gBAAgB,CAACR,SAAjB,qDAAwE,KAAKnC,IAA7E,iCAAwG,KAAKS,wBAAL,kBAAwCmC,KAAK,CAACC,KAAN,CAAY,KAAKpC,wBAAjB,CAAxC,IAAuF,EAA/L;MACAkC,gBAAgB,CAAC7B,SAAjB,CAA2BC,GAA3B,CAA+B,KAAKZ,OAAL,CAAa2C,SAA5C;MACAH,gBAAgB,CAACI,gBAAjB,CAAkC,OAAlC,EAA2C;QAAA,OAAM,KAAI,CAACC,UAAL,GAC9CC,IAD8C,CACzC;UAAA,OAAM,KAAI,CAACZ,MAAL,EAAN;QAAA,CADyC,WAExC,UAAAa,KAAK;UAAA,OAAI,KAAI,CAACnB,YAAL,CAAkBmB,KAAlB,CAAJ;QAAA,CAFmC,CAAN;MAAA,CAA3C;MAGA,OAAOP,gBAAP;IACD;;;WAED,mCAAgD;MAAA;;MAC9C,IAAMQ,YAAY,GAAG,KAAKxC,GAAL,CAASE,aAAT,CAAuB,QAAvB,CAArB;MACAsC,YAAY,CAAChB,SAAb,2CAA0D,KAAKnC,IAA/D;MACAmD,YAAY,CAACrC,SAAb,CAAuBC,GAAvB,CAA2B,KAAKZ,OAAL,CAAa2C,SAAxC;MACAK,YAAY,CAACJ,gBAAb,CAA8B,OAA9B,EAAuC;QAAA,OAAM,MAAI,CAACK,OAAL,GAC1CH,IAD0C,CACrC;UAAA,OAAM,MAAI,CAACZ,MAAL,EAAN;QAAA,CADqC,WAEpC,UAAAa,KAAK;UAAA,OAAI,MAAI,CAACnB,YAAL,CAAkBmB,KAAlB,CAAJ;QAAA,CAF+B,CAAN;MAAA,CAAvC;MAGA,OAAOC,YAAP;IACD;;;WAED,uCAAoD;MAAA;;MAClD,IAAME,gBAAgB,GAAG,KAAK1C,GAAL,CAASE,aAAT,CAAuB,KAAvB,CAAzB;MACAwC,gBAAgB,CAACvC,SAAjB,CAA2BC,GAA3B,CAA+B,KAAKZ,OAAL,CAAamD,kBAA5C;MAEA,IAAMC,aAAa,GAAGF,gBAAgB,CAACpB,WAAjB,CAA6B,KAAKtB,GAAL,CAASE,aAAT,CAAuB,KAAvB,CAA7B,CAAtB;MACA0C,aAAa,CAACpB,SAAd,GAA0B,+EAA1B;MACAoB,aAAa,CAACzC,SAAd,CAAwBC,GAAxB,CAA4B,KAAKZ,OAAL,CAAaqD,wBAAzC;MAEA,IAAMC,MAAM,GAAGJ,gBAAgB,CAACpB,WAAjB,CAA6B,KAAKtB,GAAL,CAASE,aAAT,CAAuB,QAAvB,CAA7B,CAAf;MACA4C,MAAM,CAACtB,SAAP,GAAmB,+EAAnB;MACAsB,MAAM,CAAC3C,SAAP,CAAiBC,GAAjB,CAAqB,KAAKZ,OAAL,CAAa2C,SAAlC;MACAW,MAAM,CAACV,gBAAP,CAAwB,OAAxB,EAAiC;QAAA,OAAM,MAAI,CAACW,WAAL,GACpCT,IADoC,CAC/B;UAAA,OAAM,MAAI,CAACZ,MAAL,EAAN;QAAA,CAD+B,CAAN;MAAA,CAAjC;MAEA,OAAOgB,gBAAP;IACD;;;WAED,0CAAuD;MAAA;;MACrD,IAAMA,gBAAgB,GAAG,KAAK1C,GAAL,CAASE,aAAT,CAAuB,KAAvB,CAAzB;MACAwC,gBAAgB,CAACvC,SAAjB,CAA2BC,GAA3B,CAA+B,KAAKZ,OAAL,CAAamD,kBAA5C;MAEA,IAAMC,aAAa,GAAGF,gBAAgB,CAACpB,WAAjB,CAA6B,KAAKtB,GAAL,CAASE,aAAT,CAAuB,KAAvB,CAA7B,CAAtB;MACA0C,aAAa,CAACpB,SAAd,GAA0B,sCAA1B;MACAoB,aAAa,CAACzC,SAAd,CAAwBC,GAAxB,CAA4B,KAAKZ,OAAL,CAAaqD,wBAAzC;MAEA,IAAMC,MAAM,GAAGJ,gBAAgB,CAACpB,WAAjB,CAA6B,KAAKtB,GAAL,CAASE,aAAT,CAAuB,QAAvB,CAA7B,CAAf;MACA4C,MAAM,CAACtB,SAAP,GAAmB,0EAAnB;MACAsB,MAAM,CAAC3C,SAAP,CAAiBC,GAAjB,CAAqB,KAAKZ,OAAL,CAAa2C,SAAlC;MACAW,MAAM,CAACV,gBAAP,CAAwB,OAAxB,EAAiC;QAAA,OAAM,MAAI,CAACY,cAAL,GACpCV,IADoC,CAC/B;UAAA,OAAM,MAAI,CAACZ,MAAL,EAAN;QAAA,CAD+B,WAE9B,UAAAa,KAAK;UAAA,OAAI,MAAI,CAACnB,YAAL,CAAkBmB,KAAlB,CAAJ;QAAA,CAFyB,CAAN;MAAA,CAAjC;MAGA,OAAOG,gBAAP;IACD;;;WAED,+BAA8BO,OAA9B,EAAqD;MAAA;;MACnD;MACA,KAAK1D,aAAL,CAAmBY,SAAnB,CAA6BC,GAA7B,CAAiC,KAAKZ,OAAL,CAAa0D,2BAA9C;MACA,KAAK3D,aAAL,CAAmBiC,SAAnB,GAA+ByB,OAA/B;MACA,KAAK1D,aAAL,CAAmBY,SAAnB,CAA6BC,GAA7B,CAAiC,KAAKZ,OAAL,CAAa2D,mBAA9C;MACAC,UAAU,CAAC,YAAM;QACf,MAAI,CAAC7D,aAAL,CAAmBY,SAAnB,CAA6BC,GAA7B,CAAiC,MAAI,CAACZ,OAAL,CAAa6D,kBAA9C;MACD,CAFS,CAAV;MAGAD,UAAU,CAAC,YAAM;QACf,MAAI,CAAC7D,aAAL,CAAmBiC,SAAnB,GAA+B,EAA/B;MACD,CAFS,EAEP,IAFO,CAAV;IAGD;;;WAED,sBAAqByB,OAArB,EAA4C;MAC1C;MACA,KAAK1D,aAAL,CAAmBY,SAAnB,CAA6BmD,MAA7B,CAAoC,KAAK9D,OAAL,CAAa0D,2BAAjD,EAA8E,CAAC,CAACD,OAAhF;MACA,KAAK1D,aAAL,CAAmBiC,SAAnB,GAA+ByB,OAA/B;IACD;;;;iGAED;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA,MACM,CAAC,KAAKrD,aAAN,IAAuB,CAAC,KAAKC,aADnC;kBAAA;kBAAA;gBAAA;;gBAEUoD,OAFV,GAEoB,iCAFpB;gBAGIM,KAAK,CAAChB,KAAN,CAAYU,OAAZ;gBAHJ,iCAIWO,OAAO,CAACC,MAAR,CAAeR,OAAf,CAJX;;cAAA;gBAMQS,QANR,GAMmB,IAAA/C,oBAAA,EAAgB,KAAKjB,SAArB,EAAgC,KAAKC,YAArC,EAAmD,KAAKC,aAAxD,EAAuE,KAAKC,aAA5E,CANnB;gBAOE6D,QAAQ,CAACC,UAAT,CAAoBC,OAApB,CAA4B,UAAAC,EAAE;kBAAA,OAAI,MAAI,CAAC9D,KAAL,CAAWK,GAAX,CAAeyD,EAAE,CAACzE,OAAlB,EAA2ByE,EAAE,CAACC,SAA9B,EAAyCD,EAAE,CAACE,MAA5C,EAAoD,MAAI,CAACpE,YAAzD,CAAJ;gBAAA,CAA9B;gBAPF;gBAAA;gBAAA,OASU,KAAKI,KAAL,CAAWiE,OAAX,CAAmBC,OAAnB,CAA2B,KAAKtE,YAAhC,CATV;;cAAA;gBAUI,KAAKc,eAAL,GAAuB,KAAvB;gBAVJ,iCAWW+C,OAAO,CAACU,OAAR,EAXX;;cAAA;gBAAA;gBAAA;gBAaUjB,QAbV;gBAcIM,KAAK,CAAChB,KAAN,CAAYU,QAAZ;gBAdJ,iCAeWO,OAAO,CAACC,MAAR,CAAeR,QAAf,CAfX;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;qGAmBA;QAAA;UAAA;YAAA;cAAA;gBACE,KAAKlC,aAAL,GAAqB,IAAIF,0BAAJ,CAAiB,KAAKnB,SAAtB,EAAiC,KAAKC,YAAtC,EAAoD,IAApD,EAA0D,KAAKI,KAA/D,EAAsE;kBAAEe,QAAQ,EAAE;gBAAZ,CAAtE,CAArB;gBACA,KAAKE,cAAL,GAAsB,IAAtB;;cAFF;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oGAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA,OAEU,KAAKjB,KAAL,CAAWiE,OAAX,WAA0B,KAAKrE,YAAL,CAAkBY,GAA5C,EAAiD,EAAjD,CAFV;;cAAA;gBAGI,KAAKE,eAAL,GAAuB,IAAvB;gBAHJ;gBAAA;gBAAA,OAK4C,IAAA0D,yBAAA,EAAqB,KAAKzE,SAAL,CAAea,GAApC,CAL5C;;cAAA;gBAKM,KAAKT,wBALX;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;gBAOM;gBACAyD,KAAK,CAACa,IAAN;;cARN;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;gBAWUnB,OAXV,iDAW2D,KAAKtD,YAXhE;gBAYI4D,KAAK,CAAChB,KAAN,CAAYU,OAAZ;gBAZJ,kCAaWO,OAAO,CAACC,MAAR,CAAeR,OAAf,CAbX;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACQoB,aADR,GACwB,KAAKtD,aAD7B;gBAAA;gBAGI,KAAKA,aAAL,GAAqB,IAArB;gBACA,KAAKC,cAAL,GAAsB,KAAtB;gBAJJ;gBAAA,OAKU,KAAKsD,IAAL,EALV;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;gBAOI,KAAKvD,aAAL,GAAqBsD,aAArB;gBACA,KAAKrD,cAAL,GAAsB,IAAtB;gBACAuC,KAAK,CAAChB,KAAN;gBATJ,kCAUWiB,OAAO,CAACC,MAAR,cAVX;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAcA,gBAA8B;MAAA;;MAC5B;MACA,IAAMc,WAAW,GAAG,IAAAC,aAAA,GAApB;;MACA,IAAI,CAAC,KAAKlE,WAAV,EAAuB;QACrB,IAAAmE,wBAAA,EAAoBF,WAApB,EAAiC,KAAK7E,SAAtC,EAAiD,KAAKkB,SAAL,CAAe8D,OAAhE,EAAyE,KAAK/E,YAA9E,EAA4F,IAA5F;MACD,CAFD,MAEO,IAAI,KAAKoB,aAAL,IAAsB,KAAKC,cAA/B,EAA+C;QACpD;QACA,IAAAyD,wBAAA,EAAoBF,WAApB,EAAiC,KAAK7E,SAAtC,EAAiD,KAAKkB,SAAL,CAAe8D,OAAhE,EAAyE,KAAK/E,YAA9E,EAA4F,IAA5F;QACA,IAAA8E,wBAAA,EAAoBF,WAApB,EAAiC,KAAK7E,SAAtC,EAAiD,KAAKqB,aAAL,CAAmB2D,OAApE,EAA6E,KAAK/E,YAAlF,EAAgG,KAAhG,EAAuG,IAAvG;MACD,CAJM,MAIA;QACL;QACA,IAAA8E,wBAAA,EAAoBF,WAApB,EAAiC,KAAK7E,SAAtC,EAAiD,KAAKkB,SAAL,CAAe8D,OAAhE,EAAyE,KAAK/E,YAA9E,EAA4F,IAA5F,EAAkG,IAAlG;MACD,CAZ2B,CAc5B;;;MACA4E,WAAW,CAACP,OAAZ,GAAsB,IAAAA,eAAA,EAAQO,WAAR,EAAqB;QAAEI,KAAK,EAAE,KAAK5E,KAAL,CAAWiE,OAAX,CAAmBY;MAA5B,CAArB,CAAtB;MACA,IAAMC,OAAO,GAAGN,WAAW,CAACM,OAAZ,IAAuB,IAAIC,qBAAJ,CAAkBP,WAAlB,CAAvC,CAhB4B,CAkB5B;;MACA,OAAO,IAAIf,OAAJ,CAAY,UAACU,OAAD,EAAUT,MAAV,EAAqB;QACtCoB,OAAO,CAACE,GAAR,CACE,MAAI,CAACpF,YADP,EAEE4E,WAAW,CAACS,kBAAZ,CAA+BC,SAA/B,EAA0CA,SAA1C,EAAqDA,SAArD,EAAgE,MAAI,CAACtF,YAArE,CAFF,EAGE,aAHF,EAIE,UAACY,GAAD,EAAM2E,EAAN,EAAUjC,OAAV,EAAsB;UACpB,IAAI,CAACiC,EAAL,EAAS;YACP,OAAOzB,MAAM,CAAC,IAAI0B,KAAJ,iCAAmClC,OAAnC,EAAD,CAAb;UACD;;UACD,MAAI,CAAClD,KAAL,CAAWiE,OAAX,CAAmBoB,MAAnB,CAA0B,MAAI,CAACzF,YAA/B;;UACA,MAAI,CAACI,KAAL,CAAWK,GAAX,CAAemE,WAAW,CAACZ,UAA3B;;UACA,MAAI,CAAC5D,KAAL,CAAWiE,OAAX,CAAmBqB,SAAnB,CAA6B,MAAI,CAAC1F,YAAL,CAAkBY,GAA/C,IAAsD,MAAtD,CANoB,CAMyC;;UAC7D,MAAI,CAACK,SAAL,CAAeb,KAAf,GAAuB,MAAI,CAACA,KAA5B;;UACA,IAAI,MAAI,CAACgB,aAAT,EAAwB;YACtB,MAAI,CAACA,aAAL,CAAmBhB,KAAnB,GAA2B,MAAI,CAACA,KAAhC;UACD;;UACD,MAAI,CAACiB,cAAL,GAAsB,CAAC,CAAC,MAAI,CAACD,aAAP,IAAwB,CAAC,IAAAE,YAAA,EAAQ,MAAI,CAACL,SAAL,CAAeM,MAAvB,EAA+B,MAAI,CAACH,aAAL,CAAmBG,MAAlD,CAA/C;UACAqC,KAAK,CAAC+B,GAAN,CAAU,4BAAV;UACApB,OAAO;QACR,CAlBH;MAoBD,CArBM,CAAP;IAsBD"}
|
package/lib/acl/access-groups.js
CHANGED
|
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.AccessGroups = void 0;
|
|
11
11
|
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
13
|
|
|
16
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -37,11 +35,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
37
35
|
|
|
38
36
|
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; }
|
|
39
37
|
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
* and [[AccessGroupsOptions]] classes
|
|
43
|
-
* @packageDocumentation
|
|
44
|
-
*/
|
|
38
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
39
|
+
|
|
45
40
|
var ACL = ns.acl;
|
|
46
41
|
var COLLOQUIAL = {
|
|
47
42
|
13: 'Owners',
|
|
@@ -207,9 +202,9 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
207
202
|
}, {
|
|
208
203
|
key: "deleteAgent",
|
|
209
204
|
value: function () {
|
|
210
|
-
var _deleteAgent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
205
|
+
var _deleteAgent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(combo, pred, obj) {
|
|
211
206
|
var combos, comboToRemove;
|
|
212
|
-
return
|
|
207
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
213
208
|
while (1) {
|
|
214
209
|
switch (_context.prev = _context.next) {
|
|
215
210
|
case 0:
|
|
@@ -246,8 +241,8 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
246
241
|
}, {
|
|
247
242
|
key: "addNewURI",
|
|
248
243
|
value: function () {
|
|
249
|
-
var _addNewURI = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
250
|
-
return
|
|
244
|
+
var _addNewURI = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(uri) {
|
|
245
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
251
246
|
while (1) {
|
|
252
247
|
switch (_context2.prev = _context2.next) {
|
|
253
248
|
case 0:
|
|
@@ -275,10 +270,10 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
275
270
|
}, {
|
|
276
271
|
key: "handleDroppedUris",
|
|
277
272
|
value: function () {
|
|
278
|
-
var _handleDroppedUris = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
273
|
+
var _handleDroppedUris = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(uris, combo) {
|
|
279
274
|
var _this5 = this;
|
|
280
275
|
|
|
281
|
-
return
|
|
276
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
282
277
|
while (1) {
|
|
283
278
|
switch (_context3.prev = _context3.next) {
|
|
284
279
|
case 0:
|
|
@@ -318,7 +313,7 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
318
313
|
}, {
|
|
319
314
|
key: "handleDroppedUri",
|
|
320
315
|
value: function () {
|
|
321
|
-
var _handleDroppedUri = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
316
|
+
var _handleDroppedUri = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(uri, combo) {
|
|
322
317
|
var secondAttempt,
|
|
323
318
|
agent,
|
|
324
319
|
thing,
|
|
@@ -328,7 +323,7 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
328
323
|
error,
|
|
329
324
|
_args4 = arguments;
|
|
330
325
|
|
|
331
|
-
return
|
|
326
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
332
327
|
while (1) {
|
|
333
328
|
switch (_context4.prev = _context4.next) {
|
|
334
329
|
case 0:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/acl/access-groups.ts"],"names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","byCombo","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"file":"access-groups.js"}
|
|
1
|
+
{"version":3,"file":"access-groups.js","names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","readACL","byCombo","ACLbyCombination","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","sym","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"sources":["../../src/acl/access-groups.ts"],"sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"mappings":"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"}
|
package/lib/acl/acl-control.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
@@ -14,7 +14,7 @@ exports.preventDrag = preventDrag;
|
|
|
14
14
|
exports.setGlobalWindow = setGlobalWindow;
|
|
15
15
|
exports.shortNameForFolder = shortNameForFolder;
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
18
18
|
|
|
19
19
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
20
20
|
|
|
@@ -34,14 +34,10 @@ var _debug = require("../debug");
|
|
|
34
34
|
|
|
35
35
|
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); }
|
|
36
36
|
|
|
37
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
|
37
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
|
|
38
|
+
|
|
39
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == (0, _typeof2["default"])(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
38
40
|
|
|
39
|
-
/**
|
|
40
|
-
* Functions for rendering the ACL User Interface.
|
|
41
|
-
* See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view
|
|
42
|
-
* for a screenshot.
|
|
43
|
-
* @packageDocumentation
|
|
44
|
-
*/
|
|
45
41
|
var global = window;
|
|
46
42
|
var preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event');
|
|
47
43
|
/**
|
|
@@ -181,16 +177,16 @@ function loadController(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {
|
|
|
181
177
|
}
|
|
182
178
|
|
|
183
179
|
function _loadController() {
|
|
184
|
-
_loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
185
|
-
return
|
|
180
|
+
_loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(doc, kb, subject, noun, context, classes, dom, status) {
|
|
181
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
186
182
|
while (1) {
|
|
187
183
|
switch (_context2.prev = _context2.next) {
|
|
188
184
|
case 0:
|
|
189
185
|
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|
190
186
|
return (0, _acl.getACLorDefault)(doc, /*#__PURE__*/function () {
|
|
191
|
-
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
187
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ok, isDirectACL, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
|
|
192
188
|
var targetDirectory, targetIsProtected, prospectiveDefaultHolder, getController;
|
|
193
|
-
return
|
|
189
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
194
190
|
while (1) {
|
|
195
191
|
switch (_context.prev = _context.next) {
|
|
196
192
|
case 0:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/acl/acl-control.ts"],"names":["global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","addEventListener","handleDrop","preventDrag","e","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","classes","head","styles","container","createElement","classList","add","aclControlBoxContainer","header","appendChild","textContent","utils","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","Promise","resolve","reject","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","getController","prospectiveDefaultHolder","AccessController","targetIsProtected","Error","targetDirectory","getDirectory","isStorage","hasProtectedAcl","split","p","q","indexOf","aclDoc","store","holds","ns","rdf","space","site","setGlobalWindow"],"mappings":"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","sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport { getClasses } from '../jss'\nimport { styles } from './styles'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n const classes = getClasses(dom.head, styles).classes\n\n const container = dom.createElement('div')\n container.classList.add(classes.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.classList.add(classes.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.classList.add(classes.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, classes, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n classes: Record<string, string>,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, classes, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"file":"acl-control.js"}
|
|
1
|
+
{"version":3,"file":"acl-control.js","names":["global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","log","addEventListener","handleDrop","preventDrag","e","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","classes","getClasses","head","styles","container","createElement","classList","add","aclControlBoxContainer","header","appendChild","textContent","utils","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","Promise","resolve","reject","getACLorDefault","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","getController","prospectiveDefaultHolder","AccessController","targetIsProtected","Error","targetDirectory","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","warn","split","p","q","indexOf","aclDoc","store","holds","ns","rdf","space","site","setGlobalWindow"],"sources":["../../src/acl/acl-control.ts"],"sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport { getClasses } from '../jss'\nimport { styles } from './styles'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n const classes = getClasses(dom.head, styles).classes\n\n const container = dom.createElement('div')\n container.classList.add(classes.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.classList.add(classes.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.classList.add(classes.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, classes, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n classes: Record<string, string>,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, classes, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"mappings":"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"}
|