solid-logic 1.3.12 → 1.3.13-2e3e7417

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 (143) hide show
  1. package/.babelrc +0 -0
  2. package/.eslintrc.js +0 -0
  3. package/.github/workflows/ci.yml +40 -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 +132 -0
  11. package/lib/acl/aclLogic.js.map +1 -0
  12. package/lib/authSession/authSession.d.ts +4 -0
  13. package/lib/authSession/authSession.d.ts.map +1 -0
  14. package/lib/authSession/authSession.js +18 -0
  15. package/lib/authSession/authSession.js.map +1 -0
  16. package/lib/authn/NoAuthnLogic.d.ts +4 -1
  17. package/lib/authn/NoAuthnLogic.d.ts.map +1 -1
  18. package/lib/authn/NoAuthnLogic.js +46 -0
  19. package/lib/authn/NoAuthnLogic.js.map +1 -1
  20. package/lib/authn/SolidAuthnLogic.d.ts +25 -2
  21. package/lib/authn/SolidAuthnLogic.d.ts.map +1 -1
  22. package/lib/authn/SolidAuthnLogic.js +161 -2
  23. package/lib/authn/SolidAuthnLogic.js.map +1 -1
  24. package/lib/authn/authUtil.d.ts +17 -0
  25. package/lib/authn/authUtil.d.ts.map +1 -0
  26. package/lib/authn/authUtil.js +88 -0
  27. package/lib/authn/authUtil.js.map +1 -0
  28. package/lib/chat/ChatLogic.d.ts +1 -1
  29. package/lib/chat/ChatLogic.d.ts.map +1 -1
  30. package/lib/chat/ChatLogic.js +38 -33
  31. package/lib/chat/ChatLogic.js.map +1 -1
  32. package/lib/chat/determineChatContainer.d.ts +0 -0
  33. package/lib/chat/determineChatContainer.d.ts.map +0 -0
  34. package/lib/chat/determineChatContainer.js +0 -0
  35. package/lib/chat/determineChatContainer.js.map +0 -0
  36. package/lib/inbox/InboxLogic.d.ts +1 -1
  37. package/lib/inbox/InboxLogic.d.ts.map +1 -1
  38. package/lib/inbox/InboxLogic.js +14 -13
  39. package/lib/inbox/InboxLogic.js.map +1 -1
  40. package/lib/index.d.ts +9 -72
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +31 -384
  43. package/lib/index.js.map +1 -1
  44. package/lib/issuer/issuerLogic.d.ts +8 -0
  45. package/lib/issuer/issuerLogic.d.ts.map +1 -0
  46. package/lib/issuer/issuerLogic.js +53 -0
  47. package/lib/issuer/issuerLogic.js.map +1 -0
  48. package/lib/logic/CustomError.d.ts +17 -0
  49. package/lib/logic/CustomError.d.ts.map +1 -0
  50. package/lib/logic/CustomError.js +73 -0
  51. package/lib/logic/CustomError.js.map +1 -0
  52. package/lib/{index-alain.d.ts → logic/SolidLogic.d.ts} +7 -33
  53. package/lib/logic/SolidLogic.d.ts.map +1 -0
  54. package/lib/{index-alain.js → logic/SolidLogic.js} +21 -99
  55. package/lib/logic/SolidLogic.js.map +1 -0
  56. package/lib/logic/solidLogicSingleton.d.ts +8 -0
  57. package/lib/logic/solidLogicSingleton.d.ts.map +1 -0
  58. package/lib/logic/solidLogicSingleton.js +88 -0
  59. package/lib/logic/solidLogicSingleton.js.map +1 -0
  60. package/lib/profile/ProfileLogic.d.ts +1 -2
  61. package/lib/profile/ProfileLogic.d.ts.map +1 -1
  62. package/lib/profile/ProfileLogic.js +10 -8
  63. package/lib/profile/ProfileLogic.js.map +1 -1
  64. package/lib/typeIndex/typeIndexLogic.d.ts +22 -0
  65. package/lib/typeIndex/typeIndexLogic.d.ts.map +1 -0
  66. package/lib/typeIndex/typeIndexLogic.js +302 -0
  67. package/lib/typeIndex/typeIndexLogic.js.map +1 -0
  68. package/lib/types.d.ts +36 -0
  69. package/lib/types.d.ts.map +1 -0
  70. package/lib/{authn/index.js → types.js} +1 -1
  71. package/lib/types.js.map +1 -0
  72. package/lib/util/UtilityLogic.d.ts +1 -1
  73. package/lib/util/UtilityLogic.d.ts.map +1 -1
  74. package/lib/util/UtilityLogic.js +10 -8
  75. package/lib/util/UtilityLogic.js.map +1 -1
  76. package/lib/{debug.d.ts → util/debug.d.ts} +0 -0
  77. package/lib/util/debug.d.ts.map +1 -0
  78. package/lib/{debug.js → util/debug.js} +0 -0
  79. package/lib/util/debug.js.map +1 -0
  80. package/lib/{uri.d.ts → util/uri.d.ts} +0 -0
  81. package/lib/util/uri.d.ts.map +1 -0
  82. package/lib/{uri.js → util/uri.js} +0 -0
  83. package/lib/util/uri.js.map +1 -0
  84. package/package.json +5 -3
  85. package/renovate.json +0 -0
  86. package/src/acl/aclLogic.ts +137 -0
  87. package/src/authSession/authSession.ts +22 -0
  88. package/src/authn/NoAuthnLogic.ts +10 -1
  89. package/src/authn/SolidAuthnLogic.ts +111 -5
  90. package/src/authn/authUtil.ts +67 -0
  91. package/src/chat/ChatLogic.ts +12 -12
  92. package/src/chat/determineChatContainer.ts +0 -0
  93. package/src/inbox/InboxLogic.ts +3 -15
  94. package/src/index.ts +18 -307
  95. package/src/issuer/issuerLogic.ts +40 -0
  96. package/src/logic/CustomError.ts +25 -0
  97. package/src/logic/SolidLogic.ts +268 -0
  98. package/src/logic/solidLogicSingleton.ts +23 -0
  99. package/src/profile/ProfileLogic.ts +3 -4
  100. package/src/typeIndex/typeIndexLogic.ts +170 -0
  101. package/src/types.ts +39 -0
  102. package/src/util/UtilityLogic.ts +4 -6
  103. package/src/{debug.ts → util/debug.ts} +0 -0
  104. package/src/{uri.ts → util/uri.ts} +0 -0
  105. package/test/aclLogic.test.ts +15 -0
  106. package/test/authUtil.test.ts +19 -0
  107. package/{src/chat/integration.test.ts → test/chatLogic.test.ts} +4 -5
  108. package/test/helpers/setup.ts +13 -0
  109. package/{src/inbox/unit.test.ts → test/inboxLogic.test.ts} +5 -6
  110. package/test/logic.test.ts +28 -0
  111. package/test/solidAuthLogic.test.ts +45 -0
  112. package/test/typeIndexLogic.test.ts +26 -0
  113. package/{src/util/unit.test.ts → test/utilityLogic.test.ts} +3 -4
  114. package/tsconfig.json +0 -0
  115. package/jest.setup.ts +0 -2
  116. package/lib/authn/index.d.ts +0 -5
  117. package/lib/authn/index.d.ts.map +0 -1
  118. package/lib/authn/index.js.map +0 -1
  119. package/lib/chat/integration.test.d.ts +0 -2
  120. package/lib/chat/integration.test.d.ts.map +0 -1
  121. package/lib/chat/integration.test.js +0 -318
  122. package/lib/chat/integration.test.js.map +0 -1
  123. package/lib/debug.d.ts.map +0 -1
  124. package/lib/debug.js.map +0 -1
  125. package/lib/inbox/unit.test.d.ts +0 -2
  126. package/lib/inbox/unit.test.d.ts.map +0 -1
  127. package/lib/inbox/unit.test.js +0 -264
  128. package/lib/inbox/unit.test.js.map +0 -1
  129. package/lib/index-alain.d.ts.map +0 -1
  130. package/lib/index-alain.js.map +0 -1
  131. package/lib/uri.d.ts.map +0 -1
  132. package/lib/uri.js.map +0 -1
  133. package/lib/util/UtilityLogic-alain.d.ts +0 -32
  134. package/lib/util/UtilityLogic-alain.d.ts.map +0 -1
  135. package/lib/util/UtilityLogic-alain.js +0 -248
  136. package/lib/util/UtilityLogic-alain.js.map +0 -1
  137. package/lib/util/unit.test.d.ts +0 -2
  138. package/lib/util/unit.test.d.ts.map +0 -1
  139. package/lib/util/unit.test.js +0 -200
  140. package/lib/util/unit.test.js.map +0 -1
  141. package/src/authn/index.ts +0 -5
  142. package/src/index-alain.txt +0 -316
  143. package/src/util/UtilityLogic-alain.txt +0 -181
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,36 @@ jobs:
26
31
  with:
