solid-server 5.8.7 → 5.8.8-22f4cfec

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 (685) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/CONTRIBUTING.md +0 -0
  3. package/CONTRIBUTORS.md +0 -0
  4. package/Dockerfile +0 -0
  5. package/LICENSE.md +0 -0
  6. package/README.md +0 -0
  7. package/bin/config.json +0 -0
  8. package/bin/lib/cli-utils.mjs +54 -0
  9. package/bin/lib/cli.mjs +44 -0
  10. package/bin/lib/{init.js → init.mjs} +93 -94
  11. package/bin/lib/{invalidUsernames.js → invalidUsernames.mjs} +136 -148
  12. package/bin/lib/{migrateLegacyResources.js → migrateLegacyResources.mjs} +64 -69
  13. package/bin/lib/{options.js → options.mjs} +379 -405
  14. package/bin/lib/{start.js → start.mjs} +124 -148
  15. package/bin/lib/{updateIndex.js → updateIndex.mjs} +55 -56
  16. package/bin/solid +2 -2
  17. package/bin/solid-test +0 -0
  18. package/common/css/bootstrap.min.css +6 -0
  19. package/common/css/solid.css +0 -0
  20. package/common/fonts/glyphicons-halflings-regular.eot +0 -0
  21. package/common/fonts/glyphicons-halflings-regular.svg +0 -0
  22. package/common/fonts/glyphicons-halflings-regular.ttf +0 -0
  23. package/common/fonts/glyphicons-halflings-regular.woff +0 -0
  24. package/common/fonts/glyphicons-halflings-regular.woff2 +0 -0
  25. package/common/img/solid-emblem.svg +0 -0
  26. package/common/js/auth-buttons.js +0 -0
  27. package/common/js/auth-buttons.mjs +57 -0
  28. package/common/js/index-buttons.js +0 -0
  29. package/common/js/index-buttons.mjs +43 -0
  30. package/common/js/solid.js +0 -0
  31. package/common/js/solid.mjs +456 -0
  32. package/common/well-known/security.txt +0 -0
  33. package/config/defaults.js +0 -0
  34. package/config/defaults.mjs +22 -0
  35. package/config/templates/emails/delete-account.js +49 -0
  36. package/config/templates/emails/delete-account.mjs +31 -0
  37. package/config/templates/emails/invalid-username.js +30 -0
  38. package/config/templates/emails/invalid-username.mjs +27 -0
  39. package/config/templates/emails/reset-password.js +49 -0
  40. package/config/templates/emails/reset-password.mjs +31 -0
  41. package/config/templates/emails/welcome.js +39 -0
  42. package/config/templates/emails/welcome.mjs +23 -0
  43. package/config/templates/new-account/favicon.ico +0 -0
  44. package/config/templates/new-account/favicon.ico.acl +26 -0
  45. package/config/templates/new-account/profile/card$.ttl +26 -0
  46. package/config/templates/new-account/robots.txt +3 -0
  47. package/config/templates/new-account/robots.txt.acl +26 -0
  48. package/config/templates/new-account/settings/prefs.ttl +15 -0
  49. package/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  50. package/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  51. package/{default-templates/new-account/.meta.acl → config/templates/new-account/settings/publicTypeIndex.ttl.acl} +4 -4
  52. package/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  53. package/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  54. package/config/templates/server/favicon.ico +0 -0
  55. package/{.well-known/.acl → config/templates/server/favicon.ico.acl} +2 -2
  56. package/config/templates/server/index.html +54 -0
  57. package/config/templates/server/robots.txt +3 -0
  58. package/{default-templates/server/.well-known/.acl → config/templates/server/robots.txt.acl} +2 -2
  59. package/config/usernames-blacklist.json +0 -0
  60. package/config/views/account/account-deleted.hbs +17 -0
  61. package/config/views/account/delete-confirm.hbs +51 -0
  62. package/config/views/account/delete-link-sent.hbs +17 -0
  63. package/config/views/account/delete.hbs +51 -0
  64. package/config/views/account/invalid-username.hbs +22 -0
  65. package/config/views/account/register-disabled.hbs +6 -0
  66. package/config/views/account/register-form.hbs +133 -0
  67. package/config/views/account/register.hbs +24 -0
  68. package/config/views/auth/auth-hidden-fields.hbs +8 -0
  69. package/config/views/auth/change-password.hbs +58 -0
  70. package/config/views/auth/goodbye.hbs +23 -0
  71. package/config/views/auth/login-required.hbs +34 -0
  72. package/config/views/auth/login-tls.hbs +11 -0
  73. package/config/views/auth/login-username-password.hbs +28 -0
  74. package/config/views/auth/login.hbs +55 -0
  75. package/config/views/auth/no-permission.hbs +29 -0
  76. package/config/views/auth/password-changed.hbs +27 -0
  77. package/config/views/auth/reset-link-sent.hbs +21 -0
  78. package/config/views/auth/reset-password.hbs +52 -0
  79. package/config/views/auth/sharing.hbs +49 -0
  80. package/config/views/shared/create-account.hbs +8 -0
  81. package/config/views/shared/error.hbs +5 -0
  82. package/config.json-default +0 -0
  83. package/coverage/tmp/coverage-2260-1766832656715-0.json +1 -0
  84. package/coverage/tmp/coverage-2261-1766832635310-0.json +1 -0
  85. package/default-templates/emails/delete-account.js +0 -0
  86. package/default-templates/emails/delete-account.mjs +31 -0
  87. package/default-templates/emails/invalid-username.js +0 -0
  88. package/default-templates/emails/invalid-username.mjs +27 -0
  89. package/default-templates/emails/reset-password.js +0 -0
  90. package/default-templates/emails/reset-password.mjs +31 -0
  91. package/default-templates/emails/welcome.js +0 -0
  92. package/default-templates/emails/welcome.mjs +23 -0
  93. package/default-templates/new-account/favicon.ico +0 -0
  94. package/default-templates/new-account/favicon.ico.acl +0 -0
  95. package/default-templates/new-account/profile/card$.ttl +0 -0
  96. package/default-templates/new-account/robots.txt +0 -0
  97. package/default-templates/new-account/robots.txt.acl +0 -0
  98. package/default-templates/new-account/settings/prefs.ttl +0 -0
  99. package/default-templates/new-account/settings/privateTypeIndex.ttl +0 -0
  100. package/default-templates/new-account/settings/publicTypeIndex.ttl +0 -0
  101. package/default-templates/new-account/settings/publicTypeIndex.ttl.acl +0 -0
  102. package/default-templates/new-account/settings/serverSide.ttl.acl +0 -0
  103. package/default-templates/new-account/settings/serverSide.ttl.inactive +0 -0
  104. package/default-templates/server/favicon.ico +0 -0
  105. package/default-templates/server/favicon.ico.acl +0 -0
  106. package/default-templates/server/index.html +0 -0
  107. package/default-templates/server/robots.txt +0 -0
  108. package/default-templates/server/robots.txt.acl +0 -0
  109. package/default-views/account/account-deleted.hbs +0 -0
  110. package/default-views/account/delete-confirm.hbs +0 -0
  111. package/default-views/account/delete-link-sent.hbs +0 -0
  112. package/default-views/account/delete.hbs +0 -0
  113. package/default-views/account/invalid-username.hbs +0 -0
  114. package/default-views/account/register-disabled.hbs +0 -0
  115. package/default-views/account/register-form.hbs +0 -0
  116. package/default-views/account/register.hbs +0 -0
  117. package/default-views/auth/auth-hidden-fields.hbs +0 -0
  118. package/default-views/auth/change-password.hbs +0 -0
  119. package/default-views/auth/goodbye.hbs +0 -0
  120. package/default-views/auth/login-required.hbs +0 -0
  121. package/default-views/auth/login-tls.hbs +0 -0
  122. package/default-views/auth/login-username-password.hbs +0 -0
  123. package/default-views/auth/login.hbs +0 -0
  124. package/default-views/auth/no-permission.hbs +0 -0
  125. package/default-views/auth/password-changed.hbs +0 -0
  126. package/default-views/auth/reset-link-sent.hbs +0 -0
  127. package/default-views/auth/reset-password.hbs +0 -0
  128. package/default-views/auth/sharing.hbs +0 -0
  129. package/default-views/shared/create-account.hbs +0 -0
  130. package/default-views/shared/error.hbs +0 -0
  131. package/docker-compose.yml +0 -0
  132. package/docker-image/CONTRIBUTING.md +33 -0
  133. package/docker-image/Makefile +32 -0
  134. package/docker-image/README.md +65 -0
  135. package/docker-image/examples/docker-compose.all-in-one.yml +76 -0
  136. package/docker-image/examples/docker-compose.nginx.yml +51 -0
  137. package/docker-image/examples/docker-compose.simple.yml +34 -0
  138. package/docker-image/src/Dockerfile +34 -0
  139. package/docker-image/src/checks.sh +56 -0
  140. package/docker-image/src/create-temporary-cert.sh +14 -0
  141. package/docker-image/src/entrypoint.sh +8 -0
  142. package/{common/img/.gitkeep → docker-image/test/__init__.py} +0 -0
  143. package/docker-image/test/conftest.py +15 -0
  144. package/docker-image/test/test_image_foundations.py +51 -0
  145. package/docker-image/test/test_non_accessible_key_cert.py +36 -0
  146. package/docker-image/test/test_precondition_checks.py +41 -0
  147. package/docker-image/test/test_solid_default_config.py +66 -0
  148. package/docker-image/test/test_volumes.py +55 -0
  149. package/docker-image/test/wait_for_container.py +8 -0
  150. package/docs/how-to-delete-your-account.md +0 -0
  151. package/docs/login-and-grant-access-to-application.md +0 -0
  152. package/examples/custom-error-handling.js +0 -0
  153. package/examples/custom-error-handling.mjs +29 -0
  154. package/examples/ldp-with-webid.js +0 -0
  155. package/examples/ldp-with-webid.mjs +12 -0
  156. package/examples/simple-express-app.js +0 -0
  157. package/examples/simple-express-app.mjs +20 -0
  158. package/examples/simple-ldp-server.js +0 -0
  159. package/examples/simple-ldp-server.mjs +8 -0
  160. package/favicon.ico +0 -0
  161. package/favicon.ico.acl +0 -0
  162. package/index.cjs +4 -0
  163. package/index.html +0 -0
  164. package/index.mjs +23 -0
  165. package/lib/{acl-checker.js → acl-checker.mjs} +13 -15
  166. package/lib/api/accounts/{user-accounts.js → user-accounts.mjs} +17 -16
  167. package/lib/api/authn/{force-user.js → force-user.mjs} +5 -4
  168. package/lib/api/authn/index.mjs +8 -0
  169. package/lib/api/authn/{webid-oidc.js → webid-oidc.mjs} +27 -20
  170. package/lib/api/authn/{webid-tls.js → webid-tls.mjs} +12 -11
  171. package/lib/api/index.mjs +7 -0
  172. package/lib/{capability-discovery.js → capability-discovery.mjs} +3 -6
  173. package/lib/common/{fs-utils.js → fs-utils.mjs} +35 -43
  174. package/lib/common/template-utils.mjs +29 -0
  175. package/lib/common/{user-utils.js → user-utils.mjs} +24 -28
  176. package/lib/{create-app.js → create-app.mjs} +372 -361
  177. package/lib/{create-server.js → create-server.mjs} +32 -11
  178. package/lib/debug.mjs +37 -0
  179. package/lib/handlers/{allow.js → allow.mjs} +79 -83
  180. package/lib/handlers/{auth-proxy.js → auth-proxy.mjs} +4 -5
  181. package/lib/handlers/{copy.js → copy.mjs} +37 -39
  182. package/lib/handlers/{cors-proxy.js → cors-proxy.mjs} +9 -11
  183. package/lib/handlers/{delete.js → delete.mjs} +20 -22
  184. package/lib/handlers/{error-pages.js → error-pages.mjs} +144 -212
  185. package/lib/handlers/{get.js → get.mjs} +254 -252
  186. package/lib/handlers/{index.js → index.mjs} +7 -8
  187. package/lib/handlers/{notify.js → notify.mjs} +8 -10
  188. package/lib/handlers/{options.js → options.mjs} +3 -5
  189. package/lib/handlers/patch/{n3-patch-parser.js → n3-patch-parser.mjs} +57 -59
  190. package/lib/handlers/patch/{sparql-update-parser.js → sparql-update-parser.mjs} +14 -16
  191. package/lib/handlers/{patch.js → patch.mjs} +241 -235
  192. package/lib/handlers/{post.js → post.mjs} +101 -99
  193. package/lib/handlers/{put.js → put.mjs} +101 -105
  194. package/lib/handlers/{restrict-to-top-domain.js → restrict-to-top-domain.mjs} +2 -2
  195. package/lib/{header.js → header.mjs} +138 -143
  196. package/lib/{http-error.js → http-error.mjs} +35 -34
  197. package/lib/{ldp-container.js → ldp-container.mjs} +10 -12
  198. package/lib/ldp-copy.mjs +82 -0
  199. package/lib/ldp-middleware.mjs +38 -0
  200. package/lib/{ldp.js → ldp.mjs} +286 -75
  201. package/lib/{lock.js → lock.mjs} +10 -10
  202. package/lib/{metadata.js → metadata.mjs} +11 -11
  203. package/lib/models/account-manager.mjs +297 -0
  204. package/lib/models/account-template.mjs +70 -0
  205. package/lib/models/authenticator.mjs +161 -0
  206. package/lib/models/oidc-manager.mjs +23 -0
  207. package/lib/models/solid-host.mjs +63 -0
  208. package/lib/models/user-account.mjs +50 -0
  209. package/lib/models/webid-tls-certificate.mjs +97 -0
  210. package/lib/{payment-pointer-discovery.js → payment-pointer-discovery.mjs} +5 -8
  211. package/lib/{rdf-notification-template.js → rdf-notification-template.mjs} +3 -5
  212. package/lib/requests/add-cert-request.mjs +70 -0
  213. package/lib/requests/auth-request.mjs +151 -0
  214. package/lib/requests/{create-account-request.js → create-account-request.mjs} +249 -452
  215. package/lib/requests/delete-account-confirm-request.mjs +85 -0
  216. package/lib/requests/{delete-account-request.js → delete-account-request.mjs} +73 -134
  217. package/lib/requests/login-request.mjs +89 -0
  218. package/lib/requests/{password-change-request.js → password-change-request.mjs} +132 -201
  219. package/lib/requests/{password-reset-email-request.js → password-reset-email-request.mjs} +123 -202
  220. package/lib/requests/password-reset-request.mjs +47 -0
  221. package/lib/requests/register-request.mjs +48 -0
  222. package/lib/requests/{sharing-request.js → sharing-request.mjs} +174 -261
  223. package/lib/{resource-mapper.js → resource-mapper.mjs} +7 -6
  224. package/lib/{server-config.js → server-config.mjs} +15 -20
  225. package/lib/services/{blacklist-service.js → blacklist-service.mjs} +36 -33
  226. package/lib/services/email-service.mjs +76 -0
  227. package/lib/services/{token-service.js → token-service.mjs} +36 -44
  228. package/lib/{utils.js → utils.mjs} +309 -254
  229. package/lib/webid/{index.js → index.mjs} +9 -13
  230. package/lib/webid/lib/{get.js → get.mjs} +31 -35
  231. package/lib/webid/lib/{parse.js → parse.mjs} +10 -12
  232. package/lib/webid/lib/verify.mjs +77 -0
  233. package/lib/webid/tls/generate.mjs +53 -0
  234. package/lib/webid/tls/index.mjs +7 -0
  235. package/package.json +60 -40
  236. package/renovate.json +0 -0
  237. package/robots.txt +0 -0
  238. package/robots.txt.acl +0 -0
  239. package/solid-server-5.8.8.tgz +0 -0
  240. package/static/account-recovery.html +0 -0
  241. package/static/popup-redirect.html +0 -0
  242. package/static/signup.html +0 -0
  243. package/static/signup.html.acl +0 -0
  244. package/test/index.mjs +168 -0
  245. package/test/integration/account-creation-tls-test.mjs +127 -0
  246. package/test/integration/account-manager-test.mjs +151 -0
  247. package/test/integration/account-template-test.mjs +136 -0
  248. package/test/integration/acl-oidc-test.mjs +1048 -0
  249. package/test/integration/acl-tls-test.mjs +964 -0
  250. package/test/integration/auth-proxy-test.mjs +144 -0
  251. package/test/integration/authentication-oidc-test.mjs +812 -0
  252. package/test/integration/authentication-oidc-with-strict-origins-turned-off-test.mjs +638 -0
  253. package/test/integration/capability-discovery-test.mjs +116 -0
  254. package/test/integration/cors-proxy-test.mjs +145 -0
  255. package/test/integration/errors-oidc-test.mjs +109 -0
  256. package/test/integration/errors-test.mjs +49 -0
  257. package/test/integration/formats-test.mjs +136 -0
  258. package/test/integration/header-test.mjs +101 -0
  259. package/test/integration/http-copy-test.mjs +109 -0
  260. package/test/integration/http-test.mjs +1197 -0
  261. package/test/integration/ldp-test.mjs +528 -0
  262. package/test/integration/oidc-manager-test.mjs +42 -0
  263. package/test/integration/params-test.mjs +192 -0
  264. package/test/integration/patch-sparql-update-test.mjs +195 -0
  265. package/test/integration/patch-test.mjs +590 -0
  266. package/test/integration/payment-pointer-test.mjs +155 -0
  267. package/test/integration/prep-test.mjs +314 -0
  268. package/test/integration/quota-test.mjs +51 -0
  269. package/test/integration/special-root-acl-handling-test.mjs +68 -0
  270. package/test/integration/validate-tts-test.mjs +57 -0
  271. package/test/integration/www-account-creation-oidc-test.mjs +311 -0
  272. package/test/keys/cert.pem +21 -0
  273. package/test/keys/client-cert.pem +19 -0
  274. package/test/keys/client-key.pem +27 -0
  275. package/test/keys/key.pem +27 -0
  276. package/test/keys/user1-cert.pem +23 -0
  277. package/test/keys/user1-key.pem +28 -0
  278. package/test/keys/user2-cert.pem +23 -0
  279. package/test/keys/user2-key.pem +27 -0
  280. package/test/mocha.opts +2 -0
  281. package/test/resources/Makefile +146 -0
  282. package/test/resources/accounts/alice.localhost/profile/card +0 -0
  283. package/test/resources/accounts/db/oidc/op/clients/_key_5319f8e8e4ea3214c2e92b252520d355.json +1 -0
  284. package/test/resources/accounts/db/oidc/op/provider.json +763 -0
  285. package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -0
  286. package/test/resources/accounts/localhost/samplePublicContainer/nicola.jpg +0 -0
  287. package/test/resources/accounts/tim.localhost/hello.html +9 -0
  288. package/test/resources/accounts/tim.localhost/profile/card +0 -0
  289. package/test/resources/accounts-acl/config/templates/emails/welcome-test.js +39 -0
  290. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico +0 -0
  291. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico.acl +26 -0
  292. package/test/resources/accounts-acl/config/templates/new-account/index.html +28 -0
  293. package/test/resources/accounts-acl/config/templates/new-account/index.html.acl +22 -0
  294. package/test/resources/accounts-acl/config/templates/new-account/profile/card +27 -0
  295. package/{default-templates/new-account/inbox/.acl → test/resources/accounts-acl/config/templates/new-account/profile/card.acl} +5 -6
  296. package/test/resources/accounts-acl/config/templates/new-account/settings/prefs.ttl +9 -0
  297. package/test/resources/accounts-acl/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  298. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  299. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  300. package/test/resources/accounts-acl/config/templates/new-account/settings/serverSide.ttl +14 -0
  301. package/test/resources/accounts-acl/config/templates/server/index.html +35 -0
  302. package/{.acl → test/resources/accounts-acl/config/templates/server/index.html.acl} +4 -3
  303. package/test/resources/accounts-acl/config/views/account/register.hbs +58 -0
  304. package/test/resources/accounts-acl/config/views/auth/consent.hbs +49 -0
  305. package/test/resources/accounts-acl/config/views/auth/goodbye.hbs +20 -0
  306. package/test/resources/accounts-acl/config/views/auth/login-required.hbs +0 -0
  307. package/test/resources/accounts-acl/config/views/auth/login.hbs +51 -0
  308. package/test/resources/accounts-acl/config/views/auth/no-permission.hbs +0 -0
  309. package/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json +1 -0
  310. package/test/resources/accounts-acl/db/oidc/op/provider.json +763 -0
  311. package/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json +1 -0
  312. package/test/resources/accounts-acl/localhost/favicon.ico +0 -0
  313. package/test/resources/accounts-acl/localhost/index.html +35 -0
  314. package/{default-templates/server/.acl → test/resources/accounts-acl/localhost/index.html.acl} +4 -3
  315. package/test/resources/accounts-acl/nicola.localhost/index.html +1 -0
  316. package/test/resources/accounts-acl/nicola.localhost/index.html.acl +10 -0
  317. package/test/resources/accounts-acl/quota/settings/serverSide.ttl +11 -0
  318. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl +1 -0
  319. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl.acl +8 -0
  320. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl +1 -0
  321. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  322. package/test/resources/accounts-acl/tim.localhost/fake-account/hello.html +9 -0
  323. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing-error.ttl +1 -0
  324. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing.ttl +14 -0
  325. package/test/resources/accounts-acl/tim.localhost/group/test-folder/some-other-file.txt +1 -0
  326. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt +1 -0
  327. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt.acl +8 -0
  328. package/test/resources/accounts-acl/tim.localhost/no-acl/test-file.html +1 -0
  329. package/test/resources/accounts-acl/tim.localhost/read-acl/deeper-tree/acls-only-on-top/example.ttl +1 -0
  330. package/test/resources/accounts-acl/tim.localhost/write-acl/test-file$.txt +1 -0
  331. package/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_9c0fd8442675a1afbe5115b9ae300c65.json +1 -0
  332. package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +761 -0
  333. package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -0
  334. package/test/resources/accounts-scenario/alice/private-for-alice.txt +1 -0
  335. package/test/resources/accounts-scenario/alice/private-for-alice.txt.acl +12 -0
  336. package/test/resources/accounts-scenario/alice/profile/card$.ttl +10 -0
  337. package/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_f15f340b6dc71b68d20eca0d7e87a972.json +1 -0
  338. package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +761 -0
  339. package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -0
  340. package/test/resources/accounts-scenario/bob/profile/card$.ttl +5 -0
  341. package/test/resources/accounts-scenario/bob/shared-with-alice.txt +1 -0
  342. package/test/resources/accounts-scenario/bob/shared-with-alice.txt.acl +15 -0
  343. package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/_key_7c634dfe325475cc8750e19c72acf6d9.json +1 -0
  344. package/test/resources/accounts-scenario/charlie/db/oidc/op/provider.json +759 -0
  345. package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -0
  346. package/test/resources/accounts-scenario/charlie/profile/card$.ttl +5 -0
  347. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/_key_3f1cecaefd21253767f6e047bd9b572f.json +1 -0
  348. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json +763 -0
  349. package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -0
  350. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt +1 -0
  351. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt.acl +12 -0
  352. package/test/resources/accounts-strict-origin-off/alice/profile/card$.ttl +10 -0
  353. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/_key_a17f603b5907c97a5fac61a2eea7ecb2.json +1 -0
  354. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json +763 -0
  355. package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -0
  356. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt +1 -0
  357. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt.acl +15 -0
  358. package/test/resources/acl-tls/config/templates/emails/delete-account.js +49 -0
  359. package/test/resources/acl-tls/config/templates/emails/invalid-username.js +30 -0
  360. package/test/resources/acl-tls/config/templates/emails/reset-password.js +49 -0
  361. package/test/resources/acl-tls/config/templates/emails/welcome.js +39 -0
  362. package/test/resources/acl-tls/config/templates/new-account/favicon.ico +0 -0
  363. package/test/resources/acl-tls/config/templates/new-account/favicon.ico.acl +26 -0
  364. package/test/resources/acl-tls/config/templates/new-account/profile/card$.ttl +26 -0
  365. package/test/resources/acl-tls/config/templates/new-account/robots.txt +3 -0
  366. package/test/resources/acl-tls/config/templates/new-account/robots.txt.acl +26 -0
  367. package/test/resources/acl-tls/config/templates/new-account/settings/prefs.ttl +15 -0
  368. package/test/resources/acl-tls/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  369. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  370. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  371. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  372. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  373. package/test/resources/acl-tls/config/templates/server/favicon.ico +0 -0
  374. package/test/resources/acl-tls/config/templates/server/favicon.ico.acl +15 -0
  375. package/test/resources/acl-tls/config/templates/server/index.html +55 -0
  376. package/test/resources/acl-tls/config/templates/server/robots.txt +3 -0
  377. package/test/resources/acl-tls/config/templates/server/robots.txt.acl +15 -0
  378. package/test/resources/acl-tls/config/views/account/account-deleted.hbs +17 -0
  379. package/test/resources/acl-tls/config/views/account/delete-confirm.hbs +51 -0
  380. package/test/resources/acl-tls/config/views/account/delete-link-sent.hbs +17 -0
  381. package/test/resources/acl-tls/config/views/account/delete.hbs +51 -0
  382. package/test/resources/acl-tls/config/views/account/invalid-username.hbs +22 -0
  383. package/test/resources/acl-tls/config/views/account/register-disabled.hbs +6 -0
  384. package/test/resources/acl-tls/config/views/account/register-form.hbs +147 -0
  385. package/test/resources/acl-tls/config/views/account/register.hbs +24 -0
  386. package/test/resources/acl-tls/config/views/auth/auth-hidden-fields.hbs +8 -0
  387. package/test/resources/acl-tls/config/views/auth/change-password.hbs +58 -0
  388. package/test/resources/acl-tls/config/views/auth/goodbye.hbs +23 -0
  389. package/test/resources/acl-tls/config/views/auth/login-required.hbs +34 -0
  390. package/test/resources/acl-tls/config/views/auth/login-tls.hbs +11 -0
  391. package/test/resources/acl-tls/config/views/auth/login-username-password.hbs +28 -0
  392. package/test/resources/acl-tls/config/views/auth/login.hbs +55 -0
  393. package/test/resources/acl-tls/config/views/auth/no-permission.hbs +29 -0
  394. package/test/resources/acl-tls/config/views/auth/password-changed.hbs +27 -0
  395. package/test/resources/acl-tls/config/views/auth/reset-link-sent.hbs +21 -0
  396. package/test/resources/acl-tls/config/views/auth/reset-password.hbs +52 -0
  397. package/test/resources/acl-tls/config/views/auth/sharing.hbs +49 -0
  398. package/test/resources/acl-tls/config/views/shared/create-account.hbs +8 -0
  399. package/test/resources/acl-tls/config/views/shared/error.hbs +5 -0
  400. package/test/resources/acl-tls/localhost/favicon.ico +0 -0
  401. package/test/resources/acl-tls/localhost/favicon.ico.acl +15 -0
  402. package/test/resources/acl-tls/localhost/index.html +48 -0
  403. package/test/resources/acl-tls/localhost/robots.txt +3 -0
  404. package/test/resources/acl-tls/localhost/robots.txt.acl +15 -0
  405. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl +1 -0
  406. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl.acl +8 -0
  407. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl +1 -0
  408. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  409. package/test/resources/acl-tls/tim.localhost/fake-account/hello.html +9 -0
  410. package/test/resources/acl-tls/tim.localhost/no-acl/test-file.html +1 -0
  411. package/test/resources/acl-tls/tim.localhost/profile/card$.ttl +17 -0
  412. package/test/resources/acl-tls/write-acl/test-file$.ttl +1 -0
  413. package/test/resources/auth-proxy/index.html +0 -0
  414. package/test/resources/auth-proxy/index.html.acl +0 -0
  415. package/test/resources/config/templates/emails/delete-account.js +49 -0
  416. package/test/resources/config/templates/emails/delete-account.mjs +31 -0
  417. package/test/resources/config/templates/emails/invalid-username.js +30 -0
  418. package/test/resources/config/templates/emails/invalid-username.mjs +27 -0
  419. package/test/resources/config/templates/emails/reset-password.js +49 -0
  420. package/test/resources/config/templates/emails/reset-password.mjs +31 -0
  421. package/test/resources/config/templates/emails/welcome.js +39 -0
  422. package/test/resources/config/templates/emails/welcome.mjs +23 -0
  423. package/test/resources/config/templates/new-account/favicon.ico +0 -0
  424. package/test/resources/config/templates/new-account/favicon.ico.acl +26 -0
  425. package/test/resources/config/templates/new-account/profile/card$.ttl +26 -0
  426. package/test/resources/config/templates/new-account/robots.txt +3 -0
  427. package/test/resources/config/templates/new-account/robots.txt.acl +26 -0
  428. package/test/resources/config/templates/new-account/settings/prefs.ttl +15 -0
  429. package/test/resources/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  430. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  431. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  432. package/test/resources/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  433. package/test/resources/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  434. package/test/resources/config/templates/server/favicon.ico +0 -0
  435. package/test/resources/config/templates/server/favicon.ico.acl +15 -0
  436. package/test/resources/config/templates/server/index.html +54 -0
  437. package/test/resources/config/templates/server/robots.txt +3 -0
  438. package/test/resources/config/templates/server/robots.txt.acl +15 -0
  439. package/test/resources/config/views/account/account-deleted.hbs +17 -0
  440. package/test/resources/config/views/account/delete-confirm.hbs +51 -0
  441. package/test/resources/config/views/account/delete-link-sent.hbs +17 -0
  442. package/test/resources/config/views/account/delete.hbs +51 -0
  443. package/test/resources/config/views/account/invalid-username.hbs +22 -0
  444. package/test/resources/config/views/account/register-disabled.hbs +6 -0
  445. package/test/resources/config/views/account/register-form.hbs +133 -0
  446. package/test/resources/config/views/account/register.hbs +24 -0
  447. package/test/resources/config/views/auth/auth-hidden-fields.hbs +8 -0
  448. package/test/resources/config/views/auth/change-password.hbs +58 -0
  449. package/test/resources/config/views/auth/goodbye.hbs +23 -0
  450. package/test/resources/config/views/auth/login-required.hbs +34 -0
  451. package/test/resources/config/views/auth/login-tls.hbs +11 -0
  452. package/test/resources/config/views/auth/login-username-password.hbs +28 -0
  453. package/test/resources/config/views/auth/login.hbs +55 -0
  454. package/test/resources/config/views/auth/no-permission.hbs +29 -0
  455. package/test/resources/config/views/auth/password-changed.hbs +27 -0
  456. package/test/resources/config/views/auth/reset-link-sent.hbs +21 -0
  457. package/test/resources/config/views/auth/reset-password.hbs +52 -0
  458. package/test/resources/config/views/auth/sharing.hbs +49 -0
  459. package/test/resources/config/views/shared/create-account.hbs +8 -0
  460. package/test/resources/config/views/shared/error.hbs +5 -0
  461. package/test/resources/empty.spatch +0 -0
  462. package/test/resources/errorPages/401.html +5 -0
  463. package/test/resources/errorPages/403.html +5 -0
  464. package/test/resources/errorPages/404.html +5 -0
  465. package/test/resources/errorPages/405.html +5 -0
  466. package/test/resources/errorPages/415.html +5 -0
  467. package/test/resources/errorPages/500.html +5 -0
  468. package/test/resources/example_spkac.cnf +1 -0
  469. package/test/resources/external-servers/example.com/jwks.json +81 -0
  470. package/test/resources/external-servers/example.com/openid-configuration.json +53 -0
  471. package/test/resources/favicon.ico +0 -0
  472. package/test/resources/favicon.ico.acl +15 -0
  473. package/test/resources/headers/index.html +0 -0
  474. package/test/resources/headers/public-ra +0 -0
  475. package/test/resources/headers/public-ra.acl +7 -0
  476. package/test/resources/headers/user-rw-public-r +0 -0
  477. package/test/resources/headers/user-rw-public-r.acl +12 -0
  478. package/test/resources/headers/user-rwac-public-0 +0 -0
  479. package/test/resources/headers/user-rwac-public-0.acl +7 -0
  480. package/test/resources/hello.html +3 -0
  481. package/test/resources/invalid1.ttl +13 -0
  482. package/test/resources/invalid2.ttl +9 -0
  483. package/test/resources/ldpatch-example-final.ttl +23 -0
  484. package/test/resources/ldpatch-example-initial.ttl +22 -0
  485. package/test/resources/ldpatch-example-patch-1.spatch +8 -0
  486. package/test/resources/ldpatch-example-patch-2.spatch +12 -0
  487. package/test/resources/ldpatch-example-patch-3.spatch +14 -0
  488. package/test/resources/ldpatch-example-patch.ldpatch +25 -0
  489. package/test/resources/ldpatch-example-patch.spatch +24 -0
  490. package/test/resources/lennon.jsonld +7 -0
  491. package/test/resources/lfs-0.sparql +9 -0
  492. package/test/resources/lfs-1-final.json +10 -0
  493. package/test/resources/lfs-1.sparql +11 -0
  494. package/test/resources/messaging-scenario/user1.databox.me/profile/card +21 -0
  495. package/test/resources/nicola.jpg +0 -0
  496. package/test/resources/patch/append-only.ttl +2 -0
  497. package/test/resources/patch/append-only.ttl.acl +6 -0
  498. package/test/resources/patch/favicon.ico +0 -0
  499. package/test/resources/patch/favicon.ico.acl +15 -0
  500. package/test/resources/patch/index.html +0 -0
  501. package/test/resources/patch/read-append.ttl +2 -0
  502. package/test/resources/patch/read-append.ttl.acl +6 -0
  503. package/test/resources/patch/read-only.ttl +2 -0
  504. package/test/resources/patch/read-only.ttl.acl +6 -0
  505. package/test/resources/patch/read-write.ttl +2 -0
  506. package/test/resources/patch/read-write.ttl.acl +6 -0
  507. package/test/resources/patch/robots.txt +3 -0
  508. package/test/resources/patch/robots.txt.acl +15 -0
  509. package/test/resources/patch/write-only.ttl +2 -0
  510. package/test/resources/patch/write-only.ttl.acl +6 -0
  511. package/test/resources/patch-1-initial.ttl +3 -0
  512. package/test/resources/patch-2-final.ttl +2 -0
  513. package/test/resources/patch-2-initial.ttl +3 -0
  514. package/test/resources/patch-2.spatch +2 -0
  515. package/test/resources/patch-2n.spatch +2 -0
  516. package/test/resources/patch-3-final.ttl +28 -0
  517. package/test/resources/patch-4-final.ttl +29 -0
  518. package/test/resources/patch-5-final.ttl +1 -0
  519. package/test/resources/patch-5-initial.ttl +3 -0
  520. package/test/resources/patch-5.spatch +2 -0
  521. package/test/resources/put-input-2.html +13 -0
  522. package/test/resources/put-input.txt +6 -0
  523. package/test/resources/robots.txt +3 -0
  524. package/test/resources/robots.txt.acl +15 -0
  525. package/test/resources/sampleContainer/blank +0 -0
  526. package/test/resources/sampleContainer/cert.pkcs +0 -0
  527. package/test/resources/sampleContainer/example.ttl.old +1 -0
  528. package/test/resources/sampleContainer/example1.ttl +12 -0
  529. package/test/resources/sampleContainer/example2.ttl +3 -0
  530. package/test/resources/sampleContainer/example3.ttl +7 -0
  531. package/test/resources/sampleContainer/example4$.ttl +7 -0
  532. package/test/resources/sampleContainer/filename with spaces.txt +0 -0
  533. package/test/resources/sampleContainer/index.html +9 -0
  534. package/test/resources/sampleContainer/post2.ttl +6 -0
  535. package/test/resources/sampleContainer/put1.ttl +13 -0
  536. package/test/resources/sampleContainer/solid.png +0 -0
  537. package/test/resources/sampleContainer/user1.pfx +0 -0
  538. package/test/resources/sampleContainer/user2.pfx +0 -0
  539. package/test/resources/sampleContainer2/example1.ttl +10 -0
  540. package/test/resources/sampleContainer2/example2.ttl +7 -0
  541. package/test/resources/timbl.jpg +0 -0
  542. package/test/scenarios.md +23 -0
  543. package/test/surface/docker/cookie/Dockerfile +6 -0
  544. package/test/surface/docker/cookie/app/index.js +29 -0
  545. package/test/surface/docker/cookie/app/package-lock.json +13 -0
  546. package/test/surface/docker/cookie/app/package.json +14 -0
  547. package/test/surface/docker/server/Dockerfile +19 -0
  548. package/test/surface/docker/server/config/defaults.js +10 -0
  549. package/test/surface/docker/server/config/templates/emails/delete-account.js +49 -0
  550. package/test/surface/docker/server/config/templates/emails/invalid-username.js +30 -0
  551. package/test/surface/docker/server/config/templates/emails/reset-password.js +49 -0
  552. package/test/surface/docker/server/config/templates/emails/welcome.js +39 -0
  553. package/test/surface/docker/server/config/templates/new-account/favicon.ico +0 -0
  554. package/test/surface/docker/server/config/templates/new-account/favicon.ico.acl +26 -0
  555. package/test/surface/docker/server/config/templates/new-account/profile/card$.ttl +26 -0
  556. package/test/surface/docker/server/config/templates/new-account/robots.txt +3 -0
  557. package/test/surface/docker/server/config/templates/new-account/robots.txt.acl +26 -0
  558. package/test/surface/docker/server/config/templates/new-account/settings/prefs.ttl +15 -0
  559. package/test/surface/docker/server/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  560. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  561. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  562. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  563. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  564. package/test/surface/docker/server/config/templates/server/favicon.ico +0 -0
  565. package/test/surface/docker/server/config/templates/server/favicon.ico.acl +15 -0
  566. package/test/surface/docker/server/config/templates/server/index.html +55 -0
  567. package/test/surface/docker/server/config/templates/server/robots.txt +3 -0
  568. package/test/surface/docker/server/config/templates/server/robots.txt.acl +15 -0
  569. package/test/surface/docker/server/config/usernames-blacklist.json +4 -0
  570. package/test/surface/docker/server/config/views/account/account-deleted.hbs +17 -0
  571. package/test/surface/docker/server/config/views/account/delete-confirm.hbs +51 -0
  572. package/test/surface/docker/server/config/views/account/delete-link-sent.hbs +17 -0
  573. package/test/surface/docker/server/config/views/account/delete.hbs +51 -0
  574. package/test/surface/docker/server/config/views/account/invalid-username.hbs +22 -0
  575. package/test/surface/docker/server/config/views/account/register-disabled.hbs +6 -0
  576. package/test/surface/docker/server/config/views/account/register-form.hbs +147 -0
  577. package/test/surface/docker/server/config/views/account/register.hbs +24 -0
  578. package/test/surface/docker/server/config/views/auth/auth-hidden-fields.hbs +8 -0
  579. package/test/surface/docker/server/config/views/auth/change-password.hbs +58 -0
  580. package/test/surface/docker/server/config/views/auth/goodbye.hbs +23 -0
  581. package/test/surface/docker/server/config/views/auth/login-required.hbs +34 -0
  582. package/test/surface/docker/server/config/views/auth/login-tls.hbs +11 -0
  583. package/test/surface/docker/server/config/views/auth/login-username-password.hbs +28 -0
  584. package/test/surface/docker/server/config/views/auth/login.hbs +55 -0
  585. package/test/surface/docker/server/config/views/auth/no-permission.hbs +29 -0
  586. package/test/surface/docker/server/config/views/auth/password-changed.hbs +27 -0
  587. package/test/surface/docker/server/config/views/auth/reset-link-sent.hbs +21 -0
  588. package/test/surface/docker/server/config/views/auth/reset-password.hbs +52 -0
  589. package/test/surface/docker/server/config/views/auth/sharing.hbs +49 -0
  590. package/test/surface/docker/server/config/views/shared/create-account.hbs +8 -0
  591. package/test/surface/docker/server/config/views/shared/error.hbs +5 -0
  592. package/test/surface/docker/server/config.json +22 -0
  593. package/test/surface/docker/server/data/favicon.ico +0 -0
  594. package/test/surface/docker/server/data/favicon.ico.acl +26 -0
  595. package/test/surface/docker/server/data/index.html +48 -0
  596. package/test/surface/docker/server/data/profile/card$.ttl +31 -0
  597. package/test/surface/docker/server/data/robots.txt +3 -0
  598. package/test/surface/docker/server/data/robots.txt.acl +26 -0
  599. package/test/surface/docker/server/data/settings/prefs.ttl +15 -0
  600. package/test/surface/docker/server/data/settings/privateTypeIndex.ttl +4 -0
  601. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl +4 -0
  602. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl.acl +25 -0
  603. package/test/surface/docker/server/data/settings/serverSide.ttl +0 -0
  604. package/test/surface/docker/server/data/settings/serverSide.ttl.acl +13 -0
  605. package/test/surface/docker/server/data/settings/serverSide.ttl.inactive +12 -0
  606. package/test/surface/docker/server/env.list +4 -0
  607. package/test/surface/docker/solid-crud/Dockerfile +4 -0
  608. package/test/surface/docker/web-access-control/Dockerfile +1 -0
  609. package/test/surface/docker/webid-provider/Dockerfile +1 -0
  610. package/test/surface/run-solid-test-suite.sh +75 -0
  611. package/test/surface/server-env.list +5 -0
  612. package/test/surface/solid-crud-tests-env.list +5 -0
  613. package/test/surface/thirdparty-config.json +23 -0
  614. package/test/surface/thirdparty-env.list +6 -0
  615. package/test/surface/web-access-control-tests-env.list +6 -0
  616. package/test/surface/webid-provider-tests-env.list +4 -0
  617. package/test/test-helpers.mjs +63 -0
  618. package/test/unit/account-manager-test.mjs +610 -0
  619. package/test/unit/account-template-test.mjs +59 -0
  620. package/test/unit/acl-checker-test.mjs +51 -0
  621. package/test/unit/add-cert-request-test.mjs +120 -0
  622. package/test/unit/auth-handlers-test.mjs +108 -0
  623. package/test/unit/auth-proxy-test.mjs +224 -0
  624. package/test/unit/auth-request-test.mjs +96 -0
  625. package/test/unit/authenticator-test.mjs +34 -0
  626. package/test/unit/blacklist-service-test.mjs +49 -0
  627. package/test/unit/create-account-request-test.mjs +306 -0
  628. package/test/unit/delete-account-confirm-request-test.mjs +234 -0
  629. package/test/unit/delete-account-request-test.mjs +180 -0
  630. package/test/unit/email-service-test.mjs +166 -0
  631. package/test/unit/email-welcome-test.mjs +81 -0
  632. package/test/unit/error-pages-test.mjs +100 -0
  633. package/test/unit/esm-imports.test.mjs +149 -0
  634. package/test/unit/force-user-test.mjs +73 -0
  635. package/test/unit/getAvailableUrl-test.mjs +30 -0
  636. package/test/unit/getTrustedOrigins-test.mjs +20 -0
  637. package/test/unit/login-request-test.mjs +246 -0
  638. package/test/unit/oidc-manager-test.mjs +50 -0
  639. package/test/unit/password-authenticator-test.mjs +125 -0
  640. package/test/unit/password-change-request-test.mjs +259 -0
  641. package/test/unit/password-reset-email-request-test.mjs +234 -0
  642. package/test/unit/resource-mapper-test.mjs +673 -0
  643. package/test/unit/solid-host-test.mjs +119 -0
  644. package/test/unit/tls-authenticator-test.mjs +174 -0
  645. package/test/unit/token-service-test.mjs +82 -0
  646. package/test/unit/user-account-test.mjs +38 -0
  647. package/test/unit/user-accounts-api-test.mjs +59 -0
  648. package/test/unit/user-utils-test.mjs +64 -0
  649. package/test/unit/utils-test.mjs +114 -0
  650. package/test/utils/index.mjs +167 -0
  651. package/test/utils.mjs +205 -0
  652. package/test/validate-turtle.mjs +43 -0
  653. package/.github/workflows/ci.yml +0 -113
  654. package/.nvmrc +0 -1
  655. package/.snyk +0 -35
  656. package/bin/lib/cli-utils.js +0 -85
  657. package/bin/lib/cli.js +0 -39
  658. package/bin/solid.js +0 -3
  659. package/default-templates/new-account/.acl +0 -26
  660. package/default-templates/new-account/.meta +0 -5
  661. package/default-templates/new-account/.well-known/.acl +0 -19
  662. package/default-templates/new-account/private/.acl +0 -10
  663. package/default-templates/new-account/profile/.acl +0 -19
  664. package/default-templates/new-account/public/.acl +0 -19
  665. package/default-templates/new-account/settings/.acl +0 -20
  666. package/index.js +0 -3
  667. package/lib/api/authn/index.js +0 -5
  668. package/lib/api/index.js +0 -6
  669. package/lib/common/template-utils.js +0 -50
  670. package/lib/debug.js +0 -18
  671. package/lib/ldp-copy.js +0 -73
  672. package/lib/ldp-middleware.js +0 -40
  673. package/lib/models/account-manager.js +0 -604
  674. package/lib/models/account-template.js +0 -156
  675. package/lib/models/authenticator.js +0 -337
  676. package/lib/models/oidc-manager.js +0 -53
  677. package/lib/models/solid-host.js +0 -131
  678. package/lib/models/user-account.js +0 -113
  679. package/lib/models/webid-tls-certificate.js +0 -184
  680. package/lib/requests/add-cert-request.js +0 -138
  681. package/lib/requests/auth-request.js +0 -234
  682. package/lib/requests/delete-account-confirm-request.js +0 -170
  683. package/lib/requests/login-request.js +0 -205
  684. package/lib/services/email-service.js +0 -162
  685. package/lib/webid/tls/index.js +0 -185
