solid-server 5.8.7 → 5.8.8-22f4cfec

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/CONTRIBUTING.md +0 -0
  3. package/CONTRIBUTORS.md +0 -0
  4. package/Dockerfile +0 -0
  5. package/LICENSE.md +0 -0
  6. package/README.md +0 -0
  7. package/bin/config.json +0 -0
  8. package/bin/lib/cli-utils.mjs +54 -0
  9. package/bin/lib/cli.mjs +44 -0
  10. package/bin/lib/{init.js → init.mjs} +93 -94
  11. package/bin/lib/{invalidUsernames.js → invalidUsernames.mjs} +136 -148
  12. package/bin/lib/{migrateLegacyResources.js → migrateLegacyResources.mjs} +64 -69
  13. package/bin/lib/{options.js → options.mjs} +379 -405
  14. package/bin/lib/{start.js → start.mjs} +124 -148
  15. package/bin/lib/{updateIndex.js → updateIndex.mjs} +55 -56
  16. package/bin/solid +2 -2
  17. package/bin/solid-test +0 -0
  18. package/common/css/bootstrap.min.css +6 -0
  19. package/common/css/solid.css +0 -0
  20. package/common/fonts/glyphicons-halflings-regular.eot +0 -0
  21. package/common/fonts/glyphicons-halflings-regular.svg +0 -0
  22. package/common/fonts/glyphicons-halflings-regular.ttf +0 -0
  23. package/common/fonts/glyphicons-halflings-regular.woff +0 -0
  24. package/common/fonts/glyphicons-halflings-regular.woff2 +0 -0
  25. package/common/img/solid-emblem.svg +0 -0
  26. package/common/js/auth-buttons.js +0 -0
  27. package/common/js/auth-buttons.mjs +57 -0
  28. package/common/js/index-buttons.js +0 -0
  29. package/common/js/index-buttons.mjs +43 -0
  30. package/common/js/solid.js +0 -0
  31. package/common/js/solid.mjs +456 -0
  32. package/common/well-known/security.txt +0 -0
  33. package/config/defaults.js +0 -0
  34. package/config/defaults.mjs +22 -0
  35. package/config/templates/emails/delete-account.js +49 -0
  36. package/config/templates/emails/delete-account.mjs +31 -0
  37. package/config/templates/emails/invalid-username.js +30 -0
  38. package/config/templates/emails/invalid-username.mjs +27 -0
  39. package/config/templates/emails/reset-password.js +49 -0
  40. package/config/templates/emails/reset-password.mjs +31 -0
  41. package/config/templates/emails/welcome.js +39 -0
  42. package/config/templates/emails/welcome.mjs +23 -0
  43. package/config/templates/new-account/favicon.ico +0 -0
  44. package/config/templates/new-account/favicon.ico.acl +26 -0
  45. package/config/templates/new-account/profile/card$.ttl +26 -0
  46. package/config/templates/new-account/robots.txt +3 -0
  47. package/config/templates/new-account/robots.txt.acl +26 -0
  48. package/config/templates/new-account/settings/prefs.ttl +15 -0
  49. package/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  50. package/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  51. package/{default-templates/new-account/.meta.acl → config/templates/new-account/settings/publicTypeIndex.ttl.acl} +4 -4
  52. package/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  53. package/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  54. package/config/templates/server/favicon.ico +0 -0
  55. package/{.well-known/.acl → config/templates/server/favicon.ico.acl} +2 -2
  56. package/config/templates/server/index.html +54 -0
  57. package/config/templates/server/robots.txt +3 -0
  58. package/{default-templates/server/.well-known/.acl → config/templates/server/robots.txt.acl} +2 -2
  59. package/config/usernames-blacklist.json +0 -0
  60. package/config/views/account/account-deleted.hbs +17 -0
  61. package/config/views/account/delete-confirm.hbs +51 -0
  62. package/config/views/account/delete-link-sent.hbs +17 -0
  63. package/config/views/account/delete.hbs +51 -0
  64. package/config/views/account/invalid-username.hbs +22 -0
  65. package/config/views/account/register-disabled.hbs +6 -0
  66. package/config/views/account/register-form.hbs +133 -0
  67. package/config/views/account/register.hbs +24 -0
  68. package/config/views/auth/auth-hidden-fields.hbs +8 -0
  69. package/config/views/auth/change-password.hbs +58 -0
  70. package/config/views/auth/goodbye.hbs +23 -0
  71. package/config/views/auth/login-required.hbs +34 -0
  72. package/config/views/auth/login-tls.hbs +11 -0
  73. package/config/views/auth/login-username-password.hbs +28 -0
  74. package/config/views/auth/login.hbs +55 -0
  75. package/config/views/auth/no-permission.hbs +29 -0
  76. package/config/views/auth/password-changed.hbs +27 -0
  77. package/config/views/auth/reset-link-sent.hbs +21 -0
  78. package/config/views/auth/reset-password.hbs +52 -0
  79. package/config/views/auth/sharing.hbs +49 -0
  80. package/config/views/shared/create-account.hbs +8 -0
  81. package/config/views/shared/error.hbs +5 -0
  82. package/config.json-default +0 -0
  83. package/coverage/tmp/coverage-2260-1766832656715-0.json +1 -0
  84. package/coverage/tmp/coverage-2261-1766832635310-0.json +1 -0
  85. package/default-templates/emails/delete-account.js +0 -0
  86. package/default-templates/emails/delete-account.mjs +31 -0
  87. package/default-templates/emails/invalid-username.js +0 -0
  88. package/default-templates/emails/invalid-username.mjs +27 -0
  89. package/default-templates/emails/reset-password.js +0 -0
  90. package/default-templates/emails/reset-password.mjs +31 -0
  91. package/default-templates/emails/welcome.js +0 -0
  92. package/default-templates/emails/welcome.mjs +23 -0
  93. package/default-templates/new-account/favicon.ico +0 -0
  94. package/default-templates/new-account/favicon.ico.acl +0 -0
  95. package/default-templates/new-account/profile/card$.ttl +0 -0
  96. package/default-templates/new-account/robots.txt +0 -0
  97. package/default-templates/new-account/robots.txt.acl +0 -0
  98. package/default-templates/new-account/settings/prefs.ttl +0 -0
  99. package/default-templates/new-account/settings/privateTypeIndex.ttl +0 -0
  100. package/default-templates/new-account/settings/publicTypeIndex.ttl +0 -0
  101. package/default-templates/new-account/settings/publicTypeIndex.ttl.acl +0 -0
  102. package/default-templates/new-account/settings/serverSide.ttl.acl +0 -0
  103. package/default-templates/new-account/settings/serverSide.ttl.inactive +0 -0
  104. package/default-templates/server/favicon.ico +0 -0
  105. package/default-templates/server/favicon.ico.acl +0 -0
  106. package/default-templates/server/index.html +0 -0
  107. package/default-templates/server/robots.txt +0 -0
  108. package/default-templates/server/robots.txt.acl +0 -0
  109. package/default-views/account/account-deleted.hbs +0 -0
  110. package/default-views/account/delete-confirm.hbs +0 -0
  111. package/default-views/account/delete-link-sent.hbs +0 -0
  112. package/default-views/account/delete.hbs +0 -0
  113. package/default-views/account/invalid-username.hbs +0 -0
  114. package/default-views/account/register-disabled.hbs +0 -0
  115. package/default-views/account/register-form.hbs +0 -0
  116. package/default-views/account/register.hbs +0 -0
  117. package/default-views/auth/auth-hidden-fields.hbs +0 -0
  118. package/default-views/auth/change-password.hbs +0 -0
  119. package/default-views/auth/goodbye.hbs +0 -0
  120. package/default-views/auth/login-required.hbs +0 -0
  121. package/default-views/auth/login-tls.hbs +0 -0
  122. package/default-views/auth/login-username-password.hbs +0 -0
  123. package/default-views/auth/login.hbs +0 -0
  124. package/default-views/auth/no-permission.hbs +0 -0
  125. package/default-views/auth/password-changed.hbs +0 -0
  126. package/default-views/auth/reset-link-sent.hbs +0 -0
  127. package/default-views/auth/reset-password.hbs +0 -0
  128. package/default-views/auth/sharing.hbs +0 -0
  129. package/default-views/shared/create-account.hbs +0 -0
  130. package/default-views/shared/error.hbs +0 -0
  131. package/docker-compose.yml +0 -0
  132. package/docker-image/CONTRIBUTING.md +33 -0
  133. package/docker-image/Makefile +32 -0
  134. package/docker-image/README.md +65 -0
  135. package/docker-image/examples/docker-compose.all-in-one.yml +76 -0
  136. package/docker-image/examples/docker-compose.nginx.yml +51 -0
  137. package/docker-image/examples/docker-compose.simple.yml +34 -0
  138. package/docker-image/src/Dockerfile +34 -0
  139. package/docker-image/src/checks.sh +56 -0
  140. package/docker-image/src/create-temporary-cert.sh +14 -0
  141. package/docker-image/src/entrypoint.sh +8 -0
  142. package/{common/img/.gitkeep → docker-image/test/__init__.py} +0 -0
  143. package/docker-image/test/conftest.py +15 -0
  144. package/docker-image/test/test_image_foundations.py +51 -0
  145. package/docker-image/test/test_non_accessible_key_cert.py +36 -0
  146. package/docker-image/test/test_precondition_checks.py +41 -0
  147. package/docker-image/test/test_solid_default_config.py +66 -0
  148. package/docker-image/test/test_volumes.py +55 -0
  149. package/docker-image/test/wait_for_container.py +8 -0
  150. package/docs/how-to-delete-your-account.md +0 -0
  151. package/docs/login-and-grant-access-to-application.md +0 -0
  152. package/examples/custom-error-handling.js +0 -0
  153. package/examples/custom-error-handling.mjs +29 -0
  154. package/examples/ldp-with-webid.js +0 -0
  155. package/examples/ldp-with-webid.mjs +12 -0
  156. package/examples/simple-express-app.js +0 -0
  157. package/examples/simple-express-app.mjs +20 -0
  158. package/examples/simple-ldp-server.js +0 -0
  159. package/examples/simple-ldp-server.mjs +8 -0
  160. package/favicon.ico +0 -0
  161. package/favicon.ico.acl +0 -0
  162. package/index.cjs +4 -0
  163. package/index.html +0 -0
  164. package/index.mjs +23 -0
  165. package/lib/{acl-checker.js → acl-checker.mjs} +13 -15
  166. package/lib/api/accounts/{user-accounts.js → user-accounts.mjs} +17 -16
  167. package/lib/api/authn/{force-user.js → force-user.mjs} +5 -4
  168. package/lib/api/authn/index.mjs +8 -0
  169. package/lib/api/authn/{webid-oidc.js → webid-oidc.mjs} +27 -20
  170. package/lib/api/authn/{webid-tls.js → webid-tls.mjs} +12 -11
  171. package/lib/api/index.mjs +7 -0
  172. package/lib/{capability-discovery.js → capability-discovery.mjs} +3 -6
  173. package/lib/common/{fs-utils.js → fs-utils.mjs} +35 -43
  174. package/lib/common/template-utils.mjs +29 -0
  175. package/lib/common/{user-utils.js → user-utils.mjs} +24 -28
  176. package/lib/{create-app.js → create-app.mjs} +372 -361
  177. package/lib/{create-server.js → create-server.mjs} +32 -11
  178. package/lib/debug.mjs +37 -0
  179. package/lib/handlers/{allow.js → allow.mjs} +79 -83
  180. package/lib/handlers/{auth-proxy.js → auth-proxy.mjs} +4 -5
  181. package/lib/handlers/{copy.js → copy.mjs} +37 -39
  182. package/lib/handlers/{cors-proxy.js → cors-proxy.mjs} +9 -11
  183. package/lib/handlers/{delete.js → delete.mjs} +20 -22
  184. package/lib/handlers/{error-pages.js → error-pages.mjs} +144 -212
  185. package/lib/handlers/{get.js → get.mjs} +254 -252
  186. package/lib/handlers/{index.js → index.mjs} +7 -8
  187. package/lib/handlers/{notify.js → notify.mjs} +8 -10
  188. package/lib/handlers/{options.js → options.mjs} +3 -5
  189. package/lib/handlers/patch/{n3-patch-parser.js → n3-patch-parser.mjs} +57 -59
  190. package/lib/handlers/patch/{sparql-update-parser.js → sparql-update-parser.mjs} +14 -16
  191. package/lib/handlers/{patch.js → patch.mjs} +241 -235
  192. package/lib/handlers/{post.js → post.mjs} +101 -99
  193. package/lib/handlers/{put.js → put.mjs} +101 -105
  194. package/lib/handlers/{restrict-to-top-domain.js → restrict-to-top-domain.mjs} +2 -2
  195. package/lib/{header.js → header.mjs} +138 -143
  196. package/lib/{http-error.js → http-error.mjs} +35 -34
  197. package/lib/{ldp-container.js → ldp-container.mjs} +10 -12
  198. package/lib/ldp-copy.mjs +82 -0
  199. package/lib/ldp-middleware.mjs +38 -0
  200. package/lib/{ldp.js → ldp.mjs} +286 -75
  201. package/lib/{lock.js → lock.mjs} +10 -10
  202. package/lib/{metadata.js → metadata.mjs} +11 -11
  203. package/lib/models/account-manager.mjs +297 -0
  204. package/lib/models/account-template.mjs +70 -0
  205. package/lib/models/authenticator.mjs +161 -0
  206. package/lib/models/oidc-manager.mjs +23 -0
  207. package/lib/models/solid-host.mjs +63 -0
  208. package/lib/models/user-account.mjs +50 -0
  209. package/lib/models/webid-tls-certificate.mjs +97 -0
  210. package/lib/{payment-pointer-discovery.js → payment-pointer-discovery.mjs} +5 -8
  211. package/lib/{rdf-notification-template.js → rdf-notification-template.mjs} +3 -5
  212. package/lib/requests/add-cert-request.mjs +70 -0
  213. package/lib/requests/auth-request.mjs +151 -0
  214. package/lib/requests/{create-account-request.js → create-account-request.mjs} +249 -452
  215. package/lib/requests/delete-account-confirm-request.mjs +85 -0
  216. package/lib/requests/{delete-account-request.js → delete-account-request.mjs} +73 -134
  217. package/lib/requests/login-request.mjs +89 -0
  218. package/lib/requests/{password-change-request.js → password-change-request.mjs} +132 -201
  219. package/lib/requests/{password-reset-email-request.js → password-reset-email-request.mjs} +123 -202
  220. package/lib/requests/password-reset-request.mjs +47 -0
  221. package/lib/requests/register-request.mjs +48 -0
  222. package/lib/requests/{sharing-request.js → sharing-request.mjs} +174 -261
  223. package/lib/{resource-mapper.js → resource-mapper.mjs} +7 -6
  224. package/lib/{server-config.js → server-config.mjs} +15 -20
  225. package/lib/services/{blacklist-service.js → blacklist-service.mjs} +36 -33
  226. package/lib/services/email-service.mjs +76 -0
  227. package/lib/services/{token-service.js → token-service.mjs} +36 -44
  228. package/lib/{utils.js → utils.mjs} +309 -254
  229. package/lib/webid/{index.js → index.mjs} +9 -13
  230. package/lib/webid/lib/{get.js → get.mjs} +31 -35
  231. package/lib/webid/lib/{parse.js → parse.mjs} +10 -12
  232. package/lib/webid/lib/verify.mjs +77 -0
  233. package/lib/webid/tls/generate.mjs +53 -0
  234. package/lib/webid/tls/index.mjs +7 -0
  235. package/package.json +60 -40
  236. package/renovate.json +0 -0
  237. package/robots.txt +0 -0
  238. package/robots.txt.acl +0 -0
  239. package/solid-server-5.8.8.tgz +0 -0
  240. package/static/account-recovery.html +0 -0
  241. package/static/popup-redirect.html +0 -0
  242. package/static/signup.html +0 -0
  243. package/static/signup.html.acl +0 -0
  244. package/test/index.mjs +168 -0
  245. package/test/integration/account-creation-tls-test.mjs +127 -0
  246. package/test/integration/account-manager-test.mjs +151 -0
  247. package/test/integration/account-template-test.mjs +136 -0
  248. package/test/integration/acl-oidc-test.mjs +1048 -0
  249. package/test/integration/acl-tls-test.mjs +964 -0
  250. package/test/integration/auth-proxy-test.mjs +144 -0
  251. package/test/integration/authentication-oidc-test.mjs +812 -0
  252. package/test/integration/authentication-oidc-with-strict-origins-turned-off-test.mjs +638 -0
  253. package/test/integration/capability-discovery-test.mjs +116 -0
  254. package/test/integration/cors-proxy-test.mjs +145 -0
  255. package/test/integration/errors-oidc-test.mjs +109 -0
  256. package/test/integration/errors-test.mjs +49 -0
  257. package/test/integration/formats-test.mjs +136 -0
  258. package/test/integration/header-test.mjs +101 -0
  259. package/test/integration/http-copy-test.mjs +109 -0
  260. package/test/integration/http-test.mjs +1197 -0
  261. package/test/integration/ldp-test.mjs +528 -0
  262. package/test/integration/oidc-manager-test.mjs +42 -0
  263. package/test/integration/params-test.mjs +192 -0
  264. package/test/integration/patch-sparql-update-test.mjs +195 -0
  265. package/test/integration/patch-test.mjs +590 -0
  266. package/test/integration/payment-pointer-test.mjs +155 -0
  267. package/test/integration/prep-test.mjs +314 -0
  268. package/test/integration/quota-test.mjs +51 -0
  269. package/test/integration/special-root-acl-handling-test.mjs +68 -0
  270. package/test/integration/validate-tts-test.mjs +57 -0
  271. package/test/integration/www-account-creation-oidc-test.mjs +311 -0
  272. package/test/keys/cert.pem +21 -0
  273. package/test/keys/client-cert.pem +19 -0
  274. package/test/keys/client-key.pem +27 -0
  275. package/test/keys/key.pem +27 -0
  276. package/test/keys/user1-cert.pem +23 -0
  277. package/test/keys/user1-key.pem +28 -0
  278. package/test/keys/user2-cert.pem +23 -0
  279. package/test/keys/user2-key.pem +27 -0
  280. package/test/mocha.opts +2 -0
  281. package/test/resources/Makefile +146 -0
  282. package/test/resources/accounts/alice.localhost/profile/card +0 -0
  283. package/test/resources/accounts/db/oidc/op/clients/_key_5319f8e8e4ea3214c2e92b252520d355.json +1 -0
  284. package/test/resources/accounts/db/oidc/op/provider.json +763 -0
  285. package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -0
  286. package/test/resources/accounts/localhost/samplePublicContainer/nicola.jpg +0 -0
  287. package/test/resources/accounts/tim.localhost/hello.html +9 -0
  288. package/test/resources/accounts/tim.localhost/profile/card +0 -0
  289. package/test/resources/accounts-acl/config/templates/emails/welcome-test.js +39 -0
  290. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico +0 -0
  291. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico.acl +26 -0
  292. package/test/resources/accounts-acl/config/templates/new-account/index.html +28 -0
  293. package/test/resources/accounts-acl/config/templates/new-account/index.html.acl +22 -0
  294. package/test/resources/accounts-acl/config/templates/new-account/profile/card +27 -0
  295. package/{default-templates/new-account/inbox/.acl → test/resources/accounts-acl/config/templates/new-account/profile/card.acl} +5 -6
  296. package/test/resources/accounts-acl/config/templates/new-account/settings/prefs.ttl +9 -0
  297. package/test/resources/accounts-acl/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  298. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  299. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  300. package/test/resources/accounts-acl/config/templates/new-account/settings/serverSide.ttl +14 -0
  301. package/test/resources/accounts-acl/config/templates/server/index.html +35 -0
  302. package/{.acl → test/resources/accounts-acl/config/templates/server/index.html.acl} +4 -3
  303. package/test/resources/accounts-acl/config/views/account/register.hbs +58 -0
  304. package/test/resources/accounts-acl/config/views/auth/consent.hbs +49 -0
  305. package/test/resources/accounts-acl/config/views/auth/goodbye.hbs +20 -0
  306. package/test/resources/accounts-acl/config/views/auth/login-required.hbs +0 -0
  307. package/test/resources/accounts-acl/config/views/auth/login.hbs +51 -0
  308. package/test/resources/accounts-acl/config/views/auth/no-permission.hbs +0 -0
  309. package/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json +1 -0
  310. package/test/resources/accounts-acl/db/oidc/op/provider.json +763 -0
  311. package/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json +1 -0
  312. package/test/resources/accounts-acl/localhost/favicon.ico +0 -0
  313. package/test/resources/accounts-acl/localhost/index.html +35 -0
  314. package/{default-templates/server/.acl → test/resources/accounts-acl/localhost/index.html.acl} +4 -3
  315. package/test/resources/accounts-acl/nicola.localhost/index.html +1 -0
  316. package/test/resources/accounts-acl/nicola.localhost/index.html.acl +10 -0
  317. package/test/resources/accounts-acl/quota/settings/serverSide.ttl +11 -0
  318. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl +1 -0
  319. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl.acl +8 -0
  320. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl +1 -0
  321. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  322. package/test/resources/accounts-acl/tim.localhost/fake-account/hello.html +9 -0
  323. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing-error.ttl +1 -0
  324. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing.ttl +14 -0
  325. package/test/resources/accounts-acl/tim.localhost/group/test-folder/some-other-file.txt +1 -0
  326. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt +1 -0
  327. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt.acl +8 -0
  328. package/test/resources/accounts-acl/tim.localhost/no-acl/test-file.html +1 -0
  329. package/test/resources/accounts-acl/tim.localhost/read-acl/deeper-tree/acls-only-on-top/example.ttl +1 -0
  330. package/test/resources/accounts-acl/tim.localhost/write-acl/test-file$.txt +1 -0
  331. package/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_9c0fd8442675a1afbe5115b9ae300c65.json +1 -0
  332. package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +761 -0
  333. package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -0
  334. package/test/resources/accounts-scenario/alice/private-for-alice.txt +1 -0
  335. package/test/resources/accounts-scenario/alice/private-for-alice.txt.acl +12 -0
  336. package/test/resources/accounts-scenario/alice/profile/card$.ttl +10 -0
  337. package/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_f15f340b6dc71b68d20eca0d7e87a972.json +1 -0
  338. package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +761 -0
  339. package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -0
  340. package/test/resources/accounts-scenario/bob/profile/card$.ttl +5 -0
  341. package/test/resources/accounts-scenario/bob/shared-with-alice.txt +1 -0
  342. package/test/resources/accounts-scenario/bob/shared-with-alice.txt.acl +15 -0
  343. package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/_key_7c634dfe325475cc8750e19c72acf6d9.json +1 -0
  344. package/test/resources/accounts-scenario/charlie/db/oidc/op/provider.json +759 -0
  345. package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -0
  346. package/test/resources/accounts-scenario/charlie/profile/card$.ttl +5 -0
  347. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/_key_3f1cecaefd21253767f6e047bd9b572f.json +1 -0
  348. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json +763 -0
  349. package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -0
  350. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt +1 -0
  351. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt.acl +12 -0
  352. package/test/resources/accounts-strict-origin-off/alice/profile/card$.ttl +10 -0
  353. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/_key_a17f603b5907c97a5fac61a2eea7ecb2.json +1 -0
  354. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json +763 -0
  355. package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -0
  356. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt +1 -0
  357. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt.acl +15 -0
  358. package/test/resources/acl-tls/config/templates/emails/delete-account.js +49 -0
  359. package/test/resources/acl-tls/config/templates/emails/invalid-username.js +30 -0
  360. package/test/resources/acl-tls/config/templates/emails/reset-password.js +49 -0
  361. package/test/resources/acl-tls/config/templates/emails/welcome.js +39 -0
  362. package/test/resources/acl-tls/config/templates/new-account/favicon.ico +0 -0
  363. package/test/resources/acl-tls/config/templates/new-account/favicon.ico.acl +26 -0
  364. package/test/resources/acl-tls/config/templates/new-account/profile/card$.ttl +26 -0
  365. package/test/resources/acl-tls/config/templates/new-account/robots.txt +3 -0
  366. package/test/resources/acl-tls/config/templates/new-account/robots.txt.acl +26 -0
  367. package/test/resources/acl-tls/config/templates/new-account/settings/prefs.ttl +15 -0
  368. package/test/resources/acl-tls/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  369. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  370. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  371. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  372. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  373. package/test/resources/acl-tls/config/templates/server/favicon.ico +0 -0
  374. package/test/resources/acl-tls/config/templates/server/favicon.ico.acl +15 -0
  375. package/test/resources/acl-tls/config/templates/server/index.html +55 -0
  376. package/test/resources/acl-tls/config/templates/server/robots.txt +3 -0
  377. package/test/resources/acl-tls/config/templates/server/robots.txt.acl +15 -0
  378. package/test/resources/acl-tls/config/views/account/account-deleted.hbs +17 -0
  379. package/test/resources/acl-tls/config/views/account/delete-confirm.hbs +51 -0
  380. package/test/resources/acl-tls/config/views/account/delete-link-sent.hbs +17 -0
  381. package/test/resources/acl-tls/config/views/account/delete.hbs +51 -0
  382. package/test/resources/acl-tls/config/views/account/invalid-username.hbs +22 -0
  383. package/test/resources/acl-tls/config/views/account/register-disabled.hbs +6 -0
  384. package/test/resources/acl-tls/config/views/account/register-form.hbs +147 -0
  385. package/test/resources/acl-tls/config/views/account/register.hbs +24 -0
  386. package/test/resources/acl-tls/config/views/auth/auth-hidden-fields.hbs +8 -0
  387. package/test/resources/acl-tls/config/views/auth/change-password.hbs +58 -0
  388. package/test/resources/acl-tls/config/views/auth/goodbye.hbs +23 -0
  389. package/test/resources/acl-tls/config/views/auth/login-required.hbs +34 -0
  390. package/test/resources/acl-tls/config/views/auth/login-tls.hbs +11 -0
  391. package/test/resources/acl-tls/config/views/auth/login-username-password.hbs +28 -0
  392. package/test/resources/acl-tls/config/views/auth/login.hbs +55 -0
  393. package/test/resources/acl-tls/config/views/auth/no-permission.hbs +29 -0
  394. package/test/resources/acl-tls/config/views/auth/password-changed.hbs +27 -0
  395. package/test/resources/acl-tls/config/views/auth/reset-link-sent.hbs +21 -0
  396. package/test/resources/acl-tls/config/views/auth/reset-password.hbs +52 -0
  397. package/test/resources/acl-tls/config/views/auth/sharing.hbs +49 -0
  398. package/test/resources/acl-tls/config/views/shared/create-account.hbs +8 -0
  399. package/test/resources/acl-tls/config/views/shared/error.hbs +5 -0
  400. package/test/resources/acl-tls/localhost/favicon.ico +0 -0
  401. package/test/resources/acl-tls/localhost/favicon.ico.acl +15 -0
  402. package/test/resources/acl-tls/localhost/index.html +48 -0
  403. package/test/resources/acl-tls/localhost/robots.txt +3 -0
  404. package/test/resources/acl-tls/localhost/robots.txt.acl +15 -0
  405. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl +1 -0
  406. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl.acl +8 -0
  407. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl +1 -0
  408. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  409. package/test/resources/acl-tls/tim.localhost/fake-account/hello.html +9 -0
  410. package/test/resources/acl-tls/tim.localhost/no-acl/test-file.html +1 -0
  411. package/test/resources/acl-tls/tim.localhost/profile/card$.ttl +17 -0
  412. package/test/resources/acl-tls/write-acl/test-file$.ttl +1 -0
  413. package/test/resources/auth-proxy/index.html +0 -0
  414. package/test/resources/auth-proxy/index.html.acl +0 -0
  415. package/test/resources/config/templates/emails/delete-account.js +49 -0
  416. package/test/resources/config/templates/emails/delete-account.mjs +31 -0
  417. package/test/resources/config/templates/emails/invalid-username.js +30 -0
  418. package/test/resources/config/templates/emails/invalid-username.mjs +27 -0
  419. package/test/resources/config/templates/emails/reset-password.js +49 -0
  420. package/test/resources/config/templates/emails/reset-password.mjs +31 -0
  421. package/test/resources/config/templates/emails/welcome.js +39 -0
  422. package/test/resources/config/templates/emails/welcome.mjs +23 -0
  423. package/test/resources/config/templates/new-account/favicon.ico +0 -0
  424. package/test/resources/config/templates/new-account/favicon.ico.acl +26 -0
  425. package/test/resources/config/templates/new-account/profile/card$.ttl +26 -0
  426. package/test/resources/config/templates/new-account/robots.txt +3 -0
  427. package/test/resources/config/templates/new-account/robots.txt.acl +26 -0
  428. package/test/resources/config/templates/new-account/settings/prefs.ttl +15 -0
  429. package/test/resources/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  430. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  431. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  432. package/test/resources/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  433. package/test/resources/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  434. package/test/resources/config/templates/server/favicon.ico +0 -0
  435. package/test/resources/config/templates/server/favicon.ico.acl +15 -0
  436. package/test/resources/config/templates/server/index.html +54 -0
  437. package/test/resources/config/templates/server/robots.txt +3 -0
  438. package/test/resources/config/templates/server/robots.txt.acl +15 -0
  439. package/test/resources/config/views/account/account-deleted.hbs +17 -0
  440. package/test/resources/config/views/account/delete-confirm.hbs +51 -0
  441. package/test/resources/config/views/account/delete-link-sent.hbs +17 -0
  442. package/test/resources/config/views/account/delete.hbs +51 -0
  443. package/test/resources/config/views/account/invalid-username.hbs +22 -0
  444. package/test/resources/config/views/account/register-disabled.hbs +6 -0
  445. package/test/resources/config/views/account/register-form.hbs +133 -0
  446. package/test/resources/config/views/account/register.hbs +24 -0
  447. package/test/resources/config/views/auth/auth-hidden-fields.hbs +8 -0
  448. package/test/resources/config/views/auth/change-password.hbs +58 -0
  449. package/test/resources/config/views/auth/goodbye.hbs +23 -0
  450. package/test/resources/config/views/auth/login-required.hbs +34 -0
  451. package/test/resources/config/views/auth/login-tls.hbs +11 -0
  452. package/test/resources/config/views/auth/login-username-password.hbs +28 -0
  453. package/test/resources/config/views/auth/login.hbs +55 -0
  454. package/test/resources/config/views/auth/no-permission.hbs +29 -0
  455. package/test/resources/config/views/auth/password-changed.hbs +27 -0
  456. package/test/resources/config/views/auth/reset-link-sent.hbs +21 -0
  457. package/test/resources/config/views/auth/reset-password.hbs +52 -0
  458. package/test/resources/config/views/auth/sharing.hbs +49 -0
  459. package/test/resources/config/views/shared/create-account.hbs +8 -0
  460. package/test/resources/config/views/shared/error.hbs +5 -0
  461. package/test/resources/empty.spatch +0 -0
  462. package/test/resources/errorPages/401.html +5 -0
  463. package/test/resources/errorPages/403.html +5 -0
  464. package/test/resources/errorPages/404.html +5 -0
  465. package/test/resources/errorPages/405.html +5 -0
  466. package/test/resources/errorPages/415.html +5 -0
  467. package/test/resources/errorPages/500.html +5 -0
  468. package/test/resources/example_spkac.cnf +1 -0
  469. package/test/resources/external-servers/example.com/jwks.json +81 -0
  470. package/test/resources/external-servers/example.com/openid-configuration.json +53 -0
  471. package/test/resources/favicon.ico +0 -0
  472. package/test/resources/favicon.ico.acl +15 -0
  473. package/test/resources/headers/index.html +0 -0
  474. package/test/resources/headers/public-ra +0 -0
  475. package/test/resources/headers/public-ra.acl +7 -0
  476. package/test/resources/headers/user-rw-public-r +0 -0
  477. package/test/resources/headers/user-rw-public-r.acl +12 -0
  478. package/test/resources/headers/user-rwac-public-0 +0 -0
  479. package/test/resources/headers/user-rwac-public-0.acl +7 -0
  480. package/test/resources/hello.html +3 -0
  481. package/test/resources/invalid1.ttl +13 -0
  482. package/test/resources/invalid2.ttl +9 -0
  483. package/test/resources/ldpatch-example-final.ttl +23 -0
  484. package/test/resources/ldpatch-example-initial.ttl +22 -0
  485. package/test/resources/ldpatch-example-patch-1.spatch +8 -0
  486. package/test/resources/ldpatch-example-patch-2.spatch +12 -0
  487. package/test/resources/ldpatch-example-patch-3.spatch +14 -0
  488. package/test/resources/ldpatch-example-patch.ldpatch +25 -0
  489. package/test/resources/ldpatch-example-patch.spatch +24 -0
  490. package/test/resources/lennon.jsonld +7 -0
  491. package/test/resources/lfs-0.sparql +9 -0
  492. package/test/resources/lfs-1-final.json +10 -0
  493. package/test/resources/lfs-1.sparql +11 -0
  494. package/test/resources/messaging-scenario/user1.databox.me/profile/card +21 -0
  495. package/test/resources/nicola.jpg +0 -0
  496. package/test/resources/patch/append-only.ttl +2 -0
  497. package/test/resources/patch/append-only.ttl.acl +6 -0
  498. package/test/resources/patch/favicon.ico +0 -0
  499. package/test/resources/patch/favicon.ico.acl +15 -0
  500. package/test/resources/patch/index.html +0 -0
  501. package/test/resources/patch/read-append.ttl +2 -0
  502. package/test/resources/patch/read-append.ttl.acl +6 -0
  503. package/test/resources/patch/read-only.ttl +2 -0
  504. package/test/resources/patch/read-only.ttl.acl +6 -0
  505. package/test/resources/patch/read-write.ttl +2 -0
  506. package/test/resources/patch/read-write.ttl.acl +6 -0
  507. package/test/resources/patch/robots.txt +3 -0
  508. package/test/resources/patch/robots.txt.acl +15 -0
  509. package/test/resources/patch/write-only.ttl +2 -0
  510. package/test/resources/patch/write-only.ttl.acl +6 -0
  511. package/test/resources/patch-1-initial.ttl +3 -0
  512. package/test/resources/patch-2-final.ttl +2 -0
  513. package/test/resources/patch-2-initial.ttl +3 -0
  514. package/test/resources/patch-2.spatch +2 -0
  515. package/test/resources/patch-2n.spatch +2 -0
  516. package/test/resources/patch-3-final.ttl +28 -0
  517. package/test/resources/patch-4-final.ttl +29 -0
  518. package/test/resources/patch-5-final.ttl +1 -0
  519. package/test/resources/patch-5-initial.ttl +3 -0
  520. package/test/resources/patch-5.spatch +2 -0
  521. package/test/resources/put-input-2.html +13 -0
  522. package/test/resources/put-input.txt +6 -0
  523. package/test/resources/robots.txt +3 -0
  524. package/test/resources/robots.txt.acl +15 -0
  525. package/test/resources/sampleContainer/blank +0 -0
  526. package/test/resources/sampleContainer/cert.pkcs +0 -0
  527. package/test/resources/sampleContainer/example.ttl.old +1 -0
  528. package/test/resources/sampleContainer/example1.ttl +12 -0
  529. package/test/resources/sampleContainer/example2.ttl +3 -0
  530. package/test/resources/sampleContainer/example3.ttl +7 -0
  531. package/test/resources/sampleContainer/example4$.ttl +7 -0
  532. package/test/resources/sampleContainer/filename with spaces.txt +0 -0
  533. package/test/resources/sampleContainer/index.html +9 -0
  534. package/test/resources/sampleContainer/post2.ttl +6 -0
  535. package/test/resources/sampleContainer/put1.ttl +13 -0
  536. package/test/resources/sampleContainer/solid.png +0 -0
  537. package/test/resources/sampleContainer/user1.pfx +0 -0
  538. package/test/resources/sampleContainer/user2.pfx +0 -0
  539. package/test/resources/sampleContainer2/example1.ttl +10 -0
  540. package/test/resources/sampleContainer2/example2.ttl +7 -0
  541. package/test/resources/timbl.jpg +0 -0
  542. package/test/scenarios.md +23 -0
  543. package/test/surface/docker/cookie/Dockerfile +6 -0
  544. package/test/surface/docker/cookie/app/index.js +29 -0
  545. package/test/surface/docker/cookie/app/package-lock.json +13 -0
  546. package/test/surface/docker/cookie/app/package.json +14 -0
  547. package/test/surface/docker/server/Dockerfile +19 -0
  548. package/test/surface/docker/server/config/defaults.js +10 -0
  549. package/test/surface/docker/server/config/templates/emails/delete-account.js +49 -0
  550. package/test/surface/docker/server/config/templates/emails/invalid-username.js +30 -0
  551. package/test/surface/docker/server/config/templates/emails/reset-password.js +49 -0
  552. package/test/surface/docker/server/config/templates/emails/welcome.js +39 -0
  553. package/test/surface/docker/server/config/templates/new-account/favicon.ico +0 -0
  554. package/test/surface/docker/server/config/templates/new-account/favicon.ico.acl +26 -0
  555. package/test/surface/docker/server/config/templates/new-account/profile/card$.ttl +26 -0
  556. package/test/surface/docker/server/config/templates/new-account/robots.txt +3 -0
  557. package/test/surface/docker/server/config/templates/new-account/robots.txt.acl +26 -0
  558. package/test/surface/docker/server/config/templates/new-account/settings/prefs.ttl +15 -0
  559. package/test/surface/docker/server/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  560. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  561. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  562. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  563. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  564. package/test/surface/docker/server/config/templates/server/favicon.ico +0 -0
  565. package/test/surface/docker/server/config/templates/server/favicon.ico.acl +15 -0
  566. package/test/surface/docker/server/config/templates/server/index.html +55 -0
  567. package/test/surface/docker/server/config/templates/server/robots.txt +3 -0
  568. package/test/surface/docker/server/config/templates/server/robots.txt.acl +15 -0
  569. package/test/surface/docker/server/config/usernames-blacklist.json +4 -0
  570. package/test/surface/docker/server/config/views/account/account-deleted.hbs +17 -0
  571. package/test/surface/docker/server/config/views/account/delete-confirm.hbs +51 -0
  572. package/test/surface/docker/server/config/views/account/delete-link-sent.hbs +17 -0
  573. package/test/surface/docker/server/config/views/account/delete.hbs +51 -0
  574. package/test/surface/docker/server/config/views/account/invalid-username.hbs +22 -0
  575. package/test/surface/docker/server/config/views/account/register-disabled.hbs +6 -0
  576. package/test/surface/docker/server/config/views/account/register-form.hbs +147 -0
  577. package/test/surface/docker/server/config/views/account/register.hbs +24 -0
  578. package/test/surface/docker/server/config/views/auth/auth-hidden-fields.hbs +8 -0
  579. package/test/surface/docker/server/config/views/auth/change-password.hbs +58 -0
  580. package/test/surface/docker/server/config/views/auth/goodbye.hbs +23 -0
  581. package/test/surface/docker/server/config/views/auth/login-required.hbs +34 -0
  582. package/test/surface/docker/server/config/views/auth/login-tls.hbs +11 -0
  583. package/test/surface/docker/server/config/views/auth/login-username-password.hbs +28 -0
  584. package/test/surface/docker/server/config/views/auth/login.hbs +55 -0
  585. package/test/surface/docker/server/config/views/auth/no-permission.hbs +29 -0
  586. package/test/surface/docker/server/config/views/auth/password-changed.hbs +27 -0
  587. package/test/surface/docker/server/config/views/auth/reset-link-sent.hbs +21 -0
  588. package/test/surface/docker/server/config/views/auth/reset-password.hbs +52 -0
  589. package/test/surface/docker/server/config/views/auth/sharing.hbs +49 -0
  590. package/test/surface/docker/server/config/views/shared/create-account.hbs +8 -0
  591. package/test/surface/docker/server/config/views/shared/error.hbs +5 -0
  592. package/test/surface/docker/server/config.json +22 -0
  593. package/test/surface/docker/server/data/favicon.ico +0 -0
  594. package/test/surface/docker/server/data/favicon.ico.acl +26 -0
  595. package/test/surface/docker/server/data/index.html +48 -0
  596. package/test/surface/docker/server/data/profile/card$.ttl +31 -0
  597. package/test/surface/docker/server/data/robots.txt +3 -0
  598. package/test/surface/docker/server/data/robots.txt.acl +26 -0
  599. package/test/surface/docker/server/data/settings/prefs.ttl +15 -0
  600. package/test/surface/docker/server/data/settings/privateTypeIndex.ttl +4 -0
  601. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl +4 -0
  602. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl.acl +25 -0
  603. package/test/surface/docker/server/data/settings/serverSide.ttl +0 -0
  604. package/test/surface/docker/server/data/settings/serverSide.ttl.acl +13 -0
  605. package/test/surface/docker/server/data/settings/serverSide.ttl.inactive +12 -0
  606. package/test/surface/docker/server/env.list +4 -0
  607. package/test/surface/docker/solid-crud/Dockerfile +4 -0
  608. package/test/surface/docker/web-access-control/Dockerfile +1 -0
  609. package/test/surface/docker/webid-provider/Dockerfile +1 -0
  610. package/test/surface/run-solid-test-suite.sh +75 -0
  611. package/test/surface/server-env.list +5 -0
  612. package/test/surface/solid-crud-tests-env.list +5 -0
  613. package/test/surface/thirdparty-config.json +23 -0
  614. package/test/surface/thirdparty-env.list +6 -0
  615. package/test/surface/web-access-control-tests-env.list +6 -0
  616. package/test/surface/webid-provider-tests-env.list +4 -0
  617. package/test/test-helpers.mjs +63 -0
  618. package/test/unit/account-manager-test.mjs +610 -0
  619. package/test/unit/account-template-test.mjs +59 -0
  620. package/test/unit/acl-checker-test.mjs +51 -0
  621. package/test/unit/add-cert-request-test.mjs +120 -0
  622. package/test/unit/auth-handlers-test.mjs +108 -0
  623. package/test/unit/auth-proxy-test.mjs +224 -0
  624. package/test/unit/auth-request-test.mjs +96 -0
  625. package/test/unit/authenticator-test.mjs +34 -0
  626. package/test/unit/blacklist-service-test.mjs +49 -0
  627. package/test/unit/create-account-request-test.mjs +306 -0
  628. package/test/unit/delete-account-confirm-request-test.mjs +234 -0
  629. package/test/unit/delete-account-request-test.mjs +180 -0
  630. package/test/unit/email-service-test.mjs +166 -0
  631. package/test/unit/email-welcome-test.mjs +81 -0
  632. package/test/unit/error-pages-test.mjs +100 -0
  633. package/test/unit/esm-imports.test.mjs +149 -0
  634. package/test/unit/force-user-test.mjs +73 -0
  635. package/test/unit/getAvailableUrl-test.mjs +30 -0
  636. package/test/unit/getTrustedOrigins-test.mjs +20 -0
  637. package/test/unit/login-request-test.mjs +246 -0
  638. package/test/unit/oidc-manager-test.mjs +50 -0
  639. package/test/unit/password-authenticator-test.mjs +125 -0
  640. package/test/unit/password-change-request-test.mjs +259 -0
  641. package/test/unit/password-reset-email-request-test.mjs +234 -0
  642. package/test/unit/resource-mapper-test.mjs +673 -0
  643. package/test/unit/solid-host-test.mjs +119 -0
  644. package/test/unit/tls-authenticator-test.mjs +174 -0
  645. package/test/unit/token-service-test.mjs +82 -0
  646. package/test/unit/user-account-test.mjs +38 -0
  647. package/test/unit/user-accounts-api-test.mjs +59 -0
  648. package/test/unit/user-utils-test.mjs +64 -0
  649. package/test/unit/utils-test.mjs +114 -0
  650. package/test/utils/index.mjs +167 -0
  651. package/test/utils.mjs +205 -0
  652. package/test/validate-turtle.mjs +43 -0
  653. package/.github/workflows/ci.yml +0 -113
  654. package/.nvmrc +0 -1
  655. package/.snyk +0 -35
  656. package/bin/lib/cli-utils.js +0 -85
  657. package/bin/lib/cli.js +0 -39
  658. package/bin/solid.js +0 -3
  659. package/default-templates/new-account/.acl +0 -26
  660. package/default-templates/new-account/.meta +0 -5
  661. package/default-templates/new-account/.well-known/.acl +0 -19
  662. package/default-templates/new-account/private/.acl +0 -10
  663. package/default-templates/new-account/profile/.acl +0 -19
  664. package/default-templates/new-account/public/.acl +0 -19
  665. package/default-templates/new-account/settings/.acl +0 -20
  666. package/index.js +0 -3
  667. package/lib/api/authn/index.js +0 -5
  668. package/lib/api/index.js +0 -6
  669. package/lib/common/template-utils.js +0 -50
  670. package/lib/debug.js +0 -18
  671. package/lib/ldp-copy.js +0 -73
  672. package/lib/ldp-middleware.js +0 -40
  673. package/lib/models/account-manager.js +0 -604
  674. package/lib/models/account-template.js +0 -156
  675. package/lib/models/authenticator.js +0 -337
  676. package/lib/models/oidc-manager.js +0 -53
  677. package/lib/models/solid-host.js +0 -131
  678. package/lib/models/user-account.js +0 -113
  679. package/lib/models/webid-tls-certificate.js +0 -184
  680. package/lib/requests/add-cert-request.js +0 -138
  681. package/lib/requests/auth-request.js +0 -234
  682. package/lib/requests/delete-account-confirm-request.js +0 -170
  683. package/lib/requests/login-request.js +0 -205
  684. package/lib/services/email-service.js +0 -162
  685. package/lib/webid/tls/index.js +0 -185
