solid-server 5.8.7 → 5.8.8-5fdbfa12

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 +38 -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-2275-1766876301000-0.json +1 -0
  84. package/coverage/tmp/coverage-2276-1766876279735-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/eslint.config.mjs +102 -0
  153. package/examples/custom-error-handling.js +0 -0
  154. package/examples/custom-error-handling.mjs +29 -0
  155. package/examples/ldp-with-webid.js +0 -0
  156. package/examples/ldp-with-webid.mjs +12 -0
  157. package/examples/simple-express-app.js +0 -0
  158. package/examples/simple-express-app.mjs +20 -0
  159. package/examples/simple-ldp-server.js +0 -0
  160. package/examples/simple-ldp-server.mjs +8 -0
  161. package/favicon.ico +0 -0
  162. package/favicon.ico.acl +0 -0
  163. package/index.cjs +4 -0
  164. package/index.html +0 -0
  165. package/index.mjs +23 -0
  166. package/lib/{acl-checker.js → acl-checker.mjs} +13 -17
  167. package/lib/api/accounts/{user-accounts.js → user-accounts.mjs} +17 -16
  168. package/lib/api/authn/{force-user.js → force-user.mjs} +5 -4
  169. package/lib/api/authn/index.mjs +8 -0
  170. package/lib/api/authn/{webid-oidc.js → webid-oidc.mjs} +27 -20
  171. package/lib/api/authn/{webid-tls.js → webid-tls.mjs} +12 -11
  172. package/lib/api/index.mjs +7 -0
  173. package/lib/{capability-discovery.js → capability-discovery.mjs} +3 -6
  174. package/lib/common/{fs-utils.js → fs-utils.mjs} +35 -43
  175. package/lib/common/template-utils.mjs +29 -0
  176. package/lib/common/{user-utils.js → user-utils.mjs} +24 -28
  177. package/lib/{create-app.js → create-app.mjs} +372 -361
  178. package/lib/{create-server.js → create-server.mjs} +34 -13
  179. package/lib/debug.mjs +37 -0
  180. package/lib/handlers/{allow.js → allow.mjs} +79 -83
  181. package/lib/handlers/{auth-proxy.js → auth-proxy.mjs} +8 -8
  182. package/lib/handlers/{copy.js → copy.mjs} +35 -39
  183. package/lib/handlers/{cors-proxy.js → cors-proxy.mjs} +11 -16
  184. package/lib/handlers/{delete.js → delete.mjs} +20 -22
  185. package/lib/handlers/{error-pages.js → error-pages.mjs} +144 -212
  186. package/lib/handlers/{get.js → get.mjs} +258 -252
  187. package/lib/handlers/{index.js → index.mjs} +7 -10
  188. package/lib/handlers/{notify.js → notify.mjs} +8 -10
  189. package/lib/handlers/{options.js → options.mjs} +3 -7
  190. package/lib/handlers/patch/{n3-patch-parser.js → n3-patch-parser.mjs} +57 -59
  191. package/lib/handlers/patch/{sparql-update-parser.js → sparql-update-parser.mjs} +14 -16
  192. package/lib/handlers/{patch.js → patch.mjs} +241 -235
  193. package/lib/handlers/{post.js → post.mjs} +101 -99
  194. package/lib/handlers/{put.js → put.mjs} +101 -105
  195. package/lib/handlers/{restrict-to-top-domain.js → restrict-to-top-domain.mjs} +2 -2
  196. package/lib/{header.js → header.mjs} +138 -143
  197. package/lib/{http-error.js → http-error.mjs} +35 -34
  198. package/lib/{ldp-container.js → ldp-container.mjs} +10 -12
  199. package/lib/ldp-copy.mjs +82 -0
  200. package/lib/ldp-middleware.mjs +38 -0
  201. package/lib/{ldp.js → ldp.mjs} +286 -78
  202. package/lib/{lock.js → lock.mjs} +10 -10
  203. package/lib/{metadata.js → metadata.mjs} +11 -11
  204. package/lib/models/account-manager.mjs +297 -0
  205. package/lib/models/account-template.mjs +70 -0
  206. package/lib/models/authenticator.mjs +161 -0
  207. package/lib/models/oidc-manager.mjs +22 -0
  208. package/lib/models/solid-host.mjs +63 -0
  209. package/lib/models/user-account.mjs +50 -0
  210. package/lib/models/webid-tls-certificate.mjs +97 -0
  211. package/lib/{payment-pointer-discovery.js → payment-pointer-discovery.mjs} +5 -8
  212. package/lib/{rdf-notification-template.js → rdf-notification-template.mjs} +3 -5
  213. package/lib/requests/add-cert-request.mjs +70 -0
  214. package/lib/requests/auth-request.mjs +151 -0
  215. package/lib/requests/{create-account-request.js → create-account-request.mjs} +249 -452
  216. package/lib/requests/delete-account-confirm-request.mjs +85 -0
  217. package/lib/requests/{delete-account-request.js → delete-account-request.mjs} +73 -134
  218. package/lib/requests/login-request.mjs +89 -0
  219. package/lib/requests/{password-change-request.js → password-change-request.mjs} +132 -201
  220. package/lib/requests/{password-reset-email-request.js → password-reset-email-request.mjs} +123 -202
  221. package/lib/requests/password-reset-request.mjs +47 -0
  222. package/lib/requests/register-request.mjs +48 -0
  223. package/lib/requests/{sharing-request.js → sharing-request.mjs} +174 -261
  224. package/lib/{resource-mapper.js → resource-mapper.mjs} +8 -9
  225. package/lib/{server-config.js → server-config.mjs} +15 -20
  226. package/lib/services/{blacklist-service.js → blacklist-service.mjs} +36 -33
  227. package/lib/services/email-service.mjs +76 -0
  228. package/lib/services/{token-service.js → token-service.mjs} +36 -44
  229. package/lib/{utils.js → utils.mjs} +307 -254
  230. package/lib/webid/{index.js → index.mjs} +9 -13
  231. package/lib/webid/lib/{get.js → get.mjs} +30 -35
  232. package/lib/webid/lib/{parse.js → parse.mjs} +10 -12
  233. package/lib/webid/lib/verify.mjs +77 -0
  234. package/lib/webid/tls/generate.mjs +53 -0
  235. package/lib/webid/tls/index.mjs +6 -0
  236. package/package.json +75 -67
  237. package/renovate.json +0 -0
  238. package/robots.txt +0 -0
  239. package/robots.txt.acl +0 -0
  240. package/solid-server-5.8.8.tgz +0 -0
  241. package/static/account-recovery.html +0 -0
  242. package/static/popup-redirect.html +0 -0
  243. package/static/signup.html +0 -0
  244. package/static/signup.html.acl +0 -0
  245. package/test/index.mjs +167 -0
  246. package/test/integration/account-creation-tls-test.mjs +127 -0
  247. package/test/integration/account-manager-test.mjs +150 -0
  248. package/test/integration/account-template-test.mjs +135 -0
  249. package/test/integration/acl-oidc-test.mjs +1047 -0
  250. package/test/integration/acl-tls-test.mjs +964 -0
  251. package/test/integration/auth-proxy-test.mjs +144 -0
  252. package/test/integration/authentication-oidc-test.mjs +816 -0
  253. package/test/integration/authentication-oidc-with-strict-origins-turned-off-test.mjs +643 -0
  254. package/test/integration/capability-discovery-test.mjs +115 -0
  255. package/test/integration/cors-proxy-test.mjs +145 -0
  256. package/test/integration/errors-oidc-test.mjs +109 -0
  257. package/test/integration/errors-test.mjs +49 -0
  258. package/test/integration/formats-test.mjs +136 -0
  259. package/test/integration/header-test.mjs +101 -0
  260. package/test/integration/http-copy-test.mjs +109 -0
  261. package/test/integration/http-test.mjs +1197 -0
  262. package/test/integration/ldp-test.mjs +528 -0
  263. package/test/integration/oidc-manager-test.mjs +41 -0
  264. package/test/integration/params-test.mjs +192 -0
  265. package/test/integration/patch-sparql-update-test.mjs +195 -0
  266. package/test/integration/patch-test.mjs +590 -0
  267. package/test/integration/payment-pointer-test.mjs +155 -0
  268. package/test/integration/prep-test.mjs +314 -0
  269. package/test/integration/quota-test.mjs +50 -0
  270. package/test/integration/special-root-acl-handling-test.mjs +68 -0
  271. package/test/integration/validate-tts-test.mjs +57 -0
  272. package/test/integration/www-account-creation-oidc-test.mjs +310 -0
  273. package/test/keys/cert.pem +21 -0
  274. package/test/keys/client-cert.pem +19 -0
  275. package/test/keys/client-key.pem +27 -0
  276. package/test/keys/key.pem +27 -0
  277. package/test/keys/user1-cert.pem +23 -0
  278. package/test/keys/user1-key.pem +28 -0
  279. package/test/keys/user2-cert.pem +23 -0
  280. package/test/keys/user2-key.pem +27 -0
  281. package/test/mocha.opts +2 -0
  282. package/test/resources/Makefile +146 -0
  283. package/test/resources/accounts/alice.localhost/profile/card +0 -0
  284. package/test/resources/accounts/db/oidc/op/clients/_key_abbf27de893abf7d05279547c22d9366.json +1 -0
  285. package/test/resources/accounts/db/oidc/op/provider.json +763 -0
  286. package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -0
  287. package/test/resources/accounts/localhost/samplePublicContainer/nicola.jpg +0 -0
  288. package/test/resources/accounts/tim.localhost/hello.html +9 -0
  289. package/test/resources/accounts/tim.localhost/profile/card +0 -0
  290. package/test/resources/accounts-acl/config/templates/emails/welcome-test.js +39 -0
  291. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico +0 -0
  292. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico.acl +26 -0
  293. package/test/resources/accounts-acl/config/templates/new-account/index.html +28 -0
  294. package/test/resources/accounts-acl/config/templates/new-account/index.html.acl +22 -0
  295. package/test/resources/accounts-acl/config/templates/new-account/profile/card +27 -0
  296. package/{default-templates/new-account/inbox/.acl → test/resources/accounts-acl/config/templates/new-account/profile/card.acl} +5 -6
  297. package/test/resources/accounts-acl/config/templates/new-account/settings/prefs.ttl +9 -0
  298. package/test/resources/accounts-acl/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  299. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  300. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  301. package/test/resources/accounts-acl/config/templates/new-account/settings/serverSide.ttl +14 -0
  302. package/test/resources/accounts-acl/config/templates/server/index.html +35 -0
  303. package/{.acl → test/resources/accounts-acl/config/templates/server/index.html.acl} +4 -3
  304. package/test/resources/accounts-acl/config/views/account/register.hbs +58 -0
  305. package/test/resources/accounts-acl/config/views/auth/consent.hbs +49 -0
  306. package/test/resources/accounts-acl/config/views/auth/goodbye.hbs +20 -0
  307. package/test/resources/accounts-acl/config/views/auth/login-required.hbs +0 -0
  308. package/test/resources/accounts-acl/config/views/auth/login.hbs +51 -0
  309. package/test/resources/accounts-acl/config/views/auth/no-permission.hbs +0 -0
  310. package/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json +1 -0
  311. package/test/resources/accounts-acl/db/oidc/op/provider.json +763 -0
  312. package/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json +1 -0
  313. package/test/resources/accounts-acl/localhost/favicon.ico +0 -0
  314. package/test/resources/accounts-acl/localhost/index.html +35 -0
  315. package/{default-templates/server/.acl → test/resources/accounts-acl/localhost/index.html.acl} +4 -3
  316. package/test/resources/accounts-acl/nicola.localhost/index.html +1 -0
  317. package/test/resources/accounts-acl/nicola.localhost/index.html.acl +10 -0
  318. package/test/resources/accounts-acl/quota/settings/serverSide.ttl +11 -0
  319. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl +1 -0
  320. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl.acl +8 -0
  321. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl +1 -0
  322. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  323. package/test/resources/accounts-acl/tim.localhost/fake-account/hello.html +9 -0
  324. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing-error.ttl +1 -0
  325. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing.ttl +14 -0
  326. package/test/resources/accounts-acl/tim.localhost/group/test-folder/some-other-file.txt +1 -0
  327. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt +1 -0
  328. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt.acl +8 -0
  329. package/test/resources/accounts-acl/tim.localhost/no-acl/test-file.html +1 -0
  330. package/test/resources/accounts-acl/tim.localhost/read-acl/deeper-tree/acls-only-on-top/example.ttl +1 -0
  331. package/test/resources/accounts-acl/tim.localhost/write-acl/test-file$.txt +1 -0
  332. package/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_931f2a0c999a8f0695573844341dde0e.json +1 -0
  333. package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +761 -0
  334. package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -0
  335. package/test/resources/accounts-scenario/alice/private-for-alice.txt +1 -0
  336. package/test/resources/accounts-scenario/alice/private-for-alice.txt.acl +12 -0
  337. package/test/resources/accounts-scenario/alice/profile/card$.ttl +10 -0
  338. package/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_8bdd350afbe0452a42fe6b3b3705d25f.json +1 -0
  339. package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +761 -0
  340. package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -0
  341. package/test/resources/accounts-scenario/bob/profile/card$.ttl +5 -0
  342. package/test/resources/accounts-scenario/bob/shared-with-alice.txt +1 -0
  343. package/test/resources/accounts-scenario/bob/shared-with-alice.txt.acl +15 -0
  344. package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/_key_e4ed74eed3926d2f8d4d1d9661be7aea.json +1 -0
  345. package/test/resources/accounts-scenario/charlie/db/oidc/op/provider.json +759 -0
  346. package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -0
  347. package/test/resources/accounts-scenario/charlie/profile/card$.ttl +5 -0
  348. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/_key_9d6b49e3a595c4942e1105545518362d.json +1 -0
  349. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json +763 -0
  350. package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -0
  351. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt +1 -0
  352. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt.acl +12 -0
  353. package/test/resources/accounts-strict-origin-off/alice/profile/card$.ttl +10 -0
  354. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/_key_5f68117de7511ed2b2290d81c83a2d98.json +1 -0
  355. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json +763 -0
  356. package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -0
  357. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt +1 -0
  358. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt.acl +15 -0
  359. package/test/resources/acl-tls/config/templates/emails/delete-account.js +49 -0
  360. package/test/resources/acl-tls/config/templates/emails/invalid-username.js +30 -0
  361. package/test/resources/acl-tls/config/templates/emails/reset-password.js +49 -0
  362. package/test/resources/acl-tls/config/templates/emails/welcome.js +39 -0
  363. package/test/resources/acl-tls/config/templates/new-account/favicon.ico +0 -0
  364. package/test/resources/acl-tls/config/templates/new-account/favicon.ico.acl +26 -0
  365. package/test/resources/acl-tls/config/templates/new-account/profile/card$.ttl +26 -0
  366. package/test/resources/acl-tls/config/templates/new-account/robots.txt +3 -0
  367. package/test/resources/acl-tls/config/templates/new-account/robots.txt.acl +26 -0
  368. package/test/resources/acl-tls/config/templates/new-account/settings/prefs.ttl +15 -0
  369. package/test/resources/acl-tls/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  370. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  371. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  372. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  373. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  374. package/test/resources/acl-tls/config/templates/server/favicon.ico +0 -0
  375. package/test/resources/acl-tls/config/templates/server/favicon.ico.acl +15 -0
  376. package/test/resources/acl-tls/config/templates/server/index.html +55 -0
  377. package/test/resources/acl-tls/config/templates/server/robots.txt +3 -0
  378. package/test/resources/acl-tls/config/templates/server/robots.txt.acl +15 -0
  379. package/test/resources/acl-tls/config/views/account/account-deleted.hbs +17 -0
  380. package/test/resources/acl-tls/config/views/account/delete-confirm.hbs +51 -0
  381. package/test/resources/acl-tls/config/views/account/delete-link-sent.hbs +17 -0
  382. package/test/resources/acl-tls/config/views/account/delete.hbs +51 -0
  383. package/test/resources/acl-tls/config/views/account/invalid-username.hbs +22 -0
  384. package/test/resources/acl-tls/config/views/account/register-disabled.hbs +6 -0
  385. package/test/resources/acl-tls/config/views/account/register-form.hbs +147 -0
  386. package/test/resources/acl-tls/config/views/account/register.hbs +24 -0
  387. package/test/resources/acl-tls/config/views/auth/auth-hidden-fields.hbs +8 -0
  388. package/test/resources/acl-tls/config/views/auth/change-password.hbs +58 -0
  389. package/test/resources/acl-tls/config/views/auth/goodbye.hbs +23 -0
  390. package/test/resources/acl-tls/config/views/auth/login-required.hbs +34 -0
  391. package/test/resources/acl-tls/config/views/auth/login-tls.hbs +11 -0
  392. package/test/resources/acl-tls/config/views/auth/login-username-password.hbs +28 -0
  393. package/test/resources/acl-tls/config/views/auth/login.hbs +55 -0
  394. package/test/resources/acl-tls/config/views/auth/no-permission.hbs +29 -0
  395. package/test/resources/acl-tls/config/views/auth/password-changed.hbs +27 -0
  396. package/test/resources/acl-tls/config/views/auth/reset-link-sent.hbs +21 -0
  397. package/test/resources/acl-tls/config/views/auth/reset-password.hbs +52 -0
  398. package/test/resources/acl-tls/config/views/auth/sharing.hbs +49 -0
  399. package/test/resources/acl-tls/config/views/shared/create-account.hbs +8 -0
  400. package/test/resources/acl-tls/config/views/shared/error.hbs +5 -0
  401. package/test/resources/acl-tls/localhost/favicon.ico +0 -0
  402. package/test/resources/acl-tls/localhost/favicon.ico.acl +15 -0
  403. package/test/resources/acl-tls/localhost/index.html +48 -0
  404. package/test/resources/acl-tls/localhost/robots.txt +3 -0
  405. package/test/resources/acl-tls/localhost/robots.txt.acl +15 -0
  406. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl +1 -0
  407. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl.acl +8 -0
  408. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl +1 -0
  409. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  410. package/test/resources/acl-tls/tim.localhost/fake-account/hello.html +9 -0
  411. package/test/resources/acl-tls/tim.localhost/no-acl/test-file.html +1 -0
  412. package/test/resources/acl-tls/tim.localhost/profile/card$.ttl +17 -0
  413. package/test/resources/acl-tls/write-acl/test-file$.ttl +1 -0
  414. package/test/resources/auth-proxy/index.html +0 -0
  415. package/test/resources/auth-proxy/index.html.acl +0 -0
  416. package/test/resources/config/templates/emails/delete-account.js +49 -0
  417. package/test/resources/config/templates/emails/delete-account.mjs +31 -0
  418. package/test/resources/config/templates/emails/invalid-username.js +30 -0
  419. package/test/resources/config/templates/emails/invalid-username.mjs +27 -0
  420. package/test/resources/config/templates/emails/reset-password.js +49 -0
  421. package/test/resources/config/templates/emails/reset-password.mjs +31 -0
  422. package/test/resources/config/templates/emails/welcome.js +39 -0
  423. package/test/resources/config/templates/emails/welcome.mjs +23 -0
  424. package/test/resources/config/templates/new-account/favicon.ico +0 -0
  425. package/test/resources/config/templates/new-account/favicon.ico.acl +26 -0
  426. package/test/resources/config/templates/new-account/profile/card$.ttl +26 -0
  427. package/test/resources/config/templates/new-account/robots.txt +3 -0
  428. package/test/resources/config/templates/new-account/robots.txt.acl +26 -0
  429. package/test/resources/config/templates/new-account/settings/prefs.ttl +15 -0
  430. package/test/resources/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  431. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  432. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  433. package/test/resources/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  434. package/test/resources/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  435. package/test/resources/config/templates/server/favicon.ico +0 -0
  436. package/test/resources/config/templates/server/favicon.ico.acl +15 -0
  437. package/test/resources/config/templates/server/index.html +54 -0
  438. package/test/resources/config/templates/server/robots.txt +3 -0
  439. package/test/resources/config/templates/server/robots.txt.acl +15 -0
  440. package/test/resources/config/views/account/account-deleted.hbs +17 -0
  441. package/test/resources/config/views/account/delete-confirm.hbs +51 -0
  442. package/test/resources/config/views/account/delete-link-sent.hbs +17 -0
  443. package/test/resources/config/views/account/delete.hbs +51 -0
  444. package/test/resources/config/views/account/invalid-username.hbs +22 -0
  445. package/test/resources/config/views/account/register-disabled.hbs +6 -0
  446. package/test/resources/config/views/account/register-form.hbs +133 -0
  447. package/test/resources/config/views/account/register.hbs +24 -0
  448. package/test/resources/config/views/auth/auth-hidden-fields.hbs +8 -0
  449. package/test/resources/config/views/auth/change-password.hbs +58 -0
  450. package/test/resources/config/views/auth/goodbye.hbs +23 -0
  451. package/test/resources/config/views/auth/login-required.hbs +34 -0
  452. package/test/resources/config/views/auth/login-tls.hbs +11 -0
  453. package/test/resources/config/views/auth/login-username-password.hbs +28 -0
  454. package/test/resources/config/views/auth/login.hbs +55 -0
  455. package/test/resources/config/views/auth/no-permission.hbs +29 -0
  456. package/test/resources/config/views/auth/password-changed.hbs +27 -0
  457. package/test/resources/config/views/auth/reset-link-sent.hbs +21 -0
  458. package/test/resources/config/views/auth/reset-password.hbs +52 -0
  459. package/test/resources/config/views/auth/sharing.hbs +49 -0
  460. package/test/resources/config/views/shared/create-account.hbs +8 -0
  461. package/test/resources/config/views/shared/error.hbs +5 -0
  462. package/test/resources/empty.spatch +0 -0
  463. package/test/resources/errorPages/401.html +5 -0
  464. package/test/resources/errorPages/403.html +5 -0
  465. package/test/resources/errorPages/404.html +5 -0
  466. package/test/resources/errorPages/405.html +5 -0
  467. package/test/resources/errorPages/415.html +5 -0
  468. package/test/resources/errorPages/500.html +5 -0
  469. package/test/resources/example_spkac.cnf +1 -0
  470. package/test/resources/external-servers/example.com/jwks.json +81 -0
  471. package/test/resources/external-servers/example.com/openid-configuration.json +53 -0
  472. package/test/resources/favicon.ico +0 -0
  473. package/test/resources/favicon.ico.acl +15 -0
  474. package/test/resources/headers/index.html +0 -0
  475. package/test/resources/headers/public-ra +0 -0
  476. package/test/resources/headers/public-ra.acl +7 -0
  477. package/test/resources/headers/user-rw-public-r +0 -0
  478. package/test/resources/headers/user-rw-public-r.acl +12 -0
  479. package/test/resources/headers/user-rwac-public-0 +0 -0
  480. package/test/resources/headers/user-rwac-public-0.acl +7 -0
  481. package/test/resources/hello.html +3 -0
  482. package/test/resources/invalid1.ttl +13 -0
  483. package/test/resources/invalid2.ttl +9 -0
  484. package/test/resources/ldpatch-example-final.ttl +23 -0
  485. package/test/resources/ldpatch-example-initial.ttl +22 -0
  486. package/test/resources/ldpatch-example-patch-1.spatch +8 -0
  487. package/test/resources/ldpatch-example-patch-2.spatch +12 -0
  488. package/test/resources/ldpatch-example-patch-3.spatch +14 -0
  489. package/test/resources/ldpatch-example-patch.ldpatch +25 -0
  490. package/test/resources/ldpatch-example-patch.spatch +24 -0
  491. package/test/resources/lennon.jsonld +7 -0
  492. package/test/resources/lfs-0.sparql +9 -0
  493. package/test/resources/lfs-1-final.json +10 -0
  494. package/test/resources/lfs-1.sparql +11 -0
  495. package/test/resources/messaging-scenario/user1.databox.me/profile/card +21 -0
  496. package/test/resources/nicola.jpg +0 -0
  497. package/test/resources/patch/append-only.ttl +2 -0
  498. package/test/resources/patch/append-only.ttl.acl +6 -0
  499. package/test/resources/patch/favicon.ico +0 -0
  500. package/test/resources/patch/favicon.ico.acl +15 -0
  501. package/test/resources/patch/index.html +0 -0
  502. package/test/resources/patch/read-append.ttl +2 -0
  503. package/test/resources/patch/read-append.ttl.acl +6 -0
  504. package/test/resources/patch/read-only.ttl +2 -0
  505. package/test/resources/patch/read-only.ttl.acl +6 -0
  506. package/test/resources/patch/read-write.ttl +2 -0
  507. package/test/resources/patch/read-write.ttl.acl +6 -0
  508. package/test/resources/patch/robots.txt +3 -0
  509. package/test/resources/patch/robots.txt.acl +15 -0
  510. package/test/resources/patch/write-only.ttl +2 -0
  511. package/test/resources/patch/write-only.ttl.acl +6 -0
  512. package/test/resources/patch-1-initial.ttl +3 -0
  513. package/test/resources/patch-2-final.ttl +2 -0
  514. package/test/resources/patch-2-initial.ttl +3 -0
  515. package/test/resources/patch-2.spatch +2 -0
  516. package/test/resources/patch-2n.spatch +2 -0
  517. package/test/resources/patch-3-final.ttl +28 -0
  518. package/test/resources/patch-4-final.ttl +29 -0
  519. package/test/resources/patch-5-final.ttl +1 -0
  520. package/test/resources/patch-5-initial.ttl +3 -0
  521. package/test/resources/patch-5.spatch +2 -0
  522. package/test/resources/put-input-2.html +13 -0
  523. package/test/resources/put-input.txt +6 -0
  524. package/test/resources/robots.txt +3 -0
  525. package/test/resources/robots.txt.acl +15 -0
  526. package/test/resources/sampleContainer/blank +0 -0
  527. package/test/resources/sampleContainer/cert.pkcs +0 -0
  528. package/test/resources/sampleContainer/example.ttl.old +1 -0
  529. package/test/resources/sampleContainer/example1.ttl +12 -0
  530. package/test/resources/sampleContainer/example2.ttl +3 -0
  531. package/test/resources/sampleContainer/example3.ttl +7 -0
  532. package/test/resources/sampleContainer/example4$.ttl +7 -0
  533. package/test/resources/sampleContainer/filename with spaces.txt +0 -0
  534. package/test/resources/sampleContainer/index.html +9 -0
  535. package/test/resources/sampleContainer/post2.ttl +6 -0
  536. package/test/resources/sampleContainer/put1.ttl +13 -0
  537. package/test/resources/sampleContainer/solid.png +0 -0
  538. package/test/resources/sampleContainer/user1.pfx +0 -0
  539. package/test/resources/sampleContainer/user2.pfx +0 -0
  540. package/test/resources/sampleContainer2/example1.ttl +10 -0
  541. package/test/resources/sampleContainer2/example2.ttl +7 -0
  542. package/test/resources/timbl.jpg +0 -0
  543. package/test/scenarios.md +23 -0
  544. package/test/surface/docker/cookie/Dockerfile +6 -0
  545. package/test/surface/docker/cookie/app/index.js +29 -0
  546. package/test/surface/docker/cookie/app/package-lock.json +13 -0
  547. package/test/surface/docker/cookie/app/package.json +14 -0
  548. package/test/surface/docker/server/Dockerfile +19 -0
  549. package/test/surface/docker/server/config/defaults.js +10 -0
  550. package/test/surface/docker/server/config/templates/emails/delete-account.js +49 -0
  551. package/test/surface/docker/server/config/templates/emails/invalid-username.js +30 -0
  552. package/test/surface/docker/server/config/templates/emails/reset-password.js +49 -0
  553. package/test/surface/docker/server/config/templates/emails/welcome.js +39 -0
  554. package/test/surface/docker/server/config/templates/new-account/favicon.ico +0 -0
  555. package/test/surface/docker/server/config/templates/new-account/favicon.ico.acl +26 -0
  556. package/test/surface/docker/server/config/templates/new-account/profile/card$.ttl +26 -0
  557. package/test/surface/docker/server/config/templates/new-account/robots.txt +3 -0
  558. package/test/surface/docker/server/config/templates/new-account/robots.txt.acl +26 -0
  559. package/test/surface/docker/server/config/templates/new-account/settings/prefs.ttl +15 -0
  560. package/test/surface/docker/server/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  561. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  562. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  563. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  564. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  565. package/test/surface/docker/server/config/templates/server/favicon.ico +0 -0
  566. package/test/surface/docker/server/config/templates/server/favicon.ico.acl +15 -0
  567. package/test/surface/docker/server/config/templates/server/index.html +55 -0
  568. package/test/surface/docker/server/config/templates/server/robots.txt +3 -0
  569. package/test/surface/docker/server/config/templates/server/robots.txt.acl +15 -0
  570. package/test/surface/docker/server/config/usernames-blacklist.json +4 -0
  571. package/test/surface/docker/server/config/views/account/account-deleted.hbs +17 -0
  572. package/test/surface/docker/server/config/views/account/delete-confirm.hbs +51 -0
  573. package/test/surface/docker/server/config/views/account/delete-link-sent.hbs +17 -0
  574. package/test/surface/docker/server/config/views/account/delete.hbs +51 -0
  575. package/test/surface/docker/server/config/views/account/invalid-username.hbs +22 -0
  576. package/test/surface/docker/server/config/views/account/register-disabled.hbs +6 -0
  577. package/test/surface/docker/server/config/views/account/register-form.hbs +147 -0
  578. package/test/surface/docker/server/config/views/account/register.hbs +24 -0
  579. package/test/surface/docker/server/config/views/auth/auth-hidden-fields.hbs +8 -0
  580. package/test/surface/docker/server/config/views/auth/change-password.hbs +58 -0
  581. package/test/surface/docker/server/config/views/auth/goodbye.hbs +23 -0
  582. package/test/surface/docker/server/config/views/auth/login-required.hbs +34 -0
  583. package/test/surface/docker/server/config/views/auth/login-tls.hbs +11 -0
  584. package/test/surface/docker/server/config/views/auth/login-username-password.hbs +28 -0
  585. package/test/surface/docker/server/config/views/auth/login.hbs +55 -0
  586. package/test/surface/docker/server/config/views/auth/no-permission.hbs +29 -0
  587. package/test/surface/docker/server/config/views/auth/password-changed.hbs +27 -0
  588. package/test/surface/docker/server/config/views/auth/reset-link-sent.hbs +21 -0
  589. package/test/surface/docker/server/config/views/auth/reset-password.hbs +52 -0
  590. package/test/surface/docker/server/config/views/auth/sharing.hbs +49 -0
  591. package/test/surface/docker/server/config/views/shared/create-account.hbs +8 -0
  592. package/test/surface/docker/server/config/views/shared/error.hbs +5 -0
  593. package/test/surface/docker/server/config.json +22 -0
  594. package/test/surface/docker/server/data/favicon.ico +0 -0
  595. package/test/surface/docker/server/data/favicon.ico.acl +26 -0
  596. package/test/surface/docker/server/data/index.html +48 -0
  597. package/test/surface/docker/server/data/profile/card$.ttl +31 -0
  598. package/test/surface/docker/server/data/robots.txt +3 -0
  599. package/test/surface/docker/server/data/robots.txt.acl +26 -0
  600. package/test/surface/docker/server/data/settings/prefs.ttl +15 -0
  601. package/test/surface/docker/server/data/settings/privateTypeIndex.ttl +4 -0
  602. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl +4 -0
  603. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl.acl +25 -0
  604. package/test/surface/docker/server/data/settings/serverSide.ttl +0 -0
  605. package/test/surface/docker/server/data/settings/serverSide.ttl.acl +13 -0
  606. package/test/surface/docker/server/data/settings/serverSide.ttl.inactive +12 -0
  607. package/test/surface/docker/server/env.list +4 -0
  608. package/test/surface/docker/solid-crud/Dockerfile +4 -0
  609. package/test/surface/docker/web-access-control/Dockerfile +1 -0
  610. package/test/surface/docker/webid-provider/Dockerfile +1 -0
  611. package/test/surface/run-solid-test-suite.sh +75 -0
  612. package/test/surface/server-env.list +5 -0
  613. package/test/surface/solid-crud-tests-env.list +5 -0
  614. package/test/surface/thirdparty-config.json +23 -0
  615. package/test/surface/thirdparty-env.list +6 -0
  616. package/test/surface/web-access-control-tests-env.list +6 -0
  617. package/test/surface/webid-provider-tests-env.list +4 -0
  618. package/test/test-helpers.mjs +63 -0
  619. package/test/unit/account-manager-test.mjs +610 -0
  620. package/test/unit/account-template-test.mjs +58 -0
  621. package/test/unit/acl-checker-test.mjs +51 -0
  622. package/test/unit/add-cert-request-test.mjs +119 -0
  623. package/test/unit/auth-handlers-test.mjs +108 -0
  624. package/test/unit/auth-proxy-test.mjs +224 -0
  625. package/test/unit/auth-request-test.mjs +96 -0
  626. package/test/unit/authenticator-test.mjs +34 -0
  627. package/test/unit/blacklist-service-test.mjs +49 -0
  628. package/test/unit/create-account-request-test.mjs +306 -0
  629. package/test/unit/delete-account-confirm-request-test.mjs +234 -0
  630. package/test/unit/delete-account-request-test.mjs +180 -0
  631. package/test/unit/email-service-test.mjs +165 -0
  632. package/test/unit/email-welcome-test.mjs +80 -0
  633. package/test/unit/error-pages-test.mjs +100 -0
  634. package/test/unit/esm-imports.test.mjs +148 -0
  635. package/test/unit/force-user-test.mjs +73 -0
  636. package/test/unit/getAvailableUrl-test.mjs +30 -0
  637. package/test/unit/getTrustedOrigins-test.mjs +20 -0
  638. package/test/unit/login-request-test.mjs +246 -0
  639. package/test/unit/oidc-manager-test.mjs +49 -0
  640. package/test/unit/password-authenticator-test.mjs +125 -0
  641. package/test/unit/password-change-request-test.mjs +259 -0
  642. package/test/unit/password-reset-email-request-test.mjs +234 -0
  643. package/test/unit/resource-mapper-test.mjs +673 -0
  644. package/test/unit/solid-host-test.mjs +118 -0
  645. package/test/unit/tls-authenticator-test.mjs +174 -0
  646. package/test/unit/token-service-test.mjs +82 -0
  647. package/test/unit/user-account-test.mjs +37 -0
  648. package/test/unit/user-accounts-api-test.mjs +59 -0
  649. package/test/unit/user-utils-test.mjs +64 -0
  650. package/test/unit/utils-test.mjs +112 -0
  651. package/test/utils/index.mjs +166 -0
  652. package/test/utils.mjs +204 -0
  653. package/test/validate-turtle.mjs +42 -0
  654. package/.github/workflows/ci.yml +0 -113
  655. package/.nvmrc +0 -1
  656. package/.snyk +0 -35
  657. package/bin/lib/cli-utils.js +0 -85
  658. package/bin/lib/cli.js +0 -39
  659. package/bin/solid.js +0 -3
  660. package/default-templates/new-account/.acl +0 -26
  661. package/default-templates/new-account/.meta +0 -5
  662. package/default-templates/new-account/.well-known/.acl +0 -19
  663. package/default-templates/new-account/private/.acl +0 -10
  664. package/default-templates/new-account/profile/.acl +0 -19
  665. package/default-templates/new-account/public/.acl +0 -19
  666. package/default-templates/new-account/settings/.acl +0 -20
  667. package/index.js +0 -3
  668. package/lib/api/authn/index.js +0 -5
  669. package/lib/api/index.js +0 -6
  670. package/lib/common/template-utils.js +0 -50
  671. package/lib/debug.js +0 -18
  672. package/lib/ldp-copy.js +0 -73
  673. package/lib/ldp-middleware.js +0 -40
  674. package/lib/models/account-manager.js +0 -604
  675. package/lib/models/account-template.js +0 -156
  676. package/lib/models/authenticator.js +0 -337
  677. package/lib/models/oidc-manager.js +0 -53
  678. package/lib/models/solid-host.js +0 -131
  679. package/lib/models/user-account.js +0 -113
  680. package/lib/models/webid-tls-certificate.js +0 -184
  681. package/lib/requests/add-cert-request.js +0 -138
  682. package/lib/requests/auth-request.js +0 -234
  683. package/lib/requests/delete-account-confirm-request.js +0 -170
  684. package/lib/requests/login-request.js +0 -205
  685. package/lib/services/email-service.js +0 -162
  686. package/lib/webid/tls/index.js +0 -185
