solid-logic 1.3.13 → 1.3.14-2dd035d2

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.
Files changed (135) hide show
  1. package/.babelrc +0 -0
  2. package/.eslintrc.js +0 -0
  3. package/.github/workflows/ci.yml +39 -5
  4. package/.github/workflows/release.yml +0 -0
  5. package/LICENSE +0 -0
  6. package/README.md +0 -0
  7. package/jest.config.js +4 -1
  8. package/lib/acl/aclLogic.d.ts +32 -0
  9. package/lib/acl/aclLogic.d.ts.map +1 -0
  10. package/lib/acl/aclLogic.js +136 -0
  11. package/lib/acl/aclLogic.js.map +1 -0
  12. package/lib/authSession/authSession.d.ts +3 -0
  13. package/lib/authSession/authSession.d.ts.map +1 -0
  14. package/lib/authSession/authSession.js +8 -0
  15. package/lib/authSession/authSession.js.map +1 -0
  16. package/lib/authn/SolidAuthnLogic.d.ts +26 -5
  17. package/lib/authn/SolidAuthnLogic.d.ts.map +1 -1
  18. package/lib/authn/SolidAuthnLogic.js +171 -5
  19. package/lib/authn/SolidAuthnLogic.js.map +1 -1
  20. package/lib/authn/authUtil.d.ts +17 -0
  21. package/lib/authn/authUtil.d.ts.map +1 -0
  22. package/lib/authn/authUtil.js +92 -0
  23. package/lib/authn/authUtil.js.map +1 -0
  24. package/lib/chat/ChatLogic.d.ts +2 -2
  25. package/lib/chat/ChatLogic.d.ts.map +1 -1
  26. package/lib/chat/ChatLogic.js +2 -2
  27. package/lib/chat/ChatLogic.js.map +1 -1
  28. package/lib/chat/determineChatContainer.d.ts +0 -0
  29. package/lib/chat/determineChatContainer.d.ts.map +0 -0
  30. package/lib/chat/determineChatContainer.js +0 -0
  31. package/lib/chat/determineChatContainer.js.map +0 -0
  32. package/lib/inbox/InboxLogic.d.ts +2 -2
  33. package/lib/inbox/InboxLogic.d.ts.map +1 -1
  34. package/lib/inbox/InboxLogic.js +0 -0
  35. package/lib/inbox/InboxLogic.js.map +1 -1
  36. package/lib/index.d.ts +14 -67
  37. package/lib/index.d.ts.map +1 -1
  38. package/lib/index.js +39 -387
  39. package/lib/index.js.map +1 -1
  40. package/lib/issuer/issuerLogic.d.ts +8 -0
  41. package/lib/issuer/issuerLogic.d.ts.map +1 -0
  42. package/lib/issuer/issuerLogic.js +53 -0
  43. package/lib/issuer/issuerLogic.js.map +1 -0
  44. package/lib/logic/CustomError.d.ts +17 -0
  45. package/lib/logic/CustomError.d.ts.map +1 -0
  46. package/lib/logic/CustomError.js +73 -0
  47. package/lib/logic/CustomError.js.map +1 -0
  48. package/lib/logic/SolidLogic.d.ts +49 -0
  49. package/lib/logic/SolidLogic.d.ts.map +1 -0
  50. package/lib/logic/SolidLogic.js +321 -0
  51. package/lib/logic/SolidLogic.js.map +1 -0
  52. package/lib/logic/solidLogicSingleton.d.ts +4 -0
  53. package/lib/logic/solidLogicSingleton.d.ts.map +1 -0
  54. package/lib/logic/solidLogicSingleton.js +84 -0
  55. package/lib/logic/solidLogicSingleton.js.map +1 -0
  56. package/lib/profile/ProfileLogic.d.ts +2 -3
  57. package/lib/profile/ProfileLogic.d.ts.map +1 -1
  58. package/lib/profile/ProfileLogic.js +0 -0
  59. package/lib/profile/ProfileLogic.js.map +1 -1
  60. package/lib/typeIndex/typeIndexLogic.d.ts +22 -0
  61. package/lib/typeIndex/typeIndexLogic.d.ts.map +1 -0
  62. package/lib/typeIndex/typeIndexLogic.js +306 -0
  63. package/lib/typeIndex/typeIndexLogic.js.map +1 -0
  64. package/lib/types.d.ts +31 -0
  65. package/lib/types.d.ts.map +1 -0
  66. package/lib/{authn/index.js → types.js} +1 -1
  67. package/lib/types.js.map +1 -0
  68. package/lib/util/UtilityLogic.d.ts +2 -2
  69. package/lib/util/UtilityLogic.d.ts.map +1 -1
  70. package/lib/util/UtilityLogic.js +0 -0
  71. package/lib/util/UtilityLogic.js.map +1 -1
  72. package/lib/{debug.d.ts → util/debug.d.ts} +0 -0
  73. package/lib/util/debug.d.ts.map +1 -0
  74. package/lib/{debug.js → util/debug.js} +0 -0
  75. package/lib/util/debug.js.map +1 -0
  76. package/lib/{uri.d.ts → util/uri.d.ts} +0 -0
  77. package/lib/util/uri.d.ts.map +1 -0
  78. package/lib/{uri.js → util/uri.js} +0 -0
  79. package/lib/util/uri.js.map +1 -0
  80. package/package.json +15 -16
  81. package/src/acl/aclLogic.ts +137 -0
  82. package/src/authSession/authSession.ts +13 -0
  83. package/src/authn/SolidAuthnLogic.ts +114 -9
  84. package/src/authn/authUtil.ts +67 -0
  85. package/src/chat/ChatLogic.ts +4 -4
  86. package/src/chat/determineChatContainer.ts +0 -0
  87. package/src/inbox/InboxLogic.ts +2 -14
  88. package/src/index.ts +29 -308
  89. package/src/issuer/issuerLogic.ts +40 -0
  90. package/src/logic/CustomError.ts +25 -0
  91. package/src/logic/SolidLogic.ts +265 -0
  92. package/src/logic/solidLogicSingleton.ts +20 -0
  93. package/src/profile/ProfileLogic.ts +2 -3
  94. package/src/typeIndex/typeIndexLogic.ts +170 -0
  95. package/src/types.ts +43 -0
  96. package/src/util/UtilityLogic.ts +2 -14
  97. package/src/{debug.ts → util/debug.ts} +0 -0
  98. package/src/{uri.ts → util/uri.ts} +0 -0
  99. package/test/aclLogic.test.ts +15 -0
  100. package/test/authUtil.test.ts +23 -0
  101. package/{src/chat/integration.test.ts → test/chatLogic.test.ts} +7 -9
  102. package/test/helpers/setup.ts +13 -0
  103. package/{src/inbox/unit.test.ts → test/inboxLogic.test.ts} +5 -6
  104. package/test/logic.test.ts +28 -0
  105. package/test/solidAuthLogic.test.ts +49 -0
  106. package/test/typeIndexLogic.test.ts +26 -0
  107. package/{src/util/unit.test.ts → test/utilityLogic.test.ts} +3 -4
  108. package/tsconfig.json +0 -0
  109. package/jest.setup.ts +0 -2
  110. package/lib/authn/NoAuthnLogic.d.ts +0 -9
  111. package/lib/authn/NoAuthnLogic.d.ts.map +0 -1
  112. package/lib/authn/NoAuthnLogic.js +0 -17
  113. package/lib/authn/NoAuthnLogic.js.map +0 -1
  114. package/lib/authn/index.d.ts +0 -5
  115. package/lib/authn/index.d.ts.map +0 -1
  116. package/lib/authn/index.js.map +0 -1
  117. package/lib/chat/integration.test.d.ts +0 -2
  118. package/lib/chat/integration.test.d.ts.map +0 -1
  119. package/lib/chat/integration.test.js +0 -318
  120. package/lib/chat/integration.test.js.map +0 -1
  121. package/lib/debug.d.ts.map +0 -1
  122. package/lib/debug.js.map +0 -1
  123. package/lib/inbox/unit.test.d.ts +0 -2
  124. package/lib/inbox/unit.test.d.ts.map +0 -1
  125. package/lib/inbox/unit.test.js +0 -264
  126. package/lib/inbox/unit.test.js.map +0 -1
  127. package/lib/uri.d.ts.map +0 -1
  128. package/lib/uri.js.map +0 -1
  129. package/lib/util/unit.test.d.ts +0 -2
  130. package/lib/util/unit.test.d.ts.map +0 -1
  131. package/lib/util/unit.test.js +0 -200
  132. package/lib/util/unit.test.js.map +0 -1
  133. package/renovate.json +0 -5
  134. package/src/authn/NoAuthnLogic.ts +0 -16
  135. package/src/authn/index.ts +0 -5
