solid-logic 1.3.13-ef4be651 → 1.3.13-f1b5b524

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 (120) hide show
  1. package/.github/workflows/ci.yml +19 -18
  2. package/jest.config.js +4 -1
  3. package/lib/acl/aclLogic.d.ts +32 -0
  4. package/lib/acl/aclLogic.d.ts.map +1 -0
  5. package/lib/acl/aclLogic.js +132 -0
  6. package/lib/acl/aclLogic.js.map +1 -0
  7. package/lib/authSession/authSession.d.ts +3 -0
  8. package/lib/authSession/authSession.d.ts.map +1 -0
  9. package/lib/authSession/authSession.js +8 -0
  10. package/lib/authSession/authSession.js.map +1 -0
  11. package/lib/authn/SolidAuthnLogic.d.ts +26 -5
  12. package/lib/authn/SolidAuthnLogic.d.ts.map +1 -1
  13. package/lib/authn/SolidAuthnLogic.js +167 -5
  14. package/lib/authn/SolidAuthnLogic.js.map +1 -1
  15. package/lib/authn/authUtil.d.ts +17 -0
  16. package/lib/authn/authUtil.d.ts.map +1 -0
  17. package/lib/authn/authUtil.js +88 -0
  18. package/lib/authn/authUtil.js.map +1 -0
  19. package/lib/chat/ChatLogic.d.ts +2 -2
  20. package/lib/chat/ChatLogic.d.ts.map +1 -1
  21. package/lib/chat/ChatLogic.js +1 -1
  22. package/lib/chat/ChatLogic.js.map +1 -1
  23. package/lib/inbox/InboxLogic.d.ts +2 -2
  24. package/lib/inbox/InboxLogic.d.ts.map +1 -1
  25. package/lib/inbox/InboxLogic.js.map +1 -1
  26. package/lib/index.d.ts +14 -67
  27. package/lib/index.d.ts.map +1 -1
  28. package/lib/index.js +39 -387
  29. package/lib/index.js.map +1 -1
  30. package/lib/issuer/issuerLogic.d.ts +8 -0
  31. package/lib/issuer/issuerLogic.d.ts.map +1 -0
  32. package/lib/issuer/issuerLogic.js +53 -0
  33. package/lib/issuer/issuerLogic.js.map +1 -0
  34. package/lib/logic/CustomError.d.ts +17 -0
  35. package/lib/logic/CustomError.d.ts.map +1 -0
  36. package/lib/logic/CustomError.js +73 -0
  37. package/lib/logic/CustomError.js.map +1 -0
  38. package/lib/logic/SolidLogic.d.ts +49 -0
  39. package/lib/logic/SolidLogic.d.ts.map +1 -0
  40. package/lib/logic/SolidLogic.js +316 -0
  41. package/lib/logic/SolidLogic.js.map +1 -0
  42. package/lib/logic/solidLogicSingleton.d.ts +4 -0
  43. package/lib/logic/solidLogicSingleton.d.ts.map +1 -0
  44. package/lib/logic/solidLogicSingleton.js +76 -0
  45. package/lib/logic/solidLogicSingleton.js.map +1 -0
  46. package/lib/profile/ProfileLogic.d.ts +2 -3
  47. package/lib/profile/ProfileLogic.d.ts.map +1 -1
  48. package/lib/profile/ProfileLogic.js.map +1 -1
  49. package/lib/typeIndex/typeIndexLogic.d.ts +22 -0
  50. package/lib/typeIndex/typeIndexLogic.d.ts.map +1 -0
  51. package/lib/typeIndex/typeIndexLogic.js +302 -0
  52. package/lib/typeIndex/typeIndexLogic.js.map +1 -0
  53. package/lib/types.d.ts +31 -0
  54. package/lib/types.d.ts.map +1 -0
  55. package/lib/{authn/index.js → types.js} +1 -1
  56. package/lib/types.js.map +1 -0
  57. package/lib/util/UtilityLogic.d.ts +2 -2
  58. package/lib/util/UtilityLogic.d.ts.map +1 -1
  59. package/lib/util/UtilityLogic.js.map +1 -1
  60. package/lib/{debug.d.ts → util/debug.d.ts} +0 -0
  61. package/lib/util/debug.d.ts.map +1 -0
  62. package/lib/{debug.js → util/debug.js} +0 -0
  63. package/lib/util/debug.js.map +1 -0
  64. package/lib/{uri.d.ts → util/uri.d.ts} +0 -0
  65. package/lib/util/uri.d.ts.map +1 -0
  66. package/lib/{uri.js → util/uri.js} +0 -0
  67. package/lib/util/uri.js.map +1 -0
  68. package/package.json +5 -3
  69. package/src/acl/aclLogic.ts +137 -0
  70. package/src/authSession/authSession.ts +13 -0
  71. package/src/authn/SolidAuthnLogic.ts +114 -9
  72. package/src/authn/authUtil.ts +67 -0
  73. package/src/chat/ChatLogic.ts +3 -3
  74. package/src/inbox/InboxLogic.ts +2 -14
  75. package/src/index.ts +29 -308
  76. package/src/issuer/issuerLogic.ts +40 -0
  77. package/src/logic/CustomError.ts +25 -0
  78. package/src/logic/SolidLogic.ts +264 -0
  79. package/src/logic/solidLogicSingleton.ts +17 -0
  80. package/src/profile/ProfileLogic.ts +2 -3
  81. package/src/typeIndex/typeIndexLogic.ts +170 -0
  82. package/src/types.ts +43 -0
  83. package/src/util/UtilityLogic.ts +2 -14
  84. package/src/{debug.ts → util/debug.ts} +0 -0
  85. package/src/{uri.ts → util/uri.ts} +0 -0
  86. package/test/aclLogic.test.ts +15 -0
  87. package/test/authUtil.test.ts +23 -0
  88. package/{src/chat/integration.test.ts → test/chatLogic.test.ts} +4 -5
  89. package/test/helpers/setup.ts +13 -0
  90. package/{src/inbox/unit.test.ts → test/inboxLogic.test.ts} +5 -6
  91. package/test/logic.test.ts +28 -0
  92. package/test/solidAuthLogic.test.ts +49 -0
  93. package/test/typeIndexLogic.test.ts +26 -0
  94. package/{src/util/unit.test.ts → test/utilityLogic.test.ts} +3 -4
  95. package/jest.setup.ts +0 -2
  96. package/lib/authn/NoAuthnLogic.d.ts +0 -9
  97. package/lib/authn/NoAuthnLogic.d.ts.map +0 -1
  98. package/lib/authn/NoAuthnLogic.js +0 -17
  99. package/lib/authn/NoAuthnLogic.js.map +0 -1
  100. package/lib/authn/index.d.ts +0 -5
  101. package/lib/authn/index.d.ts.map +0 -1
  102. package/lib/authn/index.js.map +0 -1
  103. package/lib/chat/integration.test.d.ts +0 -2
  104. package/lib/chat/integration.test.d.ts.map +0 -1
  105. package/lib/chat/integration.test.js +0 -318
  106. package/lib/chat/integration.test.js.map +0 -1
  107. package/lib/debug.d.ts.map +0 -1
  108. package/lib/debug.js.map +0 -1
  109. package/lib/inbox/unit.test.d.ts +0 -2
  110. package/lib/inbox/unit.test.d.ts.map +0 -1
  111. package/lib/inbox/unit.test.js +0 -264
  112. package/lib/inbox/unit.test.js.map +0 -1
  113. package/lib/uri.d.ts.map +0 -1
  114. package/lib/uri.js.map +0 -1
  115. package/lib/util/unit.test.d.ts +0 -2
  116. package/lib/util/unit.test.d.ts.map +0 -1
  117. package/lib/util/unit.test.js +0 -200
  118. package/lib/util/unit.test.js.map +0 -1
  119. package/src/authn/NoAuthnLogic.ts +0 -16
  120. package/src/authn/index.ts +0 -5