@@ -0,0 +1,29 @@
1
+ import solid from '../index.mjs'
2
+ import path from 'path'
3
+
4
+ solid
5
+ .createServer({
6
+ webid: true,
7
+ sslCert: path.resolve('../test/keys/cert.pem'),
8
+ sslKey: path.resolve('../test/keys/key.pem'),
9
+ errorHandler: function (err, req, res, next) {
10
+ if (err.status !== 200) {
11
+ console.log('Oh no! There is an error:' + err.message)
12
+ res.status(err.status)
13
+ // Now you can send the error how you want
14
+ // Maybe you want to render an error page
15
+ // res.render('errorPage.ejs', {
16
+ // title: err.status + ": This is an error!",
17
+ // message: err.message
18
+ // })
19
+ // Or you want to respond in JSON?
20
+ res.json({
21
+ title: err.status + ': This is an error!',
22
+ message: err.message
23
+ })
24
+ }
25
+ }
26
+ })
27
+ .listen(3456, function () {
28
+ console.log('started ldp with webid on port ' + 3456)
29
+ })
File without changes
@@ -0,0 +1,12 @@
1
+ import solid from '../index.mjs'
2
+ import path from 'path'
3
+
4
+ solid
5
+ .createServer({
6
+ webid: true,
7
+ sslCert: path.resolve('../test/keys/cert.pem'),
8
+ sslKey: path.resolve('../test/keys/key.pem')
9
+ })
10
+ .listen(3456, function () {
11
+ console.log('started ldp with webid on port ' + 3456)
12
+ })
File without changes
@@ -0,0 +1,20 @@
1
+ import express from 'express'
2
+ import solid from '../index.mjs'
3
+
4
+ // Starting our express app
5
+ const app = express()
6
+
7
+ // My routes
8
+ app.get('/', function (req, res) {
9
+ console.log(req)
10
+ res.send('Welcome to my server!')
11
+ })
12
+
13
+ // Mounting solid on /ldp
14
+ const ldp = solid()
15
+ app.use('/ldp', ldp)
16
+
17
+ // Starting server
18
+ app.listen(3000, function () {
19
+ console.log('Server started on port 3000!')
20
+ })
File without changes
@@ -0,0 +1,8 @@
1
+ import solid from '../index.mjs'
2
+
3
+ // Starting solid server
4
+ const ldp = solid.createServer()
5
+ ldp.listen(3456, function () {
6
+ console.log('Starting server on port ' + 3456)
7
+ console.log('LDP will run on /')
8
+ })
package/favicon.ico CHANGED
File without changes
package/favicon.ico.acl CHANGED
File without changes
package/index.cjs ADDED
@@ -0,0 +1,4 @@
1
+ // Main entry point - provides both CommonJS (for tests) and ESM (for modern usage)
2
+ module.exports = require('./lib/create-app-cjs')
3
+ module.exports.createServer = require('./lib/create-server-cjs')
4
+ module.exports.startCli = require('./bin/lib/cli.cjs')
package/index.html CHANGED
File without changes
package/index.mjs ADDED
@@ -0,0 +1,23 @@
1
+ import createServer from './lib/create-server.mjs'
2
+ import ldnode from './lib/create-app.mjs'
3
+ import startCli from './bin/lib/cli.mjs'
4
+
5
+ // Preserve the CommonJS-style shape where the default export has
6
+ // `createServer` and `startCli` attached as properties so existing
7
+ // tests that call `ldnode.createServer()` continue to work.
8
+ let exported
9
+ const canAttach = (ldnode && (typeof ldnode === 'object' || typeof ldnode === 'function'))
10
+ if (canAttach) {
11
+ try {
12
+ if (!ldnode.createServer) ldnode.createServer = createServer
13
+ if (!ldnode.startCli) ldnode.startCli = startCli
14
+ exported = ldnode
15
+ } catch (e) {
16
+ exported = { default: ldnode, createServer, startCli }
17
+ }
18
+ } else {
19
+ exported = { default: ldnode, createServer, startCli }
20
+ }
21
+
22
+ export default exported
23
+ export { createServer, startCli }
@@ -1,19 +1,18 @@
1
1
  'use strict'
