core-3nweb-client-lib 0.44.11 → 0.45.0

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 (206) hide show
  1. package/build/core/asmail/msg/opener.js +1 -1
  2. package/build/core/asmail/msg/packer.js +1 -1
  3. package/build/core/index.d.ts +2 -2
  4. package/build/core/keyring/correspondent-keys.js +1 -1
  5. package/build/core/keyring/index.js +1 -1
  6. package/build/core/startup/sign-in.d.ts +1 -1
  7. package/build/core/startup/sign-up.d.ts +1 -1
  8. package/build/core/storage/index.d.ts +1 -1
  9. package/build/lib-client/key-derivation.d.ts +1 -1
  10. package/build/lib-client/xsp-fs/attrs.d.ts +3 -2
  11. package/build/lib-client/xsp-fs/attrs.js +7 -6
  12. package/build/lib-client/xsp-fs/folder-node.js +1 -1
  13. package/build/lib-client/xsp-fs/node-in-fs.js +1 -0
  14. package/build/lib-client/xsp-fs/node-persistence.js +1 -1
  15. package/build/lib-client/xsp-fs/xsp-payload-v2.js +1 -1
  16. package/build/tests/caps-api/asmail/specs/events.d.ts +2 -0
  17. package/build/tests/caps-api/asmail/specs/events.js +63 -0
  18. package/build/tests/caps-api/asmail/specs/send-to-wrong-address.d.ts +2 -0
  19. package/build/tests/caps-api/asmail/specs/send-to-wrong-address.js +68 -0
  20. package/build/tests/caps-api/asmail/specs/send-with-attacment-from-storage.d.ts +2 -0
  21. package/build/tests/caps-api/asmail/specs/send-with-attacment-from-storage.js +259 -0
  22. package/build/tests/caps-api/asmail/specs/send-without-attachments.d.ts +2 -0
  23. package/build/tests/caps-api/asmail/specs/send-without-attachments.js +90 -0
  24. package/build/tests/caps-api/asmail/test-utils.d.ts +12 -0
  25. package/build/tests/caps-api/asmail/test-utils.js +60 -0
  26. package/build/tests/caps-api/asmail.js +86 -0
  27. package/build/tests/caps-api/file-sink-checks/different-cases.d.ts +2 -0
  28. package/build/tests/caps-api/file-sink-checks/different-cases.js +47 -0
  29. package/build/tests/caps-api/file-sink-checks/splice.d.ts +2 -0
  30. package/build/tests/caps-api/file-sink-checks/splice.js +122 -0
  31. package/build/tests/caps-api/file-sink-checks/truncate.d.ts +2 -0
  32. package/build/tests/caps-api/file-sink-checks/truncate.js +122 -0
  33. package/build/tests/caps-api/fs-checks/local-to-synced-linking/link.d.ts +2 -0
  34. package/build/tests/caps-api/fs-checks/local-to-synced-linking/link.js +82 -0
  35. package/build/tests/caps-api/fs-checks/local-to-synced-linking/reversed-linking.d.ts +2 -0
  36. package/build/tests/caps-api/fs-checks/local-to-synced-linking/reversed-linking.js +50 -0
  37. package/build/tests/caps-api/fs-checks/not-versioned/deleteFile.d.ts +2 -0
  38. package/build/tests/caps-api/fs-checks/not-versioned/deleteFile.js +73 -0
  39. package/build/tests/caps-api/fs-checks/not-versioned/deleteFolder.d.ts +2 -0
  40. package/build/tests/caps-api/fs-checks/not-versioned/deleteFolder.js +75 -0
  41. package/build/tests/caps-api/fs-checks/not-versioned/getByteSink.d.ts +2 -0
  42. package/build/tests/caps-api/fs-checks/not-versioned/getByteSink.js +96 -0
  43. package/build/tests/caps-api/fs-checks/not-versioned/getByteSource.d.ts +2 -0
  44. package/build/tests/caps-api/fs-checks/not-versioned/getByteSource.js +67 -0
  45. package/build/tests/caps-api/fs-checks/not-versioned/getXAttr.d.ts +2 -0
  46. package/build/tests/caps-api/fs-checks/not-versioned/getXAttr.js +77 -0
  47. package/build/tests/caps-api/fs-checks/not-versioned/link.d.ts +2 -0
  48. package/build/tests/caps-api/fs-checks/not-versioned/link.js +115 -0
  49. package/build/tests/caps-api/fs-checks/not-versioned/listFolder.d.ts +2 -0
  50. package/build/tests/caps-api/fs-checks/not-versioned/listFolder.js +129 -0
  51. package/build/tests/caps-api/fs-checks/not-versioned/listXAttrs.d.ts +2 -0
  52. package/build/tests/caps-api/fs-checks/not-versioned/listXAttrs.js +73 -0
  53. package/build/tests/caps-api/fs-checks/not-versioned/makeFolder.d.ts +2 -0
  54. package/build/tests/caps-api/fs-checks/not-versioned/makeFolder.js +95 -0
  55. package/build/tests/caps-api/fs-checks/not-versioned/move.d.ts +2 -0
  56. package/build/tests/caps-api/fs-checks/not-versioned/move.js +127 -0
  57. package/build/tests/caps-api/fs-checks/not-versioned/readBytes.d.ts +2 -0
  58. package/build/tests/caps-api/fs-checks/not-versioned/readBytes.js +80 -0
  59. package/build/tests/caps-api/fs-checks/not-versioned/readJSONFile.d.ts +2 -0
  60. package/build/tests/caps-api/fs-checks/not-versioned/readJSONFile.js +59 -0
  61. package/build/tests/caps-api/fs-checks/not-versioned/readLink.d.ts +2 -0
  62. package/build/tests/caps-api/fs-checks/not-versioned/readLink.js +39 -0
  63. package/build/tests/caps-api/fs-checks/not-versioned/readTxtFile.d.ts +2 -0
  64. package/build/tests/caps-api/fs-checks/not-versioned/readTxtFile.js +54 -0
  65. package/build/tests/caps-api/fs-checks/not-versioned/readonlyFile.d.ts +2 -0
  66. package/build/tests/caps-api/fs-checks/not-versioned/readonlyFile.js +55 -0
  67. package/build/tests/caps-api/fs-checks/not-versioned/readonlySubRoot.d.ts +2 -0
  68. package/build/tests/caps-api/fs-checks/not-versioned/readonlySubRoot.js +55 -0
  69. package/build/tests/caps-api/fs-checks/not-versioned/select.d.ts +2 -0
  70. package/build/tests/caps-api/fs-checks/not-versioned/select.js +119 -0
  71. package/build/tests/caps-api/fs-checks/not-versioned/stat.d.ts +2 -0
  72. package/build/tests/caps-api/fs-checks/not-versioned/stat.js +96 -0
  73. package/build/tests/caps-api/fs-checks/not-versioned/updateXAttrs.d.ts +2 -0
  74. package/build/tests/caps-api/fs-checks/not-versioned/updateXAttrs.js +126 -0
  75. package/build/tests/caps-api/fs-checks/not-versioned/writableFile.d.ts +2 -0
  76. package/build/tests/caps-api/fs-checks/not-versioned/writableFile.js +79 -0
  77. package/build/tests/caps-api/fs-checks/not-versioned/writableSubRoot.d.ts +2 -0
  78. package/build/tests/caps-api/fs-checks/not-versioned/writableSubRoot.js +90 -0
  79. package/build/tests/caps-api/fs-checks/not-versioned/writeBytes.d.ts +2 -0
  80. package/build/tests/caps-api/fs-checks/not-versioned/writeBytes.js +137 -0
  81. package/build/tests/caps-api/fs-checks/not-versioned/writeJSONFile.d.ts +2 -0
  82. package/build/tests/caps-api/fs-checks/not-versioned/writeJSONFile.js +101 -0
  83. package/build/tests/caps-api/fs-checks/not-versioned/writeTxtFile.d.ts +2 -0
  84. package/build/tests/caps-api/fs-checks/not-versioned/writeTxtFile.js +100 -0
  85. package/build/tests/caps-api/fs-checks/sync-on-one-dev/startUpload.d.ts +2 -0
  86. package/build/tests/caps-api/fs-checks/sync-on-one-dev/startUpload.js +187 -0
  87. package/build/tests/caps-api/fs-checks/sync-on-one-dev/stat.d.ts +2 -0
  88. package/build/tests/caps-api/fs-checks/sync-on-one-dev/stat.js +70 -0
  89. package/build/tests/caps-api/fs-checks/sync-on-one-dev/status.d.ts +2 -0
  90. package/build/tests/caps-api/fs-checks/sync-on-one-dev/status.js +53 -0
  91. package/build/tests/caps-api/fs-checks/sync-on-one-dev/upload.d.ts +2 -0
  92. package/build/tests/caps-api/fs-checks/sync-on-one-dev/upload.js +194 -0
  93. package/build/tests/caps-api/fs-checks/sync-with-two-devs/conflicts.d.ts +2 -0
  94. package/build/tests/caps-api/fs-checks/sync-with-two-devs/conflicts.js +396 -0
  95. package/build/tests/caps-api/fs-checks/sync-with-two-devs/update-propagation.d.ts +2 -0
  96. package/build/tests/caps-api/fs-checks/sync-with-two-devs/update-propagation.js +229 -0
  97. package/build/tests/caps-api/fs-checks/test-utils.d.ts +34 -0
  98. package/build/tests/caps-api/fs-checks/test-utils.js +95 -0
  99. package/build/tests/caps-api/fs-checks/versioned/archiveCurrent.d.ts +2 -0
  100. package/build/tests/caps-api/fs-checks/versioned/archiveCurrent.js +73 -0
  101. package/build/tests/caps-api/fs-checks/versioned/getByteSink.d.ts +2 -0
  102. package/build/tests/caps-api/fs-checks/versioned/getByteSink.js +122 -0
  103. package/build/tests/caps-api/fs-checks/versioned/getByteSource.d.ts +2 -0
  104. package/build/tests/caps-api/fs-checks/versioned/getByteSource.js +71 -0
  105. package/build/tests/caps-api/fs-checks/versioned/listFolder.d.ts +2 -0
  106. package/build/tests/caps-api/fs-checks/versioned/listFolder.js +109 -0
  107. package/build/tests/caps-api/fs-checks/versioned/listVersions.d.ts +2 -0
  108. package/build/tests/caps-api/fs-checks/versioned/listVersions.js +48 -0
  109. package/build/tests/caps-api/fs-checks/versioned/readBytes.d.ts +2 -0
  110. package/build/tests/caps-api/fs-checks/versioned/readBytes.js +90 -0
  111. package/build/tests/caps-api/fs-checks/versioned/readJSONFile.d.ts +2 -0
  112. package/build/tests/caps-api/fs-checks/versioned/readJSONFile.js +60 -0
  113. package/build/tests/caps-api/fs-checks/versioned/readTxtFile.d.ts +2 -0
  114. package/build/tests/caps-api/fs-checks/versioned/readTxtFile.js +56 -0
  115. package/build/tests/caps-api/fs-checks/versioned/stat.d.ts +2 -0
  116. package/build/tests/caps-api/fs-checks/versioned/stat.js +80 -0
  117. package/build/tests/caps-api/fs-checks/versioned/watchFile.d.ts +2 -0
  118. package/build/tests/caps-api/fs-checks/versioned/watchFile.js +64 -0
  119. package/build/tests/caps-api/fs-checks/versioned/writeBytes.d.ts +2 -0
  120. package/build/tests/caps-api/fs-checks/versioned/writeBytes.js +128 -0
  121. package/build/tests/caps-api/fs-checks/versioned/writeJSONFile.d.ts +2 -0
  122. package/build/tests/caps-api/fs-checks/versioned/writeJSONFile.js +111 -0
  123. package/build/tests/caps-api/fs-checks/versioned/writeTxtFile.d.ts +2 -0
  124. package/build/tests/caps-api/fs-checks/versioned/writeTxtFile.js +107 -0
  125. package/build/tests/caps-api/fs-checks/with-core-restarts/xattrs.d.ts +2 -0
  126. package/build/tests/caps-api/fs-checks/with-core-restarts/xattrs.js +50 -0
  127. package/build/tests/caps-api/keyrings.js +69 -0
  128. package/build/tests/caps-api/mailerid.d.ts +1 -0
  129. package/build/tests/caps-api/mailerid.js +59 -0
  130. package/build/tests/caps-api/startup/signin-empty-cache.d.ts +1 -0
  131. package/build/tests/caps-api/startup/signin-empty-cache.js +108 -0
  132. package/build/tests/caps-api/startup/signin-with-cache.d.ts +1 -0
  133. package/build/tests/caps-api/startup/signin-with-cache.js +83 -0
  134. package/build/tests/caps-api/startup/signup-with-token.d.ts +1 -0
  135. package/build/tests/caps-api/startup/signup-with-token.js +53 -0
  136. package/build/tests/caps-api/startup/signup.d.ts +1 -0
  137. package/build/tests/caps-api/startup/signup.js +86 -0
  138. package/build/tests/caps-api/storage.d.ts +1 -0
  139. package/build/tests/caps-api/storage.js +225 -0
  140. package/build/tests/computer.3nweb.core/id-manager.d.ts +1 -0
  141. package/build/tests/computer.3nweb.core/id-manager.js +78 -0
  142. package/build/tests/computer.3nweb.core/inbox/msg-indexing.d.ts +1 -0
  143. package/build/tests/computer.3nweb.core/inbox/msg-indexing.js +145 -0
  144. package/build/tests/computer.3nweb.core/keyrings.d.ts +1 -0
  145. package/build/tests/computer.3nweb.core/keyrings.js +64 -0
  146. package/build/tests/computer.3nweb.core/test-utils.d.ts +21 -0
  147. package/build/tests/computer.3nweb.core/test-utils.js +92 -0
  148. package/build/tests/jasmine.d.ts +1 -0
  149. package/build/tests/jasmine.js +45 -0
  150. package/build/tests/libs-for-tests/bytes-equal.d.ts +1 -0
  151. package/build/tests/libs-for-tests/bytes-equal.js +32 -0
  152. package/build/tests/libs-for-tests/caps-ipc-wrap.d.ts +11 -0
  153. package/build/tests/libs-for-tests/caps-ipc-wrap.js +55 -0
  154. package/build/tests/libs-for-tests/core-runner.d.ts +39 -0
  155. package/build/tests/libs-for-tests/core-runner.js +231 -0
  156. package/build/tests/libs-for-tests/jasmine-utils.d.ts +13 -0
  157. package/build/tests/libs-for-tests/jasmine-utils.js +110 -0
  158. package/build/tests/libs-for-tests/json-equal.d.ts +1 -0
  159. package/build/tests/libs-for-tests/json-equal.js +78 -0
  160. package/build/tests/libs-for-tests/services-runner.d.ts +18 -0
  161. package/build/tests/libs-for-tests/services-runner.js +64 -0
  162. package/build/tests/libs-for-tests/setups.d.ts +51 -0
  163. package/build/tests/libs-for-tests/setups.js +305 -0
  164. package/build/tests/libs-for-tests/spec-module.d.ts +16 -0
  165. package/build/tests/libs-for-tests/spec-module.js +92 -0
  166. package/build/tests/libs-for-tests/startup.d.ts +1 -0
  167. package/build/tests/libs-for-tests/startup.js +29 -0
  168. package/build/tests/libs-for-tests/watching.d.ts +7 -0
  169. package/build/tests/libs-for-tests/watching.js +33 -0
  170. package/build/tests/units/canonical-address.d.ts +1 -0
  171. package/build/tests/units/canonical-address.js +41 -0
  172. package/build/tests/units/device-fs.d.ts +1 -0
  173. package/build/tests/units/device-fs.js +70 -0
  174. package/build/tests/units/folder-node-serialization.d.ts +1 -0
  175. package/build/tests/units/folder-node-serialization.js +74 -0
  176. package/build/tests/units/mid-sigs-NaCl-Ed.d.ts +1 -0
  177. package/build/tests/units/mid-sigs-NaCl-Ed.js +123 -0
  178. package/build/tests/units/number-line.d.ts +1 -0
  179. package/build/tests/units/number-line.js +63 -0
  180. package/build/tests/units/obj-folders.d.ts +1 -0
  181. package/build/tests/units/obj-folders.js +152 -0
  182. package/package.json +11 -3
  183. package/postinstall.js +1 -1
  184. package/build/cryptors.d.ts +0 -1
  185. package/build/cryptors.js +0 -34
  186. package/build/lib-client/cryptor/cryptor-in-worker.d.ts +0 -20
  187. package/build/lib-client/cryptor/cryptor-in-worker.js +0 -357
  188. package/build/lib-client/cryptor/cryptor-wasm.js +0 -1
  189. package/build/lib-client/cryptor/cryptor.d.ts +0 -30
  190. package/build/lib-client/cryptor/cryptor.js +0 -44
  191. package/build/lib-client/cryptor/cryptor.wasm +0 -0
  192. package/build/lib-client/cryptor/in-proc-js.d.ts +0 -2
  193. package/build/lib-client/cryptor/in-proc-js.js +0 -57
  194. package/build/lib-client/cryptor/in-proc-wasm.d.ts +0 -2
  195. package/build/lib-client/cryptor/in-proc-wasm.js +0 -176
  196. package/build/lib-client/cryptor/serialization-for-wasm.d.ts +0 -35
  197. package/build/lib-client/cryptor/serialization-for-wasm.js +0 -57
  198. package/build/lib-client/cryptor/wasm-mp1-modules.d.ts +0 -5
  199. package/build/lib-client/cryptor/wasm-mp1-modules.js +0 -78
  200. package/build/lib-client/cryptor/worker-js.js +0 -131
  201. package/build/lib-client/cryptor/worker-wasm.js +0 -37
  202. package/build/protos/cryptor.proto.js +0 -1804
  203. /package/build/lib-client/{cryptor/cryptor-work-labels.d.ts → cryptor-work-labels.d.ts} +0 -0
  204. /package/build/lib-client/{cryptor/cryptor-work-labels.js → cryptor-work-labels.js} +0 -0
  205. /package/build/{lib-client/cryptor/worker-js.d.ts → tests/caps-api/asmail.d.ts} +0 -0
  206. /package/build/{lib-client/cryptor/worker-wasm.d.ts → tests/caps-api/keyrings.d.ts} +0 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ exports.specs = {
21
+ description: '.readTxtFile',
22
+ its: []
23
+ };
24
+ let it = { expectation: 'fails to read non-existent file' };
25
+ it.func = async function (s) {
26
+ const { testFS } = s;
27
+ let fName = 'unknown-file';
28
+ expect(await testFS.checkFilePresence(fName)).toBe(false);
29
+ await testFS.readTxtFile(fName)
30
+ .then(() => {
31
+ fail('reading text must fail, when file does not exist');
32
+ }, (err) => {
33
+ expect(err.notFound).toBe(true);
34
+ if (!err.notFound) {
35
+ throw err;
36
+ }
37
+ });
38
+ };
39
+ exports.specs.its.push(it);
40
+ it = { expectation: 'reads json file' };
41
+ it.func = async function (s) {
42
+ const { testFS } = s;
43
+ let original = 'Should I be at BlackHat conference or working?';
44
+ let fName = 'file1';
45
+ await testFS.writeTxtFile(fName, original);
46
+ let txt = await testFS.readTxtFile(fName);
47
+ expect(txt).withContext('file read should produce original text').toBe(original);
48
+ fName = 'file2';
49
+ await testFS.writeBytes(fName, new Uint8Array(0));
50
+ txt = await testFS.readTxtFile(fName);
51
+ expect(txt).toBe('');
52
+ };
53
+ exports.specs.its.push(it);
54
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ exports.specs = {
21
+ description: '.readonlyFile',
22
+ its: []
23
+ };
24
+ let it = { expectation: 'fails for non-existent file' };
25
+ it.func = async function (s) {
26
+ const { testFS } = s;
27
+ let fName = 'unknown-file';
28
+ expect(await testFS.checkFilePresence(fName)).toBe(false);
29
+ try {
30
+ await testFS.readonlyFile(fName);
31
+ fail('getting file object must fail, when file does not exist');
32
+ }
33
+ catch (err) {
34
+ expect(err.notFound).toBe(true);
35
+ if (!err.notFound) {
36
+ throw err;
37
+ }
38
+ }
39
+ };
40
+ exports.specs.its.push(it);
41
+ it = { expectation: 'gives file object' };
42
+ it.func = async function (s) {
43
+ const { testFS } = s;
44
+ let original = 'Should I be at BlackHat conference or working?';
45
+ let fName = 'file';
46
+ await testFS.writeTxtFile(fName, original);
47
+ let file = await testFS.readonlyFile(fName);
48
+ expect(typeof file).toBe('object');
49
+ expect(file.writable).toBe(false);
50
+ expect(!!file.v).toBe(!!testFS.v);
51
+ expect(file.name).withContext('file object should have file name').toBe(fName);
52
+ expect(file.isNew).withContext('readonly file must exist').toBe(false);
53
+ };
54
+ exports.specs.its.push(it);
55
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ exports.specs = {
21
+ description: '.readonlySubRoot',
22
+ its: []
23
+ };
24
+ let it = { expectation: 'creates sub-root based on existing folder' };
25
+ it.func = async function (s) {
26
+ const { testFS } = s;
27
+ let path = 'sub-root';
28
+ await testFS.makeFolder(path);
29
+ expect(await testFS.checkFolderPresence(path)).toBe(true);
30
+ let subRoot = await testFS.readonlySubRoot(path);
31
+ expect(subRoot).toBeTruthy();
32
+ expect(subRoot.writable).toBe(false);
33
+ expect(!!subRoot.v).toBe(!!testFS.v);
34
+ const lst = await subRoot.listFolder('');
35
+ expect(Array.isArray(lst)).toBe(true);
36
+ };
37
+ exports.specs.its.push(it);
38
+ it = { expectation: 'fails to create a sub-root, whenfolder is missing' };
39
+ it.func = async function (s) {
40
+ const { testFS } = s;
41
+ let path = 'sub-root2';
42
+ expect(await testFS.checkFolderPresence(path)).toBe(false);
43
+ try {
44
+ await testFS.readonlySubRoot(path);
45
+ fail('making a readonly sub-root on a missing folder should fail');
46
+ }
47
+ catch (exc) {
48
+ expect(exc.notFound).toBe(true);
49
+ if (!exc.notFound) {
50
+ throw exc;
51
+ }
52
+ }
53
+ };
54
+ exports.specs.its.push(it);
55
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ exports.specs = {
21
+ description: '.select',
22
+ its: []
23
+ };
24
+ let it = { expectation: 'fails early for non-existent path' };
25
+ it.func = async function (s) {
26
+ const { testFS } = s;
27
+ let path = 'unknown-folder';
28
+ expect(await testFS.checkFolderPresence(path)).toBe(false);
29
+ await testFS.select(path, { name: '*.png', action: 'include' })
30
+ .then(() => {
31
+ fail('select must fail, when folder does not exist');
32
+ }, (err) => {
33
+ expect(err.notFound).toBe(true);
34
+ if (!err.notFound) {
35
+ throw err;
36
+ }
37
+ });
38
+ };
39
+ exports.specs.its.push(it);
40
+ it = { expectation: 'selects entities in a file tree' };
41
+ it.func = async function (s) {
42
+ const { testFS } = s;
43
+ const path = 'testing select';
44
+ await testFS.makeFolder(path);
45
+ // setup files
46
+ const filePaths = [
47
+ 'some.zip', 'some/some/sOME.zip', '1/Some-folder/3.zip',
48
+ 'else.txt', 'else/else/some.txt', 'else.zip/some.txt'
49
+ ];
50
+ for (const fPath of filePaths) {
51
+ await testFS.writeTxtFile(`${path}/${fPath}`, '');
52
+ }
53
+ // select *.zip files
54
+ let criteria = {
55
+ name: '*.zip',
56
+ type: 'file',
57
+ action: 'include',
58
+ };
59
+ let { items, completion } = await testFS.select(path, criteria);
60
+ expect(typeof completion.catch).toBe('function');
61
+ expect(typeof completion.then).toBe('function');
62
+ // wait till collection process is done
63
+ await completion;
64
+ let found = await items.getAll();
65
+ expect(found.length).toBe(3);
66
+ for (const [name, item] of found) {
67
+ expect(name.endsWith('.zip')).toBe(true);
68
+ expect(item.isFile).toBe(true);
69
+ expect(item.location.path).withContext(`name key for item in collection is the same as path, to ensure uniqueness`).toBe(name);
70
+ expect(filePaths.includes(name.substring(1))).toBeTruthy();
71
+ expect(item.location.storageType).toBeFalsy();
72
+ expect(item.location.storageUse).toBeFalsy();
73
+ expect(item.location.fs.writable).toBe(false);
74
+ }
75
+ // select *.zip folder
76
+ criteria.type = 'folder';
77
+ ({ items, completion } = await testFS.select(path, criteria));
78
+ await completion;
79
+ found = await items.getAll();
80
+ expect(found.length).toBe(1);
81
+ expect(found[0][0].endsWith('.zip')).toBe(true);
82
+ expect(found[0][1].isFolder).toBe(true);
83
+ // select folders else
84
+ criteria = {
85
+ name: {
86
+ p: 'else',
87
+ type: 'exact'
88
+ },
89
+ type: 'folder',
90
+ action: 'include',
91
+ };
92
+ ({ items, completion } = await testFS.select(path, criteria));
93
+ await completion;
94
+ found = await items.getAll();
95
+ expect(found.length).toBe(2);
96
+ expect(found[0][0].endsWith('/else')).toBe(true);
97
+ expect(found[0][1].isFolder).toBe(true);
98
+ // select all with o and e in the name
99
+ criteria = {
100
+ name: '*o*e*',
101
+ action: 'include',
102
+ };
103
+ ({ items, completion } = await testFS.select(path, criteria));
104
+ await completion;
105
+ found = await items.getAll();
106
+ expect(found.length).toBe(7);
107
+ // select all folders
108
+ criteria = {
109
+ name: '*',
110
+ type: 'folder',
111
+ action: 'include',
112
+ };
113
+ ({ items, completion } = await testFS.select(path, criteria));
114
+ await completion;
115
+ found = await items.getAll();
116
+ expect(found.length).toBe(7);
117
+ };
118
+ exports.specs.its.push(it);
119
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ const json_equal_1 = require("../../../libs-for-tests/json-equal");
21
+ exports.specs = {
22
+ description: '.stat',
23
+ its: []
24
+ };
25
+ let it = { expectation: 'fails to read non-existent path' };
26
+ it.func = async function (s) {
27
+ const { testFS } = s;
28
+ let fName = 'unknown-file';
29
+ expect(await testFS.checkFilePresence(fName)).toBe(false);
30
+ await testFS.stat(fName)
31
+ .then(() => {
32
+ fail('stat-ing must fail, when path does not exist');
33
+ }, (err) => {
34
+ expect(err.notFound).toBe(true);
35
+ if (!err.notFound) {
36
+ throw err;
37
+ }
38
+ });
39
+ };
40
+ exports.specs.its.push(it);
41
+ it = { expectation: 'stats file' };
42
+ it.func = async function (s) {
43
+ const { testFS } = s;
44
+ let original = 'Should I be at BlackHat conference or working?';
45
+ let originalFileSize = original.length;
46
+ let fName = 'file1';
47
+ await testFS.writeTxtFile(fName, original);
48
+ let stat = await testFS.stat(fName);
49
+ expect(typeof stat).toBe('object');
50
+ expect(stat).not.toBeNull();
51
+ expect(stat.isFile).withContext('flag indicating that path points to file').toBe(true);
52
+ expect(stat.size).withContext('file size').toBe(originalFileSize);
53
+ expect(stat.writable).toBe(true);
54
+ let sndTxt = 'I better work!';
55
+ let sndVersionFileSize = sndTxt.length;
56
+ await testFS.writeTxtFile(fName, sndTxt);
57
+ stat = await testFS.stat(fName);
58
+ expect(stat.isFile).withContext('flag indicating that path points to file').toBe(true);
59
+ expect(stat.size).withContext('file size').toBe(sndVersionFileSize);
60
+ expect(stat.writable).toBe(true);
61
+ const roFS = await testFS.readonlySubRoot('');
62
+ stat = await roFS.stat(fName);
63
+ expect(stat.isFile).withContext('flag indicating that path points to file').toBe(true);
64
+ expect(stat.size).withContext('file size').toBe(sndVersionFileSize);
65
+ expect(stat.writable).toBe(false);
66
+ };
67
+ exports.specs.its.push(it);
68
+ it = { expectation: 'stats folder' };
69
+ it.func = async function (s) {
70
+ const { testFS } = s;
71
+ const fName = 'folder1';
72
+ await testFS.makeFolder(fName);
73
+ let stat = await testFS.stat(fName);
74
+ expect(typeof stat).toBe('object');
75
+ expect(stat).not.toBeNull();
76
+ expect(stat.isFolder).withContext('flag indicating that path points to folder').toBe(true);
77
+ expect(stat.writable).toBe(true);
78
+ const roFS = await testFS.readonlySubRoot('');
79
+ stat = await roFS.stat(fName);
80
+ expect(stat.isFolder).withContext('flag indicating that path points to folder').toBe(true);
81
+ expect(stat.writable).toBe(false);
82
+ };
83
+ exports.specs.its.push(it);
84
+ it = { expectation: `stats fs' root` };
85
+ it.func = async function (s) {
86
+ const { testFS } = s;
87
+ const stat = await testFS.stat('');
88
+ expect(stat.isFolder).toBe(true);
89
+ expect(stat.writable).toBe(true);
90
+ let stat2 = await testFS.stat('.');
91
+ expect((0, json_equal_1.deepEqual)(stat, stat2)).toBe(true);
92
+ stat2 = await testFS.stat('/');
93
+ expect((0, json_equal_1.deepEqual)(stat, stat2)).toBe(true);
94
+ };
95
+ exports.specs.its.push(it);
96
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2020, 2022, 2025 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ const json_equal_1 = require("../../../libs-for-tests/json-equal");
21
+ exports.specs = {
22
+ description: '.updateXAttrs',
23
+ its: []
24
+ };
25
+ let it = {
26
+ expectation: 'fails to change xattr for non-existent path',
27
+ notIncludedIn: 'device-fs'
28
+ };
29
+ it.func = async function (s) {
30
+ const { testFS } = s;
31
+ let fName = 'unknown-file';
32
+ await testFS.updateXAttrs(fName, { remove: ['some attribute'] })
33
+ .then(() => {
34
+ fail('stat-ing must fail, when path does not exist');
35
+ }, (err) => {
36
+ expect(err.notFound).toBe(true);
37
+ if (!err.notFound) {
38
+ throw err;
39
+ }
40
+ });
41
+ };
42
+ exports.specs.its.push(it);
43
+ it = {
44
+ expectation: 'changes extended attributes',
45
+ notIncludedIn: 'device-fs'
46
+ };
47
+ it.func = async function (s) {
48
+ const { testFS } = s;
49
+ async function testforPath(path) {
50
+ const initStats = await testFS.stat(path);
51
+ let xattrNames = await testFS.listXAttrs(path);
52
+ expect(xattrNames.length).toBe(0);
53
+ const attr1Name = 'attribute name 1';
54
+ const attr1Value = 'some string value';
55
+ const attr2Name = 'attr2';
56
+ const attr2Value = 1234;
57
+ await testFS.updateXAttrs(path, {
58
+ set: {
59
+ [attr1Name]: attr1Value,
60
+ [attr2Name]: attr2Value
61
+ }
62
+ });
63
+ xattrNames = await testFS.listXAttrs(path);
64
+ expect(xattrNames).toContain(attr1Name);
65
+ expect(xattrNames).toContain(attr2Name);
66
+ expect(await testFS.getXAttr(path, attr1Name)).toBe(attr1Value);
67
+ expect(await testFS.getXAttr(path, attr2Name)).toBe(attr2Value);
68
+ let stats = await testFS.stat(path);
69
+ expect(stats.mtime.valueOf()).withContext(`Update of xattrs shouldn't change mtime, part of common attrs`).toBe(initStats.mtime.valueOf());
70
+ const newAttr2Value = { a: 123, b: 'sdf', c: [1, 2] };
71
+ await testFS.updateXAttrs(path, {
72
+ remove: [attr1Name],
73
+ set: {
74
+ [attr2Name]: newAttr2Value
75
+ }
76
+ });
77
+ xattrNames = await testFS.listXAttrs(path);
78
+ expect(xattrNames).not.toContain(attr1Name);
79
+ expect(xattrNames).toContain(attr2Name);
80
+ expect((0, json_equal_1.deepEqual)(await testFS.getXAttr(path, attr2Name), newAttr2Value)).toBe(true);
81
+ }
82
+ const file1 = 'file1';
83
+ await testFS.writeTxtFile(file1, '');
84
+ await testforPath(file1);
85
+ expect((await testFS.stat(file1)).size).toBe(0);
86
+ expect(await testFS.readTxtFile(file1)).toBe('');
87
+ const file2 = 'file2';
88
+ const file2txt = 'non-empty content';
89
+ await testFS.writeTxtFile(file2, file2txt);
90
+ await testforPath(file2);
91
+ expect((await testFS.stat(file2)).size).toBe(file2txt.length);
92
+ expect(await testFS.readTxtFile(file2)).toBe(file2txt);
93
+ const folder = 'folder1';
94
+ await testFS.makeFolder(folder);
95
+ await testforPath(folder);
96
+ expect((await testFS.listFolder(folder)).length).toBe(0);
97
+ };
98
+ exports.specs.its.push(it);
99
+ it = {
100
+ expectation: 'empty binary and string attribute values',
101
+ notIncludedIn: 'device-fs'
102
+ };
103
+ it.func = async function (s) {
104
+ const { testFS } = s;
105
+ const file = 'fileWithEmptyAttrs';
106
+ const emptyStringAttr = 'empty.string';
107
+ const emptyBinaryAttr = 'empty.binary';
108
+ await testFS.writeTxtFile(file, '');
109
+ const attrsLst = await testFS.listXAttrs(file);
110
+ expect(attrsLst).not.toContain(emptyStringAttr);
111
+ expect(attrsLst).not.toContain(emptyBinaryAttr);
112
+ await testFS.updateXAttrs(file, {
113
+ set: {
114
+ [emptyStringAttr]: '',
115
+ [emptyBinaryAttr]: new Uint8Array(0)
116
+ }
117
+ });
118
+ const emptyStrAttrValue = await testFS.getXAttr(file, emptyStringAttr);
119
+ expect(typeof emptyStrAttrValue).toBe('string');
120
+ expect(emptyStrAttrValue).toBe('');
121
+ const emptyBinAttrValue = await testFS.getXAttr(file, emptyBinaryAttr);
122
+ expect(typeof emptyBinAttrValue).toBe('object');
123
+ expect(emptyBinAttrValue.length).toBe(0);
124
+ };
125
+ exports.specs.its.push(it);
126
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2018, 2020 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ exports.specs = {
21
+ description: '.writableFile',
22
+ its: []
23
+ };
24
+ let it = {
25
+ expectation: 'fails for non-existing file, in non-create mode'
26
+ };
27
+ it.func = async function (s) {
28
+ const { testFS } = s;
29
+ let fName = 'unknown-file';
30
+ expect(await testFS.checkFilePresence(fName)).toBe(false);
31
+ try {
32
+ await testFS.writableFile(fName, {});
33
+ fail('getting file object must fail, when file does not exist');
34
+ }
35
+ catch (err) {
36
+ expect(err.notFound).toBe(true);
37
+ if (!err.notFound) {
38
+ throw err;
39
+ }
40
+ }
41
+ };
42
+ exports.specs.its.push(it);
43
+ it = { expectation: 'fails for existing file, in exclusive create mode' };
44
+ it.func = async function (s) {
45
+ const { testFS } = s;
46
+ let fName = 'file';
47
+ await testFS.writeTxtFile(fName, '');
48
+ expect(await testFS.checkFilePresence(fName)).toBe(true);
49
+ try {
50
+ await testFS.writableFile(fName, { create: true, exclusive: true });
51
+ fail('getting file object must fail, when file exists');
52
+ }
53
+ catch (err) {
54
+ expect(err.alreadyExists).toBe(true);
55
+ if (!err.alreadyExists) {
56
+ throw err;
57
+ }
58
+ }
59
+ };
60
+ exports.specs.its.push(it);
61
+ it = { expectation: 'gives file object for non-existing file' };
62
+ it.func = async function (s) {
63
+ const { testFS } = s;
64
+ let fName = 'new-file';
65
+ expect(await testFS.checkFilePresence(fName)).toBe(false);
66
+ let file = await testFS.writableFile(fName);
67
+ expect(typeof file).toBe('object');
68
+ expect(file.name).withContext('file object should have file name').toBe(fName);
69
+ expect(file.isNew).withContext('readonly file must exist').toBe(true);
70
+ expect(file.writable).toBe(true);
71
+ expect(!!file.v).toBe(!!testFS.v);
72
+ expect(await testFS.checkFilePresence(fName)).withContext('File does not exist, while nothing has been written to it.').toBe(false);
73
+ let txt = 'some text';
74
+ await file.writeTxt(txt);
75
+ expect(await testFS.checkFilePresence(fName)).withContext('File is created on the first write.').toBe(true);
76
+ expect(await file.readTxt()).toBe(txt);
77
+ };
78
+ exports.specs.its.push(it);
79
+ Object.freeze(exports);
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../../../libs-for-tests/spec-module';
2
+ export declare const specs: SpecDescribe;