@@ -1,405 +1,379 @@
1
- const fs = require('fs')
2
- const path = require('path')
3
- const validUrl = require('valid-url')
4
- const { URL } = require('url')
5
- const { isEmail } = require('validator')
6
-
7
- module.exports = [
8
- // {
9
- // abbr: 'v',
10
- // flag: true,
11
- // help: 'Print the logs to console\n'
12
- // },
13
- {
14
- name: 'root',
15
- help: "Root folder to serve (default: './data')",
16
- question: 'Path to the folder you want to serve. Default is',
17
- default: './data',
18
- prompt: true,
19
- filter: (value) => path.resolve(value)
20
- },
21
- {
22
- name: 'port',
23
- help: 'SSL port to use',
24
- question: 'SSL port to run on. Default is',
25
- default: '8443',
26
- prompt: true
27
- },
28
- {
29
- name: 'server-uri',
30
- question: 'Solid server uri (with protocol, hostname and port)',
31
- help: "Solid server uri (default: 'https://localhost:8443')",
32
- default: 'https://localhost:8443',
33
- validate: validUri,
34
- prompt: true
35
- },
36
- {
37
- name: 'webid',
38
- help: 'Enable WebID authentication and access control (uses HTTPS)',
39
- flag: true,
40
- default: true,
41
- question: 'Enable WebID authentication',
42
- prompt: true
43
- },
44
- {
45
- name: 'mount',
46
- help: "Serve on a specific URL path (default: '/')",
47
- question: 'Serve Solid on URL path',
48
- default: '/',
49
- prompt: true
50
- },
51
- {
52
- name: 'config-path',
53
- question: 'Path to the config directory (for example: ./config)',
54
- default: './config',
55
- prompt: true
56
- },
57
- {
58
- name: 'config-file',
59
- question: 'Path to the config file (for example: ./config.json)',
60
- default: './config.json',
61
- prompt: true
62
- },
63
- {
64
- name: 'db-path',
65
- question: 'Path to the server metadata db directory (for users/apps etc)',
66
- default: './.db',
67
- prompt: true
68
- },
69
- {
70
- name: 'auth',
71
- help: 'Pick an authentication strategy for WebID: `tls` or `oidc`',
72
- question: 'Select authentication strategy',
73
- type: 'list',
74
- choices: [
75
- 'WebID-OpenID Connect'
76
- ],
77
- prompt: false,
78
- default: 'WebID-OpenID Connect',
79
- filter: (value) => {
80
- if (value === 'WebID-OpenID Connect') return 'oidc'
81
- },
82
- when: (answers) => {
83
- return answers.webid
84
- }
85
- },
86
- {
87
- name: 'use-owner',
88
- question: 'Do you already have a WebID?',
89
- type: 'confirm',
90
- default: false,
91
- hide: true
92
- },
93
- {
94
- name: 'owner',
95
- help: 'Set the owner of the storage (overwrites the root ACL file)',
96
- question: 'Your webid (to overwrite the root ACL with)',
97
- prompt: false,
98
- validate: function (value) {
99
- if (value === '' || !value.startsWith('http')) {
100
- return 'Enter a valid Webid'
101
- }
102
- return true
103
- },
104
- when: function (answers) {
105
- return answers['use-owner']
106
- }
107
- },
108
- {
109
- name: 'ssl-key',
110
- help: 'Path to the SSL private key in PEM format',
111
- validate: validPath,
112
- prompt: true
113
- },
114
- {
115
- name: 'ssl-cert',
116
- help: 'Path to the SSL certificate key in PEM format',
117
- validate: validPath,
118
- prompt: true
119
- },
120
- {
121
- name: 'no-reject-unauthorized',
122
- help: 'Accept self-signed certificates',
123
- flag: true,
124
- default: false,
125
- prompt: false
126
- },
127
- {
128
- name: 'multiuser',
129
- help: 'Enable multi-user mode',
130
- question: 'Enable multi-user mode',
131
- flag: true,
132
- default: false,
133
- prompt: true
134
- },
135
- {
136
- name: 'idp',
137
- help: 'Obsolete; use --multiuser',
138
- prompt: false
139
- },
140
- {
141
- name: 'no-live',
142
- help: 'Disable live support through WebSockets',
143
- flag: true,
144
- default: false
145
- },
146
- {
147
- name: 'no-prep',
148
- help: 'Disable Per Resource Events',
149
- flag: true,
150
- default: false
151
- },
152
- // {
153
- // full: 'default-app',
154
- // help: 'URI to use as a default app for resources (default: https://linkeddata.github.io/warp/#/list/)'
155
- // },
156
- {
157
- name: 'use-cors-proxy',
158
- help: 'Do you want to have a CORS proxy endpoint?',
159
- flag: true,
160
- default: false,
161
- hide: true
162
- },
163
- {
164
- name: 'proxy',
165
- help: 'Obsolete; use --corsProxy',
166
- prompt: false
167
- },
168
- {
169
- name: 'cors-proxy',
170
- help: 'Serve the CORS proxy on this path',
171
- when: function (answers) {
172
- return answers['use-cors-proxy']
173
- },
174
- default: '/proxy',
175
- prompt: true
176
- },
177
- {
178
- name: 'auth-proxy',
179
- help: 'Object with path/server pairs to reverse proxy',
180
- default: {},
181
- prompt: false,
182
- hide: true
183
- },
184
- {
185
- name: 'suppress-data-browser',
186
- help: 'Suppress provision of a data browser',
187
- flag: true,
188
- prompt: false,
189
- default: false,
190
- hide: false
191
- },
192
- {
193
- name: 'data-browser-path',
194
- help: 'An HTML file which is sent to allow users to browse the data (eg using mashlib.js)',
195
- question: 'Path of data viewer page (defaults to using mashlib)',
196
- validate: validPath,
197
- default: 'default',
198
- prompt: false
199
- },
200
- {
201
- name: 'suffix-acl',
202
- full: 'suffix-acl',
203
- help: "Suffix for acl files (default: '.acl')",
204
- default: '.acl',
205
- prompt: false
206
- },
207
- {
208
- name: 'suffix-meta',
209
- full: 'suffix-meta',
210
- help: "Suffix for metadata files (default: '.meta')",
211
- default: '.meta',
212
- prompt: false
213
- },
214
- {
215
- name: 'secret',
216
- help: 'Secret used to sign the session ID cookie (e.g. "your secret phrase")',
217
- question: 'Session secret for cookie',
218
- default: 'random',
219
- prompt: false,
220
- filter: function (value) {
221
- if (value === '' || value === 'random') {
222
- return
223
- }
224
- return value
225
- }
226
- },
227
- // {
228
- // full: 'no-error-pages',
229
- // flag: true,
230
- // help: 'Disable custom error pages (use Node.js default pages instead)'
231
- // },
232
- {
233
- name: 'error-pages',
234
- help: 'Folder from which to look for custom error pages files (files must be named <error-code>.html -- eg. 500.html)',
235
- validate: validPath,
236
- prompt: false
237
- },
238
- {
239
- name: 'force-user',
240
- help: 'Force a WebID to always be logged in (useful when offline)'
241
- },
242
- {
243
- name: 'strict-origin',
244
- help: 'Enforce same origin policy in the ACL',
245
- flag: true,
246
- default: false,
247
- prompt: false
248
- },
249
- {
250
- name: 'use-email',
251
- help: 'Do you want to set up an email service?',
252
- flag: true,
253
- prompt: true,
254
- default: false
255
- },
256
- {
257
- name: 'email-host',
258
- help: 'Host of your email service',
259
- prompt: true,
260
- default: 'smtp.gmail.com',
261
- when: (answers) => {
262
- return answers['use-email']
263
- }
264
- },
265
- {
266
- name: 'email-port',
267
- help: 'Port of your email service',
268
- prompt: true,
269
- default: '465',
270
- when: (answers) => {
271
- return answers['use-email']
272
- }
273
- },
274
- {
275
- name: 'email-auth-user',
276
- help: 'User of your email service',
277
- prompt: true,
278
- when: (answers) => {
279
- return answers['use-email']
280
- },
281
- validate: (value) => {
282
- if (!value) {
283
- return 'You must enter this information'
284
- }
285
- return true
286
- }
287
- },
288
- {
289
- name: 'email-auth-pass',
290
- help: 'Password of your email service',
291
- type: 'password',
292
- prompt: true,
293
- when: (answers) => {
294
- return answers['use-email']
295
- }
296
- },
297
- {
298
- name: 'use-api-apps',
299
- help: 'Do you want to load your default apps on /api/apps?',
300
- flag: true,
301
- prompt: false,
302
- default: true
303
- },
304
- {
305
- name: 'api-apps',
306
- help: 'Path to the folder to mount on /api/apps',
307
- prompt: true,
308
- validate: validPath,
309
- when: (answers) => {
310
- return answers['use-api-apps']
311
- }
312
- },
313
- { // copied from name: 'owner'
314
- name: 'redirect-http-from',
315
- help: 'HTTP port or \',\'-separated ports to redirect to the solid server port (e.g. "80,8080").',
316
- prompt: false,
317
- validate: function (value) {
318
- if (!value.match(/^[0-9]+(,[0-9]+)*$/)) {
319
- return 'direct-port(s) must be a comma-separated list of integers.'
320
- }
321
- const list = value.split(/,/).map(v => parseInt(v))
322
- const bad = list.find(v => { return v < 1 || v > 65535 })
323
- if (bad.length) {
324
- return 'redirect-http-from port(s) ' + bad + ' out of range'
325
- }
326
- return true
327
- }
328
- },
329
- {
330
- // This property is packaged into an object for the server property in config.json
331
- name: 'server-info-name', // All properties with prefix server-info- will be removed from the config
332
- help: 'A name for your server (not required, but will be presented on your server\'s frontpage)',
333
- prompt: true,
334
- default: answers => new URL(answers['server-uri']).hostname
335
- },
336
- {
337
- // This property is packaged into an object for the server property in config.json
338
- name: 'server-info-description', // All properties with prefix server-info- will be removed from the config
339
- help: 'A description of your server (not required)',
340
- prompt: true
341
- },
342
- {
343
- // This property is packaged into an object for the server property in config.json
344
- name: 'server-info-logo', // All properties with prefix server-info- will be removed from the config
345
- help: 'A logo that represents you, your brand, or your server (not required)',
346
- prompt: true
347
- },
348
- {
349
- name: 'enforce-toc',
350
- help: 'Do you want to enforce Terms & Conditions for your service?',
351
- flag: true,
352
- prompt: true,
353
- default: false,
354
- when: answers => answers.multiuser
355
- },
356
- {
357
- name: 'toc-uri',
358
- help: 'URI to your Terms & Conditions',
359
- prompt: true,
360
- validate: validUri,
361
- when: answers => answers['enforce-toc']
362
- },
363
- {
364
- name: 'disable-password-checks',
365
- help: 'Do you want to disable password strength checking?',
366
- flag: true,
367
- prompt: true,
368
- default: false,
369
- when: answers => answers.multiuser
370
- },
371
- {
372
- name: 'support-email',
373
- help: 'The support email you provide for your users (not required)',
374
- prompt: true,
375
- validate: (value) => {
376
- if (value && !isEmail(value)) {
377
- return 'Must be a valid email'
378
- }
379
- return true
380
- },
381
- when: answers => answers.multiuser
382
- }
383
- ]
384
-
385
- function validPath (value) {
386
- if (value === 'default') {
387
- return Promise.resolve(true)
388
- }
389
- if (!value) {
390
- return Promise.resolve('You must enter a valid path')
391
- }
392
- return new Promise((resolve) => {
393
- fs.stat(value, function (err) {
394
- if (err) return resolve('Nothing found at this path')
395
- return resolve(true)
396
- })
397
- })
398
- }
399
-
400
- function validUri (value) {
401
- if (!validUrl.isUri(value)) {
402
- return 'Enter a valid uri (with protocol)'
403
- }
404
- return true
405
- }
1
+ import fs from 'fs'
2
+ import path from 'path'
3
+ import validUrl from 'valid-url'
4
+ import { URL } from 'url'
5
+ import validator from 'validator'
6
+ const { isEmail } = validator
7
+
8
+ const options = [
9
+ {
10
+ name: 'root',
11
+ help: "Root folder to serve (default: './data')",
12
+ question: 'Path to the folder you want to serve. Default is',
13
+ default: './data',
14
+ prompt: true,
15
+ filter: (value) => path.resolve(value)
16
+ },
17
+ {
18
+ name: 'port',
19
+ help: 'SSL port to use',
20
+ question: 'SSL port to run on. Default is',
21
+ default: '8443',
22
+ prompt: true
23
+ },
24
+ {
25
+ name: 'server-uri',
26
+ question: 'Solid server uri (with protocol, hostname and port)',
27
+ help: "Solid server uri (default: 'https://localhost:8443')",
28
+ default: 'https://localhost:8443',
29
+ validate: validUri,
30
+ prompt: true
31
+ },
32
+ {
33
+ name: 'webid',
34
+ help: 'Enable WebID authentication and access control (uses HTTPS)',
35
+ flag: true,
36
+ default: true,
37
+ question: 'Enable WebID authentication',
38
+ prompt: true
39
+ },
40
+ {
41
+ name: 'mount',
42
+ help: "Serve on a specific URL path (default: '/')",
43
+ question: 'Serve Solid on URL path',
44
+ default: '/',
45
+ prompt: true
46
+ },
47
+ {
48
+ name: 'config-path',
49
+ question: 'Path to the config directory (for example: ./config)',
50
+ default: './config',
51
+ prompt: true
52
+ },
53
+ {
54
+ name: 'config-file',
55
+ question: 'Path to the config file (for example: ./config.json)',
56
+ default: './config.json',
57
+ prompt: true
58
+ },
59
+ {
60
+ name: 'db-path',
61
+ question: 'Path to the server metadata db directory (for users/apps etc)',
62
+ default: './.db',
63
+ prompt: true
64
+ },
65
+ {
66
+ name: 'auth',
67
+ help: 'Pick an authentication strategy for WebID: `tls` or `oidc`',
68
+ question: 'Select authentication strategy',
69
+ type: 'list',
70
+ choices: [
71
+ 'WebID-OpenID Connect'
72
+ ],
73
+ prompt: false,
74
+ default: 'WebID-OpenID Connect',
75
+ filter: (value) => {
76
+ if (value === 'WebID-OpenID Connect') return 'oidc'
77
+ },
78
+ when: (answers) => answers.webid
79
+ },
80
+ {
81
+ name: 'use-owner',
82
+ question: 'Do you already have a WebID?',
83
+ type: 'confirm',
84
+ default: false,
85
+ hide: true
86
+ },
87
+ {
88
+ name: 'owner',
89
+ help: 'Set the owner of the storage (overwrites the root ACL file)',
90
+ question: 'Your webid (to overwrite the root ACL with)',
91
+ prompt: false,
92
+ validate: function (value) {
93
+ if (value === '' || !value.startsWith('http')) {
94
+ return 'Enter a valid Webid'
95
+ }
96
+ return true
97
+ },
98
+ when: function (answers) {
99
+ return answers['use-owner']
100
+ }
101
+ },
102
+ {
103
+ name: 'ssl-key',
104
+ help: 'Path to the SSL private key in PEM format',
105
+ validate: validPath,
106
+ prompt: true
107
+ },
108
+ {
109
+ name: 'ssl-cert',
110
+ help: 'Path to the SSL certificate key in PEM format',
111
+ validate: validPath,
112
+ prompt: true
113
+ },
114
+ {
115
+ name: 'no-reject-unauthorized',
116
+ help: 'Accept self-signed certificates',
117
+ flag: true,
118
+ default: false,
119
+ prompt: false
120
+ },
121
+ {
122
+ name: 'multiuser',
123
+ help: 'Enable multi-user mode',
124
+ question: 'Enable multi-user mode',
125
+ flag: true,
126
+ default: false,
127
+ prompt: true
128
+ },
129
+ {
130
+ name: 'idp',
131
+ help: 'Obsolete; use --multiuser',
132
+ prompt: false
133
+ },
134
+ {
135
+ name: 'no-live',
136
+ help: 'Disable live support through WebSockets',
137
+ flag: true,
138
+ default: false
139
+ },
140
+ {
141
+ name: 'no-prep',
142
+ help: 'Disable Per Resource Events',
143
+ flag: true,
144
+ default: false
145
+ },
146
+ {
147
+ name: 'use-cors-proxy',
148
+ help: 'Do you want to have a CORS proxy endpoint?',
149
+ flag: true,
150
+ default: false,
151
+ hide: true
152
+ },
153
+ {
154
+ name: 'proxy',
155
+ help: 'Obsolete; use --corsProxy',
156
+ prompt: false
157
+ },
158
+ {
159
+ name: 'cors-proxy',
160
+ help: 'Serve the CORS proxy on this path',
161
+ when: function (answers) {
162
+ return answers['use-cors-proxy']
163
+ },
164
+ default: '/proxy',
165
+ prompt: true
166
+ },
167
+ {
168
+ name: 'auth-proxy',
169
+ help: 'Object with path/server pairs to reverse proxy',
170
+ default: {},
171
+ prompt: false,
172
+ hide: true
173
+ },
174
+ {
175
+ name: 'suppress-data-browser',
176
+ help: 'Suppress provision of a data browser',
177
+ flag: true,
178
+ prompt: false,
179
+ default: false,
180
+ hide: false
181
+ },
182
+ {
183
+ name: 'data-browser-path',
184
+ help: 'An HTML file which is sent to allow users to browse the data (eg using mashlib.js)',
185
+ question: 'Path of data viewer page (defaults to using mashlib)',
186
+ validate: validPath,
187
+ default: 'default',
188
+ prompt: false
189
+ },
190
+ {
191
+ name: 'suffix-acl',
192
+ full: 'suffix-acl',
193
+ help: "Suffix for acl files (default: '.acl')",
194
+ default: '.acl',
195
+ prompt: false
196
+ },
197
+ {
198
+ name: 'suffix-meta',
199
+ full: 'suffix-meta',
200
+ help: "Suffix for metadata files (default: '.meta')",
201
+ default: '.meta',
202
+ prompt: false
203
+ },
204
+ {
205
+ name: 'secret',
206
+ help: 'Secret used to sign the session ID cookie (e.g. "your secret phrase")',
207
+ question: 'Session secret for cookie',
208
+ default: 'random',
209
+ prompt: false,
210
+ filter: function (value) {
211
+ if (value === '' || value === 'random') {
212
+ return
213
+ }
214
+ return value
215
+ }
216
+ },
217
+ {
218
+ name: 'error-pages',
219
+ help: 'Folder from which to look for custom error pages files (files must be named <error-code>.html -- eg. 500.html)',
220
+ validate: validPath,
221
+ prompt: false
222
+ },
223
+ {
224
+ name: 'force-user',
225
+ help: 'Force a WebID to always be logged in (useful when offline)'
226
+ },
227
+ {
228
+ name: 'strict-origin',
229
+ help: 'Enforce same origin policy in the ACL',
230
+ flag: true,
231
+ default: false,
232
+ prompt: false
233
+ },
234
+ {
235
+ name: 'use-email',
236
+ help: 'Do you want to set up an email service?',
237
+ flag: true,
238
+ prompt: true,
239
+ default: false
240
+ },
241
+ {
242
+ name: 'email-host',
243
+ help: 'Host of your email service',
244
+ prompt: true,
245
+ default: 'smtp.gmail.com',
246
+ when: (answers) => answers['use-email']
247
+ },
248
+ {
249
+ name: 'email-port',
250
+ help: 'Port of your email service',
251
+ prompt: true,
252
+ default: '465',
253
+ when: (answers) => answers['use-email']
254
+ },
255
+ {
256
+ name: 'email-auth-user',
257
+ help: 'User of your email service',
258
+ prompt: true,
259
+ when: (answers) => answers['use-email'],
260
+ validate: (value) => {
261
+ if (!value) {
262
+ return 'You must enter this information'
263
+ }
264
+ return true
265
+ }
266
+ },
267
+ {
268
+ name: 'email-auth-pass',
269
+ help: 'Password of your email service',
270
+ type: 'password',
271
+ prompt: true,
272
+ when: (answers) => answers['use-email']
273
+ },
274
+ {
275
+ name: 'use-api-apps',
276
+ help: 'Do you want to load your default apps on /api/apps?',
277
+ flag: true,
278
+ prompt: false,
279
+ default: true
280
+ },
281
+ {
282
+ name: 'api-apps',
283
+ help: 'Path to the folder to mount on /api/apps',
284
+ prompt: true,
285
+ validate: validPath,
286
+ when: (answers) => answers['use-api-apps']
287
+ },
288
+ {
289
+ name: 'redirect-http-from',
290
+ help: 'HTTP port or comma-separated ports to redirect to the solid server port (e.g. "80,8080").',
291
+ prompt: false,
292
+ validate: function (value) {
293
+ if (!value.match(/^[0-9]+(,[0-9]+)*$/)) {
294
+ return 'direct-port(s) must be a comma-separated list of integers.'
295
+ }
296
+ const list = value.split(/,/).map(v => parseInt(v))
297
+ const bad = list.find(v => { return v < 1 || v > 65535 })
298
+ if (bad && bad.length) {
299
+ return 'redirect-http-from port(s) ' + bad + ' out of range'
300
+ }
301
+ return true
302
+ }
303
+ },
304
+ {
305
+ name: 'server-info-name',
306
+ help: 'A name for your server (not required, but will be presented on your server\'s frontpage)',
307
+ prompt: true,
308
+ default: answers => new URL(answers['server-uri']).hostname
309
+ },
310
+ {
311
+ name: 'server-info-description',
312
+ help: 'A description of your server (not required)',
313
+ prompt: true
314
+ },
315
+ {
316
+ name: 'server-info-logo',
317
+ help: 'A logo that represents you, your brand, or your server (not required)',
318
+ prompt: true
319
+ },
320
+ {
321
+ name: 'enforce-toc',
322
+ help: 'Do you want to enforce Terms & Conditions for your service?',
323
+ flag: true,
324
+ prompt: true,
325
+ default: false,
326
+ when: answers => answers.multiuser
327
+ },
328
+ {
329
+ name: 'toc-uri',
330
+ help: 'URI to your Terms & Conditions',
331
+ prompt: true,
332
+ validate: validUri,
333
+ when: answers => answers['enforce-toc']
334
+ },
335
+ {
336
+ name: 'disable-password-checks',
337
+ help: 'Do you want to disable password strength checking?',
338
+ flag: true,
339
+ prompt: true,
340
+ default: false,
341
+ when: answers => answers.multiuser
342
+ },
343
+ {
344
+ name: 'support-email',
345
+ help: 'The support email you provide for your users (not required)',
346
+ prompt: true,
347
+ validate: (value) => {
348
+ if (value && !isEmail(value)) {
349
+ return 'Must be a valid email'
350
+ }
351
+ return true
352
+ },
353
+ when: answers => answers.multiuser
354
+ }
355
+ ]
356
+
357
+ function validPath (value) {
358
+ if (value === 'default') {
359
+ return Promise.resolve(true)
360
+ }
361
+ if (!value) {
362
+ return Promise.resolve('You must enter a valid path')
363
+ }
364
+ return new Promise((resolve) => {
365
+ fs.stat(value, function (err) {
366
+ if (err) return resolve('Nothing found at this path')
367
+ return resolve(true)
368
+ })
369
+ })
370
+ }
371
+
372
+ function validUri (value) {
373
+ if (!validUrl.isUri(value)) {
374
+ return 'Enter a valid uri (with protocol)'
375
+ }
376
+ return true
377
+ }
378
+
379
+ export default options