@@ -44,22 +44,23 @@ jobs:
44
44
  .
45
45
  !node_modules
46
46
  retention-days: 1
47
+
47
48
  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 }}
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 }}
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,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":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iCAA+D;AAC/D,oEAA4C;AAC5C,2CAA8B;AAC9B,oEAAkE;AAClE,qDAA+C;AAElC,QAAA,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAA;AAEtC,SAAgB,gBAAgB,CAChC,MAAc,EACd,EAAa,EACb,OAGC;IAED,IAAM,MAAM,GAAG,yCAAmB,CAAC,KAAK,CAAC,GAAG,CACxC,yCAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EACrC,uBAAQ,CACX,CAAA;IAED,OAAO,OAAO,CAAC,OAAO,EAAE;SACnB,IAAI,CAAC;QACN,IAAI,MAAM,EAAE;YACR,OAAO,MAAmB,CAAA;SAC7B;QAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG;YAChC,MAAM,IAAI,KAAK,CAAC,4CAAqC,MAAM,eAAK,GAAG,CAAE,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;IACF,CAAC,CAAC;SACD,IAAI,CAAC,UAAA,MAAM;QACZ,IAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC3D,IAAI,CAAC,yCAAmB,CAAC,KAAK,CAAC,OAAO,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;SAC3D;QACD,OAAO,yCAAmB,CAAC,KAAK,CAAC,OAAO;aACnC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE;YACjC,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,aAAa;SACzB,CAAC;aACD,IAAI,CAAC,UAAA,MAAM;YACZ,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;aAC7D;YAED,OAAO,MAAM,CAAA;QACb,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAzCD,4CAyCC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAE,MAAc;IAChC,IAAM,OAAO,GAAG,yCAAmB,CAAC,KAAK,CAAC,OAAO,CAAA;IACjD,IAAI,CAAC,OAAO,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;KAChE;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;QACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAI,MAAc,CAAC,KAAK,CAAC,CAAA;SACrE;QAED,IAAM,MAAM,GAAG,yCAAmB,CAAC,KAAK,CAAC,GAAG,CAC5C,yCAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EACrC,uBAAQ,CACP,CAAA;QAED,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,MAAM,CAAC,CAAA;SACnE;QAED,OAAO,MAAmB,CAAA;IAC9B,CAAC,CAAC,CAAA;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CAC1B,MAAc,EACd,EAAa,EACb,MAAc,EACd,OAGM;IAHN,wBAAA,EAAA,YAGM;IAEN,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACtC,IAAM,CAAC,GAAG,IAAA,cAAK,GAAE,CAAA;IACjB,IAAM,IAAI,GAAG,IAAA,kBAAS,EAAC,gCAAgC,CAAC,CAAA;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAG,MAAM,QAAK,CAAC,CAAA;IAC7B,IAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,IAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,CAAA;IACpD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACpC,IAAI,OAAO,CAAC,aAAa,EAAE;QACvB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;KACtC;IACD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACzC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1C,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAA;IAE5C,IAAI,SAAS,CAAC,MAAM,EAAE;QAClB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAG,MAAM,QAAK,CAAC,CAAA;QACzB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,UAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAC,kBAAkB;SACjE;KACJ;IACD,OAAO,IAAA,kBAAS,EAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC;AAnCD,gCAmCC"}
@@ -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,179 @@
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");
5
- /**
6
- * Implements AuthnLogic relying on solid-auth-client
7
- */
60
+ var authUtil_1 = require("./authUtil");
61
+ var debug = __importStar(require("../util/debug"));
8
62
  var SolidAuthnLogic = /** @class */ (function () {
9
63
  function SolidAuthnLogic(solidAuthSession) {
10
64
  this.session = solidAuthSession;
11
65
  }
66
+ Object.defineProperty(SolidAuthnLogic.prototype, "authSession", {
67
+ // we created authSession getter because we want to access it as authn.authSession externally
68
+ get: function () { return this.session; },
69
+ enumerable: false,
70
+ configurable: true
71
+ });
12
72
  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;
73
+ var app = (0, authUtil_1.appContext)();
74
+ if (app.viewingNoAuthPage) {
75
+ return (0, rdflib_1.sym)(app.webId);
76
+ }
77
+ if (this.session.info.webId && this.session.info.isLoggedIn) {
78
+ return (0, rdflib_1.sym)(this.session.info.webId);
79
+ }
80
+ return (0, authUtil_1.offlineTestID)(); // null unless testing
81
+ };
82
+ /**
83
+ * Retrieves currently logged in webId from either
84
+ * defaultTestUser or SolidAuth
85
+ * Also activates a session after login
86
+ * @param [setUserCallback] Optional callback
87
+ * @returns Resolves with webId uri, if no callback provided
88
+ */
89
+ SolidAuthnLogic.prototype.checkUser = function (setUserCallback) {
90
+ return __awaiter(this, void 0, void 0, function () {
91
+ var preLoginRedirectHash, postLoginRedirectHash, curUrl, me, webId;
92
+ return __generator(this, function (_a) {
93
+ switch (_a.label) {
94
+ case 0:
95
+ preLoginRedirectHash = new URL(window.location.href).hash;
96
+ if (preLoginRedirectHash) {
97
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
98
+ }
99
+ this.session.onSessionRestore(function (url) {
100
+ if (document.location.toString() !== url)
101
+ history.replaceState(null, '', url);
102
+ });
103
+ /**
104
+ * Handle a successful authentication redirect
105
+ */
106
+ return [4 /*yield*/, this.session
107
+ .handleIncomingRedirect({
108
+ restorePreviousSession: true,
109
+ url: window.location.href
110
+ })
111
+ // Check to see if a hash was stored in local storage
112
+ ];
113
+ case 1:
114
+ /**
115
+ * Handle a successful authentication redirect
116
+ */
117
+ _a.sent();
118
+ postLoginRedirectHash = window.localStorage.getItem('preLoginRedirectHash');
119
+ if (postLoginRedirectHash) {
120
+ curUrl = new URL(window.location.href);
121
+ if (curUrl.hash !== postLoginRedirectHash) {
122
+ if (history.pushState) {
123
+ // console.log('Setting window.location.has using pushState')
124
+ history.pushState(null, document.title, postLoginRedirectHash);
125
+ }
126
+ else {
127
+ // console.warn('Setting window.location.has using location.hash')
128
+ location.hash = postLoginRedirectHash;
129
+ }
130
+ curUrl.hash = postLoginRedirectHash;
131
+ }
132
+ // See https://stackoverflow.com/questions/3870057/how-can-i-update-window-location-hash-without-jumping-the-document
133
+ // window.location.href = curUrl.toString()// @@ See https://developer.mozilla.org/en-US/docs/Web/API/Window/location
134
+ window.localStorage.setItem('preLoginRedirectHash', '');
135
+ }
136
+ me = (0, authUtil_1.offlineTestID)();
137
+ if (me) {
138
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
139
+ }
140
+ webId = this.webIdFromSession(this.session.info);
141
+ if (webId) {
142
+ me = this.saveUser(webId);
143
+ }
144
+ if (me) {
145
+ debug.log("(Logged in as ".concat(me, " by authentication)"));
146
+ }
147
+ return [2 /*return*/, Promise.resolve(setUserCallback ? setUserCallback(me) : me)];
148
+ }
149
+ });
150
+ });
151
+ };
152
+ /**
153
+ * Saves `webId` in `context.me`
154
+ * @param webId
155
+ * @param context
156
+ *
157
+ * @returns Returns the WebID, after setting it
158
+ */
159
+ SolidAuthnLogic.prototype.saveUser = function (webId, context) {
160
+ var webIdUri;
161
+ if (webId) {
162
+ webIdUri = (typeof webId === 'string') ? webId : webId.uri;
163
+ var me = (0, rdflib_1.namedNode)(webIdUri);
164
+ if (context) {
165
+ context.me = me;
166
+ }
167
+ return me;
168
+ }
169
+ return null;
170
+ };
171
+ /**
172
+ * @returns {Promise<string|null>} Resolves with WebID URI or null
173
+ */
174
+ SolidAuthnLogic.prototype.webIdFromSession = function (session) {
175
+ var webId = (session === null || session === void 0 ? void 0 : session.webId) && session.isLoggedIn ? session.webId : null;
176
+ return webId;
15
177
  };
16
178
  return SolidAuthnLogic;
17
179
  }());