package/.babelrc CHANGED
File without changes
package/.eslintrc.js CHANGED
File without changes
@@ -5,9 +5,12 @@ name: CI
5
5
 
6
6
  on:
7
7
  push:
8
- branches: [ main ]
8
+ branches:
9
+ - "**"
9
10
  pull_request:
10
- branches: [ main ]
11
+ branches:
12
+ - "**"
13
+ workflow_dispatch:
11
14
 
12
15
  jobs:
13
16
  build:
@@ -16,8 +19,10 @@ jobs:
16
19
 
17
20
  strategy:
18
21
  matrix:
19
- node-version: [ 10.x, 12.x, 14.x, 15.x ]
20
- # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
22
+ node-version:
23
+ - 12.x
24
+ - 14.x
25
+ - 16.x
21
26
 
22
27
  steps:
23
28
  - uses: actions/checkout@v2
@@ -26,6 +31,35 @@ jobs:
26
31
  with:
27
32
  node-version: ${{ matrix.node-version }}
28
33
  - run: npm ci
29
- - run: npm run lint
34
+ - run: npm run lint --if-present
30
35
  - run: npm test
31
36
  - run: npm run build --if-present
37
+ - name: Save build
38
+ if: matrix.node-version == '14.x'
39
+ uses: actions/upload-artifact@v2
40
+ with:
41
+ name: build
42
+ path: |
43
+ .
44
+ !node_modules
45
+ retention-days: 1
46
+
47
+ npm-publish-build:
48
+ needs: build
49
+ runs-on: ubuntu-latest
50
+ steps:
51
+ - uses: actions/download-artifact@v2
52
+ with:
53
+ name: build
54
+ - uses: actions/setup-node@v1
55
+ with:
56
+ node-version: 14.x
57
+ - uses: rlespinasse/github-slug-action@v3.x
58
+ - name: Append commit hash to package version
59
+ run: 'sed -i -E "s/(\"version\": *\"[^\"]+)/\1-${GITHUB_SHA_SHORT}/" package.json'
60
+ - name: Disable pre- and post-publish actions
61
+ run: 'sed -i -E "s/\"((pre|post)publish)/\"ignore:\1/" package.json'
62
+ - uses: JS-DevTools/npm-publish@v1
63
+ with:
64
+ token: ${{ secrets.NPM_TOKEN }}
65
+ tag: ${{ env.GITHUB_REF_SLUG }}
File without changes
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
package/jest.config.js CHANGED
@@ -1,4 +1,7 @@
1
1
  module.exports = {
2
2
  verbose: true,
3
- setupFilesAfterEnv: ["./jest.setup.ts"],
3
+ testEnvironment: 'node',
4
+ setupFilesAfterEnv: [
5
+ './test/helpers/setup.ts'
6
+ ]
4
7
  }
