solid-server 5.8.6 → 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 (686) 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.mjs +31 -0
  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 +61 -41
  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/lib/get.js +0 -27
  686. package/lib/webid/tls/index.js +0 -185
@@ -0,0 +1,167 @@
1
+ import fs from 'fs-extra'
2
+ import rimraf from 'rimraf'
3
+ import path from 'path'
4
+ import { fileURLToPath } from 'url'
5
+ import OIDCProvider from '@solid/oidc-op'
6
+ import dns from 'dns'
7
+ import ldnode from '../../index.mjs'
8
+ import supertest from 'supertest'
9
+ import fetch from 'node-fetch'
10
+ import https from 'https'
11
+
12
+ const __filename = fileURLToPath(import.meta.url)
13
+ const __dirname = path.dirname(__filename)
14
+
15
+ const TEST_HOSTS = ['nic.localhost', 'tim.localhost', 'nicola.localhost']
16
+
17
+ export function rm (file) {
18
+ return rimraf.sync(path.normalize(path.join(__dirname, '../resources/' + file)))
19
+ }
20
+
21
+ export function cleanDir (dirPath) {
22
+ fs.removeSync(path.normalize(path.join(dirPath, '.well-known/.acl')))
23
+ fs.removeSync(path.normalize(path.join(dirPath, '.acl')))
24
+ fs.removeSync(path.normalize(path.join(dirPath, 'favicon.ico')))
25
+ fs.removeSync(path.normalize(path.join(dirPath, 'favicon.ico.acl')))
26
+ fs.removeSync(path.normalize(path.join(dirPath, 'index.html')))
27
+ fs.removeSync(path.normalize(path.join(dirPath, 'index.html.acl')))
28
+ fs.removeSync(path.normalize(path.join(dirPath, 'robots.txt')))
29
+ fs.removeSync(path.normalize(path.join(dirPath, 'robots.txt.acl')))
30
+ }
31
+
32
+ export function write (text, file) {
33
+ return fs.writeFileSync(path.normalize(path.join(__dirname, '../resources/' + file)), text)
34
+ }
35
+
36
+ export function cp (src, dest) {
37
+ return fs.copySync(
38
+ path.normalize(path.join(__dirname, '../resources/' + src)),
39
+ path.normalize(path.join(__dirname, '../resources/' + dest)))
40
+ }
41
+
42
+ export function read (file) {
43
+ return fs.readFileSync(path.normalize(path.join(__dirname, '../resources/' + file)), {
44
+ encoding: 'utf8'
45
+ })
46
+ }
47
+
48
+ // Backs up the given file
49
+ export function backup (src) {
50
+ cp(src, src + '.bak')
51
+ }
52
+
53
+ // Restores a backup of the given file
54
+ export function restore (src) {
55
+ cp(src + '.bak', src)
56
+ rm(src + '.bak')
57
+ }
58
+
59
+ // Verifies that all HOSTS entries are present
60
+ export function checkDnsSettings () {
61
+ return Promise.all(TEST_HOSTS.map(hostname => {
62
+ return new Promise((resolve, reject) => {
63
+ dns.lookup(hostname, (error, ip) => {
64
+ if (error || (ip !== '127.0.0.1' && ip !== '::1')) {
65
+ reject(error)
66
+ } else {
67
+ resolve(true)
68
+ }
69
+ })
70
+ })
71
+ }))
72
+ .catch(() => {
73
+ throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`)
74
+ })
75
+ }
76
+
77
+ /**
78
+ * @param configPath {string}
79
+ *
80
+ * @returns {Promise<Provider>}
81
+ */
82
+ export function loadProvider (configPath) {
83
+ return Promise.resolve()
84
+ .then(async () => {
85
+ const { default: config } = await import(configPath)
86
+
87
+ const provider = new OIDCProvider(config)
88
+
89
+ return provider.initializeKeyChain(config.keys)
90
+ })
91
+ }
92
+
93
+ export { createServer }
94
+ function createServer (options) {
95
+ return ldnode.createServer(options)
96
+ }
97
+
98
+ export { setupSupertestServer }
99
+ function setupSupertestServer (options) {
100
+ const ldpServer = createServer(options)
101
+ return supertest(ldpServer)
102
+ }
103
+
104
+ // Lightweight adapter to replace `request` with `node-fetch` in tests
105
+ // Supports signatures:
106
+ // - request(options, cb)
107
+ // - request(url, options, cb)
108
+ // And methods: get, post, put, patch, head, delete, del
109
+ function buildAgentFn (options = {}) {
110
+ const aOpts = options.agentOptions || {}
111
+ if (!aOpts || (!aOpts.cert && !aOpts.key)) {
112
+ return undefined
113
+ }
114
+ const httpsAgent = new https.Agent({
115
+ cert: aOpts.cert,
116
+ key: aOpts.key,
117
+ // Tests often run with NODE_TLS_REJECT_UNAUTHORIZED=0; mirror that here
118
+ rejectUnauthorized: false
119
+ })
120
+ return (parsedURL) => parsedURL.protocol === 'https:' ? httpsAgent : undefined
121
+ }
122
+
123
+ async function doFetch (method, url, options = {}, cb) {
124
+ try {
125
+ const headers = options.headers || {}
126
+ const body = options.body
127
+ const agent = buildAgentFn(options)
128
+ const res = await fetch(url, { method, headers, body, agent })
129
+ // Build a response object similar to `request`'s
130
+ const headersObj = {}
131
+ res.headers.forEach((value, key) => { headersObj[key] = value })
132
+ const response = {
133
+ statusCode: res.status,
134
+ statusMessage: res.statusText,
135
+ headers: headersObj
136
+ }
137
+ const hasBody = method !== 'HEAD'
138
+ const text = hasBody ? await res.text() : ''
139
+ cb(null, response, text)
140
+ } catch (err) {
141
+ cb(err)
142
+ }
143
+ }
144
+
145
+ function requestAdapter (arg1, arg2, arg3) {
146
+ let url, options, cb
147
+ if (typeof arg1 === 'string') {
148
+ url = arg1
149
+ options = arg2 || {}
150
+ cb = arg3
151
+ } else {
152
+ options = arg1 || {}
153
+ url = options.url
154
+ cb = arg2
155
+ }
156
+ const method = (options && options.method) || 'GET'
157
+ return doFetch(method, url, options, cb)
158
+ }
159
+
160
+ ;['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE'].forEach(m => {
161
+ const name = m.toLowerCase()
162
+ requestAdapter[name] = (options, cb) => doFetch(m, options.url, options, cb)
163
+ })
164
+ // Alias
165
+ requestAdapter.del = requestAdapter.delete
166
+
167
+ export const httpRequest = requestAdapter
package/test/utils.mjs ADDED
@@ -0,0 +1,205 @@
1
+ // import fs from 'fs-extra' // see fs-extra/esm and fs-extra doc
2
+
3
+ import fs from 'fs'
4
+ import path from 'path'
5
+ import dns from 'dns'
6
+ import https from 'https'
7
+ import { createRequire } from 'module'
8
+ import fetch from 'node-fetch'
9
+ import rimraf from 'rimraf'
10
+ import fse from 'fs-extra'
11
+ import Provider from '@solid/oidc-op'
12
+ import supertest from 'supertest'
13
+ import ldnode from '../index.mjs'
14
+ import { fileURLToPath } from 'url'
15
+
16
+ const require = createRequire(import.meta.url)
17
+ const __filename = fileURLToPath(import.meta.url)
18
+ const __dirname = path.dirname(__filename)
19
+
20
+ const OIDCProvider = Provider
21
+
22
+ const TEST_HOSTS = ['nic.localhost', 'tim.localhost', 'nicola.localhost']
23
+
24
+ // Configurable test root directory
25
+ // For custom route
26
+ let TEST_ROOT = path.join(__dirname, '/resources/')
27
+ // For default root (process.cwd()):
28
+ // let TEST_ROOT = path.join(process.cwd(), 'test-esm/resources')
29
+
30
+ export function setTestRoot (rootPath) {
31
+ TEST_ROOT = rootPath
32
+ }
33
+ export function getTestRoot () {
34
+ return TEST_ROOT
35
+ }
36
+
37
+ export function rm (file) {
38
+ return rimraf.sync(path.join(TEST_ROOT, file))
39
+ }
40
+
41
+ export function cleanDir (dirPath) {
42
+ fse.removeSync(path.join(dirPath, '.well-known/.acl'))
43
+ fse.removeSync(path.join(dirPath, '.acl'))
44
+ fse.removeSync(path.join(dirPath, 'favicon.ico'))
45
+ fse.removeSync(path.join(dirPath, 'favicon.ico.acl'))
46
+ fse.removeSync(path.join(dirPath, 'index.html'))
47
+ fse.removeSync(path.join(dirPath, 'index.html.acl'))
48
+ fse.removeSync(path.join(dirPath, 'robots.txt'))
49
+ fse.removeSync(path.join(dirPath, 'robots.txt.acl'))
50
+ }
51
+
52
+ export function write (text, file) {
53
+ console.log('Writing to', path.join(TEST_ROOT, file))
54
+ // fs.mkdirSync(path.dirname(path.join(TEST_ROOT, file), { recursive: true }))
55
+ return fs.writeFileSync(path.join(TEST_ROOT, file), text)
56
+ }
57
+
58
+ export function cp (src, dest) {
59
+ return fse.copySync(
60
+ path.join(TEST_ROOT, src),
61
+ path.join(TEST_ROOT, dest))
62
+ }
63
+
64
+ export function read (file) {
65
+ console.log('Reading from', path.join(TEST_ROOT, file))
66
+ return fs.readFileSync(path.join(TEST_ROOT, file), {
67
+ encoding: 'utf8'
68
+ })
69
+ }
70
+
71
+ // Backs up the given file
72
+ export function backup (src) {
73
+ cp(src, src + '.bak')
74
+ }
75
+
76
+ // Restores a backup of the given file
77
+ export function restore (src) {
78
+ cp(src + '.bak', src)
79
+ rm(src + '.bak')
80
+ }
81
+
82
+ // Verifies that all HOSTS entries are present
83
+ export function checkDnsSettings () {
84
+ return Promise.all(TEST_HOSTS.map(hostname => {
85
+ return new Promise((resolve, reject) => {
86
+ dns.lookup(hostname, (error, ip) => {
87
+ if (error || (ip !== '127.0.0.1' && ip !== '::1')) {
88
+ reject(error)
89
+ } else {
90
+ resolve(true)
91
+ }
92
+ })
93
+ })
94
+ }))
95
+ .catch(() => {
96
+ throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`)
97
+ })
98
+ }
99
+
100
+ /**
101
+ * @param configPath {string}
102
+ *
103
+ * @returns {Promise<Provider>}
104
+ */
105
+ export function loadProvider (configPath) {
106
+ return Promise.resolve()
107
+ .then(() => {
108
+ const config = require(configPath)
109
+
110
+ const provider = new OIDCProvider(config)
111
+
112
+ return provider.initializeKeyChain(config.keys)
113
+ })
114
+ }
115
+
116
+ export function createServer (options) {
117
+ console.log('Creating server with root:', options.root || process.cwd())
118
+ return ldnode.createServer(options)
119
+ }
120
+
121
+ export function setupSupertestServer (options) {
122
+ const ldpServer = createServer(options)
123
+ return supertest(ldpServer)
124
+ }
125
+
126
+ // Lightweight adapter to replace `request` with `node-fetch` in tests
127
+ // Supports signatures:
128
+ // - request(options, cb)
129
+ // - request(url, options, cb)
130
+ // And methods: get, post, put, patch, head, delete, del
131
+ function buildAgentFn (options = {}) {
132
+ const aOpts = options.agentOptions || {}
133
+ if (!aOpts || (!aOpts.cert && !aOpts.key)) {
134
+ return undefined
135
+ }
136
+ const httpsAgent = new https.Agent({
137
+ cert: aOpts.cert,
138
+ key: aOpts.key,
139
+ // Tests often run with NODE_TLS_REJECT_UNAUTHORIZED=0; mirror that here
140
+ rejectUnauthorized: false
141
+ })
142
+ return (parsedURL) => parsedURL.protocol === 'https:' ? httpsAgent : undefined
143
+ }
144
+
145
+ async function doFetch (method, url, options = {}, cb) {
146
+ try {
147
+ const headers = options.headers || {}
148
+ const body = options.body
149
+ const agent = buildAgentFn(options)
150
+ const res = await fetch(url, { method, headers, body, agent })
151
+ // Build a response object similar to `request`'s
152
+ const headersObj = {}
153
+ res.headers.forEach((value, key) => { headersObj[key] = value })
154
+ const response = {
155
+ statusCode: res.status,
156
+ statusMessage: res.statusText,
157
+ headers: headersObj
158
+ }
159
+ const hasBody = method !== 'HEAD'
160
+ const text = hasBody ? await res.text() : ''
161
+ cb(null, response, text)
162
+ } catch (err) {
163
+ cb(err)
164
+ }
165
+ }
166
+
167
+ function requestAdapter (arg1, arg2, arg3) {
168
+ let url, options, cb
169
+ if (typeof arg1 === 'string') {
170
+ url = arg1
171
+ options = arg2 || {}
172
+ cb = arg3
173
+ } else {
174
+ options = arg1 || {}
175
+ url = options.url
176
+ cb = arg2
177
+ }
178
+ const method = (options && options.method) || 'GET'
179
+ return doFetch(method, url, options, cb)
180
+ }
181
+
182
+ ;['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE'].forEach(m => {
183
+ const name = m.toLowerCase()
184
+ requestAdapter[name] = (options, cb) => doFetch(m, options.url, options, cb)
185
+ })
186
+ // Alias
187
+ requestAdapter.del = requestAdapter.delete
188
+
189
+ export const httpRequest = requestAdapter
190
+
191
+ // Provide default export for compatibility
192
+ export default {
193
+ rm,
194
+ cleanDir,
195
+ write,
196
+ cp,
197
+ read,
198
+ backup,
199
+ restore,
200
+ checkDnsSettings,
201
+ loadProvider,
202
+ createServer,
203
+ setupSupertestServer,
204
+ httpRequest
205
+ }
@@ -0,0 +1,43 @@
1
+
2
+ import { fileURLToPath } from 'url'
3
+ import fs from 'node:fs'
4
+ import Handlebars from 'handlebars'
5
+ import path from 'node:path'
6
+ import validateModule from 'turtle-validator/lib/validator.js'
7
+
8
+ const validate = validateModule.default || validateModule
9
+ const __filename = fileURLToPath(import.meta.url)
10
+ const __dirname = path.dirname(__filename)
11
+
12
+ const regex = /\\.(acl|ttl)$/i
13
+ const substitutions = {
14
+ webId: 'http://example.com/#me',
15
+ email: 'test@example.com',
16
+ name: 'Test test'
17
+ }
18
+
19
+ const files = recursiveFiles(path.join(__dirname, '../default-templates/'))
20
+
21
+ for (const file of files) {
22
+ const data = fs.readFileSync(file, 'utf8')
23
+ const template = Handlebars.compile(data)
24
+ validate(template(substitutions), feedback => {
25
+ if (feedback.errors.length > 0) {
26
+ throw new Error(`Validation error in ${file}: ${feedback.errors[0]}`)
27
+ }
28
+ })
29
+ }
30
+
31
+ function recursiveFiles (dir) {
32
+ const content = fs.readdirSync(dir)
33
+ return [].concat(...content.map(file => {
34
+ const fullPath = path.join(dir, file)
35
+ const stat = fs.statSync(fullPath)
36
+ if (stat.isDirectory()) {
37
+ return recursiveFiles(fullPath)
38
+ } else if (regex.test(file)) {
39
+ return [fullPath]
40
+ }
41
+ return []
42
+ }))
43
+ }
@@ -1,113 +0,0 @@
1
- # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2
- # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3
-
4
- name: CI
5
-
6
- on:
7
- push:
8
- branches: [ main ]
9
- tags: ['*']
10
- pull_request:
11
- branches: [ main ]
12
-
13
- jobs:
14
- build:
15
-
16
- runs-on: ${{ matrix.os }}
17
-
18
- strategy:
19
- matrix:
20
- node-version: [ '^22.14.0' ]
21
- os: [ubuntu-latest]
22
-
23
- steps:
24
- - uses: actions/checkout@v4
25
-
26
- # extract repository name
27
- - if: github.event_name == 'pull_request'
28
- run: echo "REPO_NAME=${{ github.event.pull_request.head.repo.full_name }}" >> $GITHUB_ENV
29
-
30
- - if: github.event_name != 'pull_request'
31
- run: echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_ENV
32
-
33
- # extract branch name
34
- - if: github.event_name == 'pull_request'
35
- run: echo "BRANCH_NAME=${GITHUB_HEAD_REF}" >> $GITHUB_ENV
36
-
37
- - if: github.event_name != 'pull_request'
38
- run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
39
-
40
- # print repository name
41
- - name: Get repository name
42
- run: echo 'The repository name is' $REPO_NAME
43
-
44
- # print branch name
45
- - name: Get branch name
46
- run: echo 'The branch name is' $BRANCH_NAME
47
-
48
- - name: Use Node.js ${{ matrix.node-version }}
49
- uses: actions/setup-node@v1
50
- with:
51
- node-version: ${{ matrix.node-version }}
52
- - run: npm ci
53
- # test code
54
- - run: npm run standard
55
- - run: npm run validate
56
- - run: npm run nyc
57
- # Test global install of the package
58
- - run: npm pack .
59
- - run: npm install -g solid-server-*.tgz
60
- # Run the Solid test-suite
61
- - run: bash test/surface/run-solid-test-suite.sh $BRANCH_NAME $REPO_NAME
62
-
63
- # TODO: The pipeline should automate publication to npm, so that the docker build gets the correct version
64
- # This job will only dockerize solid-server@latest / solid-server@<tag-name> from npmjs.com!
65
- docker-hub:
66
- needs: build
67
- name: Publish to docker hub
68
- if: github.event_name != 'pull_request'
69
- runs-on: ubuntu-latest
70
- steps:
71
-
72
- - uses: actions/checkout@v4
73
-
74
- - uses: olegtarasov/get-tag@v2.1
75
- id: tagName
76
- with:
77
- tagRegex: "v?(?<version>.*)"
78
-
79
- - name: Lint dockerfile
80
- working-directory: docker-image
81
- run: pwd && ls -lah && make lint
82
-
83
- - name: Run tests
84
- working-directory: docker-image
85
- run: SOLID_SERVER_VERSION=${{ steps.tagName.outputs.version }} make test
86
-
87
- - name: Set up QEMU
88
- uses: docker/setup-qemu-action@v1
89
-
90
- - name: Set up Docker Buildx
91
- uses: docker/setup-buildx-action@v1
92
-
93
- - name: Docker meta
94
- id: meta
95
- uses: docker/metadata-action@v3
96
- with:
97
- images: nodesolidserver/node-solid-server
98
-
99
- - name: Login to DockerHub
100
- uses: docker/login-action@v1
101
- with:
102
- username: ${{ secrets.DOCKERHUB_USERNAME }}
103
- password: ${{ secrets.DOCKERHUB_TOKEN }}
104
-
105
- - name: Build and push
106
- id: docker_build
107
- uses: docker/build-push-action@v2
108
- with:
109
- context: ./docker-image/src
110
- build-args: SOLID_SERVER_VERSION=${{ steps.tagName.outputs.version }}
111
- push: true
112
- tags: ${{ steps.meta.outputs.tags }}
113
- labels: ${{ steps.meta.outputs.labels }}
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- v18.19.0
package/.snyk DELETED
@@ -1,35 +0,0 @@
1
- # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2
- version: v1.12.0
3
- # ignores vulnerabilities until expiry date; change duration by modifying expiry date
4
- ignore:
5
- 'npm:braces:20180219':
6
- - http-proxy-middleware > micromatch > braces:
7
- reason: None given
8
- expires: '2018-09-11T01:52:14.022Z'
9
- 'npm:node-forge:20180226':
10
- - node-forge:
11
- reason: None given
12
- expires: '2018-09-11T01:52:14.022Z'
13
- - webid > node-forge:
14
- reason: None given
15
- expires: '2018-09-11T01:52:14.023Z'
16
- 'npm:base64url:20180511':
17
- - rdflib > solid-auth-client > @trust/oidc-rp > base64url:
18
- reason: None given
19
- expires: '2018-09-11T01:52:14.023Z'
20
- - rdflib > solid-auth-client > @trust/oidc-rp > @trust/webcrypto > base64url:
21
- reason: None given
22
- expires: '2018-09-11T01:52:14.023Z'
23
- - oidc-auth-manager > rdflib > solid-auth-client > @trust/oidc-rp > base64url:
24
- reason: None given
25
- expires: '2018-09-11T01:52:14.023Z'
26
- - oidc-auth-manager > rdflib > solid-auth-client > @trust/oidc-rp > @trust/webcrypto > base64url:
27
- reason: None given
28
- expires: '2018-09-11T01:52:14.023Z'
29
- - solid-auth-client@2.1.0 > @trust/oidc-rp@0.4.3 > base64url@2.0.0:
30
- reason: None given
31
- expires: '2018-09-11T01:52:14.023Z'
32
- - solid-auth-client@2.1.0 > @trust/oidc-rp@0.4.3 > @trust/webcrypto@0.4.0 > base64url@2.0.0:
33
- reason: None given
34
- expires: '2018-09-11T01:52:14.023Z'
35
- patch: {}
@@ -1,85 +0,0 @@
1
- const fs = require('fs-extra')
2
- const { red, cyan, bold } = require('colorette')
3
- const { URL } = require('url')
4
- const LDP = require('../../lib/ldp')
5
- const AccountManager = require('../../lib/models/account-manager')
6
- const SolidHost = require('../../lib/models/solid-host')
7
-
8
- module.exports.getAccountManager = getAccountManager
9
- module.exports.loadAccounts = loadAccounts
10
- module.exports.loadConfig = loadConfig
11
- module.exports.loadUsernames = loadUsernames
12
-
13
- /**
14
- * Returns an instance of AccountManager
15
- *
16
- * @param {Object} config
17
- * @param {Object} [options]
18
- * @returns {AccountManager}
19
- */
20
- function getAccountManager (config, options = {}) {
21
- const ldp = options.ldp || new LDP(config)
22
- const host = options.host || SolidHost.from({ port: config.port, serverUri: config.serverUri })
23
- return AccountManager.from({
24
- host,
25
- store: ldp,
26
- multiuser: config.multiuser
27
- })
28
- }
29
-
30
- function loadConfig (program, options) {
31
- let argv = {
32
- ...options,
33
- version: program.version()
34
- }
35
- const configFile = argv.configFile || './config.json'
36
-
37
- try {
38
- const file = fs.readFileSync(configFile)
39
-
40
- // Use flags with priority over config file
41
- const config = JSON.parse(file)
42
- argv = { ...config, ...argv }
43
- } catch (err) {
44
- // If config file was specified, but it doesn't exist, stop with error message
45
- if (typeof argv.configFile !== 'undefined') {
46
- if (!fs.existsSync(configFile)) {
47
- console.log(red(bold('ERR')), 'Config file ' + configFile + ' doesn\'t exist.')
48
- process.exit(1)
49
- }
50
- }
51
-
52
- // If the file exists, but parsing failed, stop with error message
53
- if (fs.existsSync(configFile)) {
54
- console.log(red(bold('ERR')), 'config file ' + configFile + ' couldn\'t be parsed: ' + err)
55
- process.exit(1)
56
- }
57
-
58
- // Legacy behavior - if config file does not exist, start with default
59
- // values, but an info message to create a config file.
60
- console.log(cyan(bold('TIP')), 'create a config.json: `$ solid init`')
61
- }
62
-
63
- return argv
64
- }
65
-
66
- /**
67
- *
68
- * @param root
69
- * @param [serverUri] If not set, hostname must be set
70
- * @param [hostname] If not set, serverUri must be set
71
- * @returns {*}
72
- */
73
- function loadAccounts ({ root, serverUri, hostname }) {
74
- const files = fs.readdirSync(root)
75
- hostname = hostname || new URL(serverUri).hostname
76
- const isUserDirectory = new RegExp(`.${hostname}$`)
77
- return files
78
- .filter(file => isUserDirectory.test(file))
79
- }
80
-
81
- function loadUsernames ({ root, serverUri }) {
82
- const hostname = new URL(serverUri).hostname
83
- return loadAccounts({ root, hostname })
84
- .map(userDirectory => userDirectory.substr(0, userDirectory.length - hostname.length - 1))
85
- }
package/bin/lib/cli.js DELETED
@@ -1,39 +0,0 @@
1
- const program = require('commander')
2
- const loadInit = require('./init')
3
- const loadStart = require('./start')
4
- const loadInvalidUsernames = require('./invalidUsernames')
5
- const loadMigrateLegacyResources = require('./migrateLegacyResources')
6
- const loadUpdateIndex = require('./updateIndex')
7
- const { spawnSync } = require('child_process')
8
- const path = require('path')
9
-
10
- module.exports = function startCli (server) {
11
- program.version(getVersion())
12
-
13
- loadInit(program)
14
- loadStart(program, server)
15
- loadInvalidUsernames(program)
16
- loadMigrateLegacyResources(program)
17
- loadUpdateIndex(program)
18
-
19
- program.parse(process.argv)
20
- if (program.args.length === 0) program.help()
21
- }
22
-
23
- function getVersion () {
24
- try {
25
- // Obtain version from git
26
- const options = { cwd: __dirname, encoding: 'utf8' }
27
- const { stdout } = spawnSync('git', ['describe', '--tags'], options)
28
- const { stdout: gitStatusStdout } = spawnSync('git', ['status'], options)
29
- const version = stdout.trim()
30
- if (version === '' || gitStatusStdout.match('Not currently on any branch')) {
31
- throw new Error('No git version here')
32
- }
33
- return version
34
- } catch (e) {
35
- // Obtain version from package.json
36
- const { version } = require(path.join(__dirname, '../../package.json'))
37
- return version
38
- }
39
- }
package/bin/solid.js DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env -S node --experimental-require-module
2
- const startCli = require('./lib/cli')
3
- startCli()