2
2
  /* eslint-disable node/no-deprecated-api */
3
3
 
4
- const { dirname } = require('path')
5
- const rdf = require('rdflib')
6
- const debug = require('./debug').ACL
7
- // const debugCache = require('./debug').cache
8
- const HTTPError = require('./http-error')
9
- const aclCheck = require('@solid/acl-check')
10
- const { URL } = require('url')
11
- const { promisify } = require('util')
12
- const fs = require('fs')
13
- const Url = require('url')
14
- const httpFetch = require('node-fetch')
4
+ import { dirname } from 'path'
5
+ import rdf from 'rdflib'
6
+ import { ACL as debug } from './debug.mjs'
7
+ // import { cache as debugCache } from './debug.mjs'
8
+ import HTTPError from './http-error.mjs'
9
+ import aclCheck from '@solid/acl-check'
10
+ import Url, { URL } from 'url'
11
+ import { promisify } from 'util'
12
+ import fs from 'fs'
13
+ import httpFetch from 'node-fetch'
15
14
 
16
- const DEFAULT_ACL_SUFFIX = '.acl'
15
+ export const DEFAULT_ACL_SUFFIX = '.acl'
17
16
  const ACL = rdf.Namespace('http://www.w3.org/ns/auth/acl#')
18
17
 