@@ -0,0 +1,32 @@
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
+ import { NamedNode } from "rdflib";
15
+ export declare const ns: any;
16
+ export declare function setACLUserPublic(docURI: string, me: NamedNode, options: {
17
+ defaultForNew?: boolean;
18
+ public?: [];
19
+ }): Promise<NamedNode>;
20
+ /**
21
+ * @param docURI
22
+ * @param me
23
+ * @param aclURI
24
+ * @param options
25
+ *
26
+ * @returns Serialized ACL
27
+ */
28
+ export declare function genACLText(docURI: string, me: NamedNode, aclURI: string, options?: {
29
+ defaultForNew?: boolean;
30
+ public?: [];
31
+ }): string | undefined;
32
+ //# sourceMappingURL=aclLogic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aclLogic.d.ts","sourceRoot":"","sources":["../../src/acl/aclLogic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,SAAS,EAAwB,MAAM,QAAQ,CAAA;AAM/D,eAAO,MAAM,EAAE,KAAuB,CAAA;AAEtC,wBAAgB,gBAAgB,CAChC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,SAAS,EACb,OAAO,EAAE;IACL,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,EAAE,CAAA;CACd,GACE,OAAO,CAAC,SAAS,CAAC,CAkCpB;AA8BD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAC1B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACL,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,EAAE,CAAA;CACT,GACH,MAAM,GAAG,SAAS,CA2BpB"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Simple Access Control
4
+ *
5
+ * This function sets up a simple default ACL for a resource, with
6
+ * RWC for the owner, and a specified access (default none) for the public.
7
+ * In all cases owner has read write control.
8
+ * Parameter lists modes allowed to public
9
+ *
10
+ * @param options
11
+ * @param options.public eg ['Read', 'Write']
12
+ *
13
+ * @returns Resolves with aclDoc uri on successful write
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.genACLText = exports.setACLUserPublic = exports.ns = void 0;
43
+ var rdflib_1 = require("rdflib");
44
+ var solid_namespace_1 = __importDefault(require("solid-namespace"));
45
+ var $rdf = __importStar(require("rdflib"));
46
+ var solidLogicSingleton_1 = require("../logic/solidLogicSingleton");
47
+ var UtilityLogic_1 = require("../util/UtilityLogic");
48
+ exports.ns = (0, solid_namespace_1.default)($rdf);
49
+ function setACLUserPublic(docURI, me, options) {
50
+ var aclDoc = solidLogicSingleton_1.solidLogicSingleton.store.any(solidLogicSingleton_1.solidLogicSingleton.store.sym(docURI), UtilityLogic_1.ACL_LINK);
51
+ return Promise.resolve()
52
+ .then(function () {
53
+ if (aclDoc) {
54
+ return aclDoc;
55
+ }
56
+ return fetchACLRel(docURI).catch(function (err) {
57
+ throw new Error("Error fetching rel=ACL header for ".concat(docURI, ": ").concat(err));
58
+ });
59
+ })
60
+ .then(function (aclDoc) {
61
+ var aclText = genACLText(docURI, me, aclDoc.uri, options);
62
+ if (!solidLogicSingleton_1.solidLogicSingleton.store.fetcher) {
63
+ throw new Error('Cannot PUT this, store has no fetcher');
64
+ }
65
+ return solidLogicSingleton_1.solidLogicSingleton.store.fetcher
66
+ .webOperation('PUT', aclDoc.uri, {
67
+ data: aclText,
68
+ contentType: 'text/turtle'
69
+ })
70
+ .then(function (result) {
71
+ if (!result.ok) {
72
+ throw new Error('Error writing ACL text: ' + result.error);
73
+ }
74
+ return aclDoc;
75
+ });
76
+ });
77
+ }
78
+ exports.setACLUserPublic = setACLUserPublic;
79
+ /**
80
+ * @param docURI
81
+ * @returns
82
+ */
83
+ function fetchACLRel(docURI) {
84
+ var fetcher = solidLogicSingleton_1.solidLogicSingleton.store.fetcher;
85
+ if (!fetcher) {
86
+ throw new Error('Cannot fetch ACL rel, store has no fetcher');
87
+ }
88
+ return fetcher.load(docURI).then(function (result) {
89
+ if (!result.ok) {
90
+ throw new Error('fetchACLRel: While loading:' + result.error);
91
+ }
92
+ var aclDoc = solidLogicSingleton_1.solidLogicSingleton.store.any(solidLogicSingleton_1.solidLogicSingleton.store.sym(docURI), UtilityLogic_1.ACL_LINK);
93
+ if (!aclDoc) {
94
+ throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI);
95
+ }
96
+ return aclDoc;
97
+ });
98
+ }
99
+ /**
100
+ * @param docURI
101
+ * @param me
102
+ * @param aclURI
103
+ * @param options
104
+ *
105
+ * @returns Serialized ACL
106
+ */
107
+ function genACLText(docURI, me, aclURI, options) {
108
+ if (options === void 0) { options = {}; }
109
+ var optPublic = options.public || [];
110
+ var g = (0, rdflib_1.graph)();
111
+ var auth = (0, rdflib_1.Namespace)('http://www.w3.org/ns/auth/acl#');
112
+ var a = g.sym("".concat(aclURI, "#a1"));
113
+ var acl = g.sym(aclURI);
114
+ var doc = g.sym(docURI);
115
+ g.add(a, exports.ns.rdf('type'), auth('Authorization'), acl);
116
+ g.add(a, auth('accessTo'), doc, acl);
117
+ if (options.defaultForNew) {
118
+ g.add(a, auth('default'), doc, acl);
119
+ }
120
+ g.add(a, auth('agent'), me, acl);
121
+ g.add(a, auth('mode'), auth('Read'), acl);
122
+ g.add(a, auth('mode'), auth('Write'), acl);
123
+ g.add(a, auth('mode'), auth('Control'), acl);
124
+ if (optPublic.length) {
125
+ a = g.sym("".concat(aclURI, "#a2"));
126
+ g.add(a, exports.ns.rdf('type'), auth('Authorization'), acl);
127
+ g.add(a, auth('accessTo'), doc, acl);
128
+ g.add(a, auth('agentClass'), exports.ns.foaf('Agent'), acl);
129
+ for (var p = 0; p < optPublic.length; p++) {
130
+ g.add(a, auth('mode'), auth(optPublic[p]), acl); // Like 'Read' etc
131
+ }
132
+ }
133
+ return (0, rdflib_1.serialize)(acl, g, aclURI);
134
+ }
135
+ exports.genACLText = genACLText;
136
+ //# sourceMappingURL=aclLogic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aclLogic.js","sourceRoot":"","sources":["../../src/acl/aclLogic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Session } from '@inrupt/solid-client-authn-browser';
2
+ export declare const authSession: Session;
3
+ //# sourceMappingURL=authSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSession.d.ts","sourceRoot":"","sources":["../../src/authSession/authSession.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAER,MAAM,oCAAoC,CAAA;AAE3C,eAAO,MAAM,WAAW,SAKrB,CAAA"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authSession = void 0;
4
+ var solid_client_authn_browser_1 = require("@inrupt/solid-client-authn-browser");
5
+ exports.authSession = new solid_client_authn_browser_1.Session({
6
+ clientAuthentication: (0, solid_client_authn_browser_1.getClientAuthenticationWithDependencies)({})
7
+ }, 'mySession');
8
+ //# sourceMappingURL=authSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSession.js","sourceRoot":"","sources":["../../src/authSession/authSession.ts"],"names":[],"mappings":";;;AAAA,iFAG2C;AAE9B,QAAA,WAAW,GAAG,IAAI,oCAAO,CAClC;IACE,oBAAoB,EAAE,IAAA,oEAAuC,EAAC,EAAE,CAAC;CAClE,EACD,WAAW,CACZ,CAAA"}
@@ -1,12 +1,33 @@
1
1
  import { NamedNode } from "rdflib";