27
32
  node-version: ${{ matrix.node-version }}
28
33
  - run: npm ci
29
- - run: npm run lint
34
+ # lint throws erros because of authSession ts-ignore tags
35
+ # - run: npm run lint --if-present
30
36
  - run: npm test
31
37
  - run: npm run build --if-present
38
+ - name: Save build
39
+ if: matrix.node-version == '14.x'
40
+ uses: actions/upload-artifact@v2
41
+ with:
42
+ name: build
43
+ path: |
44
+ .
45
+ !node_modules
46
+ retention-days: 1
47
+
48
+ npm-publish-build:
49
+ needs: build
50
+ runs-on: ubuntu-latest
51
+ steps:
52
+ - uses: actions/download-artifact@v2
53
+ with:
54
+ name: build
55
+ - uses: actions/setup-node@v1
56
+ with:
57
+ node-version: 14.x
58
+ - uses: rlespinasse/github-slug-action@v3.x
59
+ - name: Append commit hash to package version
60
+ run: 'sed -i -E "s/(\"version\": *\"[^\"]+)/\1-${GITHUB_SHA_SHORT}/" package.json'
61
+ - name: Disable pre- and post-publish actions
62
+ run: 'sed -i -E "s/\"((pre|post)publish)/\"ignore:\1/" package.json'
63
+ - uses: JS-DevTools/npm-publish@v1
64
+ with:
65
+ token: ${{ secrets.NPM_TOKEN }}
66
+ 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: 'jsdom',
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,132 @@
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
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.genACLText = exports.setACLUserPublic = exports.ns = void 0;
39
+ var rdflib_1 = require("rdflib");
40
+ var solid_namespace_1 = __importDefault(require("solid-namespace"));
41
+ var $rdf = __importStar(require("rdflib"));
42
+ var solidLogicSingleton_1 = require("../logic/solidLogicSingleton");
43
+ var UtilityLogic_1 = require("../util/UtilityLogic");
44
+ exports.ns = (0, solid_namespace_1.default)($rdf);
45
+ function setACLUserPublic(docURI, me, options) {
46
+ var aclDoc = solidLogicSingleton_1.solidLogicSingleton.store.any(solidLogicSingleton_1.solidLogicSingleton.store.sym(docURI), UtilityLogic_1.ACL_LINK);
47
+ return Promise.resolve()
48
+ .then(function () {
49
+ if (aclDoc) {
50
+ return aclDoc;
51
+ }
52
+ return fetchACLRel(docURI).catch(function (err) {
53
+ throw new Error("Error fetching rel=ACL header for ".concat(docURI, ": ").concat(err));
54
+ });
55
+ })
56
+ .then(function (aclDoc) {
57
+ var aclText = genACLText(docURI, me, aclDoc.uri, options);
58
+ if (!solidLogicSingleton_1.solidLogicSingleton.store.fetcher) {
59
+ throw new Error('Cannot PUT this, store has no fetcher');
60
+ }
61
+ return solidLogicSingleton_1.solidLogicSingleton.store.fetcher
62
+ .webOperation('PUT', aclDoc.uri, {
63
+ data: aclText,
64
+ contentType: 'text/turtle'
65
+ })
66
+ .then(function (result) {
67
+ if (!result.ok) {
68
+ throw new Error('Error writing ACL text: ' + result.error);
69
+ }
70
+ return aclDoc;
71
+ });
72
+ });
73
+ }
74
+ exports.setACLUserPublic = setACLUserPublic;
75
+ /**
76
+ * @param docURI
77
+ * @returns
78
+ */
79
+ function fetchACLRel(docURI) {
80
+ var fetcher = solidLogicSingleton_1.solidLogicSingleton.store.fetcher;
81
+ if (!fetcher) {
82
+ throw new Error('Cannot fetch ACL rel, store has no fetcher');
83
+ }
84
+ return fetcher.load(docURI).then(function (result) {
85
+ if (!result.ok) {
86
+ throw new Error('fetchACLRel: While loading:' + result.error);
87
+ }
88
+ var aclDoc = solidLogicSingleton_1.solidLogicSingleton.store.any(solidLogicSingleton_1.solidLogicSingleton.store.sym(docURI), UtilityLogic_1.ACL_LINK);
89
+ if (!aclDoc) {
90
+ throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI);
91
+ }
92
+ return aclDoc;
93
+ });
94
+ }
95
+ /**
96
+ * @param docURI
97
+ * @param me
98
+ * @param aclURI
99
+ * @param options
100
+ *
101
+ * @returns Serialized ACL
102
+ */
103
+ function genACLText(docURI, me, aclURI, options) {
104
+ if (options === void 0) { options = {}; }
105
+ var optPublic = options.public || [];
106
+ var g = (0, rdflib_1.graph)();
107
+ var auth = (0, rdflib_1.Namespace)('http://www.w3.org/ns/auth/acl#');
108
+ var a = g.sym("".concat(aclURI, "#a1"));
109
+ var acl = g.sym(aclURI);
110
+ var doc = g.sym(docURI);
111
+ g.add(a, exports.ns.rdf('type'), auth('Authorization'), acl);
112
+ g.add(a, auth('accessTo'), doc, acl);
113
+ if (options.defaultForNew) {
114
+ g.add(a, auth('default'), doc, acl);
115
+ }
116
+ g.add(a, auth('agent'), me, acl);
117
+ g.add(a, auth('mode'), auth('Read'), acl);
118
+ g.add(a, auth('mode'), auth('Write'), acl);
119
+ g.add(a, auth('mode'), auth('Control'), acl);
120
+ if (optPublic.length) {
121
+ a = g.sym("".concat(aclURI, "#a2"));
122
+ g.add(a, exports.ns.rdf('type'), auth('Authorization'), acl);
123
+ g.add(a, auth('accessTo'), doc, acl);
124
+ g.add(a, auth('agentClass'), exports.ns.foaf('Agent'), acl);
125
+ for (var p = 0; p < optPublic.length; p++) {
126
+ g.add(a, auth('mode'), auth(optPublic[p]), acl); // Like 'Read' etc
127
+ }
128
+ }
129
+ return (0, rdflib_1.serialize)(acl, g, aclURI);
130
+ }
131
+ exports.genACLText = genACLText;
132
+ //# 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,4 @@
1
+ import { Session } from '@inrupt/solid-client-authn-browser';
2
+ declare let authSession: Session;
3
+ export default authSession;
4
+ //# 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,QAAA,IAAI,WAAW,EAAE,OAAO,CAAA;AAgBxB,eAAe,WAAW,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var solid_client_authn_browser_1 = require("@inrupt/solid-client-authn-browser");
4
+ var authSession;
5
+ // @ts-ignore
6
+ if (!window.authSession) {
7
+ authSession = new solid_client_authn_browser_1.Session({
8
+ clientAuthentication: (0, solid_client_authn_browser_1.getClientAuthenticationWithDependencies)({})
9
+ }, 'mySession');
10
+ // @ts-ignore
11
+ window.authSession = authSession;
12
+ }
13
+ else {
14
+ // @ts-ignore
15
+ authSession = window.authSession;
16
+ }
17
+ exports.default = authSession;
18
+ //# sourceMappingURL=authSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSession.js","sourceRoot":"","sources":["../../src/authSession/authSession.ts"],"names":[],"mappings":";;AAAA,iFAG2C;AAE3C,IAAI,WAAoB,CAAA;AACxB,aAAa;AACb,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACvB,WAAW,GAAG,IAAI,oCAAO,CACvB;QACE,oBAAoB,EAAE,IAAA,oEAAuC,EAAC,EAAE,CAAC;KAClE,EACD,WAAW,CACZ,CAAA;IACD,aAAa;IACb,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;CACjC;KAAM;IACL,aAAa;IACb,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;CACjC;AAED,kBAAe,WAAW,CAAA"}
@@ -1,9 +1,12 @@
1
- import { AuthnLogic } from "./index";
1
+ import { NamedNode } from "rdflib";
2
+ import { AuthnLogic } from "../types";
2
3
  /**
3
4
  * Fallback, if no auth client has been provided to solid-logic
4
5
  */
