spec-3nweb-server 1.8.5 → 1.8.7

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 (340) hide show
  1. package/.gitlab-ci-linux.yml +50 -0
  2. package/.gitlab-ci-mac.yml +29 -0
  3. package/.gitlab-ci-windows.yml +29 -0
  4. package/.gitlab-ci.yml +63 -0
  5. package/build/3nstorage/resources/store.d.ts +2 -2
  6. package/build/3nstorage/resources/store.js +1 -1
  7. package/build/3nstorage/resources/users.d.ts +3 -3
  8. package/build/3nstorage/resources/users.js +1 -1
  9. package/build/3nstorage/resources/utils.d.ts +6 -0
  10. package/build/3nstorage/resources/utils.js +41 -0
  11. package/build/3nstorage/routes/owner/archive-obj-version.js +8 -10
  12. package/build/3nstorage/routes/owner/cancel-trans.js +5 -4
  13. package/build/3nstorage/routes/owner/delete-obj.js +7 -8
  14. package/build/3nstorage/routes/owner/get-archived-obj-ver.js +11 -13
  15. package/build/3nstorage/routes/owner/get-current-obj.js +7 -6
  16. package/build/3nstorage/routes/owner/get-obj-status.js +8 -8
  17. package/build/3nstorage/routes/owner/put-current-obj.js +25 -55
  18. package/build/3nstorage/routes/owner/session-params.js +2 -0
  19. package/build/asmail/resources/utils.d.ts +6 -0
  20. package/build/asmail/resources/utils.js +36 -0
  21. package/build/asmail/routes/delivery/finalize-delivery.js +3 -2
  22. package/build/asmail/routes/delivery/pre-flight.js +9 -26
  23. package/build/asmail/routes/delivery/provide-recipient-pubkey.js +4 -3
  24. package/build/asmail/routes/delivery/put-metadata.js +13 -21
  25. package/build/asmail/routes/delivery/put-obj.js +19 -25
  26. package/build/asmail/routes/delivery/restart-session.d.ts +4 -8
  27. package/build/asmail/routes/delivery/restart-session.js +10 -23
  28. package/build/asmail/routes/delivery/sender-authorization.js +5 -5
  29. package/build/asmail/routes/delivery/start-session.js +9 -24
  30. package/build/asmail/routes/retrieval/get-message-meta.js +4 -7
  31. package/build/asmail/routes/retrieval/get-message-obj.js +10 -7
  32. package/build/asmail/routes/retrieval/list-messages.js +4 -4
  33. package/build/asmail/routes/retrieval/remove-message.js +3 -2
  34. package/build/mock/tls-options.js +46 -44
  35. package/build/tests/admin-proto/signup.d.ts +1 -0
  36. package/build/tests/admin-proto/signup.js +235 -0
  37. package/build/tests/jasmine.d.ts +1 -0
  38. package/build/tests/jasmine.js +32 -0
  39. package/build/tests/libs-for-tests/3nstorage.d.ts +22 -0
  40. package/build/tests/libs-for-tests/3nstorage.js +123 -0
  41. package/build/tests/libs-for-tests/asmail.d.ts +22 -0
  42. package/build/tests/libs-for-tests/asmail.js +179 -0
  43. package/build/tests/libs-for-tests/assert.d.ts +1 -0
  44. package/build/tests/libs-for-tests/assert.js +26 -0
  45. package/build/tests/libs-for-tests/async-jasmine.d.ts +7 -0
  46. package/build/tests/libs-for-tests/async-jasmine.js +77 -0
  47. package/build/tests/libs-for-tests/bytes-equal.d.ts +1 -0
  48. package/build/tests/libs-for-tests/bytes-equal.js +34 -0
  49. package/build/tests/libs-for-tests/json-copy.d.ts +1 -0
  50. package/build/tests/libs-for-tests/json-copy.js +45 -0
  51. package/build/tests/libs-for-tests/json-equal.d.ts +4 -0
  52. package/build/tests/libs-for-tests/json-equal.js +67 -0
  53. package/build/tests/libs-for-tests/mailerid.d.ts +13 -0
  54. package/build/tests/libs-for-tests/mailerid.js +114 -0
  55. package/build/tests/libs-for-tests/pkl.d.ts +28 -0
  56. package/build/tests/libs-for-tests/pkl.js +89 -0
  57. package/build/tests/libs-for-tests/server-components/3nstorage.d.ts +20 -0
  58. package/build/tests/libs-for-tests/server-components/3nstorage.js +200 -0
  59. package/build/tests/libs-for-tests/server-components/admin.d.ts +6 -0
  60. package/build/tests/libs-for-tests/server-components/admin.js +43 -0
  61. package/build/tests/libs-for-tests/server-components/asmail.d.ts +16 -0
  62. package/build/tests/libs-for-tests/server-components/asmail.js +143 -0
  63. package/build/tests/libs-for-tests/server-components/component.d.ts +13 -0
  64. package/build/tests/libs-for-tests/server-components/component.js +77 -0
  65. package/build/tests/libs-for-tests/server-components/mailerid.d.ts +10 -0
  66. package/build/tests/libs-for-tests/server-components/mailerid.js +103 -0
  67. package/build/tests/libs-for-tests/server-runner.d.ts +15 -0
  68. package/build/tests/libs-for-tests/server-runner.js +69 -0
  69. package/build/tests/libs-for-tests/spec-assembly.d.ts +6 -0
  70. package/build/tests/libs-for-tests/spec-assembly.js +55 -0
  71. package/build/tests/libs-for-tests/ws-utils.d.ts +3 -0
  72. package/build/tests/libs-for-tests/ws-utils.js +59 -0
  73. package/build/tests/libs-for-tests/xhr-utils.d.ts +61 -0
  74. package/build/tests/libs-for-tests/xhr-utils.js +154 -0
  75. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.d.ts +2 -0
  76. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.js +84 -0
  77. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.d.ts +2 -0
  78. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.js +78 -0
  79. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.d.ts +2 -0
  80. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.js +83 -0
  81. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.d.ts +2 -0
  82. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.js +77 -0
  83. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.d.ts +2 -0
  84. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.js +75 -0
  85. package/build/tests/protocols/3nstorage/owner/specs/events.d.ts +2 -0
  86. package/build/tests/protocols/3nstorage/owner/specs/events.js +91 -0
  87. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.d.ts +2 -0
  88. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.js +269 -0
  89. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.d.ts +2 -0
  90. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.js +262 -0
  91. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.d.ts +2 -0
  92. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.js +79 -0
  93. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.d.ts +2 -0
  94. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.js +72 -0
  95. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.d.ts +2 -0
  96. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.js +287 -0
  97. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.d.ts +2 -0
  98. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.js +274 -0
  99. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.d.ts +2 -0
  100. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.js +73 -0
  101. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.d.ts +2 -0
  102. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.js +72 -0
  103. package/build/tests/protocols/3nstorage/owner/test-utils.d.ts +14 -0
  104. package/build/tests/protocols/3nstorage/owner/test-utils.js +54 -0
  105. package/build/tests/protocols/3nstorage/owner.d.ts +1 -0
  106. package/build/tests/protocols/3nstorage/owner.js +138 -0
  107. package/build/tests/protocols/asmail/config.d.ts +1 -0
  108. package/build/tests/protocols/asmail/config.js +117 -0
  109. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.d.ts +2 -0
  110. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.js +60 -0
  111. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.d.ts +2 -0
  112. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.js +68 -0
  113. package/build/tests/protocols/asmail/delivery/specs/put-metadata.d.ts +2 -0
  114. package/build/tests/protocols/asmail/delivery/specs/put-metadata.js +83 -0
  115. package/build/tests/protocols/asmail/delivery/specs/put-obj.d.ts +2 -0
  116. package/build/tests/protocols/asmail/delivery/specs/put-obj.js +123 -0
  117. package/build/tests/protocols/asmail/delivery/specs/restart-session.d.ts +2 -0
  118. package/build/tests/protocols/asmail/delivery/specs/restart-session.js +79 -0
  119. package/build/tests/protocols/asmail/delivery/specs/start-session.d.ts +2 -0
  120. package/build/tests/protocols/asmail/delivery/specs/start-session.js +64 -0
  121. package/build/tests/protocols/asmail/delivery/test-utils.d.ts +16 -0
  122. package/build/tests/protocols/asmail/delivery/test-utils.js +46 -0
  123. package/build/tests/protocols/asmail/delivery.d.ts +1 -0
  124. package/build/tests/protocols/asmail/delivery.js +46 -0
  125. package/build/tests/protocols/asmail/retrieval/specs/events.d.ts +2 -0
  126. package/build/tests/protocols/asmail/retrieval/specs/events.js +62 -0
  127. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.d.ts +2 -0
  128. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.js +70 -0
  129. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.d.ts +2 -0
  130. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.js +166 -0
  131. package/build/tests/protocols/asmail/retrieval/specs/list-messages.d.ts +2 -0
  132. package/build/tests/protocols/asmail/retrieval/specs/list-messages.js +96 -0
  133. package/build/tests/protocols/asmail/retrieval/specs/remove-message.d.ts +2 -0
  134. package/build/tests/protocols/asmail/retrieval/specs/remove-message.js +66 -0
  135. package/build/tests/protocols/asmail/retrieval/test-utils.d.ts +17 -0
  136. package/build/tests/protocols/asmail/retrieval/test-utils.js +46 -0
  137. package/build/tests/protocols/asmail/retrieval.d.ts +1 -0
  138. package/build/tests/protocols/asmail/retrieval.js +92 -0
  139. package/build/tests/protocols/mailerid.d.ts +1 -0
  140. package/build/tests/protocols/mailerid.js +210 -0
  141. package/build/tests/shared-checks/check-mid-login.d.ts +2 -0
  142. package/build/tests/shared-checks/check-mid-login.js +131 -0
  143. package/build/tests/shared-checks/requests.d.ts +20 -0
  144. package/build/tests/shared-checks/requests.js +123 -0
  145. package/package.json +1 -1
  146. package/packing/create-deb.sh +57 -0
  147. package/packing/deb/lib/systemd/system/3nweb.service +11 -0
  148. package/packing/deb/postinst +44 -0
  149. package/packing/deb/usr/share/doc/3nweb-server/conf-for-postinstall.yaml +19 -0
  150. package/packing/deb/usr/share/doc/3nweb-server/copyright +22 -0
  151. package/publish-task.sh +10 -0
  152. package/push-to-github.sh +105 -0
  153. package/ts-code/3nstorage/3nstorage-app.ts +99 -0
  154. package/ts-code/3nstorage/owner.ts +178 -0
  155. package/ts-code/3nstorage/resources/sessions.ts +37 -0
  156. package/ts-code/3nstorage/resources/store.ts +896 -0
  157. package/ts-code/3nstorage/resources/users.ts +258 -0
  158. package/ts-code/3nstorage/resources/utils.ts +45 -0
  159. package/ts-code/3nstorage/routes/owner/archive-obj-version.ts +71 -0
  160. package/ts-code/3nstorage/routes/owner/cancel-trans.ts +60 -0
  161. package/ts-code/3nstorage/routes/owner/delete-obj.ts +99 -0
  162. package/ts-code/3nstorage/routes/owner/get-archived-obj-ver.ts +109 -0
  163. package/ts-code/3nstorage/routes/owner/get-current-obj.ts +124 -0
  164. package/ts-code/3nstorage/routes/owner/get-obj-status.ts +55 -0
  165. package/ts-code/3nstorage/routes/owner/param-getter.ts +51 -0
  166. package/ts-code/3nstorage/routes/owner/param-setter.ts +50 -0
  167. package/ts-code/3nstorage/routes/owner/put-current-obj.ts +257 -0
  168. package/ts-code/3nstorage/routes/owner/session-params.ts +50 -0
  169. package/ts-code/3nstorage/shared.ts +43 -0
  170. package/ts-code/asmail/asmail-app.ts +91 -0
  171. package/ts-code/asmail/config.ts +96 -0
  172. package/ts-code/asmail/delivery.ts +94 -0
  173. package/ts-code/asmail/resources/delivery-sessions.ts +118 -0
  174. package/ts-code/asmail/resources/inbox.ts +696 -0
  175. package/ts-code/asmail/resources/recipients.ts +495 -0
  176. package/ts-code/asmail/resources/sessions.ts +37 -0
  177. package/ts-code/asmail/resources/utils.ts +41 -0
  178. package/ts-code/asmail/retrieval.ts +96 -0
  179. package/ts-code/asmail/routes/config/param-getter.ts +49 -0
  180. package/ts-code/asmail/routes/config/param-setter.ts +49 -0
  181. package/ts-code/asmail/routes/delivery/finalize-delivery.ts +51 -0
  182. package/ts-code/asmail/routes/delivery/pre-flight.ts +118 -0
  183. package/ts-code/asmail/routes/delivery/provide-recipient-pubkey.ts +58 -0
  184. package/ts-code/asmail/routes/delivery/put-metadata.ts +85 -0
  185. package/ts-code/asmail/routes/delivery/put-obj.ts +152 -0
  186. package/ts-code/asmail/routes/delivery/restart-session.ts +117 -0
  187. package/ts-code/asmail/routes/delivery/sender-authorization.ts +81 -0
  188. package/ts-code/asmail/routes/delivery/start-session.ts +136 -0
  189. package/ts-code/asmail/routes/retrieval/get-message-meta.ts +50 -0
  190. package/ts-code/asmail/routes/retrieval/get-message-obj.ts +106 -0
  191. package/ts-code/asmail/routes/retrieval/list-messages.ts +68 -0
  192. package/ts-code/asmail/routes/retrieval/remove-message.ts +48 -0
  193. package/ts-code/cli/index.ts +82 -0
  194. package/ts-code/cli/run-cmd.ts +81 -0
  195. package/ts-code/cli/show-sample-config.ts +78 -0
  196. package/ts-code/cli/signup-cmd.ts +229 -0
  197. package/ts-code/cli/user-cmd.ts +68 -0
  198. package/ts-code/cli/utils.ts +105 -0
  199. package/ts-code/config/default-confs.ts +22 -0
  200. package/ts-code/config/from-yaml.ts +35 -0
  201. package/ts-code/config/letsencrypt.ts +77 -0
  202. package/ts-code/config/signup.ts +137 -0
  203. package/ts-code/lib-common/admin-api/signup.ts +120 -0
  204. package/ts-code/lib-common/assert.ts +22 -0
  205. package/ts-code/lib-common/async-fs-node.ts +656 -0
  206. package/ts-code/lib-common/buffer-utils.ts +124 -0
  207. package/ts-code/lib-common/byte-streaming/common.ts +166 -0
  208. package/ts-code/lib-common/bytes-equal.ts +25 -0
  209. package/ts-code/lib-common/canonical-address.ts +92 -0
  210. package/ts-code/lib-common/exceptions/error.ts +44 -0
  211. package/ts-code/lib-common/exceptions/file.ts +84 -0
  212. package/ts-code/lib-common/exceptions/http.ts +69 -0
  213. package/ts-code/lib-common/ipc/generic-ipc.ts +750 -0
  214. package/ts-code/lib-common/ipc/ws-ipc.ts +117 -0
  215. package/ts-code/lib-common/json-equal.ts +55 -0
  216. package/ts-code/lib-common/json-utils.ts +130 -0
  217. package/ts-code/lib-common/jwkeys.ts +246 -0
  218. package/ts-code/lib-common/map-of-sets.ts +60 -0
  219. package/ts-code/lib-common/mid-sigs-NaCl-Ed.ts +677 -0
  220. package/ts-code/lib-common/objs-on-disk/file-layout.ts +480 -0
  221. package/ts-code/lib-common/objs-on-disk/obj-file.ts +325 -0
  222. package/ts-code/lib-common/objs-on-disk/utils.ts +201 -0
  223. package/ts-code/lib-common/objs-on-disk/v1-obj-file-format.ts +329 -0
  224. package/ts-code/lib-common/processes.ts +501 -0
  225. package/ts-code/lib-common/random-node.ts +79 -0
  226. package/ts-code/lib-common/service-api/3nstorage/owner.ts +559 -0
  227. package/ts-code/lib-common/service-api/3nstorage/root-route.ts +22 -0
  228. package/ts-code/lib-common/service-api/asmail/config.ts +144 -0
  229. package/ts-code/lib-common/service-api/asmail/delivery.ts +250 -0
  230. package/ts-code/lib-common/service-api/asmail/retrieval.ts +238 -0
  231. package/ts-code/lib-common/service-api/asmail/root-route.ts +22 -0
  232. package/ts-code/lib-common/service-api/ipc-api.ts +44 -0
  233. package/ts-code/lib-common/service-api/locker.ts +44 -0
  234. package/ts-code/lib-common/service-api/mailer-id/login.ts +80 -0
  235. package/ts-code/lib-common/service-api/mailer-id/provisioning.ts +64 -0
  236. package/ts-code/lib-common/service-api/mailer-id/root-route.ts +25 -0
  237. package/ts-code/lib-common/service-api/pub-key-login.ts +75 -0
  238. package/ts-code/lib-common/service-api/web-socket-base.ts +87 -0
  239. package/ts-code/lib-common/session-encryptor.ts +54 -0
  240. package/ts-code/lib-common/time-window-cache.ts +74 -0
  241. package/ts-code/lib-common/transferable.d.ts +30 -0
  242. package/ts-code/lib-server/conf-util.ts +35 -0
  243. package/ts-code/lib-server/mid-access.ts +45 -0
  244. package/ts-code/lib-server/middleware/body-parsers.ts +248 -0
  245. package/ts-code/lib-server/middleware/error-handler.ts +79 -0
  246. package/ts-code/lib-server/pkl-access.ts +46 -0
  247. package/ts-code/lib-server/resources/dns.ts +151 -0
  248. package/ts-code/lib-server/resources/mailerid-authorizer.ts +115 -0
  249. package/ts-code/lib-server/resources/mem-backed-sessions-factory.ts +132 -0
  250. package/ts-code/lib-server/resources/server-data-folders.ts +160 -0
  251. package/ts-code/lib-server/resources/server-key-for-pkl-challenge.ts +41 -0
  252. package/ts-code/lib-server/resources/sessions.ts +232 -0
  253. package/ts-code/lib-server/resources/user-files.ts +147 -0
  254. package/ts-code/lib-server/routes/pub-key-login/complete-exchange.ts +63 -0
  255. package/ts-code/lib-server/routes/pub-key-login/start-exchange.ts +189 -0
  256. package/ts-code/lib-server/routes/sessions/close.ts +27 -0
  257. package/ts-code/lib-server/routes/sessions/mid-auth.ts +77 -0
  258. package/ts-code/lib-server/routes/sessions/start.ts +116 -0
  259. package/ts-code/lib-server/web-sockets/app.ts +339 -0
  260. package/ts-code/lib-server/web-sockets/server-events.ts +63 -0
  261. package/ts-code/lib.ts +29 -0
  262. package/ts-code/locker/locker-app.ts +60 -0
  263. package/ts-code/locker/resources/lockers.ts +17 -0
  264. package/ts-code/locker/resources/sessions.ts +37 -0
  265. package/ts-code/locker/routes/create-locker.ts +47 -0
  266. package/ts-code/mailerId/mailerId-app.ts +107 -0
  267. package/ts-code/mailerId/resources/certifier.ts +181 -0
  268. package/ts-code/mailerId/resources/sessions.ts +44 -0
  269. package/ts-code/mailerId/resources/users.ts +88 -0
  270. package/ts-code/mailerId/routes/certify.ts +68 -0
  271. package/ts-code/main.ts +304 -0
  272. package/ts-code/mock/dns.ts +106 -0
  273. package/ts-code/mock/mock-as-child-proc.ts +130 -0
  274. package/ts-code/mock/node-child-ipc.ts +69 -0
  275. package/ts-code/mock/run-in-proc.ts +111 -0
  276. package/ts-code/mock/tls-options.ts +73 -0
  277. package/ts-code/services.ts +138 -0
  278. package/ts-code/signup/resources/users.ts +429 -0
  279. package/ts-code/signup/routes/add.ts +65 -0
  280. package/ts-code/signup/routes/get-available-addresses.ts +49 -0
  281. package/ts-code/signup/routes/get-available-domains.ts +45 -0
  282. package/ts-code/signup/signup-app.ts +54 -0
  283. package/ts-code/signup/signup-tokens.ts +148 -0
  284. package/ts-code/tests/admin-proto/signup.ts +277 -0
  285. package/ts-code/tests/jasmine.ts +37 -0
  286. package/ts-code/tests/libs-for-tests/3nstorage.ts +144 -0
  287. package/ts-code/tests/libs-for-tests/asmail.ts +220 -0
  288. package/ts-code/tests/libs-for-tests/assert.ts +22 -0
  289. package/ts-code/tests/libs-for-tests/async-jasmine.ts +89 -0
  290. package/ts-code/tests/libs-for-tests/bytes-equal.ts +25 -0
  291. package/ts-code/tests/libs-for-tests/json-copy.ts +38 -0
  292. package/ts-code/tests/libs-for-tests/json-equal.ts +55 -0
  293. package/ts-code/tests/libs-for-tests/mailerid.ts +123 -0
  294. package/ts-code/tests/libs-for-tests/pkl.ts +127 -0
  295. package/ts-code/tests/libs-for-tests/server-components/3nstorage.ts +206 -0
  296. package/ts-code/tests/libs-for-tests/server-components/admin.ts +49 -0
  297. package/ts-code/tests/libs-for-tests/server-components/asmail.ts +152 -0
  298. package/ts-code/tests/libs-for-tests/server-components/component.ts +90 -0
  299. package/ts-code/tests/libs-for-tests/server-components/mailerid.ts +114 -0
  300. package/ts-code/tests/libs-for-tests/server-runner.ts +82 -0
  301. package/ts-code/tests/libs-for-tests/spec-assembly.ts +60 -0
  302. package/ts-code/tests/libs-for-tests/ws-utils.ts +61 -0
  303. package/ts-code/tests/libs-for-tests/xhr-utils.ts +179 -0
  304. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-obj-ver.ts +100 -0
  305. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-root-ver.ts +91 -0
  306. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.ts +99 -0
  307. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.ts +90 -0
  308. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-obj.ts +84 -0
  309. package/ts-code/tests/protocols/3nstorage/owner/specs/events.ts +125 -0
  310. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-obj.ts +298 -0
  311. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-root.ts +290 -0
  312. package/ts-code/tests/protocols/3nstorage/owner/specs/get-obj-status.ts +88 -0
  313. package/ts-code/tests/protocols/3nstorage/owner/specs/get-root-status.ts +80 -0
  314. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-obj.ts +366 -0
  315. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-root.ts +329 -0
  316. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel-root.ts +86 -0
  317. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel.ts +86 -0
  318. package/ts-code/tests/protocols/3nstorage/owner/test-utils.ts +72 -0
  319. package/ts-code/tests/protocols/3nstorage/owner.ts +198 -0
  320. package/ts-code/tests/protocols/asmail/config.ts +172 -0
  321. package/ts-code/tests/protocols/asmail/delivery/specs/finalize-delivery.ts +69 -0
  322. package/ts-code/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.ts +88 -0
  323. package/ts-code/tests/protocols/asmail/delivery/specs/put-metadata.ts +102 -0
  324. package/ts-code/tests/protocols/asmail/delivery/specs/put-obj.ts +156 -0
  325. package/ts-code/tests/protocols/asmail/delivery/specs/restart-session.ts +97 -0
  326. package/ts-code/tests/protocols/asmail/delivery/specs/start-session.ts +79 -0
  327. package/ts-code/tests/protocols/asmail/delivery/test-utils.ts +64 -0
  328. package/ts-code/tests/protocols/asmail/delivery.ts +56 -0
  329. package/ts-code/tests/protocols/asmail/retrieval/specs/events.ts +78 -0
  330. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-meta.ts +80 -0
  331. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-obj.ts +197 -0
  332. package/ts-code/tests/protocols/asmail/retrieval/specs/list-messages.ts +110 -0
  333. package/ts-code/tests/protocols/asmail/retrieval/specs/remove-message.ts +74 -0
  334. package/ts-code/tests/protocols/asmail/retrieval/test-utils.ts +60 -0
  335. package/ts-code/tests/protocols/asmail/retrieval.ts +115 -0
  336. package/ts-code/tests/protocols/mailerid.ts +271 -0
  337. package/ts-code/tests/shared-checks/check-mid-login.ts +164 -0
  338. package/ts-code/tests/shared-checks/requests.ts +135 -0
  339. package/ts-code/tsconfig.json +11 -0
  340. package/ts-code/web3n.d.ts +1068 -0