2
- import { AuthnLogic } from "./index";
3
2
  import { Session } from "@inrupt/solid-client-authn-browser";
4
- /**
5
- * Implements AuthnLogic relying on solid-auth-client
6
- */
3
+ import { AuthenticationContext, AuthnLogic } from "../types";
7
4
  export declare class SolidAuthnLogic implements AuthnLogic {
8
- private session?;
5
+ private session;
9
6
  constructor(solidAuthSession: Session);
7
+ get authSession(): Session;
10
8
  currentUser(): NamedNode | null;
9
+ /**
10
+ * Retrieves currently logged in webId from either
11
+ * defaultTestUser or SolidAuth
12
+ * Also activates a session after login
13
+ * @param [setUserCallback] Optional callback
14
+ * @returns Resolves with webId uri, if no callback provided
15
+ */
16
+ checkUser<T>(setUserCallback?: (me: NamedNode | null) => T): Promise<NamedNode | T | null>;
17
+ /**
18
+ * Saves `webId` in `context.me`
19
+ * @param webId
20
+ * @param context
21
+ *
22
+ * @returns Returns the WebID, after setting it
23
+ */
24
+ saveUser(webId: NamedNode | string | null, context?: AuthenticationContext): NamedNode | null;
25
+ /**
26
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
27
+ */
28
+ webIdFromSession(session?: {
29
+ webId?: string;
30
+ isLoggedIn: boolean;
31
+ }): string | null;
11
32
  }