@@ -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,88 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.offlineTestID = exports.appContext = void 0;
23
+ var rdflib_1 = require("rdflib");
24
+ var debug = __importStar(require("../util/debug"));
25
+ /**
26
+ * find a user or app's context as set in window.SolidAppContext
27
+ * this is a const, not a function, because we have problems to jest mock it otherwise
28
+ * see: https://github.com/facebook/jest/issues/936#issuecomment-545080082 for more
29
+ * @return {any} - an appContext object
30
+ */
31
+ var appContext = function () {
32
+ var SolidAppContext = window.SolidAppContext;
33
+ SolidAppContext || (SolidAppContext = {});
34
+ SolidAppContext.viewingNoAuthPage = false;
35
+ if (SolidAppContext.noAuth && window.document) {
36
+ var currentPage = window.document.location.href;
37
+ if (currentPage.startsWith(SolidAppContext.noAuth)) {
38
+ SolidAppContext.viewingNoAuthPage = true;
39
+ var params = new URLSearchParams(window.document.location.search);
40
+ if (params) {
41
+ var viewedPage = SolidAppContext.viewedPage = params.get('uri') || null;
42
+ if (viewedPage) {
43
+ viewedPage = decodeURI(viewedPage);
44
+ if (!viewedPage.startsWith(SolidAppContext.noAuth)) {
45
+ var ary = viewedPage.split(/\//);
46
+ SolidAppContext.idp = ary[0] + '//' + ary[2];
47
+ SolidAppContext.viewingNoAuthPage = false;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ return SolidAppContext;
54
+ };
55
+ exports.appContext = appContext;
56
+ /**
57
+ * Returns `sym($SolidTestEnvironment.username)` if
58
+ * `$SolidTestEnvironment.username` is defined as a global
59
+ * or
60
+ * returns testID defined in the HTML page
61
+ * @returns {NamedNode|null}
62
+ */
63
+ function offlineTestID() {
64
+ var $SolidTestEnvironment = window.$SolidTestEnvironment;
65
+ if (typeof $SolidTestEnvironment !== 'undefined' &&
66
+ $SolidTestEnvironment.username) {
67
+ // Test setup
68
+ debug.log('Assuming the user is ' + $SolidTestEnvironment.username);
69
+ return (0, rdflib_1.sym)($SolidTestEnvironment.username);
70
+ }
71
+ // hack that makes SolidOS work in offline mode by adding the webId directly in html
72
+ // example usage: https://github.com/solid/mashlib/blob/29b8b53c46bf02e0e219f0bacd51b0e9951001dd/test/contact/local.html#L37
73
+ if (typeof document !== 'undefined' &&
74
+ document.location &&
75
+ ('' + document.location).slice(0, 16) === 'http://localhost') {
76
+ var div = document.getElementById('appTarget');
77
+ if (!div)
78
+ return null;
79
+ var id = div.getAttribute('testID');
80
+ if (!id)
81
+ return null;
82
+ debug.log('Assuming user is ' + id);
83
+ return (0, rdflib_1.sym)(id);
84
+ }
85
+ return null;
86
+ }
87
+ exports.offlineTestID = offlineTestID;
88
+ //# 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"}
@@ -1,6 +1,6 @@
1
- import { LiveStore, NamedNode } from "rdflib";
2
- import { SolidNamespace } from "../index";
1
+ import { NamedNode, LiveStore } from "rdflib";
3
2
  import { ProfileLogic } from "../profile/ProfileLogic";
3
+ import { SolidNamespace } from "../types";
4
4
  /**
5
5
  * Chat-related logic
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ChatLogic.d.ts","sourceRoot":"","sources":["../../src/chat/ChatLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAkB,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgBvD;;GAEG;AACH,qBAAa,SAAS;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;gBAEV,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY;IAMjE,MAAM,CACV,aAAa,EAAE,SAAS,EACxB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC;YAsCF,qBAAqB;YAqCrB,QAAQ;YAeR,eAAe;IAW7B,OAAO,CAAC,OAAO;IAoDf;;;;;OAKG;IACG,OAAO,CACX,OAAO,EAAE,SAAS,EAClB,eAAe,UAAO,GACrB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YAgBd,UAAU;CA6BzB"}
1
+ {"version":3,"file":"ChatLogic.d.ts","sourceRoot":"","sources":["../../src/chat/ChatLogic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAgB1C;;GAEG;AACH,qBAAa,SAAS;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;gBAEV,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY;IAMjE,MAAM,CACV,aAAa,EAAE,SAAS,EACxB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC;YAsCF,qBAAqB;YAqCrB,QAAQ;YAeR,eAAe;IAW7B,OAAO,CAAC,OAAO;IAoDf;;;;;OAKG;IACG,OAAO,CACX,OAAO,EAAE,SAAS,EAClB,eAAe,UAAO,GACrB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YAgBd,UAAU;CA6BzB"}
@@ -49,7 +49,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.ChatLogic = void 0;
51
51
  var rdflib_1 = require("rdflib");
52
- var uri_1 = require("../uri");
52
+ var uri_1 = require("../util/uri");
53
53
  var determineChatContainer_1 = require("./determineChatContainer");
54
54
  var CHAT_LOCATION_IN_CONTAINER = "index.ttl#this";
55
55
  /**