@@ -0,0 +1,105 @@
1
+ #!/bin/bash
2
+
3
+ PROJ_NAME="spec-server"
4
+ ITEMS_TO_PUSH="ts-code packing .gitignore LICENSE package.json package-lock.json postinstall.js README.md tsconfig.json"
5
+
6
+ GITHUB_REPO="https://github.com/3nsoft/${PROJ_NAME}.git"
7
+ DIST_DIR="dist"
8
+
9
+ branch=$1
10
+ if [ -z "$branch" ]
11
+ then
12
+ branch="master"
13
+ fi
14
+
15
+ function is_clean_from_wip {
16
+ local status="$(git status -s)"
17
+ if [ -n "$status" ]
18
+ then
19
+ echo "There are uncommited changes:"
20
+ echo "$status"
21
+ return 1;
22
+ else
23
+ return 0;
24
+ fi
25
+ }
26
+
27
+ function is_branch {
28
+ local check_out=$(git $branch | grep '*' | grep "$branch")
29
+ if [ -n "$check_out" ]
30
+ then
31
+ return 0;
32
+ else
33
+ return 1;
34
+ fi
35
+ }
36
+
37
+ function rm_all_in_git_dir {
38
+ for entity in $(ls -a)
39
+ do
40
+ case $entity in
41
+ .) ;;
42
+ ..) ;;
43
+ .git) continue ;;
44
+ *) rm -rf $entity ;;
45
+ esac
46
+ done
47
+ }
48
+
49
+ function cp_items_push {
50
+ local src=$1
51
+ for entity in $ITEMS_TO_PUSH
52
+ do
53
+ cp -r $src/$entity ./
54
+ done
55
+ }
56
+
57
+ function update_content_from {
58
+ local src=$1
59
+ rm_all_in_git_dir || return 1
60
+ cp_items_push $src || return 1
61
+ }
62
+
63
+ function pull_from_github_and_enter_repo {
64
+ if [ -d $PROJ_NAME ]
65
+ then
66
+ cd $PROJ_NAME
67
+ echo "Pulling current state from GitHub:"
68
+ git pull
69
+ if [ ! is_branch ]
70
+ then
71
+ git checkout $branch
72
+ fi
73
+ else
74
+ echo "Cloning repository from GitHub:"
75
+ git clone $GITHUB_REPO
76
+ cd $PROJ_NAME
77
+ fi
78
+ }
79
+
80
+ is_clean_from_wip || exit 1
81
+
82
+ if [ ! is_branch ]
83
+ then
84
+ echo "Current git branch is not $branch"
85
+ exit 1
86
+ fi
87
+
88
+ init_dir="$(pwd)"
89
+ if [ ! -d $DIST_DIR ]
90
+ then
91
+ mkdir $DIST_DIR
92
+ fi
93
+ cd $DIST_DIR
94
+
95
+ echo
96
+ pull_from_github_and_enter_repo
97
+
98
+ update_content_from $init_dir
99
+
100
+ git add .
101
+ git commit
102
+ git push
103
+
104
+ cd $init_dir
105
+ rm -rf $DIST_DIR/$PROJ_NAME
@@ -0,0 +1,99 @@
1
+ /*
2
+ Copyright (C) 2015 - 2016, 2020, 2025 3NSoft Inc.
3
+
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU General Public License as published by the Free Software
6
+ Foundation, either version 3 of the License, or (at your option) any later
7
+ version.
8
+
9
+ This program is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ See the GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License along with
15
+ this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ import { Express } from 'express';
19
+ import { makeFactory as makeUsersFactory, Factory as UsersFactory } from './resources/users';
20
+ import { makeSessionFactory, SessionsFactory } from './resources/sessions';
21
+ import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
22
+ import { ErrLogger, makeErrHandler } from '../lib-server/middleware/error-handler';
23
+ import { AppWithWSs } from '../lib-server/web-sockets/app';
24
+ import { makeOwnerStorageApp, makeOwnerStorageForLocker } from './owner';
25
+ import { makeSharedStorageApp } from './shared';
26
+ import { StorageRootRoute } from '../lib-common/service-api/3nstorage/root-route';
27
+
28
+ const PATHS = {
29
+ owner: '/owner/',
30
+ shared: '/shared/'
31
+ };
32
+
33
+ function setupStaticStorageEntryRoute(app: Express): void {
34
+
35
+ app.route('/')
36
+ .get((req, res) => {
37
+ let path = req.originalUrl;
38
+ if (path[path.length-1] !== '/') {
39
+ path = path+'/';
40
+ }
41
+ const json: StorageRootRoute = {
42
+ owner: path+PATHS.owner.substring(1),
43
+ shared: path+PATHS.shared.substring(1)
44
+ };
45
+ // the following implicitly sets content type application/json
46
+ res.status(200).json(json);
47
+ });
48
+
49
+ }
50
+
51
+ export function makeStorageApp(
52
+ dataFolder: string, domain: string, midAuthorizer: MidAuthorizer,
53
+ errLogger?: ErrLogger
54
+ ): AppWithWSs {
55
+
56
+ const app = new AppWithWSs();
57
+ const ownersSessions = makeSessionFactory(20*60);
58
+ const sharingSessions = makeSessionFactory(20*60);
59
+ const users = makeUsersFactory(dataFolder);
60
+
61
+ setupStaticStorageEntryRoute(app.http);
62
+
63
+ app.use(PATHS.owner,
64
+ makeOwnerStorageApp(domain, ownersSessions, users, midAuthorizer)
65
+ );
66
+
67
+ app.http.use(PATHS.shared,
68
+ makeSharedStorageApp(sharingSessions, users)
69
+ );
70
+
71
+ app.http.use(makeErrHandler(errLogger));
72
+
73
+ return app;
74
+ }
75
+
76
+ export function makeStorageAppForLocker(
77
+ users: UsersFactory,
78
+ ownersSessions: SessionsFactory, sharingSessions: SessionsFactory,
79
+ errLogger?: ErrLogger
80
+ ): AppWithWSs {
81
+
82
+ const app = new AppWithWSs();
83
+
84
+ setupStaticStorageEntryRoute(app.http);
85
+
86
+ app.use(PATHS.owner,
87
+ makeOwnerStorageForLocker(ownersSessions, users)
88
+ );
89
+
90
+ app.http.use(PATHS.shared,
91
+ makeSharedStorageApp(sharingSessions, users)
92
+ );
93
+
94
+ app.http.use(makeErrHandler(errLogger));
95
+
96
+ return app;
97
+ }
98
+
99
+ Object.freeze(exports);
@@ -0,0 +1,178 @@
1
+ /*
2
+ Copyright (C) 2015 - 2017, 2022, 2024 - 2025 3NSoft Inc.
3
+
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU General Public License as published by the Free Software
6
+ Foundation, either version 3 of the License, or (at your option) any later
7
+ version.
8
+
9
+ This program is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ See the GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License along with
15
+ this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ /**
19
+ * This module gives a function that creates a mountable, or app.use()-able,
20
+ * express 3NStorage owners' application.
21
+ */
22
+
23
+ import { Express } from 'express';
24
+ import { json as parseJSON, emptyBody } from '../lib-server/middleware/body-parsers';
25
+ import { UserSockets, AppWithWSs } from '../lib-server/web-sockets/app';
26
+ import { ServerEvents } from '../lib-server/web-sockets/server-events';
27
+ import { SessionsFactory } from './resources/sessions';
28
+ import { Factory as UsersFactory } from './resources/users';
29
+ import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
30
+ import { closeSession } from '../lib-server/routes/sessions/close';
31
+ import { sessionParams } from './routes/owner/session-params';
32
+ import { getParam } from './routes/owner/param-getter';
33
+ import { setParam } from './routes/owner/param-setter';
34
+ import { cancelTransaction } from './routes/owner/cancel-trans';
35
+ import { saveCurrentObj } from './routes/owner/put-current-obj';
36
+ import { getCurrentObj } from './routes/owner/get-current-obj';
37
+ import { getArchivedObjVersion } from './routes/owner/get-archived-obj-ver';
38
+ import { deleteArchivedObjVer, deleteCurrentObjVer } from './routes/owner/delete-obj';
39
+ import { archiveCurrentObjVersion } from './routes/owner/archive-obj-version';
40
+ import { getObjStatus } from './routes/owner/get-obj-status';
41
+ import * as api from '../lib-common/service-api/3nstorage/owner';
42
+ import { addMailerIdLoginRoutes } from '../lib-server/mid-access';
43
+ import { addPKLLoginRoutes } from '../lib-server/pkl-access';
44
+ import { calcNaClBoxSharedKey } from '../lib-server/resources/server-key-for-pkl-challenge';
45
+
46
+ const WS_PING_PERIOD_MILLIS = 2*60*1000;
47
+
48
+ export function makeOwnerStorageApp(
49
+ domain: string, sessions: SessionsFactory, users: UsersFactory, midAuthorizer: MidAuthorizer
50
+ ): AppWithWSs {
51
+
52
+ const app = new AppWithWSs();
53
+
54
+ setHttpPart(app.http, domain, sessions, users, midAuthorizer);
55
+ setWSPart(app, sessions, users);
56
+
57
+ return app;
58
+ }
59
+
60
+ export function makeOwnerStorageForLocker(sessions: SessionsFactory, users: UsersFactory): AppWithWSs {
61
+
62
+ const app = new AppWithWSs();
63
+
64
+ // XXX WIP
65
+
66
+ // const setupLoginRoutes: SetupLoginRoutes = (
67
+ // app, urlPrefix
68
+ // ) => addPKLLoginRoutes(
69
+ // app, urlPrefix, getUserParamsAndKey, sessions, calcNaClBoxSharedKey
70
+ // );
71
+
72
+ // setHttpPart(app.http, setupLoginRoutes, sessions, users);
73
+ setWSPart(app, sessions, users);
74
+
75
+ return app;
76
+ }
77
+
78
+ function setWSPart(app: AppWithWSs, sessions: SessionsFactory, users: UsersFactory): void {
79
+ const sockets = new UserSockets(sessions.ensureAuthorizedSessionForSocketStart(), WS_PING_PERIOD_MILLIS);
80
+
81
+ const storageEvents = new ServerEvents(
82
+ undefined, api.events.all, sockets.socketGetter
83
+ );
84
+
85
+ // give events ipc to both ends
86
+ sockets.addSocketIPC(storageEvents);
87
+ users.setStorageEventsSink(storageEvents.eventsSink);
88
+
89
+ app.addWS(api.wsEventChannel.URL_END, sockets);
90
+ }
91
+
92
+ const MAX_CHUNK_SIZE = '0.5mb';
93
+
94
+ function setHttpPart(
95
+ app: Express, domain: string, sessions: SessionsFactory, users: UsersFactory, midAuthorizer: MidAuthorizer
96
+ ): void {
97
+
98
+ app.disable('etag');
99
+
100
+ // Login
101
+ addMailerIdLoginRoutes(app, domain, '/'+api.midLogin.URL_PART, sessions, users.exists, midAuthorizer);
102
+
103
+ // *** Require authorized session for everything below ***
104
+ app.use(sessions.ensureAuthorizedSession());
105
+
106
+ app.post('/'+api.closeSession.URL_END,
107
+ emptyBody(),
108
+ closeSession()
109
+ );
110
+
111
+ // Session params
112
+ app.get('/'+api.sessionParams.URL_END,
113
+ sessionParams(MAX_CHUNK_SIZE)
114
+ );
115
+
116
+ // Key derivation params
117
+ app.route('/'+api.keyDerivParams.URL_END)
118
+ .get(getParam(users.getKeyDerivParams))
119
+ .put(parseJSON('1kb'),
120
+ setParam(users.setKeyDerivParams)
121
+ );
122
+
123
+ // Transaction canceling
124
+ app.post('/'+api.cancelTransaction.EXPRESS_URL_END,
125
+ emptyBody(),
126
+ cancelTransaction(false, users.cancelTransaction)
127
+ );
128
+ app.post('/'+api.cancelRootTransaction.EXPRESS_URL_END,
129
+ emptyBody(),
130
+ cancelTransaction(true, users.cancelTransaction)
131
+ );
132
+
133
+ // Getting and updating current root object
134
+ app.route('/'+api.currentRootObj.EXPRESS_URL_END)
135
+ .get(getCurrentObj(true, users.getCurrentRootObj))
136
+ .put(saveCurrentObj(true, users.saveNewRootVersion, MAX_CHUNK_SIZE));
137
+
138
+ // Getting, updating and removing current non-root objects
139
+ app.route('/'+api.currentObj.EXPRESS_URL_END)
140
+ .get(getCurrentObj(false, users.getCurrentObj))
141
+ .delete(deleteCurrentObjVer(users.deleteCurrentObjVersion))
142
+ .put(saveCurrentObj(false, users.saveNewObjVersion, MAX_CHUNK_SIZE));
143
+
144
+ // Getting root archived versions
145
+ app.route('/'+api.archivedRootVersion.EXPRESS_URL_END)
146
+ .get(getArchivedObjVersion(true, users.getArchivedRootVersion));
147
+
148
+ // Getting non-root object archived versions
149
+ app.route('/'+api.archivedObjVersion.EXPRESS_URL_END)
150
+ .get(getArchivedObjVersion(false, users.getArchivedObjVersion));
151
+
152
+ // Archive root's current version
153
+ app.route('/'+api.archiveRoot.EXPRESS_URL_END)
154
+ .post(emptyBody(),
155
+ archiveCurrentObjVersion(true, users.archiveObjVersion)
156
+ )
157
+ .delete(deleteArchivedObjVer(true, users.deleteArchivedObjVersion));
158
+
159
+ // Archive non-root object's current version
160
+ app.route('/'+api.archiveObj.EXPRESS_URL_END)
161
+ .post(emptyBody(),
162
+ archiveCurrentObjVersion(false, users.archiveObjVersion)
163
+ )
164
+ .delete(deleteArchivedObjVer(false, users.deleteArchivedObjVersion));
165
+
166
+ // Getting root object status
167
+ app.get('/'+api.rootStatus.EXPRESS_URL_END,
168
+ getObjStatus(true, users.getObjStatus)
169
+ );
170
+
171
+ // Getting object status
172
+ app.get('/'+api.objStatus.EXPRESS_URL_END,
173
+ getObjStatus(false, users.getObjStatus)
174
+ );
175
+
176
+ }
177
+
178
+ Object.freeze(exports);
@@ -0,0 +1,37 @@
1
+ /*
2
+ Copyright (C) 2017 3NSoft Inc.
3
+
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU General Public License as published by the Free Software
6
+ Foundation, either version 3 of the License, or (at your option) any later
7
+ version.
8
+
9
+ This program is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ See the GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License along with
15
+ this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ import { InMemorySessions } from '../../lib-server/resources/mem-backed-sessions-factory';
19
+ import { Request as Req, SessionParams, Factory } from '../../lib-server/resources/sessions';
20
+
21
+ export type SessionsFactory = Factory<SessionParams>;
22
+ export type Request = Req<SessionParams>;
23
+
24
+ function makeSessionParams(): SessionParams {
25
+ return { userId: (undefined as any) };
26
+ }
27
+
28
+ /**
29
+ * This returns factory, that works properly in a single process application,
30
+ * clearing up sessions that past given timeout.
31
+ * @param timeout is a session timeout in seconds
32
+ */
33
+ export function makeSessionFactory(timeout: number): SessionsFactory {
34
+ return InMemorySessions.factory<SessionParams>(timeout, makeSessionParams);
35
+ }
36
+
37
+ Object.freeze(exports);