5
6
  export declare class NoAuthnLogic implements AuthnLogic {
6
7
  constructor();
7
8
  currentUser(): null;
9
+ checkUser<T>(): Promise<NamedNode | T | null>;
10
+ saveUser(): NamedNode | null;
8
11
  }
9
12
  //# sourceMappingURL=NoAuthnLogic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NoAuthnLogic.d.ts","sourceRoot":"","sources":["../../src/authn/NoAuthnLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;;IAO7C,WAAW,IAAI,IAAI;CAGpB"}
1
+ {"version":3,"file":"NoAuthnLogic.d.ts","sourceRoot":"","sources":["../../src/authn/NoAuthnLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;;IAO7C,WAAW,IAAI,IAAI;IAIb,SAAS,CAAC,CAAC,KAAM,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;IAIpD,QAAQ,IAAK,SAAS,GAAG,IAAI;CAG9B"}
@@ -1,4 +1,40 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
39
  exports.NoAuthnLogic = void 0;
4
40
  /**
@@ -11,6 +47,16 @@ var NoAuthnLogic = /** @class */ (function () {
11
47
  NoAuthnLogic.prototype.currentUser = function () {
12
48
  return null;
13
49
  };
50
+ NoAuthnLogic.prototype.checkUser = function () {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ return __generator(this, function (_a) {
53
+ return [2 /*return*/, null];
54
+ });
55
+ });
56
+ };
57
+ NoAuthnLogic.prototype.saveUser = function () {
58
+ return null;
59
+ };
14
60
  return NoAuthnLogic;
15
61
  }());