12
33
  //# sourceMappingURL=SolidAuthnLogic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidAuthnLogic.d.ts","sourceRoot":"","sources":["../../src/authn/SolidAuthnLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE7D;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,OAAO,CAAC,CAAU;gBAEd,gBAAgB,EAAE,OAAO;IAIrC,WAAW,IAAI,SAAS,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"SolidAuthnLogic.d.ts","sourceRoot":"","sources":["../../src/authn/SolidAuthnLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAO,MAAM,QAAQ,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7D,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,OAAO,CAAU;gBAEb,gBAAgB,EAAE,OAAO;IAKrC,IAAI,WAAW,IAAG,OAAO,CAAwB;IAEjD,WAAW,IAAI,SAAS,GAAG,IAAI;IAW/B;;;;;;OAMG;IACG,SAAS,CAAC,CAAC,EACf,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,GAC5C,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;IAwDhC;;;;;;OAMG;IACH,QAAQ,CACN,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,EAChC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,SAAS,GAAG,IAAI;IAanB;;OAEG;IACH,gBAAgB,CAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI;CAKpF"}
@@ -1,17 +1,183 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (_) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
2
61
  Object.defineProperty(exports, "__esModule", { value: true });
3
62
  exports.SolidAuthnLogic = void 0;
4
63
  var rdflib_1 = require("rdflib");