19
18
  // TODO: expunge-on-write so that we can increase the caching time
@@ -344,11 +343,10 @@ function lastSlash (string, pos = string.length) {
344
343
  return string.lastIndexOf('/', pos)
345
344
  }
346
345
 
347
- module.exports = ACLChecker
348
- module.exports.DEFAULT_ACL_SUFFIX = DEFAULT_ACL_SUFFIX
346
+ export default ACLChecker
349
347
 
350
348
  // Used in ldp and the unit tests:
351
- module.exports.clearAclCache = function (url) {
349
+ export function clearAclCache (url) {
352
350
  if (url) delete temporaryCache[url]
353
351
  else temporaryCache = {}
354
352
  }
@@ -1,15 +1,16 @@
1
- 'use strict'
1
+ import express from 'express'
2
+ import bodyParserPkg from 'body-parser'
3
+ import debug from '../../debug.mjs'
2
4
 
3
- const express = require('express')
4
- const bodyParser = require('body-parser').urlencoded({ extended: false })
5
- const debug = require('../../debug').accounts
5
+ import restrictToTopDomain from '../../handlers/restrict-to-top-domain.mjs'
6
6
 
7
- const restrictToTopDomain = require('../../handlers/restrict-to-top-domain')
8
-
9
- const CreateAccountRequest = require('../../requests/create-account-request')
10
- const AddCertificateRequest = require('../../requests/add-cert-request')
11
- const DeleteAccountRequest = require('../../requests/delete-account-request')
12
- const DeleteAccountConfirmRequest = require('../../requests/delete-account-confirm-request')
7
+ import { CreateAccountRequest } from '../../requests/create-account-request.mjs'
8
+ import AddCertificateRequest from '../../requests/add-cert-request.mjs'
9
+ import DeleteAccountRequest from '../../requests/delete-account-request.mjs'
10
+ import DeleteAccountConfirmRequest from '../../requests/delete-account-confirm-request.mjs'
11
+ const { urlencoded } = bodyParserPkg
12
+ const bodyParser = urlencoded({ extended: false })
13
+ const debugAccounts = debug.accounts
13
14
 
14
15
  /**
15
16
  * Returns an Express middleware handler for checking if a particular account
@@ -19,17 +20,17 @@ const DeleteAccountConfirmRequest = require('../../requests/delete-account-confi
19
20
  *
20
21
  * @return {Function}
21
22
  */
22
- function checkAccountExists (accountManager) {
23
+ export function checkAccountExists (accountManager) {
23
24
  return (req, res, next) => {
24
25
  const accountUri = req.hostname
25
26
 
26
27
  accountManager.accountUriExists(accountUri)
27
28
  .then(found => {
28
29
  if (!found) {
29
- debug(`Account ${accountUri} is available (for ${req.originalUrl})`)
30
+ debugAccounts(`Account ${accountUri} is available (for ${req.originalUrl})`)
30
31
  return res.sendStatus(404)
31
32
  }
32
- debug(`Account ${accountUri} is not available (for ${req.originalUrl})`)
33
+ debugAccounts(`Account ${accountUri} is not available (for ${req.originalUrl})`)
33
34
  next()
34
35
  })
35
36
  .catch(next)
@@ -44,7 +45,7 @@ function checkAccountExists (accountManager) {
44
45
  *
45
46
  * @return {Function}
46
47
  */
47
- function newCertificate (accountManager) {
48
+ export function newCertificate (accountManager) {
48
49
  return (req, res, next) => {
49
50
  return AddCertificateRequest.handle(req, res, accountManager)
50
51
  .catch(err => {
@@ -62,7 +63,7 @@ function newCertificate (accountManager) {
62
63
  *
63
64
  * @return {Router}
64
65
  */
65
- function middleware (accountManager) {
66
+ export function middleware (accountManager) {
66
67
  const router = express.Router('/')
67
68
 
68
69
  router.get('/', checkAccountExists(accountManager))
@@ -81,7 +82,7 @@ function middleware (accountManager) {
81
82
  return router
82
83
  }
83
84
 
84
- module.exports = {
85
+ export default {
85
86
  middleware,
86
87
  checkAccountExists,
87
88
  newCertificate
@@ -1,13 +1,14 @@
1
- const debug = require('../../debug').authentication
1
+ import debug from '../../debug.mjs'
2
+ const debugAuth = debug.authentication
2
3
 
3
4
  /**
4
5
  * Enforces the `--force-user` server flag, hardcoding a webid for all requests,
5
6
  * for testing purposes.
6
7
  */
7
- function initialize (app, argv) {
8
+ export function initialize (app, argv) {
8
9
  const forceUserId = argv.forceUser
9
10
  app.use('/', (req, res, next) => {
10
- debug(`Identified user (override): ${forceUserId}`)
11
+ debugAuth(`Identified user (override): ${forceUserId}`)
11
12
  req.session.userId = forceUserId
12
13
  if (argv.auth === 'tls') {
13
14
  res.set('User', forceUserId)
@@ -16,6 +17,6 @@ function initialize (app, argv) {
16
17
  })
17
18
  }
18
19
 
19
- module.exports = {
20
+ export default {
20
21
  initialize
21
22
  }
@@ -0,0 +1,8 @@
1
+ import oidc from './webid-oidc.mjs'
2
+ import tls from './webid-tls.mjs'
3
+ import forceUser from './force-user.mjs'
4
+
5
+ export { oidc, tls, forceUser }
6
+
7
+ // Provide a default export so callers can `import Auth from './lib/api/authn/index.mjs'`
8
+ export default { oidc, tls, forceUser }
@@ -1,21 +1,25 @@
1
- 'use strict'
2
1
  /**
3
2
  * OIDC Relying Party API handler module.
4
3
  */
5
4
 
6
- const express = require('express')
7
- const { routeResolvedFile } = require('../../utils')
8
- const bodyParser = require('body-parser').urlencoded({ extended: false })
9
- const OidcManager = require('../../models/oidc-manager')
10
- const { LoginRequest } = require('../../requests/login-request')
11
- const { SharingRequest } = require('../../requests/sharing-request')
5
+ import express from 'express'
6
+ import { routeResolvedFile } from '../../utils.mjs'
7
+ import bodyParserPkg from 'body-parser'
8
+ import { fromServerConfig } from '../../models/oidc-manager.mjs'
9
+ import { LoginRequest } from '../../requests/login-request.mjs'
10
+ import { SharingRequest } from '../../requests/sharing-request.mjs'
12
11
 
13
- const restrictToTopDomain = require('../../handlers/restrict-to-top-domain')
12
+ import restrictToTopDomain from '../../handlers/restrict-to-top-domain.mjs'
14
13
 
15
- const PasswordResetEmailRequest = require('../../requests/password-reset-email-request')
16
- const PasswordChangeRequest = require('../../requests/password-change-request')
14
+ import PasswordResetEmailRequest from '../../requests/password-reset-email-request.mjs'
15
+ import PasswordChangeRequest from '../../requests/password-change-request.mjs'
17
16
 
18
- const { AuthCallbackRequest } = require('@solid/oidc-auth-manager').handlers
17
+ import oidcOpExpress from 'oidc-op-express'
18
+
19
+ import oidcAuthManager from '@solid/oidc-auth-manager'
20
+ const { urlencoded } = bodyParserPkg
21
+ const bodyParser = urlencoded({ extended: false })
22
+ const { AuthCallbackRequest } = oidcAuthManager.handlers
19
23
 
20
24
  /**
21
25
  * Sets up OIDC authentication for the given app.
@@ -23,10 +27,13 @@ const { AuthCallbackRequest } = require('@solid/oidc-auth-manager').handlers
23
27
  * @param app {Object} Express.js app instance
24
28
  * @param argv {Object} Config options hashmap
25
29
  */
26
- function initialize (app, argv) {
27
- const oidc = OidcManager.fromServerConfig(argv)
30
+ export function initialize (app, argv) {
31
+ const oidc = fromServerConfig(argv)
28
32
  app.locals.oidc = oidc
29
- oidc.initialize()
33
+
34
+ // Store initialization function to be called after server starts listening
35
+ // (OIDC client registration needs the server to be up to fetch openid-configuration)
36
+ app.locals.initFunction = () => oidc.initialize()
30
37
 
31
38
  // Attach the OIDC API
32
39
  app.use('/', middleware(oidc))
@@ -76,7 +83,7 @@ function initialize (app, argv) {
76
83
  *
77
84
  * @return {Router} Express router
78
85
  */
79
- function middleware (oidc) {
86
+ export function middleware (oidc) {
80
87
  const router = express.Router('/')
81
88
 
82
89
  // User-facing Authentication API
@@ -118,7 +125,7 @@ function middleware (oidc) {
118
125
  // router.post('/token', token.bind(provider))
119
126
  // router.get('/userinfo', userinfo.bind(provider))
120
127
  // router.get('/logout', logout.bind(provider))
121
- const oidcProviderApi = require('oidc-op-express')(oidc.provider)
128
+ const oidcProviderApi = oidcOpExpress(oidc.provider)
122
129
  router.use('/', oidcProviderApi)
123
130
 
124
131
  return router
@@ -132,7 +139,7 @@ function middleware (oidc) {
132
139
  * @param res {ServerResponse}
133
140
  * @param err {Error}
134
141
  */
135
- function setAuthenticateHeader (req, res, err) {
142
+ export function setAuthenticateHeader (req, res, err) {
136
143
  const locals = req.app.locals
137
144
 
138
145
  const errorParams = {
@@ -159,7 +166,7 @@ function setAuthenticateHeader (req, res, err) {
159
166
  *
160
167
  * @returns {number}
161
168
  */
162
- function statusCodeOverride (statusCode, req) {
169
+ export function statusCodeOverride (statusCode, req) {
163
170
  if (isEmptyToken(req)) {
164
171
  return 400
165
172
  } else {
@@ -175,7 +182,7 @@ function statusCodeOverride (statusCode, req) {
175
182
  *
176
183
  * @returns {boolean}
177
184
  */
178
- function isEmptyToken (req) {
185
+ export function isEmptyToken (req) {
179
186
  const header = req.get('Authorization')
180
187
 
181
188
  if (!header) { return false }
@@ -193,7 +200,7 @@ function isEmptyToken (req) {
193
200
  return false
194
201
  }
195
202
 
196
- module.exports = {
203
+ export default {
197
204
  initialize,
198
205
  isEmptyToken,
199
206
  middleware,
@@ -1,14 +1,15 @@
1
- const webid = require('../../webid/tls')
2
- const debug = require('../../debug').authentication
1
+ import * as webid from '../../webid/tls/index.mjs'
2
+ import debug from '../../debug.mjs'
3
+ const debugAuth = debug.authentication
3
4
 
4
- function initialize (app, argv) {
5
+ export function initialize (app, argv) {
5
6
  app.use('/', handler)
6
7
  }
7
8
 
8
- function handler (req, res, next) {
9
+ export function handler (req, res, next) {
9
10
  // User already logged in? skip
10
11
  if (req.session.userId) {
11
- debug('User: ' + req.session.userId)
12
+ debugAuth('User: ' + req.session.userId)
12
13
  res.set('User', req.session.userId)
13
14
  return next()
14
15
  }
@@ -23,12 +24,12 @@ function handler (req, res, next) {
23
24
  // Verify webid
24
25
  webid.verify(certificate, function (err, result) {
25
26
  if (err) {
26
- debug('Error processing certificate: ' + err.message)
27
+ debugAuth('Error processing certificate: ' + err.message)
27
28
  setEmptySession(req)
28
29
  return next()
29
30
  }
30
31
  req.session.userId = result
31
- debug('Identified user: ' + req.session.userId)
32
+ debugAuth('Identified user: ' + req.session.userId)
32
33
  res.set('User', req.session.userId)
33
34
  return next()
34
35
  })
@@ -41,10 +42,10 @@ function getCertificateViaTLS (req) {
41
42
  if (certificate && Object.keys(certificate).length > 0) {
42
43
  return certificate
43
44
  }
44
- debug('No peer certificate received during TLS handshake.')
45
+ debugAuth('No peer certificate received during TLS handshake.')
45
46
  }
46
47
 
47
- function setEmptySession (req) {
48
+ export function setEmptySession (req) {
48
49
  req.session.userId = ''
49
50
  }
50
51
 
@@ -55,13 +56,13 @@ function setEmptySession (req) {
55
56
  * @param req {IncomingRequest}
56
57
  * @param res {ServerResponse}
57
58
  */
58
- function setAuthenticateHeader (req, res) {
59
+ export function setAuthenticateHeader (req, res) {
59
60
  const locals = req.app.locals
60
61
 
61
62
  res.set('WWW-Authenticate', `WebID-TLS realm="${locals.host.serverUri}"`)
62
63
  }
63
64
 
64
- module.exports = {
65
+ export default {
65
66
  initialize,
66
67
  handler,
67
68
  setAuthenticateHeader,
@@ -0,0 +1,7 @@
1
+ import authn from './authn/index.mjs'
2
+ import accounts from './accounts/user-accounts.mjs'
3
+
4
+ export { authn, accounts }
5
+
6
+ // Provide a default export so callers can `import API from './lib/api/index.mjs'`
7
+ export default { authn, accounts }
@@ -1,18 +1,15 @@
1
- 'use strict'
2
1
  /**
3
2
  * @module capability-discovery
4
3
  */
5
- const express = require('express')
6
- const { URL } = require('url')
7
-
8
- module.exports = capabilityDiscovery
4
+ import express from 'express'
5
+ import { URL } from 'url'
9
6
 
10
7
  /**
11
8
  * Returns a set of routes to deal with server capability discovery
12
9
  * @method capabilityDiscovery
13
10
  * @return {Router} Express router
14
11
  */
15
- function capabilityDiscovery () {
12
+ export default function capabilityDiscovery () {
16
13
  const router = express.Router('/')
17
14
 
18
15
  // Advertise the server capability discover endpoint
@@ -1,43 +1,35 @@
1
- module.exports.copyTemplateDir = copyTemplateDir
2
- module.exports.processFile = processFile
3
- module.exports.readFile = readFile
4
- module.exports.writeFile = writeFile
5
-
6
- const fs = require('fs-extra')
7
-
8
- async function copyTemplateDir (templatePath, targetPath) {
9
- return new Promise((resolve, reject) => {
10
- fs.copy(templatePath, targetPath, (error) => {
11
- if (error) { return reject(error) }
12
-
13
- resolve()
14
- })
15
- })
16
- }
17
-
18
- async function processFile (filePath, manipulateSourceFn) {
19
- return new Promise((resolve, reject) => {
20
- fs.readFile(filePath, 'utf8', (error, rawSource) => {
21
- if (error) {
22
- return reject(error)
23
- }
24
-
25
- const output = manipulateSourceFn(rawSource)
26
-
27
- fs.writeFile(filePath, output, (error) => {
28
- if (error) {
29
- return reject(error)
30
- }
31
- resolve()
32
- })
33
- })
34
- })
35
- }
36
-
37
- function readFile (filePath, options = 'utf-8') {
38
- return fs.readFileSync(filePath, options)
39
- }
40
-
41
- function writeFile (filePath, fileSource, options = 'utf-8') {
42
- fs.writeFileSync(filePath, fileSource, options)
43
- }
1
+ import fs from 'fs-extra'
2
+
3
+ export async function copyTemplateDir (templatePath, targetPath) {
4
+ return new Promise((resolve, reject) => {
5
+ fs.copy(templatePath, targetPath, (error) => {
6
+ if (error) { return reject(error) }
7
+ resolve()
8
+ })
9
+ })
10
+ }
11
+
12
+ export async function processFile (filePath, manipulateSourceFn) {
13
+ return new Promise((resolve, reject) => {
14
+ fs.readFile(filePath, 'utf8', (error, rawSource) => {
15
+ if (error) {
16
+ return reject(error)
17
+ }
18
+ const output = manipulateSourceFn(rawSource)
19
+ fs.writeFile(filePath, output, (error) => {
20
+ if (error) {
21
+ return reject(error)
22
+ }
23
+ resolve()
24
+ })
25
+ })
26
+ })
27
+ }
28
+
29
+ export function readFile (filePath, options = 'utf-8') {
30
+ return fs.readFileSync(filePath, options)
31
+ }
32
+
33
+ export function writeFile (filePath, fileSource, options = 'utf-8') {
34
+ fs.writeFileSync(filePath, fileSource, options)
35
+ }
@@ -0,0 +1,29 @@
1
+ import Handlebars from 'handlebars'
2
+ import debugModule from '../debug.mjs'
3
+ import { processFile, readFile, writeFile } from './fs-utils.mjs'
4
+
5
+ const debug = debugModule.errors
6
+
7
+ export async function compileTemplate (filePath) {
8
+ const indexTemplateSource = readFile(filePath)
9
+ return Handlebars.compile(indexTemplateSource)
10
+ }
11
+
12
+ export async function processHandlebarFile (filePath, substitutions) {
13
+ return processFile(filePath, (rawSource) => processHandlebarTemplate(rawSource, substitutions))
14
+ }
15
+
16
+ function processHandlebarTemplate (source, substitutions) {
17
+ try {
18
+ const template = Handlebars.compile(source)
19
+ return template(substitutions)
20
+ } catch (error) {
21
+ debug(`Error processing template: ${error}`)
22
+ return source
23
+ }
24
+ }
25
+
26
+ export function writeTemplate (filePath, template, substitutions) {
27
+ const source = template(substitutions)
28
+ writeFile(filePath, source)
29
+ }
@@ -1,28 +1,24 @@
1
- const $rdf = require('rdflib')
2
-
3
- const SOLID = $rdf.Namespace('http://www.w3.org/ns/solid/terms#')
4
- const VCARD = $rdf.Namespace('http://www.w3.org/2006/vcard/ns#')
5
-
6
- module.exports.getName = getName
7
- module.exports.getWebId = getWebId
8
- module.exports.isValidUsername = isValidUsername
9
-
10
- async function getName (webId, fetchGraph) {
11
- const graph = await fetchGraph(webId)
12
- const nameNode = graph.any($rdf.sym(webId), VCARD('fn'))
13
- return nameNode.value
14
- }
15
-
16
- async function getWebId (accountDirectory, accountUrl, suffixMeta, fetchData) {
17
- const metaFilePath = `${accountDirectory}/${suffixMeta}`
18
- const metaFileUri = `${accountUrl}${suffixMeta}`
19
- const metaData = await fetchData(metaFilePath)
20
- const metaGraph = $rdf.graph()
21
- $rdf.parse(metaData, metaGraph, metaFileUri, 'text/turtle')
22
- const webIdNode = metaGraph.any(undefined, SOLID('account'), $rdf.sym(accountUrl))
23
- return webIdNode.value
24
- }
25
-
26
- function isValidUsername (username) {
27
- return /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(username)
28
- }
1
+ import $rdf from 'rdflib'
2
+
3
+ const SOLID = $rdf.Namespace('http://www.w3.org/ns/solid/terms#')
4
+ const VCARD = $rdf.Namespace('http://www.w3.org/2006/vcard/ns#')
5
+
6
+ export async function getName (webId, fetchGraph) {
7
+ const graph = await fetchGraph(webId)
8
+ const nameNode = graph.any($rdf.sym(webId), VCARD('fn'))
9
+ return nameNode.value
10
+ }
11
+
12
+ export async function getWebId (accountDirectory, accountUrl, suffixMeta, fetchData) {
13
+ const metaFilePath = `${accountDirectory}/${suffixMeta}`
14
+ const metaFileUri = `${accountUrl}${suffixMeta}`
15
+ const metaData = await fetchData(metaFilePath)
16
+ const metaGraph = $rdf.graph()
17
+ $rdf.parse(metaData, metaGraph, metaFileUri, 'text/turtle')
18
+ const webIdNode = metaGraph.any(undefined, SOLID('account'), $rdf.sym(accountUrl))
19
+ return webIdNode.value
20
+ }
21
+
22
+ export function isValidUsername (username) {
23
+ return /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(username)
24
+ }