16
62
  exports.NoAuthnLogic = NoAuthnLogic;
@@ -1 +1 @@
1
- {"version":3,"file":"NoAuthnLogic.js","sourceRoot":"","sources":["../../src/authn/NoAuthnLogic.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IACE;QACE,OAAO,CAAC,IAAI,CACV,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAED,kCAAW,GAAX;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IACH,mBAAC;AAAD,CAAC,AAVD,IAUC;AAVY,oCAAY"}
1
+ {"version":3,"file":"NoAuthnLogic.js","sourceRoot":"","sources":["../../src/authn/NoAuthnLogic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;GAEG;AACH;IACE;QACE,OAAO,CAAC,IAAI,CACV,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAED,kCAAW,GAAX;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAEK,gCAAS,GAAf;;;gBACE,sBAAO,IAAI,EAAA;;;KACZ;IAED,+BAAQ,GAAR;QACE,OAAO,IAAI,CAAA;IACb,CAAC;IACH,mBAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,oCAAY"}
@@ -1,12 +1,35 @@
1
1
  import { NamedNode } from "rdflib";
2
- import { AuthnLogic } from "./index";
3
2
  import { Session } from "@inrupt/solid-client-authn-browser";
3
+ import { AuthenticationContext, AuthnLogic } from "../types";
4
4
  /**
5
5
  * Implements AuthnLogic relying on solid-auth-client
6
6
  */
7
7
  export declare class SolidAuthnLogic implements AuthnLogic {
8
- private session?;
8
+ private session;
9
9
  constructor(solidAuthSession: Session);
10
10
  currentUser(): NamedNode | null;
11
+ /**
12
+ * Retrieves currently logged in webId from either
13
+ * defaultTestUser or SolidAuth
14
+ * Also activates a session after login
15
+ * @param [setUserCallback] Optional callback
16
+ * @returns Resolves with webId uri, if no callback provided
17
+ */
18
+ checkUser<T>(setUserCallback?: (me: NamedNode | null) => T): Promise<NamedNode | T | null>;
19
+ /**
20
+ * Saves `webId` in `context.me`
21
+ * @param webId
22
+ * @param context
23
+ *
24
+ * @returns Returns the WebID, after setting it
25
+ */
26
+ saveUser(webId: NamedNode | string | null, context?: AuthenticationContext): NamedNode | null;
27
+ /**
28
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
29
+ */
30
+ webIdFromSession(session?: {
31
+ webId?: string;
32
+ isLoggedIn: boolean;
33
+ }): string | null;
11
34
  }
12
35
  //# 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;AAE7D;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,OAAO,CAAU;gBAEb,gBAAgB,EAAE,OAAO;IAIrC,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,7 +1,64 @@
1
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
+ };
2
57
  Object.defineProperty(exports, "__esModule", { value: true });
3
58
  exports.SolidAuthnLogic = void 0;
4
59
  var rdflib_1 = require("rdflib");
60
+ var authUtil_1 = require("./authUtil");
61
+ var debug = __importStar(require("../util/debug"));
5
62
  /**
6
63
  * Implements AuthnLogic relying on solid-auth-client
7
64
  */
@@ -10,8 +67,110 @@ var SolidAuthnLogic = /** @class */ (function () {
10
67
  this.session = solidAuthSession;
11
68
  }
12
69
  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;
70
+ var app = (0, authUtil_1.appContext)();
71
+ if (app.viewingNoAuthPage) {
72
+ return (0, rdflib_1.sym)(app.webId);
73
+ }
74
+ if (this.session.info.webId && this.session.info.isLoggedIn) {
75
+ return (0, rdflib_1.sym)(this.session.info.webId);
76
+ }
77
+ return (0, authUtil_1.offlineTestID)(); // null unless testing
78
+ };
79
+ /**
80
+ * Retrieves currently logged in webId from either
81
+ * defaultTestUser or SolidAuth
82
+ * Also activates a session after login
83
+ * @param [setUserCallback] Optional callback
84
+ * @returns Resolves with webId uri, if no callback provided
85
+ */
86
+ SolidAuthnLogic.prototype.checkUser = function (setUserCallback) {
87
+ return __awaiter(this, void 0, void 0, function () {
88
+ var preLoginRedirectHash, postLoginRedirectHash, curUrl, me, webId;
89
+ return __generator(this, function (_a) {
90
+ switch (_a.label) {
91
+ case 0:
92
+ preLoginRedirectHash = new URL(window.location.href).hash;
93
+ if (preLoginRedirectHash) {
94
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
95
+ }
96
+ this.session.onSessionRestore(function (url) {
97
+ if (document.location.toString() !== url)
98
+ history.replaceState(null, '', url);
99
+ });
100
+ /**
101
+ * Handle a successful authentication redirect
102
+ */
103
+ return [4 /*yield*/, this.session
104
+ .handleIncomingRedirect({
105
+ restorePreviousSession: true,
106
+ url: window.location.href
107
+ })
108
+ // Check to see if a hash was stored in local storage
109
+ ];
110
+ case 1:
111
+ /**
112
+ * Handle a successful authentication redirect
113
+ */
114
+ _a.sent();
115
+ postLoginRedirectHash = window.localStorage.getItem('preLoginRedirectHash');
116
+ if (postLoginRedirectHash) {
117
+ curUrl = new URL(window.location.href);
118
+ if (curUrl.hash !== postLoginRedirectHash) {
119
+ if (history.pushState) {
120
+ // console.log('Setting window.location.has using pushState')
121
+ history.pushState(null, document.title, postLoginRedirectHash);
122
+ }
123
+ else {
124
+ // console.warn('Setting window.location.has using location.hash')
125
+ location.hash = postLoginRedirectHash;
126
+ }
127
+ curUrl.hash = postLoginRedirectHash;
128
+ }
129
+ // See https://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document
130
+ // window.location.href = curUrl.toString()// @@ See https://developer.mozilla.org/en-US/docs/Web/API/Window/location
131
+ window.localStorage.setItem('preLoginRedirectHash', '');
132
+ }
133
+ me = (0, authUtil_1.offlineTestID)();
134
+ if (me) {
135
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
136
+ }
137
+ webId = this.webIdFromSession(this.session.info);
138
+ if (webId) {
139
+ me = this.saveUser(webId);
140
+ }
141
+ if (me) {
142
+ debug.log("(Logged in as ".concat(me, " by authentication)"));
143
+ }
144
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
145
+ }
146
+ });
147
+ });
148
+ };
149
+ /**
150
+ * Saves `webId` in `context.me`
151
+ * @param webId
152
+ * @param context
153
+ *
154
+ * @returns Returns the WebID, after setting it
155
+ */
156
+ SolidAuthnLogic.prototype.saveUser = function (webId, context) {
157
+ var webIdUri;
158
+ if (webId) {
159
+ webIdUri = (typeof webId === 'string') ? webId : webId.uri;
160
+ var me = (0, rdflib_1.namedNode)(webIdUri);
161
+ if (context) {
162
+ context.me = me;
163
+ }
164
+ return me;
165
+ }
166
+ return null;
167
+ };
168
+ /**
169
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
170
+ */
171
+ SolidAuthnLogic.prototype.webIdFromSession = function (session) {
172
+ var webId = (session === null || session === void 0 ? void 0 : session.webId) && session.isLoggedIn ? session.webId : null;
173
+ return webId;
15
174
  };
16
175
  return SolidAuthnLogic;
17
176
  }());
@@ -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"}