5
- /**
6
- * Implements AuthnLogic relying on solid-auth-client
7
- */
64
+ var authUtil_1 = require("./authUtil");
65
+ var debug = __importStar(require("../util/debug"));
8
66
  var SolidAuthnLogic = /** @class */ (function () {
9
67
  function SolidAuthnLogic(solidAuthSession) {
10
68
  this.session = solidAuthSession;
11
69
  }
70
+ Object.defineProperty(SolidAuthnLogic.prototype, "authSession", {
71
+ // we created authSession getter because we want to access it as authn.authSession externally
72
+ get: function () { return this.session; },
73
+ enumerable: false,
74
+ configurable: true
75
+ });
12
76
  SolidAuthnLogic.prototype.currentUser = function () {
13
- var _a;
14
- return ((_a = this.session) === null || _a === void 0 ? void 0 : _a.info.webId) ? (0, rdflib_1.sym)(this.session.info.webId) : null;
77
+ var app = (0, authUtil_1.appContext)();
78
+ if (app.viewingNoAuthPage) {
79
+ return (0, rdflib_1.sym)(app.webId);
80
+ }
81
+ if (this.session.info.webId && this.session.info.isLoggedIn) {
82
+ return (0, rdflib_1.sym)(this.session.info.webId);
83
+ }
84
+ return (0, authUtil_1.offlineTestID)(); // null unless testing
85
+ };
86
+ /**
87
+ * Retrieves currently logged in webId from either
88
+ * defaultTestUser or SolidAuth
89
+ * Also activates a session after login
90
+ * @param [setUserCallback] Optional callback
91
+ * @returns Resolves with webId uri, if no callback provided
92
+ */
93
+ SolidAuthnLogic.prototype.checkUser = function (setUserCallback) {
94
+ return __awaiter(this, void 0, void 0, function () {
95
+ var preLoginRedirectHash, postLoginRedirectHash, curUrl, me, webId;
96
+ return __generator(this, function (_a) {
97
+ switch (_a.label) {
98
+ case 0:
99
+ preLoginRedirectHash = new URL(window.location.href).hash;
100
+ if (preLoginRedirectHash) {
101
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
102
+ }
103
+ this.session.onSessionRestore(function (url) {
104
+ if (document.location.toString() !== url)
105
+ history.replaceState(null, '', url);
106
+ });
107
+ /**
108
+ * Handle a successful authentication redirect
109
+ */
110
+ return [4 /*yield*/, this.session
111
+ .handleIncomingRedirect({
112
+ restorePreviousSession: true,
113
+ url: window.location.href
114
+ })
115
+ // Check to see if a hash was stored in local storage
116
+ ];
117
+ case 1:
118
+ /**
119
+ * Handle a successful authentication redirect
120
+ */
121
+ _a.sent();
122
+ postLoginRedirectHash = window.localStorage.getItem('preLoginRedirectHash');
123
+ if (postLoginRedirectHash) {
124
+ curUrl = new URL(window.location.href);
125
+ if (curUrl.hash !== postLoginRedirectHash) {
126
+ if (history.pushState) {
127
+ // console.log('Setting window.location.has using pushState')
128
+ history.pushState(null, document.title, postLoginRedirectHash);
129
+ }
130
+ else {
131
+ // console.warn('Setting window.location.has using location.hash')
132
+ location.hash = postLoginRedirectHash;
133
+ }
134
+ curUrl.hash = postLoginRedirectHash;
135
+ }
136
+ // See https://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document
137
+ // window.location.href = curUrl.toString()// @@ See https://developer.mozilla.org/en-US/docs/Web/API/Window/location
138
+ window.localStorage.setItem('preLoginRedirectHash', '');
139
+ }
140
+ me = (0, authUtil_1.offlineTestID)();
141
+ if (me) {
142
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
143
+ }
144
+ webId = this.webIdFromSession(this.session.info);
145
+ if (webId) {
146
+ me = this.saveUser(webId);
147
+ }
148
+ if (me) {
149
+ debug.log("(Logged in as ".concat(me, " by authentication)"));
150
+ }
151
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
152
+ }
153
+ });
154
+ });
155
+ };
156
+ /**
157
+ * Saves `webId` in `context.me`
158
+ * @param webId
159
+ * @param context
160
+ *
161
+ * @returns Returns the WebID, after setting it
162
+ */
163
+ SolidAuthnLogic.prototype.saveUser = function (webId, context) {
164
+ var webIdUri;
165
+ if (webId) {
166
+ webIdUri = (typeof webId === 'string') ? webId : webId.uri;
167
+ var me = (0, rdflib_1.namedNode)(webIdUri);
168
+ if (context) {
169
+ context.me = me;
170
+ }
171
+ return me;
172
+ }
173
+ return null;
174
+ };
175
+ /**
176
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
177
+ */
178
+ SolidAuthnLogic.prototype.webIdFromSession = function (session) {
179
+ var webId = (session === null || session === void 0 ? void 0 : session.webId) && session.isLoggedIn ? session.webId : null;
180
+ return webId;
15
181
  };
16
182
  return SolidAuthnLogic;
17
183
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"SolidAuthnLogic.js","sourceRoot":"","sources":["../../src/authn/SolidAuthnLogic.ts"],"names":[],"mappings":";;;AAAA,iCAAwC;AAIxC;;GAEG;AACH;IAGE,yBAAY,gBAAyB;QACnC,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC;IAClC,CAAC;IAED,qCAAW,GAAX;;QACE,OAAO,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC,IAAA,YAAG,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;IACH,sBAAC;AAAD,CAAC,AAVD,IAUC;AAVY,0CAAe"}
1
+ {"version":3,"file":"SolidAuthnLogic.js","sourceRoot":"","sources":["../../src/authn/SolidAuthnLogic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { NamedNode } from "rdflib";
2
+ /**
3
+ * find a user or app's context as set in window.SolidAppContext
4
+ * this is a const, not a function, because we have problems to jest mock it otherwise
5
+ * see: https://github.com/facebook/jest/issues/936#issuecomment-545080082 for more
6
+ * @return {any} - an appContext object
7
+ */
8
+ export declare const appContext: () => any;
9
+ /**
10
+ * Returns `sym($SolidTestEnvironment.username)` if
11
+ * `$SolidTestEnvironment.username` is defined as a global
12
+ * or
13
+ * returns testID defined in the HTML page
14
+ * @returns {NamedNode|null}
15
+ */
16
+ export declare function offlineTestID(): NamedNode | null;
17
+ //# sourceMappingURL=authUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authUtil.d.ts","sourceRoot":"","sources":["../../src/authn/authUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;AAGvC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,QAAM,GAuB5B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAK,SAAS,GAAG,IAAI,CAyBjD"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.offlineTestID = exports.appContext = void 0;
27
+ var rdflib_1 = require("rdflib");
28
+ var debug = __importStar(require("../util/debug"));
29
+ /**
30
+ * find a user or app's context as set in window.SolidAppContext
31
+ * this is a const, not a function, because we have problems to jest mock it otherwise
32
+ * see: https://github.com/facebook/jest/issues/936#issuecomment-545080082 for more
33
+ * @return {any} - an appContext object
34
+ */
35
+ var appContext = function () {
36
+ var SolidAppContext = window.SolidAppContext;
37
+ SolidAppContext || (SolidAppContext = {});
38
+ SolidAppContext.viewingNoAuthPage = false;
39
+ if (SolidAppContext.noAuth && window.document) {
40
+ var currentPage = window.document.location.href;
41
+ if (currentPage.startsWith(SolidAppContext.noAuth)) {
42
+ SolidAppContext.viewingNoAuthPage = true;
43
+ var params = new URLSearchParams(window.document.location.search);
44
+ if (params) {
45
+ var viewedPage = SolidAppContext.viewedPage = params.get('uri') || null;
46
+ if (viewedPage) {
47
+ viewedPage = decodeURI(viewedPage);
48
+ if (!viewedPage.startsWith(SolidAppContext.noAuth)) {
49
+ var ary = viewedPage.split(/\//);
50
+ SolidAppContext.idp = ary[0] + '//' + ary[2];
51
+ SolidAppContext.viewingNoAuthPage = false;
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ return SolidAppContext;
58
+ };
59
+ exports.appContext = appContext;
60
+ /**
61
+ * Returns `sym($SolidTestEnvironment.username)` if
62
+ * `$SolidTestEnvironment.username` is defined as a global
63
+ * or
64
+ * returns testID defined in the HTML page
65
+ * @returns {NamedNode|null}
66
+ */
67
+ function offlineTestID() {
68
+ var $SolidTestEnvironment = window.$SolidTestEnvironment;
69
+ if (typeof $SolidTestEnvironment !== 'undefined' &&
70
+ $SolidTestEnvironment.username) {
71
+ // Test setup
72
+ debug.log('Assuming the user is ' + $SolidTestEnvironment.username);
73
+ return (0, rdflib_1.sym)($SolidTestEnvironment.username);
74
+ }
75
+ // hack that makes SolidOS work in offline mode by adding the webId directly in html
76
+ // example usage: https://github.com/solid/mashlib/blob/29b8b53c46bf02e0e219f0bacd51b0e9951001dd/test/contact/local.html#L37
77
+ if (typeof document !== 'undefined' &&
78
+ document.location &&
79
+ ('' + document.location).slice(0, 16) === 'http://localhost') {
80
+ var div = document.getElementById('appTarget');
81
+ if (!div)
82
+ return null;
83
+ var id = div.getAttribute('testID');
84
+ if (!id)
85
+ return null;
86
+ debug.log('Assuming user is ' + id);
87
+ return (0, rdflib_1.sym)(id);
88
+ }
89
+ return null;
90
+ }
91
+ exports.offlineTestID = offlineTestID;
92
+ //# sourceMappingURL=authUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authUtil.js","sourceRoot":"","sources":["../../src/authn/authUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;AACvC,mDAAsC;AAEtC;;;;;GAKG;AACI,IAAM,UAAU,GAAG;IAChB,IAAA,eAAe,GAAU,MAAM,gBAAhB,CAAgB;IACrC,eAAe,KAAf,eAAe,GAAK,EAAE,EAAA;IACtB,eAAe,CAAC,iBAAiB,GAAG,KAAK,CAAA;IACzC,IAAI,eAAe,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;QAC3C,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAA;QACjD,IAAI,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YACpD,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAA;YACxC,IAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACnE,IAAI,MAAM,EAAE;gBACR,IAAI,UAAU,GAAG,eAAe,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;gBACvE,IAAI,UAAU,EAAE;oBAChB,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;oBAClC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;wBAChD,IAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;wBAClC,eAAe,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBAC5C,eAAe,CAAC,iBAAiB,GAAG,KAAK,CAAA;qBAC5C;iBACA;aACJ;SACA;KACJ;IACD,OAAO,eAAe,CAAA;AAC1B,CAAC,CAAA;AAvBY,QAAA,UAAU,cAuBtB;AAED;;;;;;GAMG;AACH,SAAgB,aAAa;IACjB,IAAA,qBAAqB,GAAU,MAAM,sBAAhB,CAAgB;IAC7C,IACE,OAAO,qBAAqB,KAAK,WAAW;QAC5C,qBAAqB,CAAC,QAAQ,EAC9B;QACA,aAAa;QACb,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,IAAA,YAAG,EAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;KAC3C;IACD,oFAAoF;IACpF,4HAA4H;IAC5H,IACE,OAAO,QAAQ,KAAK,WAAW;QAC/B,QAAQ,CAAC,QAAQ;QACjB,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,kBAAkB,EAC5D;QACA,IAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QACrB,IAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QACpB,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAA;QACnC,OAAO,IAAA,YAAG,EAAC,EAAE,CAAC,CAAA;KACf;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAzBD,sCAyBC"}