@@ -0,0 +1,166 @@
1
+ import fs from 'fs-extra'
2
+ import { rimrafSync } 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 https from 'https'
10
+
11
+ const __filename = fileURLToPath(import.meta.url)
12
+ const __dirname = path.dirname(__filename)
13
+
14
+ const TEST_HOSTS = ['nic.localhost', 'tim.localhost', 'nicola.localhost']
15
+
16
+ export function rm (file) {
17
+ return rimrafSync(path.normalize(path.join(__dirname, '../resources/' + file)))
18
+ }
19
+
20
+ export function cleanDir (dirPath) {
21
+ fs.removeSync(path.normalize(path.join(dirPath, '.well-known/.acl')))
22
+ fs.removeSync(path.normalize(path.join(dirPath, '.acl')))
23
+ fs.removeSync(path.normalize(path.join(dirPath, 'favicon.ico')))
24
+ fs.removeSync(path.normalize(path.join(dirPath, 'favicon.ico.acl')))
25
+ fs.removeSync(path.normalize(path.join(dirPath, 'index.html')))
26
+ fs.removeSync(path.normalize(path.join(dirPath, 'index.html.acl')))
27
+ fs.removeSync(path.normalize(path.join(dirPath, 'robots.txt')))
28
+ fs.removeSync(path.normalize(path.join(dirPath, 'robots.txt.acl')))
29
+ }
30
+
31
+ export function write (text, file) {
32
+ return fs.writeFileSync(path.normalize(path.join(__dirname, '../resources/' + file)), text)
33
+ }
34
+
35
+ export function cp (src, dest) {
36
+ return fs.copySync(
37
+ path.normalize(path.join(__dirname, '../resources/' + src)),
38
+ path.normalize(path.join(__dirname, '../resources/' + dest)))
39
+ }
40
+
41
+ export function read (file) {
42
+ return fs.readFileSync(path.normalize(path.join(__dirname, '../resources/' + file)), {
43
+ encoding: 'utf8'
44
+ })
45
+ }
46
+
47
+ // Backs up the given file
48
+ export function backup (src) {
49
+ cp(src, src + '.bak')
50
+ }
51
+
52
+ // Restores a backup of the given file
53
+ export function restore (src) {
54
+ cp(src + '.bak', src)
55
+ rm(src + '.bak')
56
+ }
57
+
58
+ // Verifies that all HOSTS entries are present
59
+ export function checkDnsSettings () {
60
+ return Promise.all(TEST_HOSTS.map(hostname => {
61
+ return new Promise((resolve, reject) => {
62
+ dns.lookup(hostname, (error, ip) => {
63
+ if (error || (ip !== '127.0.0.1' && ip !== '::1')) {
64
+ reject(error)
65
+ } else {
66
+ resolve(true)
67
+ }
68
+ })
69
+ })
70
+ }))
71
+ .catch(() => {
72
+ throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`)
73
+ })
74
+ }
75
+
76
+ /**
77
+ * @param configPath {string}
78
+ *
79
+ * @returns {Promise<Provider>}
80
+ */
81
+ export function loadProvider (configPath) {
82
+ return Promise.resolve()
83
+ .then(async () => {
84
+ const { default: config } = await import(configPath)
85
+
86
+ const provider = new OIDCProvider(config)
87
+
88
+ return provider.initializeKeyChain(config.keys)
89
+ })
90
+ }
91
+
92
+ export { createServer }
93
+ function createServer (options) {
94
+ return ldnode.createServer(options)
95
+ }
96
+
97
+ export { setupSupertestServer }
98
+ function setupSupertestServer (options) {
99
+ const ldpServer = createServer(options)
100
+ return supertest(ldpServer)
101
+ }
102
+
103
+ // Lightweight adapter to replace `request` with `node-fetch` in tests
104
+ // Supports signatures:
105
+ // - request(options, cb)
106
+ // - request(url, options, cb)
107
+ // And methods: get, post, put, patch, head, delete, del
108
+ function buildAgentFn (options = {}) {
109
+ const aOpts = options.agentOptions || {}
110
+ if (!aOpts || (!aOpts.cert && !aOpts.key)) {
111
+ return undefined
112
+ }
113
+ const httpsAgent = new https.Agent({
114
+ cert: aOpts.cert,
115
+ key: aOpts.key,
116
+ // Tests often run with NODE_TLS_REJECT_UNAUTHORIZED=0; mirror that here
117
+ rejectUnauthorized: false
118
+ })
119
+ return (parsedURL) => parsedURL.protocol === 'https:' ? httpsAgent : undefined
120
+ }
121
+
122
+ async function doFetch (method, url, options = {}, cb) {
123
+ try {
124
+ const headers = options.headers || {}
125
+ const body = options.body
126
+ const agent = buildAgentFn(options)
127
+ const res = await fetch(url, { method, headers, body, agent })
128
+ // Build a response object similar to `request`'s
129
+ const headersObj = {}
130
+ res.headers.forEach((value, key) => { headersObj[key] = value })
131
+ const response = {
132
+ statusCode: res.status,
133
+ statusMessage: res.statusText,
134
+ headers: headersObj
135
+ }
136
+ const hasBody = method !== 'HEAD'
137
+ const text = hasBody ? await res.text() : ''
138
+ cb(null, response, text)
139
+ } catch (err) {
140
+ cb(err)
141
+ }
142
+ }
143
+
144
+ function requestAdapter (arg1, arg2, arg3) {
145
+ let url, options, cb
146
+ if (typeof arg1 === 'string') {
147
+ url = arg1
148
+ options = arg2 || {}
149
+ cb = arg3
150
+ } else {
151
+ options = arg1 || {}
152
+ url = options.url
153
+ cb = arg2
154
+ }
155
+ const method = (options && options.method) || 'GET'
156
+ return doFetch(method, url, options, cb)
157
+ }
158
+
159
+ ;['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE'].forEach(m => {
160
+ const name = m.toLowerCase()
161
+ requestAdapter[name] = (options, cb) => doFetch(m, options.url, options, cb)
162
+ })
163
+ // Alias
164
+ requestAdapter.del = requestAdapter.delete
165
+
166
+ export const httpRequest = requestAdapter
package/test/utils.mjs ADDED
@@ -0,0 +1,204 @@
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 { rimrafSync } from 'rimraf'
9
+ import fse from 'fs-extra'
10
+ import Provider from '@solid/oidc-op'
11
+ import supertest from 'supertest'
12
+ import ldnode from '../index.mjs'
13
+ import { fileURLToPath } from 'url'
14
+
15
+ const require = createRequire(import.meta.url)
16
+ const __filename = fileURLToPath(import.meta.url)
17
+ const __dirname = path.dirname(__filename)
18
+
19
+ const OIDCProvider = Provider
20
+
21
+ const TEST_HOSTS = ['nic.localhost', 'tim.localhost', 'nicola.localhost']
22
+
23
+ // Configurable test root directory
24
+ // For custom route
25
+ let TEST_ROOT = path.join(__dirname, '/resources/')
26
+ // For default root (process.cwd()):
27
+ // let TEST_ROOT = path.join(process.cwd(), 'test-esm/resources')
28
+
29
+ export function setTestRoot (rootPath) {
30
+ TEST_ROOT = rootPath
31
+ }
32
+ export function getTestRoot () {
33
+ return TEST_ROOT
34
+ }
35
+
36
+ export function rm (file) {
37
+ return rimrafSync(path.join(TEST_ROOT, file))
38
+ }
39
+
40
+ export function cleanDir (dirPath) {
41
+ fse.removeSync(path.join(dirPath, '.well-known/.acl'))
42
+ fse.removeSync(path.join(dirPath, '.acl'))
43
+ fse.removeSync(path.join(dirPath, 'favicon.ico'))
44
+ fse.removeSync(path.join(dirPath, 'favicon.ico.acl'))
45
+ fse.removeSync(path.join(dirPath, 'index.html'))
46
+ fse.removeSync(path.join(dirPath, 'index.html.acl'))
47
+ fse.removeSync(path.join(dirPath, 'robots.txt'))
48
+ fse.removeSync(path.join(dirPath, 'robots.txt.acl'))
49
+ }
50
+
51
+ export function write (text, file) {
52
+ console.log('Writing to', path.join(TEST_ROOT, file))
53
+ // fs.mkdirSync(path.dirname(path.join(TEST_ROOT, file), { recursive: true }))
54
+ return fs.writeFileSync(path.join(TEST_ROOT, file), text)
55
+ }
56
+
57
+ export function cp (src, dest) {
58
+ return fse.copySync(
59
+ path.join(TEST_ROOT, src),
60
+ path.join(TEST_ROOT, dest))
61
+ }
62
+
63
+ export function read (file) {
64
+ console.log('Reading from', path.join(TEST_ROOT, file))
65
+ return fs.readFileSync(path.join(TEST_ROOT, file), {
66
+ encoding: 'utf8'
67
+ })
68
+ }
69
+
70
+ // Backs up the given file
71
+ export function backup (src) {
72
+ cp(src, src + '.bak')
73
+ }
74
+
75
+ // Restores a backup of the given file
76
+ export function restore (src) {
77
+ cp(src + '.bak', src)
78
+ rm(src + '.bak')
79
+ }
80
+
81
+ // Verifies that all HOSTS entries are present
82
+ export function checkDnsSettings () {
83
+ return Promise.all(TEST_HOSTS.map(hostname => {
84
+ return new Promise((resolve, reject) => {
85
+ dns.lookup(hostname, (error, ip) => {
86
+ if (error || (ip !== '127.0.0.1' && ip !== '::1')) {
87
+ reject(error)
88
+ } else {
89
+ resolve(true)
90
+ }
91
+ })
92
+ })
93
+ }))
94
+ .catch(() => {
95
+ throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`)
96
+ })
97
+ }
98
+
99
+ /**
100
+ * @param configPath {string}
101
+ *
102
+ * @returns {Promise<Provider>}
103
+ */
104
+ export function loadProvider (configPath) {
105
+ return Promise.resolve()
106
+ .then(() => {
107
+ const config = require(configPath)
108
+
109
+ const provider = new OIDCProvider(config)
110
+
111
+ return provider.initializeKeyChain(config.keys)
112
+ })
113
+ }
114
+
115
+ export function createServer (options) {
116
+ console.log('Creating server with root:', options.root || process.cwd())
117
+ return ldnode.createServer(options)
118
+ }
119
+
120
+ export function setupSupertestServer (options) {
121
+ const ldpServer = createServer(options)
122
+ return supertest(ldpServer)
123
+ }
124
+
125
+ // Lightweight adapter to replace `request` with `node-fetch` in tests
126
+ // Supports signatures:
127
+ // - request(options, cb)
128
+ // - request(url, options, cb)
129
+ // And methods: get, post, put, patch, head, delete, del
130
+ function buildAgentFn (options = {}) {
131
+ const aOpts = options.agentOptions || {}
132
+ if (!aOpts || (!aOpts.cert && !aOpts.key)) {
133
+ return undefined
134
+ }
135
+ const httpsAgent = new https.Agent({
136
+ cert: aOpts.cert,
137
+ key: aOpts.key,
138
+ // Tests often run with NODE_TLS_REJECT_UNAUTHORIZED=0; mirror that here
139
+ rejectUnauthorized: false
140
+ })
141
+ return (parsedURL) => parsedURL.protocol === 'https:' ? httpsAgent : undefined
142
+ }
143
+
144
+ async function doFetch (method, url, options = {}, cb) {
145
+ try {
146
+ const headers = options.headers || {}
147
+ const body = options.body
148
+ const agent = buildAgentFn(options)
149
+ const res = await fetch(url, { method, headers, body, agent })
150
+ // Build a response object similar to `request`'s
151
+ const headersObj = {}
152
+ res.headers.forEach((value, key) => { headersObj[key] = value })
153
+ const response = {
154
+ statusCode: res.status,
155
+ statusMessage: res.statusText,
156
+ headers: headersObj
157
+ }
158
+ const hasBody = method !== 'HEAD'
159
+ const text = hasBody ? await res.text() : ''
160
+ cb(null, response, text)
161
+ } catch (err) {
162
+ cb(err)
163
+ }
164
+ }
165
+
166
+ function requestAdapter (arg1, arg2, arg3) {
167
+ let url, options, cb
168
+ if (typeof arg1 === 'string') {
169
+ url = arg1
170
+ options = arg2 || {}
171
+ cb = arg3
172
+ } else {
173
+ options = arg1 || {}
174
+ url = options.url
175
+ cb = arg2
176
+ }
177
+ const method = (options && options.method) || 'GET'
178
+ return doFetch(method, url, options, cb)
179
+ }
180
+
181
+ ;['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE'].forEach(m => {
182
+ const name = m.toLowerCase()
183
+ requestAdapter[name] = (options, cb) => doFetch(m, options.url, options, cb)
184
+ })
185
+ // Alias
186
+ requestAdapter.del = requestAdapter.delete
187
+
188
+ export const httpRequest = requestAdapter
189
+
190
+ // Provide default export for compatibility
191
+ export default {
192
+ rm,
193
+ cleanDir,
194
+ write,
195
+ cp,
196
+ read,
197
+ backup,
198
+ restore,
199
+ checkDnsSettings,
200
+ loadProvider,
201
+ createServer,
202
+ setupSupertestServer,
203
+ httpRequest
204
+ }
@@ -0,0 +1,42 @@
1
+ import { fileURLToPath } from 'url'
2
+ import fs from 'node:fs'
3
+ import Handlebars from 'handlebars'
4
+ import path from 'node:path'
5
+ import validateModule from 'turtle-validator/lib/validator.js'
6
+
7
+ const validate = validateModule.default || validateModule
8
+ const __filename = fileURLToPath(import.meta.url)
9
+ const __dirname = path.dirname(__filename)
10
+
11
+ const regex = /\\.(acl|ttl)$/i
12
+ const substitutions = {
13
+ webId: 'http://example.com/#me',
14
+ email: 'test@example.com',
15
+ name: 'Test test'
16
+ }
17
+
18
+ const files = recursiveFiles(path.join(__dirname, '../default-templates/'))
19
+
20
+ for (const file of files) {
21
+ const data = fs.readFileSync(file, 'utf8')
22
+ const template = Handlebars.compile(data)
23
+ validate(template(substitutions), feedback => {
24
+ if (feedback.errors.length > 0) {
25
+ throw new Error(`Validation error in ${file}: ${feedback.errors[0]}`)
26
+ }
27
+ })
28
+ }
29
+
30
+ function recursiveFiles (dir) {
31
+ const content = fs.readdirSync(dir)
32
+ return [].concat(...content.map(file => {
33
+ const fullPath = path.join(dir, file)
34
+ const stat = fs.statSync(fullPath)
35
+ if (stat.isDirectory()) {
36
+ return recursiveFiles(fullPath)
37
+ } else if (regex.test(file)) {
38
+ return [fullPath]
39
+ }
40
+ return []
41
+ }))
42
+ }
@@ -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()