memfs 4.1.0-next.2 → 4.1.0-next.3

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/README.md +5 -4
  2. package/demo/runkit.js +5 -0
  3. package/lib/Dirent.js +1 -0
  4. package/lib/Dirent.js.map +1 -0
  5. package/lib/Stats.js +2 -2
  6. package/lib/Stats.js.map +1 -0
  7. package/lib/__tests__/util.js +1 -0
  8. package/lib/__tests__/util.js.map +1 -0
  9. package/lib/cas/types.js +1 -0
  10. package/lib/cas/types.js.map +1 -0
  11. package/lib/constants.js +1 -0
  12. package/lib/constants.js.map +1 -0
  13. package/lib/consts/AMODE.js +1 -0
  14. package/lib/consts/AMODE.js.map +1 -0
  15. package/lib/consts/FLAG.d.ts +6 -0
  16. package/lib/consts/FLAG.js +1 -0
  17. package/lib/consts/FLAG.js.map +1 -0
  18. package/lib/crud/__tests__/matryoshka.test.d.ts +1 -0
  19. package/lib/crud/__tests__/matryoshka.test.js +69 -0
  20. package/lib/crud/__tests__/matryoshka.test.js.map +1 -0
  21. package/lib/crud/__tests__/testCrudfs.d.ts +6 -0
  22. package/lib/crud/__tests__/testCrudfs.js +279 -0
  23. package/lib/crud/__tests__/testCrudfs.js.map +1 -0
  24. package/lib/crud/types.d.ts +7 -0
  25. package/lib/crud/types.js +1 -0
  26. package/lib/crud/types.js.map +1 -0
  27. package/lib/crud/util.d.ts +2 -0
  28. package/lib/crud/util.js +11 -0
  29. package/lib/crud/util.js.map +1 -0
  30. package/lib/crud-to-cas/CrudCas.js +10 -17
  31. package/lib/crud-to-cas/CrudCas.js.map +1 -0
  32. package/lib/crud-to-cas/__tests__/CrudCas.test.js +29 -116
  33. package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +1 -0
  34. package/lib/crud-to-cas/__tests__/testCasfs.d.ts +9 -0
  35. package/lib/crud-to-cas/__tests__/testCasfs.js +109 -0
  36. package/lib/crud-to-cas/__tests__/testCasfs.js.map +1 -0
  37. package/lib/crud-to-cas/index.d.ts +1 -0
  38. package/lib/crud-to-cas/index.js +6 -0
  39. package/lib/crud-to-cas/index.js.map +1 -0
  40. package/lib/crud-to-cas/util.js +1 -0
  41. package/lib/crud-to-cas/util.js.map +1 -0
  42. package/lib/encoding.js +1 -0
  43. package/lib/encoding.js.map +1 -0
  44. package/lib/fsa/types.js +1 -0
  45. package/lib/fsa/types.js.map +1 -0
  46. package/lib/fsa-to-crud/FsaCrud.d.ts +1 -0
  47. package/lib/fsa-to-crud/FsaCrud.js +36 -54
  48. package/lib/fsa-to-crud/FsaCrud.js.map +1 -0
  49. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +3 -280
  50. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  51. package/lib/fsa-to-crud/index.d.ts +1 -0
  52. package/lib/fsa-to-crud/index.js +6 -0
  53. package/lib/fsa-to-crud/index.js.map +1 -0
  54. package/lib/fsa-to-crud/util.d.ts +5 -2
  55. package/lib/fsa-to-crud/util.js +10 -8
  56. package/lib/fsa-to-crud/util.js.map +1 -0
  57. package/lib/fsa-to-node/FsaNodeCore.d.ts +3 -2
  58. package/lib/fsa-to-node/FsaNodeCore.js +61 -22
  59. package/lib/fsa-to-node/FsaNodeCore.js.map +1 -0
  60. package/lib/fsa-to-node/FsaNodeDirent.js +1 -0
  61. package/lib/fsa-to-node/FsaNodeDirent.js.map +1 -0
  62. package/lib/fsa-to-node/FsaNodeFs.d.ts +14 -2
  63. package/lib/fsa-to-node/FsaNodeFs.js +97 -82
  64. package/lib/fsa-to-node/FsaNodeFs.js.map +1 -0
  65. package/lib/fsa-to-node/FsaNodeFsOpenFile.js +4 -11
  66. package/lib/fsa-to-node/FsaNodeFsOpenFile.js.map +1 -0
  67. package/lib/fsa-to-node/FsaNodeReadStream.js +4 -11
  68. package/lib/fsa-to-node/FsaNodeReadStream.js.map +1 -0
  69. package/lib/fsa-to-node/FsaNodeStats.js +1 -0
  70. package/lib/fsa-to-node/FsaNodeStats.js.map +1 -0
  71. package/lib/fsa-to-node/FsaNodeWriteStream.js +7 -14
  72. package/lib/fsa-to-node/FsaNodeWriteStream.js.map +1 -0
  73. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +107 -93
  74. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +1 -0
  75. package/lib/fsa-to-node/__tests__/util.test.js +4 -0
  76. package/lib/fsa-to-node/__tests__/util.test.js.map +1 -0
  77. package/lib/fsa-to-node/constants.js +1 -0
  78. package/lib/fsa-to-node/constants.js.map +1 -0
  79. package/lib/fsa-to-node/index.js +1 -0
  80. package/lib/fsa-to-node/index.js.map +1 -0
  81. package/lib/fsa-to-node/json.js +1 -0
  82. package/lib/fsa-to-node/json.js.map +1 -0
  83. package/lib/fsa-to-node/types.js +1 -0
  84. package/lib/fsa-to-node/types.js.map +1 -0
  85. package/lib/fsa-to-node/util.js +5 -10
  86. package/lib/fsa-to-node/util.js.map +1 -0
  87. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js +3 -10
  88. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js.map +1 -0
  89. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js +23 -30
  90. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js.map +1 -0
  91. package/lib/fsa-to-node/worker/SyncMessenger.js +3 -10
  92. package/lib/fsa-to-node/worker/SyncMessenger.js.map +1 -0
  93. package/lib/fsa-to-node/worker/constants.js +1 -0
  94. package/lib/fsa-to-node/worker/constants.js.map +1 -0
  95. package/lib/fsa-to-node/worker/types.js +1 -0
  96. package/lib/fsa-to-node/worker/types.js.map +1 -0
  97. package/lib/index.js +5 -3
  98. package/lib/index.js.map +1 -0
  99. package/lib/internal/buffer.js +1 -0
  100. package/lib/internal/buffer.js.map +1 -0
  101. package/lib/internal/errors.js +1 -0
  102. package/lib/internal/errors.js.map +1 -0
  103. package/lib/node/FileHandle.js +1 -0
  104. package/lib/node/FileHandle.js.map +1 -0
  105. package/lib/node/FsPromises.d.ts +86 -0
  106. package/lib/node/FsPromises.js +54 -0
  107. package/lib/node/FsPromises.js.map +1 -0
  108. package/lib/node/constants.js +2 -1
  109. package/lib/node/constants.js.map +1 -0
  110. package/lib/node/lists/fsCallbackApiList.d.ts +2 -0
  111. package/lib/node/lists/fsCallbackApiList.js +47 -0
  112. package/lib/node/lists/fsCallbackApiList.js.map +1 -0
  113. package/lib/node/lists/fsCommonObjectsList.d.ts +2 -0
  114. package/lib/node/lists/fsCommonObjectsList.js +19 -0
  115. package/lib/node/lists/fsCommonObjectsList.js.map +1 -0
  116. package/lib/node/lists/fsSynchronousApiList.d.ts +2 -0
  117. package/lib/node/lists/fsSynchronousApiList.js +46 -0
  118. package/lib/node/lists/fsSynchronousApiList.js.map +1 -0
  119. package/lib/node/options.js +1 -0
  120. package/lib/node/options.js.map +1 -0
  121. package/lib/node/types/{callback.d.ts → FsCallbackApi.d.ts} +49 -40
  122. package/lib/node/types/{callback.js → FsCallbackApi.js} +1 -0
  123. package/lib/node/types/FsCallbackApi.js.map +1 -0
  124. package/lib/node/types/FsCommonObjects.d.ts +4 -4
  125. package/lib/node/types/FsCommonObjects.js +1 -0
  126. package/lib/node/types/FsCommonObjects.js.map +1 -0
  127. package/lib/node/types/{promises.d.ts → FsPromisesApi.d.ts} +11 -0
  128. package/lib/node/types/{promises.js → FsPromisesApi.js} +1 -0
  129. package/lib/node/types/FsPromisesApi.js.map +1 -0
  130. package/lib/node/types/FsSynchronousApi.d.ts +64 -58
  131. package/lib/node/types/FsSynchronousApi.js +1 -0
  132. package/lib/node/types/FsSynchronousApi.js.map +1 -0
  133. package/lib/node/types/index.d.ts +2 -2
  134. package/lib/node/types/index.js +1 -0
  135. package/lib/node/types/index.js.map +1 -0
  136. package/lib/node/types/misc.d.ts +20 -0
  137. package/lib/node/types/misc.js +1 -0
  138. package/lib/node/types/misc.js.map +1 -0
  139. package/lib/node/types/options.d.ts +62 -0
  140. package/lib/node/types/options.js +1 -0
  141. package/lib/node/types/options.js.map +1 -0
  142. package/lib/node/util.d.ts +2 -1
  143. package/lib/node/util.js +30 -1
  144. package/lib/node/util.js.map +1 -0
  145. package/lib/node-to-crud/NodeCrud.d.ts +22 -0
  146. package/lib/node-to-crud/NodeCrud.js +235 -0
  147. package/lib/node-to-crud/NodeCrud.js.map +1 -0
  148. package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
  149. package/lib/node-to-crud/__tests__/FsaCrud.test.js +18 -0
  150. package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  151. package/lib/node-to-crud/index.d.ts +1 -0
  152. package/lib/node-to-crud/index.js +6 -0
  153. package/lib/node-to-crud/index.js.map +1 -0
  154. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.d.ts +3 -2
  155. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js +24 -55
  156. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js.map +1 -0
  157. package/lib/node-to-fsa/NodeFileSystemFileHandle.js +5 -12
  158. package/lib/node-to-fsa/NodeFileSystemFileHandle.js.map +1 -0
  159. package/lib/node-to-fsa/NodeFileSystemHandle.js +3 -10
  160. package/lib/node-to-fsa/NodeFileSystemHandle.js.map +1 -0
  161. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js +8 -15
  162. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js.map +1 -0
  163. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js +11 -18
  164. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js.map +1 -0
  165. package/lib/node-to-fsa/NodePermissionStatus.js +1 -0
  166. package/lib/node-to-fsa/NodePermissionStatus.js.map +1 -0
  167. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +75 -134
  168. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
  169. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +16 -23
  170. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
  171. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +5 -12
  172. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
  173. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +15 -22
  174. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
  175. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +8 -15
  176. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
  177. package/lib/node-to-fsa/__tests__/scenarios.test.js +3 -10
  178. package/lib/node-to-fsa/__tests__/scenarios.test.js.map +1 -0
  179. package/lib/node-to-fsa/__tests__/util.test.js +5 -0
  180. package/lib/node-to-fsa/__tests__/util.test.js.map +1 -0
  181. package/lib/node-to-fsa/index.js +6 -18
  182. package/lib/node-to-fsa/index.js.map +1 -0
  183. package/lib/node-to-fsa/types.d.ts +5 -2
  184. package/lib/node-to-fsa/types.js +1 -0
  185. package/lib/node-to-fsa/types.js.map +1 -0
  186. package/lib/node-to-fsa/util.js +3 -0
  187. package/lib/node-to-fsa/util.js.map +1 -0
  188. package/lib/node.js +1 -0
  189. package/lib/node.js.map +1 -0
  190. package/lib/process.js +1 -0
  191. package/lib/process.js.map +1 -0
  192. package/lib/setImmediate.js +1 -0
  193. package/lib/setImmediate.js.map +1 -0
  194. package/lib/setTimeoutUnref.js +1 -0
  195. package/lib/setTimeoutUnref.js.map +1 -0
  196. package/lib/volume-localstorage.js +1 -0
  197. package/lib/volume-localstorage.js.map +1 -0
  198. package/lib/volume.d.ts +15 -7
  199. package/lib/volume.js +20 -16
  200. package/lib/volume.js.map +1 -0
  201. package/lib/webfs/index.js +1 -0
  202. package/lib/webfs/index.js.map +1 -0
  203. package/package.json +60 -26
  204. package/lib/getBigInt.js +0 -5
  205. package/lib/node/promises.d.ts +0 -2
  206. package/lib/node/promises.js +0 -86
