solid-ui 2.4.27 → 2.4.28
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/README.md +6 -1
- package/dist/670.solid-ui.min.js +1 -0
- package/dist/805.solid-ui.min.js +3 -0
- package/dist/805.solid-ui.min.js.LICENSE.txt +58 -0
- package/dist/805.solid-ui.min.js.map +1 -0
- package/dist/_2b19.solid-ui.js +14 -0
- package/dist/_2b19.solid-ui.js.map +1 -0
- package/dist/index.html +1 -9
- package/dist/{main.js → solid-ui.js} +7906 -20465
- package/dist/solid-ui.js.map +1 -0
- package/dist/solid-ui.min.js +3 -0
- package/dist/solid-ui.min.js.LICENSE.txt +54 -0
- package/dist/solid-ui.min.js.map +1 -0
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +12134 -0
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -0
- package/lib/acl/access-controller.d.ts +2 -3
- package/lib/acl/access-controller.d.ts.map +1 -1
- package/lib/acl/access-controller.js +17 -15
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.d.ts.map +1 -1
- package/lib/acl/access-groups.js +78 -8
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.d.ts.map +1 -1
- package/lib/acl/acl-control.js +10 -11
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.d.ts +1 -1
- package/lib/acl/acl.js +1 -1
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts.map +1 -1
- package/lib/acl/add-agent-buttons.js +4 -3
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/chat/chatLogic.js +63 -26
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/keys.d.ts +13 -0
- package/lib/chat/keys.d.ts.map +1 -0
- package/lib/chat/keys.js +233 -0
- package/lib/chat/keys.js.map +1 -0
- package/lib/chat/message.js +67 -8
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/signature.d.ts +24 -0
- package/lib/chat/signature.d.ts.map +1 -0
- package/lib/chat/signature.js +112 -0
- package/lib/chat/signature.js.map +1 -0
- package/lib/footer/index.d.ts.map +1 -1
- package/lib/footer/index.js +5 -1
- package/lib/footer/index.js.map +1 -1
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +41 -20
- package/lib/header/index.js.map +1 -1
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +39 -37
- package/lib/login/login.js.map +1 -1
- package/lib/style.js +60 -2
- package/lib/style.js.map +1 -1
- package/lib/utils/headerFooterHelpers.d.ts +0 -4
- package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
- package/lib/utils/headerFooterHelpers.js +0 -27
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +10 -0
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -0
- package/lib/utils/keyHelpers/accessData.js +232 -0
- package/lib/utils/keyHelpers/accessData.js.map +1 -0
- package/lib/utils/keyHelpers/acl.d.ts +20 -0
- package/lib/utils/keyHelpers/acl.d.ts.map +1 -0
- package/lib/utils/keyHelpers/acl.js +93 -0
- package/lib/utils/keyHelpers/acl.js.map +1 -0
- package/lib/versionInfo.js +6 -6
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +43 -49
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms.js +8 -4
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +13 -10
- package/dist/main.js.map +0 -1
- package/lib/acl/styles.d.ts +0 -90
- package/lib/acl/styles.d.ts.map +0 -1
- package/lib/acl/styles.js +0 -98
- package/lib/acl/styles.js.map +0 -1
- package/lib/footer/styleMap.d.ts +0 -8
- package/lib/footer/styleMap.d.ts.map +0 -1
- package/lib/footer/styleMap.js +0 -15
- package/lib/footer/styleMap.js.map +0 -1
- package/lib/header/styleMap.d.ts +0 -117
- package/lib/header/styleMap.d.ts.map +0 -1
- package/lib/header/styleMap.js +0 -139
- package/lib/header/styleMap.js.map +0 -1
- package/lib/jss/index.d.ts +0 -20
- package/lib/jss/index.d.ts.map +0 -1
- package/lib/jss/index.js +0 -47
- package/lib/jss/index.js.map +0 -1
package/lib/acl/acl-control.js
CHANGED
|
@@ -17,8 +17,7 @@ var ns = _interopRequireWildcard(require("../ns"));
|
|
|
17
17
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
18
18
|
var _acl = require("./acl");
|
|
19
19
|
var _accessController = require("./access-controller");
|
|
20
|
-
var
|
|
21
|
-
var _styles = require("./styles");
|
|
20
|
+
var style = _interopRequireWildcard(require("../style"));
|
|
22
21
|
var _debug = require("../debug");
|
|
23
22
|
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); }
|
|
24
23
|
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; }
|
|
@@ -135,16 +134,16 @@ function shortNameForFolder(x) {
|
|
|
135
134
|
function ACLControlBox5(subject, context, noun, kb) {
|
|
136
135
|
var dom = context.dom;
|
|
137
136
|
var doc = subject.doc(); // The ACL is actually to the doc describing the thing
|
|
138
|
-
|
|
137
|
+
|
|
139
138
|
var container = dom.createElement('div');
|
|
140
|
-
container.
|
|
139
|
+
container.setAttribute('style', style.aclControlBoxContainer);
|
|
141
140
|
var header = container.appendChild(dom.createElement('h1'));
|
|
142
141
|
header.textContent = "Sharing for ".concat(noun, " ").concat(utils.label(subject));
|
|
143
|
-
header.
|
|
142
|
+
header.setAttribute('style', style.aclControlBoxHeader);
|
|
144
143
|
var status = container.appendChild(dom.createElement('div'));
|
|
145
|
-
status.
|
|
144
|
+
status.setAttribute('style', style.aclControlBoxStatus);
|
|
146
145
|
try {
|
|
147
|
-
loadController(doc, kb, subject, noun, context,
|
|
146
|
+
loadController(doc, kb, subject, noun, context, dom, status).then(function (controller) {
|
|
148
147
|
return container.appendChild(controller.render());
|
|
149
148
|
});
|
|
150
149
|
} catch (error) {
|
|
@@ -152,11 +151,11 @@ function ACLControlBox5(subject, context, noun, kb) {
|
|
|
152
151
|
}
|
|
153
152
|
return container;
|
|
154
153
|
}
|
|
155
|
-
function loadController(_x, _x2, _x3, _x4, _x5, _x6, _x7
|
|
154
|
+
function loadController(_x, _x2, _x3, _x4, _x5, _x6, _x7) {
|
|
156
155
|
return _loadController.apply(this, arguments);
|
|
157
156
|
}
|
|
158
157
|
function _loadController() {
|
|
159
|
-
_loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(doc, kb, subject, noun, context,
|
|
158
|
+
_loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(doc, kb, subject, noun, context, dom, status) {
|
|
160
159
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
161
160
|
while (1) switch (_context2.prev = _context2.next) {
|
|
162
161
|
case 0:
|
|
@@ -168,7 +167,7 @@ function _loadController() {
|
|
|
168
167
|
while (1) switch (_context.prev = _context.next) {
|
|
169
168
|
case 0:
|
|
170
169
|
getController = function _getController(prospectiveDefaultHolder) {
|
|
171
|
-
return new _accessController.AccessController(subject, noun, context, status,
|
|
170
|
+
return new _accessController.AccessController(subject, noun, context, status, targetIsProtected, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc, prospectiveDefaultHolder, kb, dom);
|
|
172
171
|
};
|
|
173
172
|
if (ok) {
|
|
174
173
|
_context.next = 3;
|
|
@@ -201,7 +200,7 @@ function _loadController() {
|
|
|
201
200
|
}
|
|
202
201
|
}, _callee, null, [[6, 13]]);
|
|
203
202
|
}));
|
|
204
|
-
return function (_x9, _x10, _x11, _x12, _x13
|
|
203
|
+
return function (_x8, _x9, _x10, _x11, _x12, _x13) {
|
|
205
204
|
return _ref.apply(this, arguments);
|
|
206
205
|
};
|
|
207
206
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-control.js","names":["ns","_interopRequireWildcard","require","utils","_acl","_accessController","_jss","_styles","_debug","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","concat","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","_loadController","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_callee2$","_context2","prev","next","abrupt","Promise","resolve","reject","getACLorDefault","_ref","_callee","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","targetDirectory","targetIsProtected","prospectiveDefaultHolder","getController","_callee$","_context","_getController","AccessController","Error","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","sent","t0","warn","stop","_x9","_x10","_x11","_x12","_x13","_x14","split","p","q","indexOf","aclDoc","store","holds","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":";;;;;;;;;;;;;;;AAOA,IAAAA,EAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAGA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAAoC,SAAAO,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAT,wBAAAa,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAfpC;AACA;AACA;AACA;AACA;AACA;;AAYA,IAAIW,MAAc,GAAGC,MAAM;AAC3B,IAAMC,4BAA4B,GAAGC,MAAM,CAAC,yCAAyC,CAAC;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,wBAAwBA,CAAEC,QAAsB,EAAQ;EACtE,IAAAC,UAAG,EAAC,kCAAkC,CAAC;EACvC,IAAI,OAAON,MAAM,KAAK,WAAW,EAAE;IACjC,IAAIA,MAAM,CAACE,4BAA4B,CAAC,EAAE;IAC1CF,MAAM,CAACE,4BAA4B,CAAC,GAAG,IAAI;EAC7C;EAEAG,QAAQ,CAACE,gBAAgB,CAAC,MAAM,EAAEC,UAAU,EAAE,KAAK,CAAC;EACpDH,QAAQ,CAACE,gBAAgB,CAAC,WAAW,EAAEE,WAAW,EAAE,KAAK,CAAC;EAC1DJ,QAAQ,CAACE,gBAAgB,CAAC,UAAU,EAAEE,WAAW,EAAE,KAAK,CAAC;AAC3D;;AAEA;AACO,SAASA,WAAWA,CAAEC,CAAC,EAAE;EAC9BA,CAAC,CAACC,eAAe,EAAE;EACnBD,CAAC,CAACE,cAAc,EAAE;AACpB;;AAEA;AACO,SAASJ,UAAUA,CAAEE,CAAC,EAAE;EAC7B,IAAIA,CAAC,CAACG,YAAY,CAACC,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;IACnC,IACE,CAACf,MAAM,CAACgB,OAAO,CAAC,8EAA8E,CAAC,EAC/F;MACAN,CAAC,CAACC,eAAe,EAAE;MACnBD,CAAC,CAACE,cAAc,EAAE;MAClB,IAAAN,UAAG,EAAC,uCAAuC,GAAGI,CAAC,CAACG,YAAY,CAACI,UAAU,CACtE;IACH;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAEC,CAAY,EAAU;EACxD,IAAIC,GAAG,GAAGD,CAAC,CAACE,GAAG;;EAEf;EACA,IAAID,GAAG,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzBF,GAAG,GAAGA,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB;;EAEA;EACA;EACA,IAAMC,KAAK,GAAGH,GAAG,CAACI,WAAW,CAAC,GAAG,CAAC;EAClC,IAAID,KAAK,IAAI,CAAC,EAAE;IACdH,GAAG,GAAGA,GAAG,CAACE,KAAK,CAACC,KAAK,GAAG,CAAC,CAAC;EAC5B;EACA;EACA;EACA;EACA;EACA,OAAOH,GAAG,IAAI,GAAG;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,cAAcA,CAC5BC,OAAkB,EAClBC,OAA2B,EAC3BC,IAAY,EACZC,EAAS,EACI;EACb,IAAMC,GAAG,GAAGH,OAAO,CAACG,GAAG;EACvB,IAAMC,GAAG,GAAGL,OAAO,CAACK,GAAG,EAAE,EAAC;EAC1B,IAAMC,OAAO,GAAG,IAAAC,eAAU,EAACH,GAAG,CAACI,IAAI,EAAEC,cAAM,CAAC,CAACH,OAAO;EAEpD,IAAMI,SAAS,GAAGN,GAAG,CAACO,aAAa,CAAC,KAAK,CAAC;EAC1CD,SAAS,CAACE,SAAS,CAACC,GAAG,CAACP,OAAO,CAACQ,sBAAsB,CAAC;EAEvD,IAAMC,MAAM,GAAGL,SAAS,CAACM,WAAW,CAACZ,GAAG,CAACO,aAAa,CAAC,IAAI,CAAC,CAAC;EAC7DI,MAAM,CAACE,WAAW,kBAAAC,MAAA,CAAkBhB,IAAI,OAAAgB,MAAA,CAAIxE,KAAK,CAACyE,KAAK,CAACnB,OAAO,CAAC,CAAE;EAClEe,MAAM,CAACH,SAAS,CAACC,GAAG,CAACP,OAAO,CAACc,mBAAmB,CAAC;EAEjD,IAAMC,MAAM,GAAGX,SAAS,CAACM,WAAW,CAACZ,GAAG,CAACO,aAAa,CAAC,KAAK,CAAC,CAAC;EAC9DU,MAAM,CAACT,SAAS,CAACC,GAAG,CAACP,OAAO,CAACgB,mBAAmB,CAAC;EAEjD,IAAI;IACFC,cAAc,CAAClB,GAAG,EAAEF,EAAE,EAAEH,OAAO,EAAEE,IAAI,EAAED,OAAO,EAAEK,OAAO,EAAEF,GAAG,EAAEiB,MAAM,CAAC,CAClEG,IAAI,CAAC,UAAAC,UAAU;MAAA,OAAIf,SAAS,CAACM,WAAW,CAACS,UAAU,CAACC,MAAM,EAAE,CAAC;IAAA,EAAC;EACnE,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdN,MAAM,CAACO,SAAS,GAAGD,KAAK;EAC1B;EAEA,OAAOjB,SAAS;AAClB;AAAC,SAEca,cAAcA,CAAAM,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,eAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,gBAAA;EAAAA,eAAA,OAAAG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA7B,SAAAC,SACEtC,GAAc,EACdF,EAAS,EACTH,OAAkB,EAClBE,IAAY,EACZD,OAA2B,EAC3BK,OAA+B,EAC/BF,GAAiB,EACjBiB,MAAmB;IAAA,OAAAoB,YAAA,YAAAG,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UAAA,OAAAF,SAAA,CAAAG,MAAA,WAEZ,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM;YAAA,OAAK,IAAAC,oBAAe,EAAChD,GAAG;cAAA,IAAAiD,IAAA,OAAAd,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAa,QAC3DC,EAAE,EACFC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,aAAa;gBAAA,IAAAC,eAAA,EAAAC,iBAAA,EAAAC,wBAAA,EAkBJC,aAAa;gBAAA,OAAAxB,YAAA,YAAAG,IAAA,UAAAsB,SAAAC,QAAA;kBAAA,kBAAAA,QAAA,CAAApB,IAAA,GAAAoB,QAAA,CAAAnB,IAAA;oBAAA;sBAAbiB,aAAa,YAAAG,eAAEJ,wBAAoC,EAAE;wBAC5D,OAAO,IAAIK,kCAAgB,CAACrE,OAAO,EAAEE,IAAI,EAAED,OAAO,EAAEoB,MAAM,EAAEf,OAAO,EAAEyD,iBAAiB,EAAEL,SAAS,EAAeC,YAAY,EAAeC,aAAa,EACtJC,aAAa,EAAeG,wBAAwB,EAAE7D,EAAE,EAAEC,GAAG,CAAC;sBAClE,CAAC;sBAAA,IAnBIoD,EAAE;wBAAAW,QAAA,CAAAnB,IAAA;wBAAA;sBAAA;sBAAA,OAAAmB,QAAA,CAAAlB,MAAA,WACEG,MAAM,CAAC,IAAIkB,KAAK,kBAAApD,MAAA,CAAkBuC,WAAW,GAAG,EAAE,GAAG,WAAW,kBAAAvC,MAAA,CAAewC,SAAS,QAAAxC,MAAA,CAAKyC,YAAY,EAAG,CAAC;oBAAA;sBAEhHG,eAAe,GAAGS,YAAY,CAACb,SAAS,CAAc;sBACtDK,iBAAiB,GAAGS,SAAS,CAACd,SAAS,EAAeC,YAAY,EAAexD,EAAE,CAAC,IAAIsE,eAAe,CAACf,SAAS,CAAc;sBAAA,MACjI,CAACK,iBAAiB,IAAID,eAAe;wBAAAK,QAAA,CAAAnB,IAAA;wBAAA;sBAAA;sBAAAmB,QAAA,CAAApB,IAAA;sBAAAoB,QAAA,CAAAnB,IAAA;sBAAA,OAEE,IAAA0B,yBAAoB,EAACZ,eAAe,CAAC;oBAAA;sBAAtEE,wBAAwB,GAAAG,QAAA,CAAAQ,IAAA;sBAAA,OAAAR,QAAA,CAAAlB,MAAA,WACvBE,OAAO,CAACc,aAAa,CAACD,wBAAwB,CAAC,CAAC;oBAAA;sBAAAG,QAAA,CAAApB,IAAA;sBAAAoB,QAAA,CAAAS,EAAA,GAAAT,QAAA;sBAEvD;sBACA,IAAAU,WAAI,EAAAV,QAAA,CAAAS,EAAA,CAAO;oBAAA;sBAAA,OAAAT,QAAA,CAAAlB,MAAA,WAGRE,OAAO,CAACc,aAAa,EAAE,CAAC;oBAAA;oBAAA;sBAAA,OAAAE,QAAA,CAAAW,IAAA;kBAAA;gBAAA,GAAAvB,OAAA;cAAA,CAMhC;cAAA,iBAAAwB,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;gBAAA,OAAA9B,IAAA,CAAAhB,KAAA,OAAAC,SAAA;cAAA;YAAA,IAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAO,SAAA,CAAAgC,IAAA;MAAA;IAAA,GAAAnC,QAAA;EAAA,CACJ;EAAA,OAAAN,eAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAASgC,YAAYA,CAAElE,GAAc,EAAiB;EACpD,IAAMX,GAAG,GAAGW,GAAG,CAACV,GAAG,CAAC0F,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACjC,IAAMC,CAAC,GAAG5F,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,GAAG,CAAC;EAC3C,IAAMyF,CAAC,GAAG7F,GAAG,CAAC8F,OAAO,CAAC,IAAI,CAAC;EAC3B,OAAQD,CAAC,IAAI,CAAC,IAAID,CAAC,GAAGC,CAAC,GAAG,CAAC,IAAKD,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG5F,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE0F,CAAC,GAAG,CAAC,CAAC;AACpE;AAEA,SAASd,SAASA,CAAEnE,GAAc,EAAEoF,MAAiB,EAAEC,KAAY,EAAW;EAC5E;EACA;EACA;EACA,OAAOA,KAAK,CAACC,KAAK,CAACtF,GAAG,EAAE9D,EAAE,CAACqJ,GAAG,CAAC,MAAM,CAAC,EAAErJ,EAAE,CAACsJ,KAAK,CAAC,SAAS,CAAC,EAAEJ,MAAM,CAAC;AACtE;AAEA,SAAShB,eAAeA,CAAEf,SAAoB,EAAW;EACvD;EACA;EACA,OAAOA,SAAS,CAAC/D,GAAG,KAAK+D,SAAS,CAACoC,IAAI,EAAE,CAACnG,GAAG;AAC/C;;AAEA;AACO,SAASoG,eAAeA,CAAExH,MAAc,EAAE;EAC/CD,MAAM,GAAGC,MAAM;AACjB"}
|
|
1
|
+
{"version":3,"file":"acl-control.js","names":["ns","_interopRequireWildcard","require","utils","_acl","_accessController","style","_debug","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","container","createElement","setAttribute","aclControlBoxContainer","header","appendChild","textContent","concat","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","_x","_x2","_x3","_x4","_x5","_x6","_x7","_loadController","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_callee2$","_context2","prev","next","abrupt","Promise","resolve","reject","getACLorDefault","_ref","_callee","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","targetDirectory","targetIsProtected","prospectiveDefaultHolder","getController","_callee$","_context","_getController","AccessController","Error","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","sent","t0","warn","stop","_x8","_x9","_x10","_x11","_x12","_x13","split","p","q","indexOf","aclDoc","store","holds","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 * as style from '../style'\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\n const container = dom.createElement('div')\n container.setAttribute('style', style.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.setAttribute('style', style.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.setAttribute('style', style.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, 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 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, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom as HTMLDocument)\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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"}
|
package/lib/acl/acl.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { AgentMapMap, AgentMapUnion, ComboList } from './types';
|
|
8
8
|
import { Store, NamedNode, LiveStore } from 'rdflib';
|
|
9
9
|
/**
|
|
10
|
-
* Take the "default" ACL and convert it into the
|
|
10
|
+
* Take the "default" ACL and convert it into the equivalent ACL
|
|
11
11
|
* which the resource would have had. Return it as a new separate store.
|
|
12
12
|
* The "defaultForNew" predicate is also accepted, as a deprecated
|
|
13
13
|
* synonym for "default".
|
package/lib/acl/acl.js
CHANGED
|
@@ -43,7 +43,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
43
43
|
var kb = _solidLogic.solidLogicSingleton.store;
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
* Take the "default" ACL and convert it into the
|
|
46
|
+
* Take the "default" ACL and convert it into the equivalent ACL
|
|
47
47
|
* which the resource would have had. Return it as a new separate store.
|
|
48
48
|
* The "defaultForNew" predicate is also accepted, as a deprecated
|
|
49
49
|
* synonym for "default".
|
package/lib/acl/acl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.js","names":["ns","_interopRequireWildcard","require","_solidLogic","utils","debug","_rdflib","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","kb","solidLogicSingleton","store","adoptACLDefault","doc","aclDoc","defaultResource","defaultACLDoc","ACL","acl","isContainer","uri","slice","defaults","each","undefined","concat","proposed","reduce","accumulatedStatements","da","statementsMatching","rdf","st","kb2","graph","forEach","add","move","subject","predicate","object","sym","symbol","y","length","readACL","arguments","getDefaults","auths","getDefaultsFallback","ac","agent","agentClass","agentGroup","origin","originClass","keys","pred","a","mode","sameACL","b","contains","ACLunion","list","ag","_loop","k","loadUnionACL","subjectList","callbackFunction","aclList","doList","shift","getACLorDefault","ok","p2","targetDoc","targetACLDoc","defaultHolder","defa","push","ACLbyCombination","byCombo","combo","sort","combo2","join","makeACLGraph","x","makeACLGraphbyCombo","main","pairs","modeURIs","split","short","map","u","i","ACLToString","comboToString","str","initials","sameTerm","foaf","label","makeACLString","serialize","putACLObject","putACLbyCombo","_kb$updater","updater","put","message","_kb$fetcher","fetcher","unload","requested","fixIndividualCardACL","person","log","groups","vcard","fixIndividualACL","item","subjects","exists","union","setACL","docURI","aclText","any","ACL_LINK","Error","webOperation","value","data","contentType","then","res","error","nowOrWhenFetched","body","getACL","status","tryParent","right","lastIndexOf","left","indexOf","doc2","nonexistent","response","getProspectiveHolder","_x","_getProspectiveHolder","apply","_asyncToGenerator2","_regenerator","mark","_callee","targetDirectory","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","isDirectACL","stop"],"sources":["../../src/acl/acl.ts"],"sourcesContent":["/**\n * Non-UI functions for access control.\n * See https://github.com/solidos/web-access-control-spec\n * for the spec that defines how ACL documents work.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport { solidLogicSingleton, ACL_LINK } from 'solid-logic'\nimport * as utils from '../utils'\nimport { AgentMapMap, AgentMapUnion, ComboList } from './types'\nimport * as debug from '../debug'\nimport { graph, Store, NamedNode, serialize, st, Statement, sym, LiveStore } from 'rdflib'\n\nconst kb = solidLogicSingleton.store\n\n/**\n * Take the \"default\" ACL and convert it into the equivlent ACL\n * which the resource would have had. Return it as a new separate store.\n * The \"defaultForNew\" predicate is also accepted, as a deprecated\n * synonym for \"default\".\n */\nexport function adoptACLDefault (\n doc: NamedNode,\n aclDoc: NamedNode,\n defaultResource: NamedNode,\n defaultACLDoc: NamedNode\n): Store {\n const ACL = ns.acl\n const isContainer = doc.uri.slice(-1) === '/' // Give default for all directories\n\n const defaults = kb\n .each(undefined, ACL('default'), defaultResource, defaultACLDoc)\n .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc))\n\n const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements\n .concat(kb.statementsMatching(da as NamedNode, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agent'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentGroup'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('origin'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('originClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('mode'), undefined, defaultACLDoc))\n .concat(st(da as NamedNode, ACL('accessTo'), doc, defaultACLDoc))\n .concat(isContainer ? st(da as NamedNode, ACL('default'), doc, defaultACLDoc) : []), [] as Statement[])\n\n const kb2 = graph() // Potential - derived is kept apart\n proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)))\n return kb2 as LiveStore\n\n function move (symbol) {\n const y = defaultACLDoc.uri.length // The default ACL file\n return sym(\n symbol.uri.slice(0, y) === defaultACLDoc.uri\n ? aclDoc.uri + symbol.uri.slice(y)\n : symbol.uri\n )\n }\n}\n\n/**\n * Read and canonicalize the ACL for x in aclDoc\n *\n * Accumulate the access rights which each agent or class has\n */\nexport function readACL (\n doc: NamedNode,\n aclDoc: NamedNode,\n kb2: Store = kb,\n getDefaults: boolean = false\n): AgentMapMap {\n const auths: Array<NamedNode> = getDefaults\n ? getDefaultsFallback(kb2, ns)\n : kb2.each(undefined, ns.acl('accessTo'), doc)\n\n const ACL = ns.acl\n const ac = {\n agent: {},\n agentClass: {},\n agentGroup: {},\n origin: {},\n originClass: {}\n }\n Object.keys(ac).forEach(pred => {\n auths.forEach(function (a) {\n (kb2.each(a, ACL('mode')) as Array<NamedNode>).forEach(function (mode) {\n (kb2.each(a, ACL(pred)) as Array<NamedNode>).forEach(function (agent) {\n ac[pred][agent.uri] = ac[pred][agent.uri] || {}\n ac[pred][agent.uri][mode.uri] = a // could be \"true\" but leave pointer just in case\n })\n })\n })\n })\n return ac\n\n function getDefaultsFallback (kb, ns) {\n return kb\n .each(undefined, ns.acl('default'), doc)\n .concat(kb.each(undefined, ns.acl('defaultForNew'), doc))\n }\n}\n\n/**\n * Compare two ACLs\n */\nexport function sameACL (a: AgentMapMap | AgentMapUnion, b: AgentMapMap | AgentMapUnion): boolean {\n const contains = function (a, b) {\n for (const pred in {\n agent: true,\n agentClass: true,\n agentGroup: true,\n origin: true,\n originClass: true\n }) {\n if (a[pred]) {\n for (const agent in a[pred]) {\n for (const mode in a[pred][agent]) {\n if (!b[pred][agent] || !b[pred][agent][mode]) {\n return false\n }\n }\n }\n }\n }\n return true\n }\n return contains(a, b) && contains(b, a)\n}\n\n/**\n * Union N ACLs\n */\nexport function ACLunion (list: Array<AgentMapMap | AgentMapUnion>): AgentMapUnion {\n const b = list[0]\n let a, ag\n for (let k = 1; k < list.length; k++) {\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(\n function (pred) {\n a = list[k]\n if (a[pred]) {\n for (ag in a[pred]) {\n for (const mode in a[pred][ag]) {\n if (!b[pred][ag]) b[pred][ag] = []\n b[pred][ag][mode] = true\n }\n }\n }\n }\n )\n }\n return b as AgentMapUnion\n}\n\ntype loadUnionACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Merge ACLs lists from things to form union\n */\nexport function loadUnionACL (subjectList: Array<NamedNode>, callbackFunction: loadUnionACLCallback): void {\n const aclList: Array<AgentMapMap> = []\n const doList = function (list) {\n if (list.length) {\n const doc = list.shift().doc()\n getACLorDefault(doc, function (\n ok,\n p2,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n const defa = !p2\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc)\n const acl = defa\n ? readACL(defaultHolder, defaultACLDoc)\n : readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n aclList.push(acl)\n doList(list.slice(1))\n })\n } else {\n // all gone\n callbackFunction(true, ACLunion(aclList))\n }\n }\n doList(subjectList)\n}\n\n/**\n * Represents these as an RDF graph by combination of modes\n *\n * Each agent can only be in one place in this model, one combination of modes.\n * Combos are like full control, read append, read only etc.\n */\nexport function ACLbyCombination (ac: AgentMapMap | AgentMapUnion): ComboList {\n const byCombo = {}\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {\n for (const agent in ac[pred]) {\n const combo: string[] = []\n for (const mode in ac[pred][agent]) {\n combo.push(mode)\n }\n combo.sort()\n const combo2 = combo.join('\\n')\n if (!byCombo[combo2]) byCombo[combo2] = []\n byCombo[combo2].push([pred, agent])\n }\n })\n return byCombo\n}\n\n/**\n * Write ACL graph to store from AC\n */\nexport function makeACLGraph (kb: Store, x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): void {\n const byCombo = ACLbyCombination(ac)\n return makeACLGraphbyCombo(kb, x, byCombo, aclDoc)\n}\n\n/**\n * Write ACL graph to store from combo\n */\nexport function makeACLGraphbyCombo (\n kb: Store,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n main?: boolean,\n defa?: boolean\n): void {\n const ACL = ns.acl\n for (const combo in byCombo) {\n const pairs = byCombo[combo]\n if (!pairs.length) continue // do not add to store when no agent\n const modeURIs = combo.split('\\n')\n let short = modeURIs\n .map(function (u) {\n return u.split('#')[1]\n })\n .join('')\n if (defa && !main) short += 'Default' // don't muddle authorizations\n const a = kb.sym(aclDoc.uri + '#' + short)\n kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc)\n if (main) {\n kb.add(a, ACL('accessTo'), x, aclDoc)\n }\n if (defa) {\n kb.add(a, ACL('default'), x, aclDoc)\n }\n for (let i = 0; i < modeURIs.length; i++) {\n kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc)\n }\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = pairs[i][1]\n kb.add(a, ACL(pred), kb.sym(ag), aclDoc)\n }\n }\n}\n\n/**\n * Debugging short strings for dumping ACL\n * and possibly in the UI\n */\nexport function ACLToString (ac: AgentMapMap): string {\n return comboToString(ACLbyCombination(ac))\n}\n\n/**\n * Convert a [[ComboList]] to a string\n */\nexport function comboToString (byCombo: ComboList): string {\n let str = ''\n for (const combo in byCombo) {\n const modeURIs = combo.split('\\n')\n const initials = modeURIs\n .map(function (u) {\n return u.split('#')[1][0]\n })\n .join('')\n str += initials + ':'\n const pairs = byCombo[combo]\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = sym(pairs[i][1])\n str += pred === 'agent' ? '@' : ''\n str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag)\n if (i < pairs.length - 1) str += ','\n }\n str += ';'\n }\n return '{' + str.slice(0, -1) + '}' // drop extra semicolon\n}\n\n/**\n * Write ACL graph as Turtle\n */\nexport function makeACLString (x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): string {\n const kb2 = graph()\n makeACLGraph(kb2, x, ac, aclDoc)\n return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || ''\n}\n\n/**\n * Write ACL graph to web\n */\nexport function putACLObject (\n kb: LiveStore,\n x: NamedNode,\n ac: AgentMapMap | AgentMapUnion,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const byCombo = ACLbyCombination(ac)\n return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction)\n}\n\n/**\n * Write ACL graph to web from a [[ComboList]]\n */\nexport function putACLbyCombo (\n kb: LiveStore,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const kb2 = graph()\n makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true)\n\n // const str = makeACLString = function(x, ac, aclDoc)\n kb.updater?.put(\n aclDoc,\n kb2.statementsMatching(undefined, undefined, undefined, aclDoc),\n 'text/turtle',\n function (uri, ok, message) {\n if (!ok) {\n callbackFunction(ok, message)\n } else {\n kb.fetcher?.unload(aclDoc)\n makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true)\n kb.fetcher!.requested[aclDoc.uri] = 'done' // missing: save headers\n callbackFunction(ok)\n }\n }\n )\n}\n\ntype fixIndividualCardACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\ntype fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Fix the ACl for an individual card as a function of the groups it is in\n *\n * All group files must be loaded first\n */\nexport function fixIndividualCardACL (person: NamedNode, log: Function, callbackFunction: fixIndividualCardACLCallback): void {\n const groups = kb.each(undefined, ns.vcard('hasMember'), person) as NamedNode[]\n // const doc = person.doc()\n if (groups) {\n fixIndividualACL(person, groups, log, callbackFunction)\n } else {\n log('This card is in no groups')\n callbackFunction(true) // fine, no requirements to access. default should be ok\n }\n // @@ if no groups, then use default for People container or the book top container.?\n}\n\n/**\n * This function is used by [[fixIndividualCardACL]]\n */\nexport function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, log: Function, callbackFunction: fixIndividualACLCallback): void {\n log = log || debug.log\n const doc = item.doc()\n getACLorDefault(doc, function (\n ok,\n exists,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(false, targetACLDoc) // ie message\n const ac = exists\n ? readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n : readACL(defaultHolder, defaultACLDoc)\n loadUnionACL(subjects, function (ok, union) {\n if (!ok) return callbackFunction(false, union)\n if (sameACL(union as AgentMapMap | AgentMapUnion, ac)) {\n log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc)\n } else {\n log('Group ACLs differ for ' + utils.label(item) + ' ' + doc)\n\n // log(\"Group ACLs: \" + makeACLString(targetDoc, union, targetACLDoc))\n // log((exists ? \"Previous set\" : \"Default\") + \" ACLs: \" +\n // makeACLString(targetDoc, ac, targetACLDoc))\n\n putACLObject(\n kb as unknown as LiveStore,\n targetDoc as NamedNode,\n union as AgentMapMap | AgentMapUnion,\n targetACLDoc as NamedNode,\n callbackFunction\n )\n }\n })\n })\n}\n\n/**\n * Set an ACL\n */\nexport function setACL (\n docURI: NamedNode,\n aclText: string,\n callbackFunction: (ok: boolean, message: string) => void\n): void {\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n }) // @@@ check params\n } else {\n kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {\n if (!ok) return callbackFunction(ok, 'Gettting headers for ACL: ' + body)\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n callbackFunction(false, 'No Link rel=ACL header for ' + docURI)\n } else {\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n })\n }\n })\n }\n}\n\n/**\n * Get ACL file or default if necessary\n *\n * @param callbackFunction Will be called in the following ways, in the following cases:\n * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist\n * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did\n * * `callbackFunction(false, false, status, message)` when there was an error getting the original\n * * `callbackFunction(false, true, status, message)` when there was an error getting the default\n */\nexport function getACLorDefault (\n doc: NamedNode,\n callbackFunction: (\n a: boolean,\n b: boolean,\n statusOrMessage: number | NamedNode,\n message: string | NamedNode,\n c?: NamedNode,\n d?: NamedNode\n ) => void\n): void {\n getACL(doc, function (ok, status, aclDoc, message): string | void {\n const ACL = ns.acl\n if (!ok) return callbackFunction(false, false, status as number, message as string)\n\n // Recursively search for the ACL file which gives default access\n const tryParent = function (uri) {\n if (uri.slice(-1) === '/') {\n uri = uri.slice(0, -1)\n }\n const right = uri.lastIndexOf('/')\n const left = uri.indexOf('/', uri.indexOf('//') + 2)\n if (left > right) {\n return callbackFunction(false, true, 404, 'Found no ACL resource')\n }\n uri = uri.slice(0, right + 1)\n const doc2 = sym(uri)\n getACL(doc2, function (ok, status, defaultACLDoc: any): NamedNode | void {\n if (!ok) {\n return callbackFunction(\n false,\n true,\n status as number,\n `( No ACL pointer ${uri} ${status})${defaultACLDoc}`\n ) as void\n } else if (status === 403) {\n return callbackFunction(\n false,\n true,\n status,\n `( default ACL file FORBIDDEN. Stop.${uri})`\n )\n } else if (status === 404) {\n return tryParent(uri)\n } else if (status !== 200) {\n return callbackFunction(\n false,\n true,\n status as number,\n `Error status '${status}' searching for default for ${doc2}`\n )\n }\n // 200\n // statusBlock.textContent += (\" ACCESS set at \" + uri + \". End search.\")\n const defaults = kb\n .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)\n .concat(\n kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc)\n )\n if (!defaults.length) {\n return tryParent(uri) // Keep searching\n }\n const defaultHolder = kb.sym(uri)\n return callbackFunction(\n true,\n false,\n doc,\n aclDoc as NamedNode,\n defaultHolder,\n defaultACLDoc as NamedNode\n )\n })\n } // tryParent\n\n if (!ok) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error accessing Access Control information for ${doc}) ${message}`\n )\n } else if (status === 404) {\n tryParent(doc.uri) // @@ construct default one - the server should do that\n } else if (status === 403) {\n return callbackFunction(\n false,\n false,\n status,\n `(Sharing not available to you)${message}`\n )\n } else if (status !== 200) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error ${status} accessing Access Control information for ${doc}: ${message}`\n )\n } else {\n // 200\n return callbackFunction(true, true, doc, aclDoc as NamedNode)\n }\n }) // Call to getACL\n}\n\n/**\n * Calls back `(ok, status, acldoc, message)` as follows\n *\n * * `(false, 900, errormessage)` if no link header\n * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized\n * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist\n * * `(true, 200, documentSymbol)` if file exists and read OK\n */\nexport function getACL (\n doc: NamedNode,\n callbackFunction: (\n ok: boolean,\n messageOrStatus: number | string,\n messageOrDoc?: NamedNode | string,\n message?: string\n ) => void\n): void {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {\n if (!ok) {\n return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`)\n }\n const aclDoc = kb.any(\n doc,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`)\n } else {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n if (kb.fetcher.nonexistent[aclDoc.value]) {\n return callbackFunction(\n true,\n 404,\n aclDoc as NamedNode,\n `ACL file ${aclDoc} does not exist.`\n )\n }\n kb.fetcher.nowOrWhenFetched(aclDoc as NamedNode, undefined, function (\n ok,\n message,\n response\n ) {\n if (!ok) {\n callbackFunction(\n true,\n response.status,\n aclDoc as NamedNode,\n `Can't read Access Control File ${aclDoc}: ${message}`\n )\n } else {\n callbackFunction(true, 200, aclDoc as NamedNode)\n }\n })\n }\n })\n}\n\n/**\n * Calls [[getACLorDefault]] and then (?)\n */\nexport async function getProspectiveHolder (targetDirectory: string): Promise<NamedNode | undefined> {\n return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder\n ) => {\n if (ok) {\n return resolve((isDirectACL ? targetDoc : defaultHolder) as NamedNode)\n }\n return reject(new Error(`Error loading ${targetDirectory}`))\n }))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acl.js","names":["ns","_interopRequireWildcard","require","_solidLogic","utils","debug","_rdflib","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","kb","solidLogicSingleton","store","adoptACLDefault","doc","aclDoc","defaultResource","defaultACLDoc","ACL","acl","isContainer","uri","slice","defaults","each","undefined","concat","proposed","reduce","accumulatedStatements","da","statementsMatching","rdf","st","kb2","graph","forEach","add","move","subject","predicate","object","sym","symbol","y","length","readACL","arguments","getDefaults","auths","getDefaultsFallback","ac","agent","agentClass","agentGroup","origin","originClass","keys","pred","a","mode","sameACL","b","contains","ACLunion","list","ag","_loop","k","loadUnionACL","subjectList","callbackFunction","aclList","doList","shift","getACLorDefault","ok","p2","targetDoc","targetACLDoc","defaultHolder","defa","push","ACLbyCombination","byCombo","combo","sort","combo2","join","makeACLGraph","x","makeACLGraphbyCombo","main","pairs","modeURIs","split","short","map","u","i","ACLToString","comboToString","str","initials","sameTerm","foaf","label","makeACLString","serialize","putACLObject","putACLbyCombo","_kb$updater","updater","put","message","_kb$fetcher","fetcher","unload","requested","fixIndividualCardACL","person","log","groups","vcard","fixIndividualACL","item","subjects","exists","union","setACL","docURI","aclText","any","ACL_LINK","Error","webOperation","value","data","contentType","then","res","error","nowOrWhenFetched","body","getACL","status","tryParent","right","lastIndexOf","left","indexOf","doc2","nonexistent","response","getProspectiveHolder","_x","_getProspectiveHolder","apply","_asyncToGenerator2","_regenerator","mark","_callee","targetDirectory","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","reject","isDirectACL","stop"],"sources":["../../src/acl/acl.ts"],"sourcesContent":["/**\n * Non-UI functions for access control.\n * See https://github.com/solidos/web-access-control-spec\n * for the spec that defines how ACL documents work.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport { solidLogicSingleton, ACL_LINK } from 'solid-logic'\nimport * as utils from '../utils'\nimport { AgentMapMap, AgentMapUnion, ComboList } from './types'\nimport * as debug from '../debug'\nimport { graph, Store, NamedNode, serialize, st, Statement, sym, LiveStore } from 'rdflib'\n\nconst kb = solidLogicSingleton.store\n\n/**\n * Take the \"default\" ACL and convert it into the equivalent ACL\n * which the resource would have had. Return it as a new separate store.\n * The \"defaultForNew\" predicate is also accepted, as a deprecated\n * synonym for \"default\".\n */\nexport function adoptACLDefault (\n doc: NamedNode,\n aclDoc: NamedNode,\n defaultResource: NamedNode,\n defaultACLDoc: NamedNode\n): Store {\n const ACL = ns.acl\n const isContainer = doc.uri.slice(-1) === '/' // Give default for all directories\n\n const defaults = kb\n .each(undefined, ACL('default'), defaultResource, defaultACLDoc)\n .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc))\n\n const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements\n .concat(kb.statementsMatching(da as NamedNode, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agent'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentGroup'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('origin'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('originClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('mode'), undefined, defaultACLDoc))\n .concat(st(da as NamedNode, ACL('accessTo'), doc, defaultACLDoc))\n .concat(isContainer ? st(da as NamedNode, ACL('default'), doc, defaultACLDoc) : []), [] as Statement[])\n\n const kb2 = graph() // Potential - derived is kept apart\n proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)))\n return kb2 as LiveStore\n\n function move (symbol) {\n const y = defaultACLDoc.uri.length // The default ACL file\n return sym(\n symbol.uri.slice(0, y) === defaultACLDoc.uri\n ? aclDoc.uri + symbol.uri.slice(y)\n : symbol.uri\n )\n }\n}\n\n/**\n * Read and canonicalize the ACL for x in aclDoc\n *\n * Accumulate the access rights which each agent or class has\n */\nexport function readACL (\n doc: NamedNode,\n aclDoc: NamedNode,\n kb2: Store = kb,\n getDefaults: boolean = false\n): AgentMapMap {\n const auths: Array<NamedNode> = getDefaults\n ? getDefaultsFallback(kb2, ns)\n : kb2.each(undefined, ns.acl('accessTo'), doc)\n\n const ACL = ns.acl\n const ac = {\n agent: {},\n agentClass: {},\n agentGroup: {},\n origin: {},\n originClass: {}\n }\n Object.keys(ac).forEach(pred => {\n auths.forEach(function (a) {\n (kb2.each(a, ACL('mode')) as Array<NamedNode>).forEach(function (mode) {\n (kb2.each(a, ACL(pred)) as Array<NamedNode>).forEach(function (agent) {\n ac[pred][agent.uri] = ac[pred][agent.uri] || {}\n ac[pred][agent.uri][mode.uri] = a // could be \"true\" but leave pointer just in case\n })\n })\n })\n })\n return ac\n\n function getDefaultsFallback (kb, ns) {\n return kb\n .each(undefined, ns.acl('default'), doc)\n .concat(kb.each(undefined, ns.acl('defaultForNew'), doc))\n }\n}\n\n/**\n * Compare two ACLs\n */\nexport function sameACL (a: AgentMapMap | AgentMapUnion, b: AgentMapMap | AgentMapUnion): boolean {\n const contains = function (a, b) {\n for (const pred in {\n agent: true,\n agentClass: true,\n agentGroup: true,\n origin: true,\n originClass: true\n }) {\n if (a[pred]) {\n for (const agent in a[pred]) {\n for (const mode in a[pred][agent]) {\n if (!b[pred][agent] || !b[pred][agent][mode]) {\n return false\n }\n }\n }\n }\n }\n return true\n }\n return contains(a, b) && contains(b, a)\n}\n\n/**\n * Union N ACLs\n */\nexport function ACLunion (list: Array<AgentMapMap | AgentMapUnion>): AgentMapUnion {\n const b = list[0]\n let a, ag\n for (let k = 1; k < list.length; k++) {\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(\n function (pred) {\n a = list[k]\n if (a[pred]) {\n for (ag in a[pred]) {\n for (const mode in a[pred][ag]) {\n if (!b[pred][ag]) b[pred][ag] = []\n b[pred][ag][mode] = true\n }\n }\n }\n }\n )\n }\n return b as AgentMapUnion\n}\n\ntype loadUnionACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Merge ACLs lists from things to form union\n */\nexport function loadUnionACL (subjectList: Array<NamedNode>, callbackFunction: loadUnionACLCallback): void {\n const aclList: Array<AgentMapMap> = []\n const doList = function (list) {\n if (list.length) {\n const doc = list.shift().doc()\n getACLorDefault(doc, function (\n ok,\n p2,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n const defa = !p2\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc)\n const acl = defa\n ? readACL(defaultHolder, defaultACLDoc)\n : readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n aclList.push(acl)\n doList(list.slice(1))\n })\n } else {\n // all gone\n callbackFunction(true, ACLunion(aclList))\n }\n }\n doList(subjectList)\n}\n\n/**\n * Represents these as an RDF graph by combination of modes\n *\n * Each agent can only be in one place in this model, one combination of modes.\n * Combos are like full control, read append, read only etc.\n */\nexport function ACLbyCombination (ac: AgentMapMap | AgentMapUnion): ComboList {\n const byCombo = {}\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {\n for (const agent in ac[pred]) {\n const combo: string[] = []\n for (const mode in ac[pred][agent]) {\n combo.push(mode)\n }\n combo.sort()\n const combo2 = combo.join('\\n')\n if (!byCombo[combo2]) byCombo[combo2] = []\n byCombo[combo2].push([pred, agent])\n }\n })\n return byCombo\n}\n\n/**\n * Write ACL graph to store from AC\n */\nexport function makeACLGraph (kb: Store, x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): void {\n const byCombo = ACLbyCombination(ac)\n return makeACLGraphbyCombo(kb, x, byCombo, aclDoc)\n}\n\n/**\n * Write ACL graph to store from combo\n */\nexport function makeACLGraphbyCombo (\n kb: Store,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n main?: boolean,\n defa?: boolean\n): void {\n const ACL = ns.acl\n for (const combo in byCombo) {\n const pairs = byCombo[combo]\n if (!pairs.length) continue // do not add to store when no agent\n const modeURIs = combo.split('\\n')\n let short = modeURIs\n .map(function (u) {\n return u.split('#')[1]\n })\n .join('')\n if (defa && !main) short += 'Default' // don't muddle authorizations\n const a = kb.sym(aclDoc.uri + '#' + short)\n kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc)\n if (main) {\n kb.add(a, ACL('accessTo'), x, aclDoc)\n }\n if (defa) {\n kb.add(a, ACL('default'), x, aclDoc)\n }\n for (let i = 0; i < modeURIs.length; i++) {\n kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc)\n }\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = pairs[i][1]\n kb.add(a, ACL(pred), kb.sym(ag), aclDoc)\n }\n }\n}\n\n/**\n * Debugging short strings for dumping ACL\n * and possibly in the UI\n */\nexport function ACLToString (ac: AgentMapMap): string {\n return comboToString(ACLbyCombination(ac))\n}\n\n/**\n * Convert a [[ComboList]] to a string\n */\nexport function comboToString (byCombo: ComboList): string {\n let str = ''\n for (const combo in byCombo) {\n const modeURIs = combo.split('\\n')\n const initials = modeURIs\n .map(function (u) {\n return u.split('#')[1][0]\n })\n .join('')\n str += initials + ':'\n const pairs = byCombo[combo]\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = sym(pairs[i][1])\n str += pred === 'agent' ? '@' : ''\n str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag)\n if (i < pairs.length - 1) str += ','\n }\n str += ';'\n }\n return '{' + str.slice(0, -1) + '}' // drop extra semicolon\n}\n\n/**\n * Write ACL graph as Turtle\n */\nexport function makeACLString (x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): string {\n const kb2 = graph()\n makeACLGraph(kb2, x, ac, aclDoc)\n return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || ''\n}\n\n/**\n * Write ACL graph to web\n */\nexport function putACLObject (\n kb: LiveStore,\n x: NamedNode,\n ac: AgentMapMap | AgentMapUnion,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const byCombo = ACLbyCombination(ac)\n return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction)\n}\n\n/**\n * Write ACL graph to web from a [[ComboList]]\n */\nexport function putACLbyCombo (\n kb: LiveStore,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const kb2 = graph()\n makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true)\n\n // const str = makeACLString = function(x, ac, aclDoc)\n kb.updater?.put(\n aclDoc,\n kb2.statementsMatching(undefined, undefined, undefined, aclDoc),\n 'text/turtle',\n function (uri, ok, message) {\n if (!ok) {\n callbackFunction(ok, message)\n } else {\n kb.fetcher?.unload(aclDoc)\n makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true)\n kb.fetcher!.requested[aclDoc.uri] = 'done' // missing: save headers\n callbackFunction(ok)\n }\n }\n )\n}\n\ntype fixIndividualCardACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\ntype fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Fix the ACl for an individual card as a function of the groups it is in\n *\n * All group files must be loaded first\n */\nexport function fixIndividualCardACL (person: NamedNode, log: Function, callbackFunction: fixIndividualCardACLCallback): void {\n const groups = kb.each(undefined, ns.vcard('hasMember'), person) as NamedNode[]\n // const doc = person.doc()\n if (groups) {\n fixIndividualACL(person, groups, log, callbackFunction)\n } else {\n log('This card is in no groups')\n callbackFunction(true) // fine, no requirements to access. default should be ok\n }\n // @@ if no groups, then use default for People container or the book top container.?\n}\n\n/**\n * This function is used by [[fixIndividualCardACL]]\n */\nexport function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, log: Function, callbackFunction: fixIndividualACLCallback): void {\n log = log || debug.log\n const doc = item.doc()\n getACLorDefault(doc, function (\n ok,\n exists,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(false, targetACLDoc) // ie message\n const ac = exists\n ? readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n : readACL(defaultHolder, defaultACLDoc)\n loadUnionACL(subjects, function (ok, union) {\n if (!ok) return callbackFunction(false, union)\n if (sameACL(union as AgentMapMap | AgentMapUnion, ac)) {\n log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc)\n } else {\n log('Group ACLs differ for ' + utils.label(item) + ' ' + doc)\n\n // log(\"Group ACLs: \" + makeACLString(targetDoc, union, targetACLDoc))\n // log((exists ? \"Previous set\" : \"Default\") + \" ACLs: \" +\n // makeACLString(targetDoc, ac, targetACLDoc))\n\n putACLObject(\n kb as unknown as LiveStore,\n targetDoc as NamedNode,\n union as AgentMapMap | AgentMapUnion,\n targetACLDoc as NamedNode,\n callbackFunction\n )\n }\n })\n })\n}\n\n/**\n * Set an ACL\n */\nexport function setACL (\n docURI: NamedNode,\n aclText: string,\n callbackFunction: (ok: boolean, message: string) => void\n): void {\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n }) // @@@ check params\n } else {\n kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {\n if (!ok) return callbackFunction(ok, 'Gettting headers for ACL: ' + body)\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n callbackFunction(false, 'No Link rel=ACL header for ' + docURI)\n } else {\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n })\n }\n })\n }\n}\n\n/**\n * Get ACL file or default if necessary\n *\n * @param callbackFunction Will be called in the following ways, in the following cases:\n * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist\n * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did\n * * `callbackFunction(false, false, status, message)` when there was an error getting the original\n * * `callbackFunction(false, true, status, message)` when there was an error getting the default\n */\nexport function getACLorDefault (\n doc: NamedNode,\n callbackFunction: (\n a: boolean,\n b: boolean,\n statusOrMessage: number | NamedNode,\n message: string | NamedNode,\n c?: NamedNode,\n d?: NamedNode\n ) => void\n): void {\n getACL(doc, function (ok, status, aclDoc, message): string | void {\n const ACL = ns.acl\n if (!ok) return callbackFunction(false, false, status as number, message as string)\n\n // Recursively search for the ACL file which gives default access\n const tryParent = function (uri) {\n if (uri.slice(-1) === '/') {\n uri = uri.slice(0, -1)\n }\n const right = uri.lastIndexOf('/')\n const left = uri.indexOf('/', uri.indexOf('//') + 2)\n if (left > right) {\n return callbackFunction(false, true, 404, 'Found no ACL resource')\n }\n uri = uri.slice(0, right + 1)\n const doc2 = sym(uri)\n getACL(doc2, function (ok, status, defaultACLDoc: any): NamedNode | void {\n if (!ok) {\n return callbackFunction(\n false,\n true,\n status as number,\n `( No ACL pointer ${uri} ${status})${defaultACLDoc}`\n ) as void\n } else if (status === 403) {\n return callbackFunction(\n false,\n true,\n status,\n `( default ACL file FORBIDDEN. Stop.${uri})`\n )\n } else if (status === 404) {\n return tryParent(uri)\n } else if (status !== 200) {\n return callbackFunction(\n false,\n true,\n status as number,\n `Error status '${status}' searching for default for ${doc2}`\n )\n }\n // 200\n // statusBlock.textContent += (\" ACCESS set at \" + uri + \". End search.\")\n const defaults = kb\n .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)\n .concat(\n kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc)\n )\n if (!defaults.length) {\n return tryParent(uri) // Keep searching\n }\n const defaultHolder = kb.sym(uri)\n return callbackFunction(\n true,\n false,\n doc,\n aclDoc as NamedNode,\n defaultHolder,\n defaultACLDoc as NamedNode\n )\n })\n } // tryParent\n\n if (!ok) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error accessing Access Control information for ${doc}) ${message}`\n )\n } else if (status === 404) {\n tryParent(doc.uri) // @@ construct default one - the server should do that\n } else if (status === 403) {\n return callbackFunction(\n false,\n false,\n status,\n `(Sharing not available to you)${message}`\n )\n } else if (status !== 200) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error ${status} accessing Access Control information for ${doc}: ${message}`\n )\n } else {\n // 200\n return callbackFunction(true, true, doc, aclDoc as NamedNode)\n }\n }) // Call to getACL\n}\n\n/**\n * Calls back `(ok, status, acldoc, message)` as follows\n *\n * * `(false, 900, errormessage)` if no link header\n * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized\n * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist\n * * `(true, 200, documentSymbol)` if file exists and read OK\n */\nexport function getACL (\n doc: NamedNode,\n callbackFunction: (\n ok: boolean,\n messageOrStatus: number | string,\n messageOrDoc?: NamedNode | string,\n message?: string\n ) => void\n): void {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {\n if (!ok) {\n return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`)\n }\n const aclDoc = kb.any(\n doc,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`)\n } else {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n if (kb.fetcher.nonexistent[aclDoc.value]) {\n return callbackFunction(\n true,\n 404,\n aclDoc as NamedNode,\n `ACL file ${aclDoc} does not exist.`\n )\n }\n kb.fetcher.nowOrWhenFetched(aclDoc as NamedNode, undefined, function (\n ok,\n message,\n response\n ) {\n if (!ok) {\n callbackFunction(\n true,\n response.status,\n aclDoc as NamedNode,\n `Can't read Access Control File ${aclDoc}: ${message}`\n )\n } else {\n callbackFunction(true, 200, aclDoc as NamedNode)\n }\n })\n }\n })\n}\n\n/**\n * Calls [[getACLorDefault]] and then (?)\n */\nexport async function getProspectiveHolder (targetDirectory: string): Promise<NamedNode | undefined> {\n return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder\n ) => {\n if (ok) {\n return resolve((isDirectACL ? targetDoc : defaultHolder) as NamedNode)\n }\n return reject(new Error(`Error loading ${targetDirectory}`))\n }))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAAA,EAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAH,uBAAA,CAAAC,OAAA;AAEA,IAAAG,KAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAA0F,SAAAK,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAP,wBAAAW,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAZ1F;AACA;AACA;AACA;AACA;AACA;;AASA,IAAMW,EAAE,GAAGC,+BAAmB,CAACC,KAAK;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BC,GAAc,EACdC,MAAiB,EACjBC,eAA0B,EAC1BC,aAAwB,EACjB;EACP,IAAMC,GAAG,GAAGrC,EAAE,CAACsC,GAAG;EAClB,IAAMC,WAAW,GAAGN,GAAG,CAACO,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAC;;EAE9C,IAAMC,QAAQ,GAAGb,EAAE,CAChBc,IAAI,CAACC,SAAS,EAAEP,GAAG,CAAC,SAAS,CAAC,EAAEF,eAAe,EAAEC,aAAa,CAAC,CAC/DS,MAAM,CAAChB,EAAE,CAACc,IAAI,CAACC,SAAS,EAAEP,GAAG,CAAC,eAAe,CAAC,EAAEF,eAAe,EAAEC,aAAa,CAAC,CAAC;EAEnF,IAAMU,QAAQ,GAAGJ,QAAQ,CAACK,MAAM,CAAC,UAACC,qBAAqB,EAAEC,EAAE;IAAA,OAAKD,qBAAqB,CAClFH,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAejD,EAAE,CAACmD,GAAG,CAAC,MAAM,CAAC,EAAEd,GAAG,CAAC,eAAe,CAAC,EAAED,aAAa,CAAC,CAAC,CACnGS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,OAAO,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CACtFS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,YAAY,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CAC3FS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,YAAY,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CAC3FS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,QAAQ,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CACvFS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,aAAa,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CAC5FS,MAAM,CAAChB,EAAE,CAACqB,kBAAkB,CAACD,EAAE,EAAeZ,GAAG,CAAC,MAAM,CAAC,EAAEO,SAAS,EAAER,aAAa,CAAC,CAAC,CACrFS,MAAM,CAAC,IAAAO,UAAE,EAACH,EAAE,EAAeZ,GAAG,CAAC,UAAU,CAAC,EAAEJ,GAAG,EAAEG,aAAa,CAAC,CAAC,CAChES,MAAM,CAACN,WAAW,GAAG,IAAAa,UAAE,EAACH,EAAE,EAAeZ,GAAG,CAAC,SAAS,CAAC,EAAEJ,GAAG,EAAEG,aAAa,CAAC,GAAG,EAAE,CAAC;EAAA,GAAE,EAAE,CAAgB;EAEzG,IAAMiB,GAAG,GAAG,IAAAC,aAAK,GAAE,EAAC;EACpBR,QAAQ,CAACS,OAAO,CAAC,UAAAH,EAAE;IAAA,OAAIC,GAAG,CAACG,GAAG,CAACC,IAAI,CAACL,EAAE,CAACM,OAAO,CAAC,EAAED,IAAI,CAACL,EAAE,CAACO,SAAS,CAAC,EAAEF,IAAI,CAACL,EAAE,CAACQ,MAAM,CAAC,EAAE,IAAAC,WAAG,EAAC3B,MAAM,CAACM,GAAG,CAAC,CAAC;EAAA,EAAC;EACvG,OAAOa,GAAG;EAEV,SAASI,IAAIA,CAAEK,MAAM,EAAE;IACrB,IAAMC,CAAC,GAAG3B,aAAa,CAACI,GAAG,CAACwB,MAAM,EAAC;IACnC,OAAO,IAAAH,WAAG,EACRC,MAAM,CAACtB,GAAG,CAACC,KAAK,CAAC,CAAC,EAAEsB,CAAC,CAAC,KAAK3B,aAAa,CAACI,GAAG,GACxCN,MAAM,CAACM,GAAG,GAAGsB,MAAM,CAACtB,GAAG,CAACC,KAAK,CAACsB,CAAC,CAAC,GAChCD,MAAM,CAACtB,GAAG,CACf;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASyB,OAAOA,CACrBhC,GAAc,EACdC,MAAiB,EAGJ;EAAA,IAFbmB,GAAU,GAAAa,SAAA,CAAAF,MAAA,QAAAE,SAAA,QAAAtB,SAAA,GAAAsB,SAAA,MAAGrC,EAAE;EAAA,IACfsC,WAAoB,GAAAD,SAAA,CAAAF,MAAA,QAAAE,SAAA,QAAAtB,SAAA,GAAAsB,SAAA,MAAG,KAAK;EAE5B,IAAME,KAAuB,GAAGD,WAAW,GACvCE,mBAAmB,CAAChB,GAAG,EAAErD,EAAE,CAAC,GAC5BqD,GAAG,CAACV,IAAI,CAACC,SAAS,EAAE5C,EAAE,CAACsC,GAAG,CAAC,UAAU,CAAC,EAAEL,GAAG,CAAC;EAEhD,IAAMI,GAAG,GAAGrC,EAAE,CAACsC,GAAG;EAClB,IAAMgC,EAAE,GAAG;IACTC,KAAK,EAAE,CAAC,CAAC;IACTC,UAAU,EAAE,CAAC,CAAC;IACdC,UAAU,EAAE,CAAC,CAAC;IACdC,MAAM,EAAE,CAAC,CAAC;IACVC,WAAW,EAAE,CAAC;EAChB,CAAC;EACDvD,MAAM,CAACwD,IAAI,CAACN,EAAE,CAAC,CAACf,OAAO,CAAC,UAAAsB,IAAI,EAAI;IAC9BT,KAAK,CAACb,OAAO,CAAC,UAAUuB,CAAC,EAAE;MACxBzB,GAAG,CAACV,IAAI,CAACmC,CAAC,EAAEzC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAsBkB,OAAO,CAAC,UAAUwB,IAAI,EAAE;QACpE1B,GAAG,CAACV,IAAI,CAACmC,CAAC,EAAEzC,GAAG,CAACwC,IAAI,CAAC,CAAC,CAAsBtB,OAAO,CAAC,UAAUgB,KAAK,EAAE;UACpED,EAAE,CAACO,IAAI,CAAC,CAACN,KAAK,CAAC/B,GAAG,CAAC,GAAG8B,EAAE,CAACO,IAAI,CAAC,CAACN,KAAK,CAAC/B,GAAG,CAAC,IAAI,CAAC,CAAC;UAC/C8B,EAAE,CAACO,IAAI,CAAC,CAACN,KAAK,CAAC/B,GAAG,CAAC,CAACuC,IAAI,CAACvC,GAAG,CAAC,GAAGsC,CAAC,EAAC;QACpC,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;;EACF,OAAOR,EAAE;EAET,SAASD,mBAAmBA,CAAExC,EAAE,EAAE7B,EAAE,EAAE;IACpC,OAAO6B,EAAE,CACNc,IAAI,CAACC,SAAS,EAAE5C,EAAE,CAACsC,GAAG,CAAC,SAAS,CAAC,EAAEL,GAAG,CAAC,CACvCY,MAAM,CAAChB,EAAE,CAACc,IAAI,CAACC,SAAS,EAAE5C,EAAE,CAACsC,GAAG,CAAC,eAAe,CAAC,EAAEL,GAAG,CAAC,CAAC;EAC7D;AACF;;AAEA;AACA;AACA;AACO,SAAS+C,OAAOA,CAAEF,CAA8B,EAAEG,CAA8B,EAAW;EAChG,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAaJ,CAAC,EAAEG,CAAC,EAAE;IAC/B,KAAK,IAAMJ,IAAI,IAAI;MACjBN,KAAK,EAAE,IAAI;MACXC,UAAU,EAAE,IAAI;MAChBC,UAAU,EAAE,IAAI;MAChBC,MAAM,EAAE,IAAI;MACZC,WAAW,EAAE;IACf,CAAC,EAAE;MACD,IAAIG,CAAC,CAACD,IAAI,CAAC,EAAE;QACX,KAAK,IAAMN,KAAK,IAAIO,CAAC,CAACD,IAAI,CAAC,EAAE;UAC3B,KAAK,IAAME,IAAI,IAAID,CAAC,CAACD,IAAI,CAAC,CAACN,KAAK,CAAC,EAAE;YACjC,IAAI,CAACU,CAAC,CAACJ,IAAI,CAAC,CAACN,KAAK,CAAC,IAAI,CAACU,CAAC,CAACJ,IAAI,CAAC,CAACN,KAAK,CAAC,CAACQ,IAAI,CAAC,EAAE;cAC5C,OAAO,KAAK;YACd;UACF;QACF;MACF;IACF;IACA,OAAO,IAAI;EACb,CAAC;EACD,OAAOG,QAAQ,CAACJ,CAAC,EAAEG,CAAC,CAAC,IAAIC,QAAQ,CAACD,CAAC,EAAEH,CAAC,CAAC;AACzC;;AAEA;AACA;AACA;AACO,SAASK,QAAQA,CAAEC,IAAwC,EAAiB;EACjF,IAAMH,CAAC,GAAGG,IAAI,CAAC,CAAC,CAAC;EACjB,IAAIN,CAAC,EAAEO,EAAE;EAAA,IAAAC,KAAA,YAAAA,MAAAC,CAAA,EAC6B;IACpC;IAAC,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAChC,OAAO,CACrE,UAAUsB,IAAI,EAAE;MACdC,CAAC,GAAGM,IAAI,CAACG,CAAC,CAAC;MACX,IAAIT,CAAC,CAACD,IAAI,CAAC,EAAE;QACX,KAAKQ,EAAE,IAAIP,CAAC,CAACD,IAAI,CAAC,EAAE;UAClB,KAAK,IAAME,IAAI,IAAID,CAAC,CAACD,IAAI,CAAC,CAACQ,EAAE,CAAC,EAAE;YAC9B,IAAI,CAACJ,CAAC,CAACJ,IAAI,CAAC,CAACQ,EAAE,CAAC,EAAEJ,CAAC,CAACJ,IAAI,CAAC,CAACQ,EAAE,CAAC,GAAG,EAAE;YAClCJ,CAAC,CAACJ,IAAI,CAAC,CAACQ,EAAE,CAAC,CAACN,IAAI,CAAC,GAAG,IAAI;UAC1B;QACF;MACF;IACF,CAAC,CACF;EACH,CAAC;EAdD,KAAK,IAAIQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACpB,MAAM,EAAEuB,CAAC,EAAE;IAAAD,KAAA,CAAAC,CAAA;EAAA;EAepC,OAAON,CAAC;AACV;AAIA;AACA;AACA;AACO,SAASO,YAAYA,CAAEC,WAA6B,EAAEC,gBAAsC,EAAQ;EACzG,IAAMC,OAA2B,GAAG,EAAE;EACtC,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAaR,IAAI,EAAE;IAC7B,IAAIA,IAAI,CAACpB,MAAM,EAAE;MACf,IAAM/B,GAAG,GAAGmD,IAAI,CAACS,KAAK,EAAE,CAAC5D,GAAG,EAAE;MAC9B6D,eAAe,CAAC7D,GAAG,EAAE,UACnB8D,EAAE,EACFC,EAAE,EACFC,SAAS,EACTC,YAAY,EACZC,aAAa,EACb/D,aAAa,EACb;QACA,IAAMgE,IAAI,GAAG,CAACJ,EAAE;QAChB,IAAI,CAACD,EAAE,IAAI,CAACI,aAAa,IAAI,CAAC/D,aAAa,EAAE,OAAOsD,gBAAgB,CAACK,EAAE,EAAEG,YAAY,CAAC;QACtF,IAAM5D,GAAG,GAAG8D,IAAI,GACZnC,OAAO,CAACkC,aAAa,EAAE/D,aAAa,CAAC,GACrC6B,OAAO,CAACgC,SAAS,EAAeC,YAAY,CAAc;QAC9DP,OAAO,CAACU,IAAI,CAAC/D,GAAG,CAAC;QACjBsD,MAAM,CAACR,IAAI,CAAC3C,KAAK,CAAC,CAAC,CAAC,CAAC;MACvB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL;MACAiD,gBAAgB,CAAC,IAAI,EAAEP,QAAQ,CAACQ,OAAO,CAAC,CAAC;IAC3C;EACF,CAAC;EACDC,MAAM,CAACH,WAAW,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASa,gBAAgBA,CAAEhC,EAA+B,EAAa;EAC5E,IAAMiC,OAAO,GAAG,CAAC,CAAC;EACjB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAChD,OAAO,CAAC,UAAUsB,IAAI,EAAE;IACtF,KAAK,IAAMN,KAAK,IAAID,EAAE,CAACO,IAAI,CAAC,EAAE;MAC5B,IAAM2B,KAAe,GAAG,EAAE;MAC1B,KAAK,IAAMzB,IAAI,IAAIT,EAAE,CAACO,IAAI,CAAC,CAACN,KAAK,CAAC,EAAE;QAClCiC,KAAK,CAACH,IAAI,CAACtB,IAAI,CAAC;MAClB;MACAyB,KAAK,CAACC,IAAI,EAAE;MACZ,IAAMC,MAAM,GAAGF,KAAK,CAACG,IAAI,CAAC,IAAI,CAAC;MAC/B,IAAI,CAACJ,OAAO,CAACG,MAAM,CAAC,EAAEH,OAAO,CAACG,MAAM,CAAC,GAAG,EAAE;MAC1CH,OAAO,CAACG,MAAM,CAAC,CAACL,IAAI,CAAC,CAACxB,IAAI,EAAEN,KAAK,CAAC,CAAC;IACrC;EACF,CAAC,CAAC;EACF,OAAOgC,OAAO;AAChB;;AAEA;AACA;AACA;AACO,SAASK,YAAYA,CAAE/E,EAAS,EAAEgF,CAAY,EAAEvC,EAAe,EAAEpC,MAAiB,EAAQ;EAC/F,IAAMqE,OAAO,GAAGD,gBAAgB,CAAChC,EAAE,CAAC;EACpC,OAAOwC,mBAAmB,CAACjF,EAAE,EAAEgF,CAAC,EAAEN,OAAO,EAAErE,MAAM,CAAC;AACpD;;AAEA;AACA;AACA;AACO,SAAS4E,mBAAmBA,CACjCjF,EAAS,EACTgF,CAAY,EACZN,OAAkB,EAClBrE,MAAiB,EACjB6E,IAAc,EACdX,IAAc,EACR;EACN,IAAM/D,GAAG,GAAGrC,EAAE,CAACsC,GAAG;EAClB,KAAK,IAAMkE,KAAK,IAAID,OAAO,EAAE;IAC3B,IAAMS,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;IAC5B,IAAI,CAACQ,KAAK,CAAChD,MAAM,EAAE,SAAQ,CAAC;IAC5B,IAAMiD,QAAQ,GAAGT,KAAK,CAACU,KAAK,CAAC,IAAI,CAAC;IAClC,IAAIC,MAAK,GAAGF,QAAQ,CACjBG,GAAG,CAAC,UAAUC,CAAC,EAAE;MAChB,OAAOA,CAAC,CAACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CACDP,IAAI,CAAC,EAAE,CAAC;IACX,IAAIP,IAAI,IAAI,CAACW,IAAI,EAAEI,MAAK,IAAI,SAAS,EAAC;IACtC,IAAMrC,EAAC,GAAGjD,EAAE,CAACgC,GAAG,CAAC3B,MAAM,CAACM,GAAG,GAAG,GAAG,GAAG2E,MAAK,CAAC;IAC1CtF,EAAE,CAAC2B,GAAG,CAACsB,EAAC,EAAE9E,EAAE,CAACmD,GAAG,CAAC,MAAM,CAAC,EAAEd,GAAG,CAAC,eAAe,CAAC,EAAEH,MAAM,CAAC;IACvD,IAAI6E,IAAI,EAAE;MACRlF,EAAE,CAAC2B,GAAG,CAACsB,EAAC,EAAEzC,GAAG,CAAC,UAAU,CAAC,EAAEwE,CAAC,EAAE3E,MAAM,CAAC;IACvC;IACA,IAAIkE,IAAI,EAAE;MACRvE,EAAE,CAAC2B,GAAG,CAACsB,EAAC,EAAEzC,GAAG,CAAC,SAAS,CAAC,EAAEwE,CAAC,EAAE3E,MAAM,CAAC;IACtC;IACA,KAAK,IAAIoF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,QAAQ,CAACjD,MAAM,EAAEsD,CAAC,EAAE,EAAE;MACxCzF,EAAE,CAAC2B,GAAG,CAACsB,EAAC,EAAEzC,GAAG,CAAC,MAAM,CAAC,EAAER,EAAE,CAACgC,GAAG,CAACoD,QAAQ,CAACK,CAAC,CAAC,CAAC,EAAEpF,MAAM,CAAC;IACrD;IACA,KAAK,IAAIoF,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGN,KAAK,CAAChD,MAAM,EAAEsD,EAAC,EAAE,EAAE;MACrC,IAAMzC,IAAI,GAAGmC,KAAK,CAACM,EAAC,CAAC,CAAC,CAAC,CAAC;MACxB,IAAMjC,EAAE,GAAG2B,KAAK,CAACM,EAAC,CAAC,CAAC,CAAC,CAAC;MACtBzF,EAAE,CAAC2B,GAAG,CAACsB,EAAC,EAAEzC,GAAG,CAACwC,IAAI,CAAC,EAAEhD,EAAE,CAACgC,GAAG,CAACwB,EAAE,CAAC,EAAEnD,MAAM,CAAC;IAC1C;EACF;AACF;;AAEA;AACA;AACA;AACA;AACO,SAASqF,WAAWA,CAAEjD,EAAe,EAAU;EACpD,OAAOkD,aAAa,CAAClB,gBAAgB,CAAChC,EAAE,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACO,SAASkD,aAAaA,CAAEjB,OAAkB,EAAU;EACzD,IAAIkB,GAAG,GAAG,EAAE;EACZ,KAAK,IAAMjB,KAAK,IAAID,OAAO,EAAE;IAC3B,IAAMU,QAAQ,GAAGT,KAAK,CAACU,KAAK,CAAC,IAAI,CAAC;IAClC,IAAMQ,QAAQ,GAAGT,QAAQ,CACtBG,GAAG,CAAC,UAAUC,CAAC,EAAE;MAChB,OAAOA,CAAC,CAACH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CACDP,IAAI,CAAC,EAAE,CAAC;IACXc,GAAG,IAAIC,QAAQ,GAAG,GAAG;IACrB,IAAMV,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;IAC5B,KAAK,IAAIc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,KAAK,CAAChD,MAAM,EAAEsD,CAAC,EAAE,EAAE;MACrC,IAAMzC,IAAI,GAAGmC,KAAK,CAACM,CAAC,CAAC,CAAC,CAAC,CAAC;MACxB,IAAMjC,EAAE,GAAG,IAAAxB,WAAG,EAACmD,KAAK,CAACM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3BG,GAAG,IAAI5C,IAAI,KAAK,OAAO,GAAG,GAAG,GAAG,EAAE;MAClC4C,GAAG,IAAIpC,EAAE,CAACsC,QAAQ,CAAC3H,EAAE,CAAC4H,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,GAAGxH,KAAK,CAACyH,KAAK,CAACxC,EAAE,CAAC;MAC5D,IAAIiC,CAAC,GAAGN,KAAK,CAAChD,MAAM,GAAG,CAAC,EAAEyD,GAAG,IAAI,GAAG;IACtC;IACAA,GAAG,IAAI,GAAG;EACZ;EACA,OAAO,GAAG,GAAGA,GAAG,CAAChF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAC;AACtC;;AAEA;AACA;AACA;AACO,SAASqF,aAAaA,CAAEjB,CAAY,EAAEvC,EAAe,EAAEpC,MAAiB,EAAU;EACvF,IAAMmB,GAAG,GAAG,IAAAC,aAAK,GAAE;EACnBsD,YAAY,CAACvD,GAAG,EAAEwD,CAAC,EAAEvC,EAAE,EAAEpC,MAAM,CAAC;EAChC,OAAO,IAAA6F,iBAAS,EAAC7F,MAAM,EAAEmB,GAAG,EAAEnB,MAAM,CAACM,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE;AAChE;;AAEA;AACA;AACA;AACO,SAASwF,YAAYA,CAC1BnG,EAAa,EACbgF,CAAY,EACZvC,EAA+B,EAC/BpC,MAAiB,EACjBwD,gBAAyD,EACnD;EACN,IAAMa,OAAO,GAAGD,gBAAgB,CAAChC,EAAE,CAAC;EACpC,OAAO2D,aAAa,CAACpG,EAAE,EAAEgF,CAAC,EAAEN,OAAO,EAAErE,MAAM,EAAEwD,gBAAgB,CAAC;AAChE;;AAEA;AACA;AACA;AACO,SAASuC,aAAaA,CAC3BpG,EAAa,EACbgF,CAAY,EACZN,OAAkB,EAClBrE,MAAiB,EACjBwD,gBAAyD,EACnD;EAAA,IAAAwC,WAAA;EACN,IAAM7E,GAAG,GAAG,IAAAC,aAAK,GAAE;EACnBwD,mBAAmB,CAACzD,GAAG,EAAEwD,CAAC,EAAEN,OAAO,EAAErE,MAAM,EAAE,IAAI,CAAC;;EAElD;EACA,CAAAgG,WAAA,GAAArG,EAAE,CAACsG,OAAO,cAAAD,WAAA,uBAAVA,WAAA,CAAYE,GAAG,CACblG,MAAM,EACNmB,GAAG,CAACH,kBAAkB,CAACN,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEV,MAAM,CAAC,EAC/D,aAAa,EACb,UAAUM,GAAG,EAAEuD,EAAE,EAAEsC,OAAO,EAAE;IAC1B,IAAI,CAACtC,EAAE,EAAE;MACPL,gBAAgB,CAACK,EAAE,EAAEsC,OAAO,CAAC;IAC/B,CAAC,MAAM;MAAA,IAAAC,WAAA;MACL,CAAAA,WAAA,GAAAzG,EAAE,CAAC0G,OAAO,cAAAD,WAAA,uBAAVA,WAAA,CAAYE,MAAM,CAACtG,MAAM,CAAC;MAC1B4E,mBAAmB,CAACjF,EAAE,EAAEgF,CAAC,EAAEN,OAAO,EAAErE,MAAM,EAAE,IAAI,CAAC;MACjDL,EAAE,CAAC0G,OAAO,CAAEE,SAAS,CAACvG,MAAM,CAACM,GAAG,CAAC,GAAG,MAAM,EAAC;MAC3CkD,gBAAgB,CAACK,EAAE,CAAC;IACtB;EACF,CAAC,CACF;AACH;AAKA;AACA;AACA;AACA;AACA;AACO,SAAS2C,oBAAoBA,CAAEC,MAAiB,EAAEC,GAAa,EAAElD,gBAA8C,EAAQ;EAC5H,IAAMmD,MAAM,GAAGhH,EAAE,CAACc,IAAI,CAACC,SAAS,EAAE5C,EAAE,CAAC8I,KAAK,CAAC,WAAW,CAAC,EAAEH,MAAM,CAAgB;EAC/E;EACA,IAAIE,MAAM,EAAE;IACVE,gBAAgB,CAACJ,MAAM,EAAEE,MAAM,EAAED,GAAG,EAAElD,gBAAgB,CAAC;EACzD,CAAC,MAAM;IACLkD,GAAG,CAAC,2BAA2B,CAAC;IAChClD,gBAAgB,CAAC,IAAI,CAAC,EAAC;EACzB;EACA;AACF;;AAEA;AACA;AACA;AACO,SAASqD,gBAAgBA,CAAEC,IAAe,EAAEC,QAA0B,EAAEL,GAAa,EAAElD,gBAA0C,EAAQ;EAC9IkD,GAAG,GAAGA,GAAG,IAAIvI,KAAK,CAACuI,GAAG;EACtB,IAAM3G,GAAG,GAAG+G,IAAI,CAAC/G,GAAG,EAAE;EACtB6D,eAAe,CAAC7D,GAAG,EAAE,UACnB8D,EAAE,EACFmD,MAAM,EACNjD,SAAS,EACTC,YAAY,EACZC,aAAa,EACb/D,aAAa,EACb;IACA,IAAI,CAAC2D,EAAE,IAAI,CAACI,aAAa,IAAI,CAAC/D,aAAa,EAAE,OAAOsD,gBAAgB,CAAC,KAAK,EAAEQ,YAAY,CAAC,EAAC;IAC1F,IAAM5B,EAAE,GAAG4E,MAAM,GACbjF,OAAO,CAACgC,SAAS,EAAeC,YAAY,CAAc,GAC1DjC,OAAO,CAACkC,aAAa,EAAE/D,aAAa,CAAC;IACzCoD,YAAY,CAACyD,QAAQ,EAAE,UAAUlD,EAAE,EAAEoD,KAAK,EAAE;MAC1C,IAAI,CAACpD,EAAE,EAAE,OAAOL,gBAAgB,CAAC,KAAK,EAAEyD,KAAK,CAAC;MAC9C,IAAInE,OAAO,CAACmE,KAAK,EAAiC7E,EAAE,CAAC,EAAE;QACrDsE,GAAG,CAAC,6BAA6B,GAAGxI,KAAK,CAACyH,KAAK,CAACmB,IAAI,CAAC,GAAG,GAAG,GAAG/G,GAAG,CAAC;MACpE,CAAC,MAAM;QACL2G,GAAG,CAAC,wBAAwB,GAAGxI,KAAK,CAACyH,KAAK,CAACmB,IAAI,CAAC,GAAG,GAAG,GAAG/G,GAAG,CAAC;;QAE7D;QACA;QACA;;QAEA+F,YAAY,CACVnG,EAAE,EACFoE,SAAS,EACTkD,KAAK,EACLjD,YAAY,EACZR,gBAAgB,CACjB;MACH;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACO,SAAS0D,MAAMA,CACpBC,MAAiB,EACjBC,OAAe,EACf5D,gBAAwD,EAClD;EACN,IAAMxD,MAAM,GAAGL,EAAE,CAAC0H,GAAG,CACnBF,MAAM,EACNG,oBAAQ,CACT,EAAC;EACF,IAAI,CAAC3H,EAAE,CAAC0G,OAAO,EAAE;IACf,MAAM,IAAIkB,KAAK,CAAC,sBAAsB,CAAC;EACzC;EACA,IAAIvH,MAAM,EAAE;IACV;IACAL,EAAE,CAAC0G,OAAO,CACPmB,YAAY,CAAC,KAAK,EAAExH,MAAM,CAACyH,KAAK,EAAE;MACjCC,IAAI,EAAEN,OAAO;MACbO,WAAW,EAAE;IACf,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG,EAAK;MACbrE,gBAAgB,CAACqE,GAAG,CAAChE,EAAE,EAAEgE,GAAG,CAACC,KAAK,IAAI,EAAE,CAAC;IAC3C,CAAC,CAAC,EAAC;EACP,CAAC,MAAM;IACLnI,EAAE,CAAC0G,OAAO,CAAC0B,gBAAgB,CAACZ,MAAM,EAAEzG,SAAS,EAAE,UAAUmD,EAAE,EAAEmE,IAAI,EAAE;MACjE,IAAI,CAACnE,EAAE,EAAE,OAAOL,gBAAgB,CAACK,EAAE,EAAE,4BAA4B,GAAGmE,IAAI,CAAC;MACzE,IAAMhI,MAAM,GAAGL,EAAE,CAAC0H,GAAG,CACnBF,MAAM,EACNG,oBAAQ,CACT,EAAC;MACF,IAAI,CAACtH,MAAM,EAAE;QACX;QACAwD,gBAAgB,CAAC,KAAK,EAAE,6BAA6B,GAAG2D,MAAM,CAAC;MACjE,CAAC,MAAM;QACL,IAAI,CAACxH,EAAE,CAAC0G,OAAO,EAAE;UACf,MAAM,IAAIkB,KAAK,CAAC,sBAAsB,CAAC;QACzC;QACA5H,EAAE,CAAC0G,OAAO,CACPmB,YAAY,CAAC,KAAK,EAAExH,MAAM,CAACyH,KAAK,EAAE;UACjCC,IAAI,EAAEN,OAAO;UACbO,WAAW,EAAE;QACf,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG,EAAK;UACbrE,gBAAgB,CAACqE,GAAG,CAAChE,EAAE,EAAEgE,GAAG,CAACC,KAAK,IAAI,EAAE,CAAC;QAC3C,CAAC,CAAC;MACN;IACF,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASlE,eAAeA,CAC7B7D,GAAc,EACdyD,gBAOS,EACH;EACNyE,MAAM,CAAClI,GAAG,EAAE,UAAU8D,EAAE,EAAEqE,MAAM,EAAElI,MAAM,EAAEmG,OAAO,EAAiB;IAChE,IAAMhG,GAAG,GAAGrC,EAAE,CAACsC,GAAG;IAClB,IAAI,CAACyD,EAAE,EAAE,OAAOL,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE0E,MAAM,EAAY/B,OAAO,CAAW;;IAEnF;IACA,IAAMgC,SAAS,GAAG,SAAZA,SAASA,CAAa7H,GAAG,EAAE;MAC/B,IAAIA,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACzBD,GAAG,GAAGA,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACxB;MACA,IAAM6H,KAAK,GAAG9H,GAAG,CAAC+H,WAAW,CAAC,GAAG,CAAC;MAClC,IAAMC,IAAI,GAAGhI,GAAG,CAACiI,OAAO,CAAC,GAAG,EAAEjI,GAAG,CAACiI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MACpD,IAAID,IAAI,GAAGF,KAAK,EAAE;QAChB,OAAO5E,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,uBAAuB,CAAC;MACpE;MACAlD,GAAG,GAAGA,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE6H,KAAK,GAAG,CAAC,CAAC;MAC7B,IAAMI,IAAI,GAAG,IAAA7G,WAAG,EAACrB,GAAG,CAAC;MACrB2H,MAAM,CAACO,IAAI,EAAE,UAAU3E,EAAE,EAAEqE,MAAM,EAAEhI,aAAkB,EAAoB;QACvE,IAAI,CAAC2D,EAAE,EAAE;UACP,OAAOL,gBAAgB,CACrB,KAAK,EACL,IAAI,EACJ0E,MAAM,sBAAAvH,MAAA,CACcL,GAAG,OAAAK,MAAA,CAAIuH,MAAM,OAAAvH,MAAA,CAAIT,aAAa,EACnD;QACH,CAAC,MAAM,IAAIgI,MAAM,KAAK,GAAG,EAAE;UACzB,OAAO1E,gBAAgB,CACrB,KAAK,EACL,IAAI,EACJ0E,MAAM,wCAAAvH,MAAA,CACgCL,GAAG,OAC1C;QACH,CAAC,MAAM,IAAI4H,MAAM,KAAK,GAAG,EAAE;UACzB,OAAOC,SAAS,CAAC7H,GAAG,CAAC;QACvB,CAAC,MAAM,IAAI4H,MAAM,KAAK,GAAG,EAAE;UACzB,OAAO1E,gBAAgB,CACrB,KAAK,EACL,IAAI,EACJ0E,MAAM,mBAAAvH,MAAA,CACWuH,MAAM,kCAAAvH,MAAA,CAA+B6H,IAAI,EAC3D;QACH;QACA;QACA;QACA,IAAMhI,QAAQ,GAAGb,EAAE,CAChBc,IAAI,CAACC,SAAS,EAAEP,GAAG,CAAC,SAAS,CAAC,EAAER,EAAE,CAACgC,GAAG,CAACrB,GAAG,CAAC,EAAEJ,aAAa,CAAC,CAC3DS,MAAM,CACLhB,EAAE,CAACc,IAAI,CAACC,SAAS,EAAEP,GAAG,CAAC,eAAe,CAAC,EAAER,EAAE,CAACgC,GAAG,CAACrB,GAAG,CAAC,EAAEJ,aAAa,CAAC,CACrE;QACH,IAAI,CAACM,QAAQ,CAACsB,MAAM,EAAE;UACpB,OAAOqG,SAAS,CAAC7H,GAAG,CAAC,EAAC;QACxB;;QACA,IAAM2D,aAAa,GAAGtE,EAAE,CAACgC,GAAG,CAACrB,GAAG,CAAC;QACjC,OAAOkD,gBAAgB,CACrB,IAAI,EACJ,KAAK,EACLzD,GAAG,EACHC,MAAM,EACNiE,aAAa,EACb/D,aAAa,CACd;MACH,CAAC,CAAC;IACJ,CAAC,EAAC;;IAEF,IAAI,CAAC2D,EAAE,EAAE;MACP,OAAOL,gBAAgB,CACrB,KAAK,EACL,KAAK,EACL0E,MAAM,oDAAAvH,MAAA,CAC4CZ,GAAG,QAAAY,MAAA,CAAKwF,OAAO,EAClE;IACH,CAAC,MAAM,IAAI+B,MAAM,KAAK,GAAG,EAAE;MACzBC,SAAS,CAACpI,GAAG,CAACO,GAAG,CAAC,EAAC;IACrB,CAAC,MAAM,IAAI4H,MAAM,KAAK,GAAG,EAAE;MACzB,OAAO1E,gBAAgB,CACrB,KAAK,EACL,KAAK,EACL0E,MAAM,mCAAAvH,MAAA,CAC2BwF,OAAO,EACzC;IACH,CAAC,MAAM,IAAI+B,MAAM,KAAK,GAAG,EAAE;MACzB,OAAO1E,gBAAgB,CACrB,KAAK,EACL,KAAK,EACL0E,MAAM,WAAAvH,MAAA,CACGuH,MAAM,gDAAAvH,MAAA,CAA6CZ,GAAG,QAAAY,MAAA,CAAKwF,OAAO,EAC5E;IACH,CAAC,MAAM;MACL;MACA,OAAO3C,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAEzD,GAAG,EAAEC,MAAM,CAAc;IAC/D;EACF,CAAC,CAAC,EAAC;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiI,MAAMA,CACpBlI,GAAc,EACdyD,gBAKS,EACH;EACN,IAAI,CAAC7D,EAAE,CAAC0G,OAAO,EAAE;IACf,MAAM,IAAIkB,KAAK,CAAC,mBAAmB,CAAC;EACtC;EACA5H,EAAE,CAAC0G,OAAO,CAAC0B,gBAAgB,CAAChI,GAAG,EAAEW,SAAS,EAAE,UAAUmD,EAAE,EAAEmE,IAAI,EAAE;IAC9D,IAAI,CAACnE,EAAE,EAAE;MACP,OAAOL,gBAAgB,CAACK,EAAE,uCAAAlD,MAAA,CAAuCZ,GAAG,QAAAY,MAAA,CAAKqH,IAAI,EAAG;IAClF;IACA,IAAMhI,MAAM,GAAGL,EAAE,CAAC0H,GAAG,CACnBtH,GAAG,EACHuH,oBAAQ,CACT,EAAC;IACF,IAAI,CAACtH,MAAM,EAAE;MACXwD,gBAAgB,CAAC,KAAK,EAAE,GAAG,gCAAA7C,MAAA,CAAgCZ,GAAG,EAAG;IACnE,CAAC,MAAM;MACL,IAAI,CAACJ,EAAE,CAAC0G,OAAO,EAAE;QACf,MAAM,IAAIkB,KAAK,CAAC,mBAAmB,CAAC;MACtC;MACA,IAAI5H,EAAE,CAAC0G,OAAO,CAACoC,WAAW,CAACzI,MAAM,CAACyH,KAAK,CAAC,EAAE;QACxC,OAAOjE,gBAAgB,CACrB,IAAI,EACJ,GAAG,EACHxD,MAAM,cAAAW,MAAA,CACMX,MAAM,sBACnB;MACH;MACAL,EAAE,CAAC0G,OAAO,CAAC0B,gBAAgB,CAAC/H,MAAM,EAAeU,SAAS,EAAE,UAC1DmD,EAAE,EACFsC,OAAO,EACPuC,QAAQ,EACR;QACA,IAAI,CAAC7E,EAAE,EAAE;UACPL,gBAAgB,CACd,IAAI,EACJkF,QAAQ,CAACR,MAAM,EACflI,MAAM,oCAAAW,MAAA,CAC4BX,MAAM,QAAAW,MAAA,CAAKwF,OAAO,EACrD;QACH,CAAC,MAAM;UACL3C,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAExD,MAAM,CAAc;QAClD;MACF,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AAFA,SAGsB2I,oBAAoBA,CAAAC,EAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAA9G,SAAA;AAAA;AAAA,SAAA6G,sBAAA;EAAAA,qBAAA,OAAAE,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAnC,SAAAC,QAAqCC,eAAuB;IAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,OAAAF,QAAA,CAAAG,MAAA,WAC1D,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM;YAAA,OAAKhG,eAAe,CAAC,IAAAjC,WAAG,EAACwH,eAAe,CAAC,EAAE,UAC5EtF,EAAE,EACFgG,WAAW,EACX9F,SAAS,EACTC,YAAY,EACZC,aAAa,EACV;cACH,IAAIJ,EAAE,EAAE;gBACN,OAAO8F,OAAO,CAAEE,WAAW,GAAG9F,SAAS,GAAGE,aAAa,CAAe;cACxE;cACA,OAAO2F,MAAM,CAAC,IAAIrC,KAAK,kBAAA5G,MAAA,CAAkBwI,eAAe,EAAG,CAAC;YAC9D,CAAC,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAAQ,IAAA;MAAA;IAAA,GAAAZ,OAAA;EAAA,CACJ;EAAA,OAAAL,qBAAA,CAAAC,KAAA,OAAA9G,SAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-agent-buttons.d.ts","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"add-agent-buttons.d.ts","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;GAGG;AACH,qBAAa,eAAe;IAKb,OAAO,CAAC,SAAS;IAJ9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,UAAU,CAAiB;gBAEd,SAAS,EAAE,YAAY;IAKrC,MAAM,IAAK,WAAW;IAO7B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,8BAA8B;IAUtC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,cAAc;YAcR,eAAe;IAgC7B,OAAO,CAAC,aAAa;YAKP,SAAS;YAaT,QAAQ;YAcR,QAAQ;YAKR,MAAM;YAaN,iBAAiB;IAc/B,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -17,6 +17,7 @@ var _login = require("../login/login");
|
|
|
17
17
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
18
18
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
19
19
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
20
|
+
var style = _interopRequireWildcard(require("../style"));
|
|
20
21
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
22
23
|
/**
|
|
@@ -183,11 +184,11 @@ var AddAgentButtons = /*#__PURE__*/function () {
|
|
|
183
184
|
var trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications');
|
|
184
185
|
if (trustedApplications) {
|
|
185
186
|
var trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context);
|
|
186
|
-
trustedApplicationsElement.
|
|
187
|
+
trustedApplicationsElement.setAttribute('style', style.trustedAppController);
|
|
187
188
|
var cancelButton = widgets.cancelButton(this.groupList.controller.dom, function () {
|
|
188
189
|
return _this9.renderCleanup();
|
|
189
190
|
});
|
|
190
|
-
cancelButton.
|
|
191
|
+
cancelButton.setAttribute('style', style.trustedAppCancelButton);
|
|
191
192
|
trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild);
|
|
192
193
|
this.barElement.appendChild(trustedApplicationsElement);
|
|
193
194
|
}
|
|
@@ -211,7 +212,7 @@ var AddAgentButtons = /*#__PURE__*/function () {
|
|
|
211
212
|
this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = "You have ".concat(trustedOrigins.length, " selected web apps.");
|
|
212
213
|
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
213
214
|
var appsTable = _this10.barElement.appendChild(_this10.groupList.controller.dom.createElement('table'));
|
|
214
|
-
appsTable.
|
|
215
|
+
appsTable.setAttribute('style', style.trustedAppAddApplicationsTable);
|
|
215
216
|
trustedApps.forEach(function (app) {
|
|
216
217
|
var origin = _this10.groupList.store.any(app, ns.acl('origin')); // @@ TODO fix as
|
|
217
218
|
if (!origin) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-agent-buttons.js","names":["debug","_interopRequireWildcard","require","_iconBase","_login","ns","utils","widgets","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AddAgentButtons","groupList","_classCallCheck2","_defineProperty2","rootElement","controller","dom","createElement","barElement","_createClass2","value","render","innerHTML","appendChild","renderAddButton","_this","button","concat","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","renderSimplifiedBar","_this2","Array","from","children","filter","element","forEach","removeChild","_this3","iconForClass","event","target","renderNameForm","vcard","then","name","addPerson","renderCleanup","error","renderStatus","_this4","addGroup","type","noun","askName","store","_this5","addAgent","foaf","uri","renderTemporaryStatus","_this6","acl","_this7","schema","addBot","_this8","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","_this9","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","classList","add","classes","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","_renderAppsTable","_asyncToGenerator2","_regenerator","mark","_callee","_this10","trustedApps","trustedOrigins","wrap","_callee$","_context","prev","next","ensureLoadedProfile","each","me","flatMap","app","textContent","length","abrupt","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","label","subject","innerRightColumn","continueButton","stop","_x","apply","arguments","_addPerson","_callee2","domainNameRegexp","_callee2$","_context2","match","log","_x2","_addGroup","_callee3","_callee3$","_context3","_x3","_addAgent","_callee4","agentUri","_callee4$","_context4","_x4","_addBot","_callee5","_callee5$","_context5","_x5","_getOriginFromName","_callee6","_callee6$","_context6","_x6","exports"],"sources":["../../src/acl/add-agent-buttons.ts"],"sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { AccessGroups } from './access-groups'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.classList.add(this.groupList.controller.classes.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.classList.add(this.groupList.controller.classes.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await ensureLoadedProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.classList.add(this.groupList.controller.classes.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-agent-buttons.js","names":["debug","_interopRequireWildcard","require","_iconBase","_login","ns","utils","widgets","style","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AddAgentButtons","groupList","_classCallCheck2","_defineProperty2","rootElement","controller","dom","createElement","barElement","_createClass2","value","render","innerHTML","appendChild","renderAddButton","_this","button","concat","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","renderSimplifiedBar","_this2","Array","from","children","filter","element","forEach","removeChild","_this3","iconForClass","event","target","renderNameForm","vcard","then","name","addPerson","renderCleanup","error","renderStatus","_this4","addGroup","type","noun","askName","store","_this5","addAgent","foaf","uri","renderTemporaryStatus","_this6","acl","_this7","schema","addBot","_this8","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","_this9","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","setAttribute","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","_renderAppsTable","_asyncToGenerator2","_regenerator","mark","_callee","_this10","trustedApps","trustedOrigins","wrap","_callee$","_context","prev","next","ensureLoadedProfile","each","me","flatMap","app","textContent","length","abrupt","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","label","subject","innerRightColumn","continueButton","stop","_x","apply","arguments","_addPerson","_callee2","domainNameRegexp","_callee2$","_context2","match","log","_x2","_addGroup","_callee3","_callee3$","_context3","_x3","_addAgent","_callee4","agentUri","_callee4$","_context4","_x4","_addBot","_callee5","_callee5$","_context5","_x5","_getOriginFromName","_callee6","_callee6$","_context6","_x6","exports"],"sources":["../../src/acl/add-agent-buttons.ts"],"sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport * as style from '../style'\nimport { AccessGroups } from './access-groups'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.setAttribute('style', style.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.setAttribute('style', style.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await ensureLoadedProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.setAttribute('style', style.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"mappings":"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"}
|