solid-logic 1.3.13-ef4be651 → 1.3.13-fe8dd267
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/.github/workflows/ci.yml +19 -18
- package/jest.config.js +4 -1
- package/lib/acl/aclLogic.d.ts +32 -0
- package/lib/acl/aclLogic.d.ts.map +1 -0
- package/lib/acl/aclLogic.js +132 -0
- package/lib/acl/aclLogic.js.map +1 -0
- package/lib/authSession/authSession.d.ts +4 -0
- package/lib/authSession/authSession.d.ts.map +1 -0
- package/lib/authSession/authSession.js +18 -0
- package/lib/authSession/authSession.js.map +1 -0
- package/lib/authn/SolidAuthnLogic.d.ts +26 -6
- package/lib/authn/SolidAuthnLogic.d.ts.map +1 -1
- package/lib/authn/SolidAuthnLogic.js +161 -5
- package/lib/authn/SolidAuthnLogic.js.map +1 -1
- package/lib/authn/authUtil.d.ts +17 -0
- package/lib/authn/authUtil.d.ts.map +1 -0
- package/lib/authn/authUtil.js +88 -0
- package/lib/authn/authUtil.js.map +1 -0
- package/lib/chat/ChatLogic.d.ts +2 -2
- package/lib/chat/ChatLogic.d.ts.map +1 -1
- package/lib/chat/ChatLogic.js +1 -1
- package/lib/chat/ChatLogic.js.map +1 -1
- package/lib/inbox/InboxLogic.d.ts +2 -2
- package/lib/inbox/InboxLogic.d.ts.map +1 -1
- package/lib/inbox/InboxLogic.js.map +1 -1
- package/lib/index.d.ts +9 -67
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +31 -384
- package/lib/index.js.map +1 -1
- package/lib/issuer/issuerLogic.d.ts +8 -0
- package/lib/issuer/issuerLogic.d.ts.map +1 -0
- package/lib/issuer/issuerLogic.js +53 -0
- package/lib/issuer/issuerLogic.js.map +1 -0
- package/lib/logic/CustomError.d.ts +17 -0
- package/lib/logic/CustomError.d.ts.map +1 -0
- package/lib/logic/CustomError.js +73 -0
- package/lib/logic/CustomError.js.map +1 -0
- package/lib/logic/SolidLogic.d.ts +49 -0
- package/lib/logic/SolidLogic.d.ts.map +1 -0
- package/lib/logic/SolidLogic.js +316 -0
- package/lib/logic/SolidLogic.js.map +1 -0
- package/lib/logic/solidLogicSingleton.d.ts +8 -0
- package/lib/logic/solidLogicSingleton.d.ts.map +1 -0
- package/lib/logic/solidLogicSingleton.js +88 -0
- package/lib/logic/solidLogicSingleton.js.map +1 -0
- package/lib/profile/ProfileLogic.d.ts +2 -3
- package/lib/profile/ProfileLogic.d.ts.map +1 -1
- package/lib/profile/ProfileLogic.js.map +1 -1
- package/lib/typeIndex/typeIndexLogic.d.ts +22 -0
- package/lib/typeIndex/typeIndexLogic.d.ts.map +1 -0
- package/lib/typeIndex/typeIndexLogic.js +302 -0
- package/lib/typeIndex/typeIndexLogic.js.map +1 -0
- package/lib/types.d.ts +29 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/{authn/index.js → types.js} +1 -1
- package/lib/types.js.map +1 -0
- package/lib/util/UtilityLogic.d.ts +2 -2
- package/lib/util/UtilityLogic.d.ts.map +1 -1
- package/lib/util/UtilityLogic.js.map +1 -1
- package/lib/{debug.d.ts → util/debug.d.ts} +0 -0
- package/lib/util/debug.d.ts.map +1 -0
- package/lib/{debug.js → util/debug.js} +0 -0
- package/lib/util/debug.js.map +1 -0
- package/lib/{uri.d.ts → util/uri.d.ts} +0 -0
- package/lib/util/uri.d.ts.map +1 -0
- package/lib/{uri.js → util/uri.js} +0 -0
- package/lib/util/uri.js.map +1 -0
- package/package.json +3 -1
- package/src/acl/aclLogic.ts +137 -0
- package/src/authSession/authSession.ts +22 -0
- package/src/authn/SolidAuthnLogic.ts +112 -10
- package/src/authn/authUtil.ts +67 -0
- package/src/chat/ChatLogic.ts +3 -3
- package/src/inbox/InboxLogic.ts +2 -14
- package/src/index.ts +18 -308
- package/src/issuer/issuerLogic.ts +40 -0
- package/src/logic/CustomError.ts +25 -0
- package/src/logic/SolidLogic.ts +264 -0
- package/src/logic/solidLogicSingleton.ts +24 -0
- package/src/profile/ProfileLogic.ts +2 -3
- package/src/typeIndex/typeIndexLogic.ts +170 -0
- package/src/types.ts +41 -0
- package/src/util/UtilityLogic.ts +2 -14
- package/src/{debug.ts → util/debug.ts} +0 -0
- package/src/{uri.ts → util/uri.ts} +0 -0
- package/test/aclLogic.test.ts +15 -0
- package/test/authUtil.test.ts +19 -0
- package/{src/chat/integration.test.ts → test/chatLogic.test.ts} +4 -5
- package/test/helpers/setup.ts +13 -0
- package/{src/inbox/unit.test.ts → test/inboxLogic.test.ts} +5 -6
- package/test/logic.test.ts +28 -0
- package/test/solidAuthLogic.test.ts +45 -0
- package/test/typeIndexLogic.test.ts +26 -0
- package/{src/util/unit.test.ts → test/utilityLogic.test.ts} +3 -4
- package/jest.setup.ts +0 -2
- package/lib/authn/NoAuthnLogic.d.ts +0 -9
- package/lib/authn/NoAuthnLogic.d.ts.map +0 -1
- package/lib/authn/NoAuthnLogic.js +0 -17
- package/lib/authn/NoAuthnLogic.js.map +0 -1
- package/lib/authn/index.d.ts +0 -5
- package/lib/authn/index.d.ts.map +0 -1
- package/lib/authn/index.js.map +0 -1
- package/lib/chat/integration.test.d.ts +0 -2
- package/lib/chat/integration.test.d.ts.map +0 -1
- package/lib/chat/integration.test.js +0 -318
- package/lib/chat/integration.test.js.map +0 -1
- package/lib/debug.d.ts.map +0 -1
- package/lib/debug.js.map +0 -1
- package/lib/inbox/unit.test.d.ts +0 -2
- package/lib/inbox/unit.test.d.ts.map +0 -1
- package/lib/inbox/unit.test.js +0 -264
- package/lib/inbox/unit.test.js.map +0 -1
- package/lib/uri.d.ts.map +0 -1
- package/lib/uri.js.map +0 -1
- package/lib/util/unit.test.d.ts +0 -2
- package/lib/util/unit.test.d.ts.map +0 -1
- package/lib/util/unit.test.js +0 -200
- package/lib/util/unit.test.js.map +0 -1
- package/src/authn/NoAuthnLogic.ts +0 -16
- package/src/authn/index.ts +0 -5
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AuthnLogic } from "../
|
|
3
|
-
import { SolidNamespace } from "../index";
|
|
1
|
+
import { NamedNode, LiveStore } from "rdflib";
|
|
2
|
+
import { AuthnLogic, SolidNamespace } from "../types";
|
|
4
3
|
export declare class ProfileLogic {
|
|
5
4
|
store: LiveStore;
|
|
6
5
|
ns: SolidNamespace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileLogic.d.ts","sourceRoot":"","sources":["../../src/profile/ProfileLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"ProfileLogic.d.ts","sourceRoot":"","sources":["../../src/profile/ProfileLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEtD,qBAAa,YAAY;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,cAAc,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU;IAM7D,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IASlC,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAQhC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IASvD,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileLogic.js","sourceRoot":"","sources":["../../src/profile/ProfileLogic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ProfileLogic.js","sourceRoot":"","sources":["../../src/profile/ProfileLogic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IAKE,sBAAY,KAAgB,EAAE,EAAkB,EAAE,KAAiB;QACjE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEK,6BAAM,GAAZ;;;;;;;wBACQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpC,IAAI,EAAE,KAAK,IAAI,EAAE;4BACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;yBAC3D;wBACD,qBAAM,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA,EAAA;;wBAAxC,SAAwC,CAAC;wBACzC,sBAAO,EAAE,EAAC;;;;KACX;IAED,iCAAU,GAAV,UAAW,IAAe;QACxB,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;QACD,OAAO,OAAoB,CAAC;IAC9B,CAAC;IAEK,mCAAY,GAAlB,UAAmB,IAAe;;;;;;4BAChC,qBAAM,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA;;wBAApC,SAAoC,CAAC;wBAC/B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACpF,IAAI,CAAC,SAAS,EAAE;4BACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;yBAC/C;wBACD,sBAAO,SAAsB,EAAC;;;;KAC/B;IAEO,kCAAW,GAAnB,UAAoB,EAAa;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IACH,mBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,oCAAY"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NamedNode } from "rdflib";
|
|
2
|
+
import { AuthenticationContext } from "../types";
|
|
3
|
+
export declare const ns: any;
|
|
4
|
+
/**
|
|
5
|
+
* Resolves with the same context, outputting
|
|
6
|
+
* output: index.public, index.private
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadIndex(context: AuthenticationContext, isPublic: boolean): Promise<AuthenticationContext>;
|
|
11
|
+
export declare function loadTypeIndexes(context: AuthenticationContext): Promise<AuthenticationContext>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves with the same context, outputting
|
|
14
|
+
* @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
15
|
+
*/
|
|
16
|
+
export declare function ensureTypeIndexes(context: AuthenticationContext): Promise<AuthenticationContext>;
|
|
17
|
+
/**
|
|
18
|
+
* Register a new app in a type index
|
|
19
|
+
* used in chat in bookmark.js (solid-ui)
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerInTypeIndex(context: AuthenticationContext, instance: NamedNode, theClass: NamedNode, isPublic: boolean): Promise<AuthenticationContext>;
|
|
22
|
+
//# sourceMappingURL=typeIndexLogic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeIndexLogic.d.ts","sourceRoot":"","sources":["../../src/typeIndex/typeIndexLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,MAAM,QAAQ,CAAA;AAK3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAGhD,eAAO,MAAM,EAAE,KAAuB,CAAA;AAEtC;;;;;GAKG;AACH,wBAAsB,SAAS,CAC/B,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,CAAC,CAYhC;AAED,wBAAsB,eAAe,CAAE,OAAO,EAAE,qBAAqB,kCAYpE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAIvG;AAiFD;;;GAGG;AACH,wBAAsB,mBAAmB,CACzC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,OAAO,GACd,OAAO,CAAC,qBAAqB,CAAC,CAwBhC"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
31
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
32
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
33
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
34
|
+
function step(op) {
|
|
35
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
36
|
+
while (_) try {
|
|
37
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
38
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
39
|
+
switch (op[0]) {
|
|
40
|
+
case 0: case 1: t = op; break;
|
|
41
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
42
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
43
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
44
|
+
default:
|
|
45
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
46
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
47
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
48
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
49
|
+
if (t[2]) _.ops.pop();
|
|
50
|
+
_.trys.pop(); continue;
|
|
51
|
+
}
|
|
52
|
+
op = body.call(thisArg, _);
|
|
53
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
54
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
|
+
};
|
|
60
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
+
exports.registerInTypeIndex = exports.ensureTypeIndexes = exports.loadTypeIndexes = exports.loadIndex = exports.ns = void 0;
|
|
62
|
+
var rdflib_1 = require("rdflib");
|
|
63
|
+
var debug = __importStar(require("../util/debug"));
|
|
64
|
+
var solid_namespace_1 = __importDefault(require("solid-namespace"));
|
|
65
|
+
var $rdf = __importStar(require("rdflib"));
|
|
66
|
+
var uri_1 = require("../util/uri");
|
|
67
|
+
var solidLogicSingleton_1 = require("../logic/solidLogicSingleton");
|
|
68
|
+
exports.ns = (0, solid_namespace_1.default)($rdf);
|
|
69
|
+
/**
|
|
70
|
+
* Resolves with the same context, outputting
|
|
71
|
+
* output: index.public, index.private
|
|
72
|
+
*
|
|
73
|
+
* @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
74
|
+
*/
|
|
75
|
+
function loadIndex(context, isPublic) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
+
var indexes;
|
|
78
|
+
var _this = this;
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
switch (_a.label) {
|
|
81
|
+
case 0: return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.loadIndexes(context.me, (isPublic ? context.publicProfile || null : null), (isPublic ? null : context.preferencesFile || null),
|
|
82
|
+
// async (err: Error) => widgets.complain(context, err.message)
|
|
83
|
+
function (err) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
84
|
+
return [2 /*return*/, debug.error(err.message)];
|
|
85
|
+
}); }); })];
|
|
86
|
+
case 1:
|
|
87
|
+
indexes = _a.sent();
|
|
88
|
+
context.index = context.index || {};
|
|
89
|
+
context.index.private = indexes.private || context.index.private;
|
|
90
|
+
context.index.public = indexes.public || context.index.public;
|
|
91
|
+
return [2 /*return*/, context];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
exports.loadIndex = loadIndex;
|
|
97
|
+
function loadTypeIndexes(context) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
99
|
+
var indexes;
|
|
100
|
+
var _this = this;
|
|
101
|
+
return __generator(this, function (_a) {
|
|
102
|
+
switch (_a.label) {
|
|
103
|
+
case 0: return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.loadIndexes(context.me, context.publicProfile || null, context.preferencesFile || null,
|
|
104
|
+
// async (err: Error) => widgets.complain(context, err.message)
|
|
105
|
+
function (err) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
106
|
+
return [2 /*return*/, debug.warn(err.message)];
|
|
107
|
+
}); }); })];
|
|
108
|
+
case 1:
|
|
109
|
+
indexes = _a.sent();
|
|
110
|
+
context.index = context.index || {};
|
|
111
|
+
context.index.private = indexes.private || context.index.private;
|
|
112
|
+
context.index.public = indexes.public || context.index.public;
|
|
113
|
+
return [2 /*return*/, context];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
exports.loadTypeIndexes = loadTypeIndexes;
|
|
119
|
+
/**
|
|
120
|
+
* Resolves with the same context, outputting
|
|
121
|
+
* @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
122
|
+
*/
|
|
123
|
+
function ensureTypeIndexes(context) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
125
|
+
return __generator(this, function (_a) {
|
|
126
|
+
switch (_a.label) {
|
|
127
|
+
case 0: return [4 /*yield*/, ensureOneTypeIndex(context, true)];
|
|
128
|
+
case 1:
|
|
129
|
+
_a.sent();
|
|
130
|
+
return [4 /*yield*/, ensureOneTypeIndex(context, false)];
|
|
131
|
+
case 2:
|
|
132
|
+
_a.sent();
|
|
133
|
+
return [2 /*return*/, context];
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
exports.ensureTypeIndexes = ensureTypeIndexes;
|
|
139
|
+
/**
|
|
140
|
+
* Load or create ONE type index
|
|
141
|
+
* Find one or make one or fail
|
|
142
|
+
* Many reasons for failing including script not having permission etc
|
|
143
|
+
*
|
|
144
|
+
* Adds its output to the context
|
|
145
|
+
* @see https://github.com/solid/solid/blob/main/proposals/data-discovery.md#discoverability
|
|
146
|
+
*/
|
|
147
|
+
function ensureOneTypeIndex(context, isPublic) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
149
|
+
function makeIndexIfNecessary(context, isPublic) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
151
|
+
function putIndex(newIndex) {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
153
|
+
var e_1, msg;
|
|
154
|
+
return __generator(this, function (_a) {
|
|
155
|
+
switch (_a.label) {
|
|
156
|
+
case 0:
|
|
157
|
+
_a.trys.push([0, 2, , 3]);
|
|
158
|
+
return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.createEmptyRdfDoc(newIndex, 'Blank initial Type index')];
|
|
159
|
+
case 1:
|
|
160
|
+
_a.sent();
|
|
161
|
+
return [2 /*return*/, context];
|
|
162
|
+
case 2:
|
|
163
|
+
e_1 = _a.sent();
|
|
164
|
+
msg = "Error creating new index ".concat(e_1);
|
|
165
|
+
// widgets.complain(context, msg)
|
|
166
|
+
debug.warn(msg);
|
|
167
|
+
return [3 /*break*/, 3];
|
|
168
|
+
case 3: return [2 /*return*/];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
} // putIndex
|
|
173
|
+
var relevant, visibility, newIndex, addMe, err_1, msg, ixs, err_2, msg;
|
|
174
|
+
return __generator(this, function (_a) {
|
|
175
|
+
switch (_a.label) {
|
|
176
|
+
case 0:
|
|
177
|
+
relevant = isPublic ? context.publicProfile : context.preferencesFile;
|
|
178
|
+
visibility = isPublic ? 'public' : 'private';
|
|
179
|
+
context.index = context.index || {};
|
|
180
|
+
context.index[visibility] = context.index[visibility] || [];
|
|
181
|
+
if (!(context.index[visibility].length === 0)) return [3 /*break*/, 6];
|
|
182
|
+
newIndex = (0, rdflib_1.sym)("".concat(relevant.dir().uri + visibility, "TypeIndex.ttl"));
|
|
183
|
+
debug.log("Linking to new fresh type index ".concat(newIndex));
|
|
184
|
+
if (!confirm("OK to create a new empty index file at ".concat(newIndex, ", overwriting anything that is now there?"))) {
|
|
185
|
+
throw new Error('cancelled by user');
|
|
186
|
+
}
|
|
187
|
+
debug.log("Linking to new fresh type index ".concat(newIndex));
|
|
188
|
+
addMe = [
|
|
189
|
+
(0, rdflib_1.st)(context.me, exports.ns.solid("".concat(visibility, "TypeIndex")), newIndex, relevant)
|
|
190
|
+
];
|
|
191
|
+
_a.label = 1;
|
|
192
|
+
case 1:
|
|
193
|
+
_a.trys.push([1, 3, , 4]);
|
|
194
|
+
return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.updatePromise([], addMe)];
|
|
195
|
+
case 2:
|
|
196
|
+
_a.sent();
|
|
197
|
+
return [3 /*break*/, 4];
|
|
198
|
+
case 3:
|
|
199
|
+
err_1 = _a.sent();
|
|
200
|
+
msg = "Error saving type index link saving back ".concat(newIndex, ": ").concat(err_1);
|
|
201
|
+
//widgets.complain(context, msg)
|
|
202
|
+
debug.warn(msg);
|
|
203
|
+
return [2 /*return*/, context];
|
|
204
|
+
case 4:
|
|
205
|
+
debug.log("Creating new fresh type index file".concat(newIndex));
|
|
206
|
+
return [4 /*yield*/, putIndex(newIndex)];
|
|
207
|
+
case 5:
|
|
208
|
+
_a.sent();
|
|
209
|
+
context.index[visibility].push(newIndex); // @@ wait
|
|
210
|
+
return [3 /*break*/, 10];
|
|
211
|
+
case 6:
|
|
212
|
+
ixs = context.index[visibility];
|
|
213
|
+
_a.label = 7;
|
|
214
|
+
case 7:
|
|
215
|
+
_a.trys.push([7, 9, , 10]);
|
|
216
|
+
return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.load(ixs)];
|
|
217
|
+
case 8:
|
|
218
|
+
_a.sent();
|
|
219
|
+
return [3 /*break*/, 10];
|
|
220
|
+
case 9:
|
|
221
|
+
err_2 = _a.sent();
|
|
222
|
+
msg = "ensureOneTypeIndex: loading indexes ".concat(err_2);
|
|
223
|
+
debug.warn(msg);
|
|
224
|
+
return [3 /*break*/, 10];
|
|
225
|
+
case 10: return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
} // makeIndexIfNecessary
|
|
230
|
+
var error_1;
|
|
231
|
+
return __generator(this, function (_a) {
|
|
232
|
+
switch (_a.label) {
|
|
233
|
+
case 0:
|
|
234
|
+
_a.trys.push([0, 2, , 4]);
|
|
235
|
+
return [4 /*yield*/, loadIndex(context, isPublic)];
|
|
236
|
+
case 1:
|
|
237
|
+
_a.sent();
|
|
238
|
+
if (context.index) {
|
|
239
|
+
debug.log("ensureOneTypeIndex: Type index exists already ".concat(isPublic
|
|
240
|
+
? context.index.public[0]
|
|
241
|
+
: context.index.private[0]));
|
|
242
|
+
}
|
|
243
|
+
return [2 /*return*/, context];
|
|
244
|
+
case 2:
|
|
245
|
+
error_1 = _a.sent();
|
|
246
|
+
return [4 /*yield*/, makeIndexIfNecessary(context, isPublic)
|
|
247
|
+
// widgets.complain(context, 'calling loadIndex:' + error)
|
|
248
|
+
];
|
|
249
|
+
case 3:
|
|
250
|
+
_a.sent();
|
|
251
|
+
return [3 /*break*/, 4];
|
|
252
|
+
case 4: return [2 /*return*/];
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Register a new app in a type index
|
|
259
|
+
* used in chat in bookmark.js (solid-ui)
|
|
260
|
+
*/
|
|
261
|
+
function registerInTypeIndex(context, instance, theClass, isPublic) {
|
|
262
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
263
|
+
var indexes, index, registration, ins, e_2;
|
|
264
|
+
return __generator(this, function (_a) {
|
|
265
|
+
switch (_a.label) {
|
|
266
|
+
case 0: return [4 /*yield*/, ensureOneTypeIndex(context, isPublic)];
|
|
267
|
+
case 1:
|
|
268
|
+
_a.sent();
|
|
269
|
+
if (!context.index) {
|
|
270
|
+
throw new Error('registerInTypeIndex: No type index found');
|
|
271
|
+
}
|
|
272
|
+
indexes = isPublic ? context.index.public : context.index.private;
|
|
273
|
+
if (!indexes.length) {
|
|
274
|
+
throw new Error('registerInTypeIndex: What no type index?');
|
|
275
|
+
}
|
|
276
|
+
index = indexes[0];
|
|
277
|
+
registration = (0, uri_1.newThing)(index);
|
|
278
|
+
ins = [
|
|
279
|
+
// See https://github.com/solid/solid/blob/main/proposals/data-discovery.md
|
|
280
|
+
(0, rdflib_1.st)(registration, exports.ns.rdf('type'), exports.ns.solid('TypeRegistration'), index),
|
|
281
|
+
(0, rdflib_1.st)(registration, exports.ns.solid('forClass'), theClass, index),
|
|
282
|
+
(0, rdflib_1.st)(registration, exports.ns.solid('instance'), instance, index)
|
|
283
|
+
];
|
|
284
|
+
_a.label = 2;
|
|
285
|
+
case 2:
|
|
286
|
+
_a.trys.push([2, 4, , 5]);
|
|
287
|
+
return [4 /*yield*/, solidLogicSingleton_1.solidLogicSingleton.updatePromise([], ins)];
|
|
288
|
+
case 3:
|
|
289
|
+
_a.sent();
|
|
290
|
+
return [3 /*break*/, 5];
|
|
291
|
+
case 4:
|
|
292
|
+
e_2 = _a.sent();
|
|
293
|
+
debug.log(e_2);
|
|
294
|
+
alert(e_2);
|
|
295
|
+
return [3 /*break*/, 5];
|
|
296
|
+
case 5: return [2 /*return*/, context];
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
exports.registerInTypeIndex = registerInTypeIndex;
|
|
302
|
+
//# sourceMappingURL=typeIndexLogic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeIndexLogic.js","sourceRoot":"","sources":["../../src/typeIndex/typeIndexLogic.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NamedNode } from "rdflib";
|
|
2
|
+
export declare type AppDetails = {
|
|
3
|
+
noun: string;
|
|
4
|
+
appPathSegment: string;
|
|
5
|
+
};
|
|
6
|
+
export declare type AuthenticationContext = {
|
|
7
|
+
containers?: Array<NamedNode>;
|
|
8
|
+
div?: HTMLElement;
|
|
9
|
+
dom?: HTMLDocument;
|
|
10
|
+
index?: {
|
|
11
|
+
[key: string]: Array<NamedNode>;
|
|
12
|
+
};
|
|
13
|
+
instances?: Array<NamedNode>;
|
|
14
|
+
me?: NamedNode | null;
|
|
15
|
+
noun?: string;
|
|
16
|
+
preferencesFile?: NamedNode;
|
|
17
|
+
preferencesFileError?: string;
|
|
18
|
+
publicProfile?: NamedNode;
|
|
19
|
+
statusArea?: HTMLElement;
|
|
20
|
+
};
|
|
21
|
+
export interface AuthnLogic {
|
|
22
|
+
currentUser: () => NamedNode | null;
|
|
23
|
+
checkUser: <T>(setUserCallback?: (me: NamedNode | null) => T) => Promise<NamedNode | T | null>;
|
|
24
|
+
saveUser: (webId: NamedNode | string | null, context?: AuthenticationContext) => NamedNode | null;
|
|
25
|
+
}
|
|
26
|
+
export interface SolidNamespace {
|
|
27
|
+
[key: string]: (term: string) => NamedNode;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,oBAAY,UAAU,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,oBAAY,qBAAqB,GAAG;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;KAAE,CAAA;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5B,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,SAAS,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;IACnC,SAAS,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9F,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,EACvC,OAAO,CAAC,EAAE,qBAAqB,KAAK,SAAS,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,WAAW,cAAc;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;CAC7C"}
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UtilityLogic.d.ts","sourceRoot":"","sources":["../../src/util/UtilityLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"UtilityLogic.d.ts","sourceRoot":"","sources":["../../src/util/UtilityLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,QAAQ,WAEpB,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAAC;gBAE5C,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE;IAMnG,aAAa,CAAC,GAAG,EAAE,MAAM;IAWzB,mBAAmB,CAAC,OAAO,EAAE;QACjC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAA;KACf;IAsCK,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C,WAAW,CAAC,GAAG,EAAE,MAAM;IAIjB,eAAe,CAAC,GAAG,EAAE,MAAM;IAmBjC,oBAAoB,CAAC,aAAa,EAAE,SAAS,GAAG,SAAS,EAAE;IAWrD,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO5D,eAAe,CAAC,GAAG,EAAE,MAAM;IAgBjC,UAAU;IAIV,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;CAQ1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UtilityLogic.js","sourceRoot":"","sources":["../../src/util/UtilityLogic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"UtilityLogic.js","sourceRoot":"","sources":["../../src/util/UtilityLogic.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/util/debug.ts"],"names":[],"mappings":"AACA,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAGxC;AAED,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAGzC;AAED,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAG1C;AAED,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAG1C"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/util/debug.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,SAAgB,GAAG;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAChC,sCAAsC;IACtC,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,IAAI,EAAE;AACvB,CAAC;AAHD,kBAGC;AAED,SAAgB,IAAI;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACjC,sCAAsC;IACtC,OAAO,CAAC,IAAI,OAAZ,OAAO,EAAS,IAAI,EAAE;AACxB,CAAC;AAHD,oBAGC;AAED,SAAgB,KAAK;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAClC,sCAAsC;IACtC,OAAO,CAAC,KAAK,OAAb,OAAO,EAAU,IAAI,EAAE;AACzB,CAAC;AAHD,sBAGC;AAED,SAAgB,KAAK;IAAC,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAClC,sCAAsC;IACtC,OAAO,CAAC,KAAK,OAAb,OAAO,EAAU,IAAI,EAAE;AACzB,CAAC;AAHD,sBAGC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/util/uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAC;AAExC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAElD"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/util/uri.ts"],"names":[],"mappings":";;;AAAA,iCAAwC;AAExC,SAAgB,QAAQ,CAAC,GAAc;IACrC,OAAO,IAAA,YAAG,EAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,4BAEC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-logic",
|
|
3
|
-
"version": "1.3.13-
|
|
3
|
+
"version": "1.3.13-fe8dd267",
|
|
4
4
|
"description": "Core business logic of Solid OS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc",
|
|
8
|
+
"clean": "rm -rf lib",
|
|
8
9
|
"lint": "eslint ./src",
|
|
9
10
|
"test": "jest",
|
|
10
11
|
"preversion": "npm test",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"jest": "27.4.5",
|
|
38
39
|
"jest-fetch-mock": "^3.0.3",
|
|
39
40
|
"prettier": "^2.5.1",
|
|
41
|
+
"standard": "^16.0.4",
|
|
40
42
|
"ts-jest": "27.1.2",
|
|
41
43
|
"typescript": "4.5.4"
|
|
42
44
|
},
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Access Control
|
|
3
|
+
*
|
|
4
|
+
* This function sets up a simple default ACL for a resource, with
|
|
5
|
+
* RWC for the owner, and a specified access (default none) for the public.
|
|
6
|
+
* In all cases owner has read write control.
|
|
7
|
+
* Parameter lists modes allowed to public
|
|
8
|
+
*
|
|
9
|
+
* @param options
|
|
10
|
+
* @param options.public eg ['Read', 'Write']
|
|
11
|
+
*
|
|
12
|
+
* @returns Resolves with aclDoc uri on successful write
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { graph, NamedNode, Namespace, serialize } from "rdflib"
|
|
16
|
+
import solidNamespace from 'solid-namespace'
|
|
17
|
+
import * as $rdf from 'rdflib'
|
|
18
|
+
import { solidLogicSingleton } from "../logic/solidLogicSingleton"
|
|
19
|
+
import { ACL_LINK } from "../util/UtilityLogic"
|
|
20
|
+
|
|
21
|
+
export const ns = solidNamespace($rdf)
|
|
22
|
+
|
|
23
|
+
export function setACLUserPublic (
|
|
24
|
+
docURI: string,
|
|
25
|
+
me: NamedNode,
|
|
26
|
+
options: {
|
|
27
|
+
defaultForNew?: boolean,
|
|
28
|
+
public?: []
|
|
29
|
+
}
|
|
30
|
+
): Promise<NamedNode> {
|
|
31
|
+
const aclDoc = solidLogicSingleton.store.any(
|
|
32
|
+
solidLogicSingleton.store.sym(docURI),
|
|
33
|
+
ACL_LINK
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
return Promise.resolve()
|
|
37
|
+
.then(() => {
|
|
38
|
+
if (aclDoc) {
|
|
39
|
+
return aclDoc as NamedNode
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return fetchACLRel(docURI).catch(err => {
|
|
43
|
+
throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
.then(aclDoc => {
|
|
47
|
+
const aclText = genACLText(docURI, me, aclDoc.uri, options)
|
|
48
|
+
if (!solidLogicSingleton.store.fetcher) {
|
|
49
|
+
throw new Error('Cannot PUT this, store has no fetcher')
|
|
50
|
+
}
|
|
51
|
+
return solidLogicSingleton.store.fetcher
|
|
52
|
+
.webOperation('PUT', aclDoc.uri, {
|
|
53
|
+
data: aclText,
|
|
54
|
+
contentType: 'text/turtle'
|
|
55
|
+
})
|
|
56
|
+
.then(result => {
|
|
57
|
+
if (!result.ok) {
|
|
58
|
+
throw new Error('Error writing ACL text: ' + result.error)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return aclDoc
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @param docURI
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
function fetchACLRel (docURI: string): Promise<NamedNode> {
|
|
71
|
+
const fetcher = solidLogicSingleton.store.fetcher
|
|
72
|
+
if (!fetcher) {
|
|
73
|
+
throw new Error('Cannot fetch ACL rel, store has no fetcher')
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return fetcher.load(docURI).then(result => {
|
|
77
|
+
if (!result.ok) {
|
|
78
|
+
throw new Error('fetchACLRel: While loading:' + (result as any).error)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const aclDoc = solidLogicSingleton.store.any(
|
|
82
|
+
solidLogicSingleton.store.sym(docURI),
|
|
83
|
+
ACL_LINK
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if (!aclDoc) {
|
|
87
|
+
throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return aclDoc as NamedNode
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @param docURI
|
|
96
|
+
* @param me
|
|
97
|
+
* @param aclURI
|
|
98
|
+
* @param options
|
|
99
|
+
*
|
|
100
|
+
* @returns Serialized ACL
|
|
101
|
+
*/
|
|
102
|
+
export function genACLText (
|
|
103
|
+
docURI: string,
|
|
104
|
+
me: NamedNode,
|
|
105
|
+
aclURI: string,
|
|
106
|
+
options: {
|
|
107
|
+
defaultForNew?: boolean,
|
|
108
|
+
public?: []
|
|
109
|
+
} = {}
|
|
110
|
+
): string | undefined {
|
|
111
|
+
const optPublic = options.public || []
|
|
112
|
+
const g = graph()
|
|
113
|
+
const auth = Namespace('http://www.w3.org/ns/auth/acl#')
|
|
114
|
+
let a = g.sym(`${aclURI}#a1`)
|
|
115
|
+
const acl = g.sym(aclURI)
|
|
116
|
+
const doc = g.sym(docURI)
|
|
117
|
+
g.add(a, ns.rdf('type'), auth('Authorization'), acl)
|
|
118
|
+
g.add(a, auth('accessTo'), doc, acl)
|
|
119
|
+
if (options.defaultForNew) {
|
|
120
|
+
g.add(a, auth('default'), doc, acl)
|
|
121
|
+
}
|
|
122
|
+
g.add(a, auth('agent'), me, acl)
|
|
123
|
+
g.add(a, auth('mode'), auth('Read'), acl)
|
|
124
|
+
g.add(a, auth('mode'), auth('Write'), acl)
|
|
125
|
+
g.add(a, auth('mode'), auth('Control'), acl)
|
|
126
|
+
|
|
127
|
+
if (optPublic.length) {
|
|
128
|
+
a = g.sym(`${aclURI}#a2`)
|
|
129
|
+
g.add(a, ns.rdf('type'), auth('Authorization'), acl)
|
|
130
|
+
g.add(a, auth('accessTo'), doc, acl)
|
|
131
|
+
g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)
|
|
132
|
+
for (let p = 0; p < optPublic.length; p++) {
|
|
133
|
+
g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return serialize(acl, g, aclURI)
|
|
137
|
+
}
|