@@ -1,14 +1,6 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
12
4
  const __1 = require("../..");
13
5
  const node_to_fsa_1 = require("../../node-to-fsa");
14
6
  const FsaNodeFs_1 = require("../FsaNodeFs");
@@ -22,7 +14,7 @@ const setup = (json = null, mode = 'readwrite') => {
22
14
  };
23
15
  (0, util_1.onlyOnNode20)('FsaNodeFs', () => {
24
16
  describe('.mkdir()', () => {
25
- test('can create a sub-folder', () => __awaiter(void 0, void 0, void 0, function* () {
17
+ test('can create a sub-folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
26
18
  const { fs, mfs } = setup();
27
19
  yield new Promise((resolve, reject) => fs.mkdir('/test', err => {
28
20
  if (err)
@@ -31,7 +23,16 @@ const setup = (json = null, mode = 'readwrite') => {
31
23
  }));
32
24
  expect(mfs.statSync('/mountpoint/test').isDirectory()).toBe(true);
33
25
  }));
34
- test('throws when creating sub-sub-folder', () => __awaiter(void 0, void 0, void 0, function* () {
26
+ test('can create a sub-folder with trailing slash', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
27
+ const { fs, mfs } = setup();
28
+ yield new Promise((resolve, reject) => fs.mkdir('/test/', err => {
29
+ if (err)
30
+ return reject(err);
31
+ return resolve();
32
+ }));
33
+ expect(mfs.statSync('/mountpoint/test').isDirectory()).toBe(true);
34
+ }));
35
+ test('throws when creating sub-sub-folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
35
36
  const { fs } = setup();
36
37
  try {
37
38
  yield new Promise((resolve, reject) => fs.mkdir('/test/subtest', err => {
@@ -45,7 +46,7 @@ const setup = (json = null, mode = 'readwrite') => {
45
46
  expect(error.code).toBe('ENOENT');
46
47
  }
47
48
  }));
48
- test('can create sub-sub-folder with "recursive" flag', () => __awaiter(void 0, void 0, void 0, function* () {
49
+ test('can create sub-sub-folder with "recursive" flag', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
49
50
  const { fs, mfs } = setup();
50
51
  yield new Promise((resolve, reject) => fs.mkdir('/test/subtest', { recursive: true }, err => {
51
52
  if (err)
@@ -54,12 +55,12 @@ const setup = (json = null, mode = 'readwrite') => {
54
55
  }));
55
56
  expect(mfs.statSync('/mountpoint/test/subtest').isDirectory()).toBe(true);
56
57
  }));
57
- test('can create sub-sub-folder with "recursive" flag with Promises API', () => __awaiter(void 0, void 0, void 0, function* () {
58
+ test('can create sub-sub-folder with "recursive" flag with Promises API', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
58
59
  const { fs, mfs } = setup();
59
60
  yield fs.promises.mkdir('/test/subtest', { recursive: true });
60
61
  expect(mfs.statSync('/mountpoint/test/subtest').isDirectory()).toBe(true);
61
62
  }));
62
- test('cannot create a folder over a file', () => __awaiter(void 0, void 0, void 0, function* () {
63
+ test('cannot create a folder over a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
63
64
  const { fs } = setup({ file: 'test' });
64
65
  try {
65
66
  yield fs.promises.mkdir('/file/folder', { recursive: true });
@@ -71,7 +72,7 @@ const setup = (json = null, mode = 'readwrite') => {
71
72
  }));
72
73
  });
73
74
  describe('.mkdtemp()', () => {
74
- test('can create a temporary folder', () => __awaiter(void 0, void 0, void 0, function* () {
75
+ test('can create a temporary folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
75
76
  const { fs, mfs } = setup();
76
77
  const dirname = (yield fs.promises.mkdtemp('prefix--'));
77
78
  expect(dirname.startsWith('prefix--')).toBe(true);
@@ -79,12 +80,12 @@ const setup = (json = null, mode = 'readwrite') => {
79
80
  }));
80
81
  });
81
82
  describe('.rmdir()', () => {
82
- test('can remove an empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
83
+ test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
83
84
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
84
85
  yield fs.promises.rmdir('/empty-folder');
85
86
  expect(mfs.__vol.toJSON()).toStrictEqual({ '/mountpoint/folder/file': 'test' });
86
87
  }));
87
- test('throws when attempts to remove non-empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
88
+ test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
88
89
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
89
90
  try {
90
91
  yield fs.promises.rmdir('/folder');
@@ -98,14 +99,14 @@ const setup = (json = null, mode = 'readwrite') => {
98
99
  });
99
100
  }
100
101
  }));
101
- test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
102
+ test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
102
103
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
103
104
  yield fs.promises.rmdir('/folder', { recursive: true });
104
105
  expect(mfs.__vol.toJSON()).toStrictEqual({
105
106
  '/mountpoint/empty-folder': null,
106
107
  });
107
108
  }));
108
- test('can remove starting from root folder', () => __awaiter(void 0, void 0, void 0, function* () {
109
+ test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
109
110
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
110
111
  yield fs.promises.rmdir('/', { recursive: true });
111
112
  expect(mfs.__vol.toJSON()).toStrictEqual({
@@ -114,12 +115,12 @@ const setup = (json = null, mode = 'readwrite') => {
114
115
  }));
115
116
  });
116
117
  describe('.rm()', () => {
117
- test('can remove an empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
118
+ test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
118
119
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
119
120
  yield fs.promises.rm('/empty-folder');
120
121
  expect(mfs.__vol.toJSON()).toStrictEqual({ '/mountpoint/folder/file': 'test' });
121
122
  }));
122
- test('throws when attempts to remove non-empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
123
+ test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
123
124
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
124
125
  try {
125
126
  yield fs.promises.rm('/folder');
@@ -133,14 +134,14 @@ const setup = (json = null, mode = 'readwrite') => {
133
134
  });
134
135
  }
135
136
  }));
136
- test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
137
+ test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
137
138
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
138
139
  yield fs.promises.rm('/folder', { recursive: true });
139
140
  expect(mfs.__vol.toJSON()).toStrictEqual({
140
141
  '/mountpoint/empty-folder': null,
141
142
  });
142
143
  }));
143
- test('throws if path does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
144
+ test('throws if path does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
144
145
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
145
146
  try {
146
147
  yield fs.promises.rm('/lala/lulu', { recursive: true });
@@ -154,11 +155,11 @@ const setup = (json = null, mode = 'readwrite') => {
154
155
  });
155
156
  }
156
157
  }));
157
- test('does not throw, if path does not exist, but "force" flag set', () => __awaiter(void 0, void 0, void 0, function* () {
158
+ test('does not throw, if path does not exist, but "force" flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
158
159
  const { fs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
159
160
  yield fs.promises.rm('/lala/lulu', { recursive: true, force: true });
160
161
  }));
161
- test('can remove a file', () => __awaiter(void 0, void 0, void 0, function* () {
162
+ test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
162
163
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
163
164
  yield fs.promises.rm('/folder/subfolder/file');
164
165
  expect(mfs.__vol.toJSON()).toStrictEqual({
@@ -166,7 +167,7 @@ const setup = (json = null, mode = 'readwrite') => {
166
167
  '/mountpoint/empty-folder': null,
167
168
  });
168
169
  }));
169
- test('can remove starting from root folder', () => __awaiter(void 0, void 0, void 0, function* () {
170
+ test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
170
171
  const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
171
172
  yield fs.promises.rm('/', { recursive: true });
172
173
  expect(mfs.__vol.toJSON()).toStrictEqual({
@@ -175,7 +176,7 @@ const setup = (json = null, mode = 'readwrite') => {
175
176
  }));
176
177
  });
177
178
  describe('.unlink()', () => {
178
- test('can remove a file', () => __awaiter(void 0, void 0, void 0, function* () {
179
+ test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
179
180
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
180
181
  const res = yield fs.promises.unlink('/folder/file');
181
182
  expect(res).toBe(undefined);
@@ -184,7 +185,7 @@ const setup = (json = null, mode = 'readwrite') => {
184
185
  '/mountpoint/empty-folder': null,
185
186
  });
186
187
  }));
187
- test('cannot delete a folder', () => __awaiter(void 0, void 0, void 0, function* () {
188
+ test('cannot delete a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
188
189
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
189
190
  try {
190
191
  yield fs.promises.unlink('/folder');
@@ -198,7 +199,7 @@ const setup = (json = null, mode = 'readwrite') => {
198
199
  });
199
200
  }
200
201
  }));
201
- test('throws when deleting non-existing file', () => __awaiter(void 0, void 0, void 0, function* () {
202
+ test('throws when deleting non-existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
202
203
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
203
204
  try {
204
205
  yield fs.promises.unlink('/folder/not-a-file');
@@ -214,19 +215,19 @@ const setup = (json = null, mode = 'readwrite') => {
214
215
  }));
215
216
  });
216
217
  describe('.readFile()', () => {
217
- test('can read file contents', () => __awaiter(void 0, void 0, void 0, function* () {
218
+ test('can read file contents', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
218
219
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
219
220
  const data = yield fs.promises.readFile('/folder/file');
220
221
  expect(data.toString()).toBe('test');
221
222
  }));
222
- test('can read file by file handle', () => __awaiter(void 0, void 0, void 0, function* () {
223
+ test('can read file by file handle', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
223
224
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
224
225
  const handle = yield fs.promises.open('/folder/file');
225
226
  expect(typeof handle).toBe('object');
226
227
  const data = yield fs.promises.readFile(handle);
227
228
  expect(data.toString()).toBe('test');
228
229
  }));
229
- test('can read file by file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
230
+ test('can read file by file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
230
231
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
231
232
  const fd = yield new Promise(resolve => {
232
233
  fs.open('/folder/file', 'r', (err, fd) => resolve(fd));
@@ -237,7 +238,7 @@ const setup = (json = null, mode = 'readwrite') => {
237
238
  });
238
239
  expect(data).toBe('test');
239
240
  }));
240
- test('cannot read from closed file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
241
+ test('cannot read from closed file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
241
242
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
242
243
  const fd = yield new Promise(resolve => {
243
244
  fs.open('/folder/file', 'r', (err, fd) => resolve(fd));
@@ -259,7 +260,7 @@ const setup = (json = null, mode = 'readwrite') => {
259
260
  }));
260
261
  });
261
262
  describe('.truncate()', () => {
262
- test('can truncate a file', () => __awaiter(void 0, void 0, void 0, function* () {
263
+ test('can truncate a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
263
264
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
264
265
  const res = yield new Promise((resolve, reject) => {
265
266
  fs.truncate('/folder/file', 2, (err, res) => (err ? reject(err) : resolve(res)));
@@ -269,7 +270,7 @@ const setup = (json = null, mode = 'readwrite') => {
269
270
  }));
270
271
  });
271
272
  describe('.ftruncate()', () => {
272
- test('can truncate a file', () => __awaiter(void 0, void 0, void 0, function* () {
273
+ test('can truncate a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
273
274
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
274
275
  const handle = yield fs.promises.open('/folder/file');
275
276
  const res = yield new Promise((resolve, reject) => {
@@ -280,7 +281,7 @@ const setup = (json = null, mode = 'readwrite') => {
280
281
  }));
281
282
  });
282
283
  describe('.readdir()', () => {
283
- test('can read directory contents as strings', () => __awaiter(void 0, void 0, void 0, function* () {
284
+ test('can read directory contents as strings', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
284
285
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
285
286
  const res = (yield fs.promises.readdir('/'));
286
287
  expect(res.length).toBe(3);
@@ -288,7 +289,7 @@ const setup = (json = null, mode = 'readwrite') => {
288
289
  expect(res.includes('empty-folder')).toBe(true);
289
290
  expect(res.includes('f.html')).toBe(true);
290
291
  }));
291
- test('can read directory contents with "withFileTypes" flag set', () => __awaiter(void 0, void 0, void 0, function* () {
292
+ test('can read directory contents with "withFileTypes" flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
292
293
  var _a, _b, _c, _d;
293
294
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
294
295
  const list = (yield fs.promises.readdir('/', { withFileTypes: true }));
@@ -302,23 +303,23 @@ const setup = (json = null, mode = 'readwrite') => {
302
303
  }));
303
304
  });
304
305
  describe('.appendFile()', () => {
305
- test('can create a file', () => __awaiter(void 0, void 0, void 0, function* () {
306
+ test('can create a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
306
307
  const { fs, mfs } = setup({});
307
308
  yield fs.promises.appendFile('/test.txt', 'a');
308
309
  expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('a');
309
310
  }));
310
- test('can append to a file', () => __awaiter(void 0, void 0, void 0, function* () {
311
+ test('can append to a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
311
312
  const { fs, mfs } = setup({});
312
313
  yield fs.promises.appendFile('/test.txt', 'a');
313
314
  yield fs.promises.appendFile('/test.txt', 'b');
314
315
  expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('ab');
315
316
  }));
316
- test('can append to a file - 2', () => __awaiter(void 0, void 0, void 0, function* () {
317
+ test('can append to a file - 2', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
317
318
  const { fs, mfs } = setup({ file: '123' });
318
319
  yield fs.promises.appendFile('file', 'x');
319
320
  expect(mfs.readFileSync('/mountpoint/file', 'utf8')).toBe('123x');
320
321
  }));
321
- test('can append to a file - 2', () => __awaiter(void 0, void 0, void 0, function* () {
322
+ test('can append to a file - 2', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
322
323
  const { fs, mfs } = setup({ file: '123' });
323
324
  yield fs.promises.writeFile('cool.txt', 'worlds');
324
325
  yield fs.promises.appendFile('cool.txt', '!');
@@ -326,7 +327,7 @@ const setup = (json = null, mode = 'readwrite') => {
326
327
  }));
327
328
  });
328
329
  describe('.write()', () => {
329
- test('can write to a file', () => __awaiter(void 0, void 0, void 0, function* () {
330
+ test('can write to a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
330
331
  const { fs, mfs } = setup({});
331
332
  const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
332
333
  if (err)
@@ -346,7 +347,7 @@ const setup = (json = null, mode = 'readwrite') => {
346
347
  expect(data).toBe('a');
347
348
  expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('a');
348
349
  }));
349
- test('can write to a file twice sequentially', () => __awaiter(void 0, void 0, void 0, function* () {
350
+ test('can write to a file twice sequentially', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
350
351
  const { fs, mfs } = setup({});
351
352
  const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
352
353
  if (err)
@@ -378,7 +379,7 @@ const setup = (json = null, mode = 'readwrite') => {
378
379
  }));
379
380
  });
380
381
  describe('.writev()', () => {
381
- test('can write to a file two buffers', () => __awaiter(void 0, void 0, void 0, function* () {
382
+ test('can write to a file two buffers', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
382
383
  const { fs, mfs } = setup({});
383
384
  const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
384
385
  if (err)
@@ -400,9 +401,9 @@ const setup = (json = null, mode = 'readwrite') => {
400
401
  }));
401
402
  });
402
403
  describe('.exists()', () => {
403
- test('can works for folders and files', () => __awaiter(void 0, void 0, void 0, function* () {
404
+ test('can works for folders and files', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
404
405
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
405
- const exists = (path) => __awaiter(void 0, void 0, void 0, function* () {
406
+ const exists = (path) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
406
407
  return new Promise(resolve => {
407
408
  fs.exists(path, exists => resolve(exists));
408
409
  });
@@ -419,19 +420,19 @@ const setup = (json = null, mode = 'readwrite') => {
419
420
  });
420
421
  describe('.access()', () => {
421
422
  describe('files', () => {
422
- test('succeeds on file existence check', () => __awaiter(void 0, void 0, void 0, function* () {
423
+ test('succeeds on file existence check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
423
424
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
424
425
  yield fs.promises.access('/folder/file', 0 /* AMODE.F_OK */);
425
426
  }));
426
- test('succeeds on file "read" check', () => __awaiter(void 0, void 0, void 0, function* () {
427
+ test('succeeds on file "read" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
427
428
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
428
429
  yield fs.promises.access('/folder/file', 4 /* AMODE.R_OK */);
429
430
  }));
430
- test('succeeds on file "write" check, on writable file system', () => __awaiter(void 0, void 0, void 0, function* () {
431
+ test('succeeds on file "write" check, on writable file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
431
432
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
432
433
  yield fs.promises.access('/folder/file', 2 /* AMODE.W_OK */);
433
434
  }));
434
- test('fails on file "write" check, on read-only file system', () => __awaiter(void 0, void 0, void 0, function* () {
435
+ test('fails on file "write" check, on read-only file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
435
436
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' }, 'read');
436
437
  try {
437
438
  yield fs.promises.access('/folder/file', 2 /* AMODE.W_OK */);
@@ -441,7 +442,7 @@ const setup = (json = null, mode = 'readwrite') => {
441
442
  expect(error.code).toBe('EACCESS');
442
443
  }
443
444
  }));
444
- test('fails on file "execute" check', () => __awaiter(void 0, void 0, void 0, function* () {
445
+ test('fails on file "execute" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
445
446
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
446
447
  try {
447
448
  yield fs.promises.access('/folder/file', 1 /* AMODE.X_OK */);
@@ -453,19 +454,19 @@ const setup = (json = null, mode = 'readwrite') => {
453
454
  }));
454
455
  });
455
456
  describe('directories', () => {
456
- test('succeeds on folder existence check', () => __awaiter(void 0, void 0, void 0, function* () {
457
+ test('succeeds on folder existence check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
457
458
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
458
459
  yield fs.promises.access('/folder', 0 /* AMODE.F_OK */);
459
460
  }));
460
- test('succeeds on folder "read" check', () => __awaiter(void 0, void 0, void 0, function* () {
461
+ test('succeeds on folder "read" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
461
462
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
462
463
  yield fs.promises.access('/folder', 4 /* AMODE.R_OK */);
463
464
  }));
464
- test('succeeds on folder "write" check, on writable file system', () => __awaiter(void 0, void 0, void 0, function* () {
465
+ test('succeeds on folder "write" check, on writable file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
465
466
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
466
467
  yield fs.promises.access('/folder', 2 /* AMODE.W_OK */);
467
468
  }));
468
- test('fails on folder "write" check, on read-only file system', () => __awaiter(void 0, void 0, void 0, function* () {
469
+ test('fails on folder "write" check, on read-only file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
469
470
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' }, 'read');
470
471
  try {
471
472
  yield fs.promises.access('/folder', 2 /* AMODE.W_OK */);
@@ -475,7 +476,7 @@ const setup = (json = null, mode = 'readwrite') => {
475
476
  expect(error.code).toBe('EACCESS');
476
477
  }
477
478
  }));
478
- test('fails on folder "execute" check', () => __awaiter(void 0, void 0, void 0, function* () {
479
+ test('fails on folder "execute" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
479
480
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
480
481
  try {
481
482
  yield fs.promises.access('/folder', 1 /* AMODE.X_OK */);
@@ -488,7 +489,7 @@ const setup = (json = null, mode = 'readwrite') => {
488
489
  });
489
490
  });
490
491
  describe('.rename()', () => {
491
- test('can rename a file', () => __awaiter(void 0, void 0, void 0, function* () {
492
+ test('can rename a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
492
493
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
493
494
  yield fs.promises.rename('/folder/file', '/folder/file2');
494
495
  expect(mfs.__vol.toJSON()).toStrictEqual({
@@ -499,33 +500,33 @@ const setup = (json = null, mode = 'readwrite') => {
499
500
  }));
500
501
  });
501
502
  describe('.stat()', () => {
502
- test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
503
+ test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
503
504
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
504
505
  const stats = yield fs.promises.stat('/folder/file');
505
506
  expect(stats.isFile()).toBe(true);
506
507
  }));
507
- test('throws "ENOENT" when path is not found', () => __awaiter(void 0, void 0, void 0, function* () {
508
+ test('throws "ENOENT" when path is not found', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
508
509
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
509
510
  const [, error] = yield (0, thingies_1.of)(fs.promises.stat('/folder/repo/.git'));
510
511
  expect(error.code).toBe('ENOENT');
511
512
  }));
512
- test('throws "ENOTDIR" when sub-folder is a file', () => __awaiter(void 0, void 0, void 0, function* () {
513
+ test('throws "ENOTDIR" when sub-folder is a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
513
514
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
514
515
  const [, error] = yield (0, thingies_1.of)(fs.promises.stat('/folder/file/repo/.git'));
515
516
  expect(error.code).toBe('ENOTDIR');
516
517
  }));
517
- test('can retrieve file size', () => __awaiter(void 0, void 0, void 0, function* () {
518
+ test('can retrieve file size', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
518
519
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
519
520
  const stats = yield fs.promises.stat('/folder/file');
520
521
  expect(stats.size).toBe(4);
521
522
  }));
522
- test('can stat a folder', () => __awaiter(void 0, void 0, void 0, function* () {
523
+ test('can stat a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
523
524
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
524
525
  const stats = yield fs.promises.stat('/folder');
525
526
  expect(stats.isFile()).toBe(false);
526
527
  expect(stats.isDirectory()).toBe(true);
527
528
  }));
528
- test('throws on non-existing path', () => __awaiter(void 0, void 0, void 0, function* () {
529
+ test('throws on non-existing path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
529
530
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
530
531
  try {
531
532
  const stats = yield fs.promises.stat('/folder/abc');
@@ -537,23 +538,23 @@ const setup = (json = null, mode = 'readwrite') => {
537
538
  }));
538
539
  });
539
540
  describe('.lstat()', () => {
540
- test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
541
+ test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
541
542
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
542
543
  const stats = yield fs.promises.lstat('/folder/file');
543
544
  expect(stats.isFile()).toBe(true);
544
545
  }));
545
- test('can retrieve file size', () => __awaiter(void 0, void 0, void 0, function* () {
546
+ test('can retrieve file size', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
546
547
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
547
548
  const stats = yield fs.promises.lstat('/folder/file');
548
549
  expect(stats.size).toBe(4);
549
550
  }));
550
- test('can stat a folder', () => __awaiter(void 0, void 0, void 0, function* () {
551
+ test('can stat a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
551
552
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
552
553
  const stats = yield fs.promises.lstat('/folder');
553
554
  expect(stats.isFile()).toBe(false);
554
555
  expect(stats.isDirectory()).toBe(true);
555
556
  }));
556
- test('throws on non-existing path', () => __awaiter(void 0, void 0, void 0, function* () {
557
+ test('throws on non-existing path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
557
558
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
558
559
  try {
559
560
  yield fs.promises.lstat('/folder/abc');
@@ -565,7 +566,7 @@ const setup = (json = null, mode = 'readwrite') => {
565
566
  }));
566
567
  });
567
568
  describe('.fstat()', () => {
568
- test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
569
+ test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
569
570
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
570
571
  const handle = yield fs.promises.open('/folder/file', 'r');
571
572
  const stats = yield new Promise((resolve, reject) => {
@@ -580,21 +581,21 @@ const setup = (json = null, mode = 'readwrite') => {
580
581
  }));
581
582
  });
582
583
  describe('.realpath()', () => {
583
- test('returns file path', () => __awaiter(void 0, void 0, void 0, function* () {
584
+ test('returns file path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
584
585
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
585
586
  const path = yield fs.promises.realpath('folder/file');
586
587
  expect(path).toBe('/folder/file');
587
588
  }));
588
589
  });
589
590
  describe('.realpathSync()', () => {
590
- test('returns file path', () => __awaiter(void 0, void 0, void 0, function* () {
591
+ test('returns file path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
591
592
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
592
593
  const path = fs.realpathSync('folder/file');
593
594
  expect(path).toBe('/folder/file');
594
595
  }));
595
596
  });
596
597
  describe('.copyFile()', () => {
597
- test('can copy a file', () => __awaiter(void 0, void 0, void 0, function* () {
598
+ test('can copy a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
598
599
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
599
600
  yield fs.promises.copyFile('/folder/file', '/folder/file2');
600
601
  expect(mfs.__vol.toJSON()).toStrictEqual({
@@ -606,7 +607,7 @@ const setup = (json = null, mode = 'readwrite') => {
606
607
  }));
607
608
  });
608
609
  describe('.writeFile()', () => {
609
- test('can create a new file', () => __awaiter(void 0, void 0, void 0, function* () {
610
+ test('can create a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
610
611
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
611
612
  const res = yield new Promise((resolve, reject) => {
612
613
  fs.writeFile('/folder/foo', 'bar', error => {
@@ -624,9 +625,21 @@ const setup = (json = null, mode = 'readwrite') => {
624
625
  '/mountpoint/f.html': 'test',
625
626
  });
626
627
  }));
628
+ test('throws "EEXIST", if file already exists and O_EXCL flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
629
+ const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
630
+ const [, err] = yield (0, thingies_1.of)(fs.promises.writeFile('/folder/file', 'bar', { flag: 'wx' }));
631
+ expect(err).toBeInstanceOf(Error);
632
+ expect(err.code).toBe('EEXIST');
633
+ }));
634
+ test('throws "ENOENT", if file does not exist and O_CREAT flag not set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
635
+ const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
636
+ const [, err] = yield (0, thingies_1.of)(fs.promises.writeFile('/folder/file2', 'bar', { flag: 2 /* FLAG.O_RDWR */ }));
637
+ expect(err).toBeInstanceOf(Error);
638
+ expect(err.code).toBe('ENOENT');
639
+ }));
627
640
  });
628
641
  describe('.read()', () => {
629
- test('can read from a file at offset into Buffer', () => __awaiter(void 0, void 0, void 0, function* () {
642
+ test('can read from a file at offset into Buffer', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
630
643
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
631
644
  const handle = yield fs.promises.open('/folder/file', 'r');
632
645
  const [buffer, length] = yield new Promise((resolve, reject) => {
@@ -641,7 +654,7 @@ const setup = (json = null, mode = 'readwrite') => {
641
654
  expect(length).toBe(2);
642
655
  expect(buffer.slice(0, 2).toString()).toBe('es');
643
656
  }));
644
- test('can read from a file at offset into Uint8Array', () => __awaiter(void 0, void 0, void 0, function* () {
657
+ test('can read from a file at offset into Uint8Array', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
645
658
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
646
659
  const handle = yield fs.promises.open('/folder/file', 'r');
647
660
  const [buffer, length] = yield new Promise((resolve, reject) => {
@@ -659,7 +672,7 @@ const setup = (json = null, mode = 'readwrite') => {
659
672
  }));
660
673
  });
661
674
  describe('.createWriteStream()', () => {
662
- test('can use stream to write to a new file', () => __awaiter(void 0, void 0, void 0, function* () {
675
+ test('can use stream to write to a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
663
676
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
664
677
  const stream = fs.createWriteStream('/folder/file2');
665
678
  stream.write(Buffer.from('A'));
@@ -675,7 +688,7 @@ const setup = (json = null, mode = 'readwrite') => {
675
688
  '/mountpoint/f.html': 'test',
676
689
  });
677
690
  }));
678
- test('can use stream to write to a new file using strings', () => __awaiter(void 0, void 0, void 0, function* () {
691
+ test('can use stream to write to a new file using strings', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
679
692
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
680
693
  const stream = fs.createWriteStream('/folder/file2');
681
694
  stream.write('A');
@@ -691,7 +704,7 @@ const setup = (json = null, mode = 'readwrite') => {
691
704
  '/mountpoint/f.html': 'test',
692
705
  });
693
706
  }));
694
- test('can use stream to overwrite existing file', () => __awaiter(void 0, void 0, void 0, function* () {
707
+ test('can use stream to overwrite existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
695
708
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
696
709
  const stream = fs.createWriteStream('/folder/file');
697
710
  stream.write(Buffer.from('A'));
@@ -705,7 +718,7 @@ const setup = (json = null, mode = 'readwrite') => {
705
718
  '/mountpoint/f.html': 'test',
706
719
  });
707
720
  }));
708
- test('can write by file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
721
+ test('can write by file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
709
722
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
710
723
  const handle = yield fs.promises.open('/folder/file', 'a');
711
724
  const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a' });
@@ -719,12 +732,12 @@ const setup = (json = null, mode = 'readwrite') => {
719
732
  '/mountpoint/f.html': 'test',
720
733
  });
721
734
  }));
722
- test('closes file once stream ends', () => __awaiter(void 0, void 0, void 0, function* () {
735
+ test('closes file once stream ends', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
723
736
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
724
737
  const handle = yield fs.promises.open('/folder/file', 'a');
725
738
  const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a' });
726
739
  stream.write(Buffer.from('BC'));
727
- const stat = () => __awaiter(void 0, void 0, void 0, function* () {
740
+ const stat = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
728
741
  return yield new Promise((resolve, reject) => fs.fstat(handle.fd, (err, stats) => {
729
742
  if (err)
730
743
  reject(err);
@@ -734,19 +747,19 @@ const setup = (json = null, mode = 'readwrite') => {
734
747
  });
735
748
  yield stat();
736
749
  stream.end();
737
- yield (0, thingies_1.until)(() => __awaiter(void 0, void 0, void 0, function* () {
750
+ yield (0, thingies_1.until)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
738
751
  const [, error] = yield (0, thingies_1.of)(stat());
739
752
  return !!error;
740
753
  }));
741
754
  const [, error] = yield (0, thingies_1.of)(stat());
742
755
  expect(error.code).toBe('EBADF');
743
756
  }));
744
- test('does not close file if "autoClose" is false', () => __awaiter(void 0, void 0, void 0, function* () {
757
+ test('does not close file if "autoClose" is false', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
745
758
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
746
759
  const handle = yield fs.promises.open('/folder/file', 'a');
747
760
  const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a', autoClose: false });
748
761
  stream.write(Buffer.from('BC'));
749
- const stat = () => __awaiter(void 0, void 0, void 0, function* () {
762
+ const stat = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
750
763
  return yield new Promise((resolve, reject) => fs.fstat(handle.fd, (err, stats) => {
751
764
  if (err)
752
765
  reject(err);
@@ -759,7 +772,7 @@ const setup = (json = null, mode = 'readwrite') => {
759
772
  yield (0, thingies_1.tick)(200);
760
773
  yield stat();
761
774
  }));
762
- test('can use stream to add to existing file', () => __awaiter(void 0, void 0, void 0, function* () {
775
+ test('can use stream to add to existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
763
776
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
764
777
  const stream = fs.createWriteStream('/folder/file', { flags: 'a' });
765
778
  stream.write(Buffer.from('A'));
@@ -773,7 +786,7 @@ const setup = (json = null, mode = 'readwrite') => {
773
786
  '/mountpoint/f.html': 'test',
774
787
  });
775
788
  }));
776
- test('can use stream to add to existing file at specified offset', () => __awaiter(void 0, void 0, void 0, function* () {
789
+ test('can use stream to add to existing file at specified offset', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
777
790
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
778
791
  const stream = fs.createWriteStream('/folder/file', { flags: 'a', start: 1 });
779
792
  stream.write(Buffer.from('A'));
@@ -787,7 +800,7 @@ const setup = (json = null, mode = 'readwrite') => {
787
800
  '/mountpoint/f.html': 'test',
788
801
  });
789
802
  }));
790
- test('throws if "start" option is not a number', () => __awaiter(void 0, void 0, void 0, function* () {
803
+ test('throws if "start" option is not a number', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
791
804
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
792
805
  try {
793
806
  fs.createWriteStream('/folder/file', { flags: 'a', start: '1' });
@@ -798,7 +811,7 @@ const setup = (json = null, mode = 'readwrite') => {
798
811
  expect(error.message).toBe('"start" option must be a Number');
799
812
  }
800
813
  }));
801
- test('throws if "start" option is negative', () => __awaiter(void 0, void 0, void 0, function* () {
814
+ test('throws if "start" option is negative', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
802
815
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
803
816
  try {
804
817
  fs.createWriteStream('/folder/file', { flags: 'a', start: -1 });
@@ -811,7 +824,7 @@ const setup = (json = null, mode = 'readwrite') => {
811
824
  }));
812
825
  });
813
826
  describe('.createReadStream()', () => {
814
- test('can pipe fs.ReadStream to fs.WriteStream', () => __awaiter(void 0, void 0, void 0, function* () {
827
+ test('can pipe fs.ReadStream to fs.WriteStream', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
815
828
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
816
829
  const readStream = fs.createReadStream('/folder/file');
817
830
  const writeStream = fs.createWriteStream('/folder/file2');
@@ -824,25 +837,25 @@ const setup = (json = null, mode = 'readwrite') => {
824
837
  '/mountpoint/f.html': 'test',
825
838
  });
826
839
  }));
827
- test('emits "open" event', () => __awaiter(void 0, void 0, void 0, function* () {
840
+ test('emits "open" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
828
841
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
829
842
  const readStream = fs.createReadStream('/folder/file');
830
843
  const fd = yield new Promise(resolve => readStream.once('open', resolve));
831
844
  expect(typeof fd).toBe('number');
832
845
  }));
833
- test('emits "ready" event', () => __awaiter(void 0, void 0, void 0, function* () {
846
+ test('emits "ready" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
834
847
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
835
848
  const readStream = fs.createReadStream('/folder/file');
836
849
  yield new Promise(resolve => readStream.once('ready', resolve));
837
850
  }));
838
- test('emits "close" event', () => __awaiter(void 0, void 0, void 0, function* () {
851
+ test('emits "close" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
839
852
  const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
840
853
  const readStream = fs.createReadStream('/folder/file', { emitClose: true });
841
854
  const writeStream = fs.createWriteStream('/folder/file2');
842
855
  readStream.pipe(writeStream);
843
856
  yield new Promise(resolve => readStream.once('close', resolve));
844
857
  }));
845
- test('can write to already open file', () => __awaiter(void 0, void 0, void 0, function* () {
858
+ test('can write to already open file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
846
859
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
847
860
  const handle = yield fs.promises.open('/folder/file');
848
861
  const readStream = fs.createReadStream('xyz', { fd: handle.fd });
@@ -856,7 +869,7 @@ const setup = (json = null, mode = 'readwrite') => {
856
869
  '/mountpoint/f.html': 'test',
857
870
  });
858
871
  }));
859
- test('can read a specified slice of a file', () => __awaiter(void 0, void 0, void 0, function* () {
872
+ test('can read a specified slice of a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
860
873
  const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
861
874
  const readStream = fs.createReadStream('/folder/file', { start: 1, end: 2 });
862
875
  const writeStream = fs.createWriteStream('/folder/file2');
@@ -871,3 +884,4 @@ const setup = (json = null, mode = 'readwrite') => {
871
884
  }));
872
885
  });
873
886
  });
887
+ //# sourceMappingURL=FsaNodeFs.test.js.map