pwd-fs 2.4.2 → 3.1.4

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 (68) hide show
  1. package/.travis.yml +2 -3
  2. package/appveyor.yml +2 -4
  3. package/lib/src/index.d.ts +4 -186
  4. package/lib/src/index.js +18 -294
  5. package/lib/src/powered-file-system.d.ts +156 -0
  6. package/lib/src/powered-file-system.js +264 -0
  7. package/lib/src/recurse-io-sync.d.ts +10 -5
  8. package/lib/src/recurse-io-sync.js +74 -69
  9. package/lib/src/recurse-io.d.ts +14 -6
  10. package/lib/src/recurse-io.js +164 -160
  11. package/lib/test/__fmock.d.ts +5 -0
  12. package/lib/test/__fmock.js +40 -0
  13. package/lib/test/append.spec.js +36 -77
  14. package/lib/test/bitmask.spec.js +14 -17
  15. package/lib/test/chmod.spec.js +42 -84
  16. package/lib/test/chown.spec.js +45 -71
  17. package/lib/test/constructor.spec.js +7 -10
  18. package/lib/test/copy.spec.js +53 -108
  19. package/lib/test/mkdir.spec.js +62 -119
  20. package/lib/test/read.spec.js +47 -78
  21. package/lib/test/readdir.spec.js +48 -90
  22. package/lib/test/remove.spec.js +44 -65
  23. package/lib/test/rename.spec.js +43 -75
  24. package/lib/test/stat.spec.js +50 -78
  25. package/lib/test/symlink.spec.js +51 -95
  26. package/lib/test/test.spec.js +37 -66
  27. package/lib/test/write.spec.js +52 -103
  28. package/package.json +8 -11
  29. package/readme.md +10 -21
  30. package/src/index.ts +4 -623
  31. package/src/powered-file-system.ts +527 -0
  32. package/src/recurse-io-sync.ts +77 -71
  33. package/src/recurse-io.ts +181 -176
  34. package/test/__fmock.ts +45 -0
  35. package/test/append.spec.ts +44 -98
  36. package/test/bitmask.spec.ts +14 -17
  37. package/test/chmod.spec.ts +45 -95
  38. package/test/chown.spec.ts +61 -93
  39. package/test/constructor.spec.ts +4 -7
  40. package/test/copy.spec.ts +72 -142
  41. package/test/mkdir.spec.ts +87 -153
  42. package/test/read.spec.ts +64 -103
  43. package/test/readdir.spec.ts +65 -113
  44. package/test/remove.spec.ts +58 -82
  45. package/test/rename.spec.ts +58 -96
  46. package/test/stat.spec.ts +68 -100
  47. package/test/symlink.spec.ts +74 -125
  48. package/test/test.spec.ts +51 -84
  49. package/test/write.spec.ts +68 -131
  50. package/tsconfig.json +14 -7
  51. package/lib/src/index.js.map +0 -1
  52. package/lib/src/recurse-io-sync.js.map +0 -1
  53. package/lib/src/recurse-io.js.map +0 -1
  54. package/lib/test/append.spec.js.map +0 -1
  55. package/lib/test/bitmask.spec.js.map +0 -1
  56. package/lib/test/chmod.spec.js.map +0 -1
  57. package/lib/test/chown.spec.js.map +0 -1
  58. package/lib/test/constructor.spec.js.map +0 -1
  59. package/lib/test/copy.spec.js.map +0 -1
  60. package/lib/test/mkdir.spec.js.map +0 -1
  61. package/lib/test/read.spec.js.map +0 -1
  62. package/lib/test/readdir.spec.js.map +0 -1
  63. package/lib/test/remove.spec.js.map +0 -1
  64. package/lib/test/rename.spec.js.map +0 -1
  65. package/lib/test/stat.spec.js.map +0 -1
  66. package/lib/test/symlink.spec.js.map +0 -1
  67. package/lib/test/test.spec.js.map +0 -1
  68. package/lib/test/write.spec.js.map +0 -1
@@ -1,146 +1,95 @@
1
- import assert from 'assert';
2
- import { sep } from 'path';
3
- import mockFs from 'mock-fs';
1
+ import assert from 'node:assert';
2
+ import fs from 'node:fs';
4
3
  import Chance from 'chance';
5
- import PoweredFileSystem from '../src';
4
+ import { expect } from 'expect';
5
+ import { Iframe, fmock, restore } from './__fmock';
6
+ import { pfs } from '../src';
6
7
 
7
8
  describe('symlink(src, use [, options])', () => {
9
+ const chance = new Chance();
10
+
8
11
  beforeEach(() => {
9
- const chance = new Chance();
10
-
11
- mockFs({
12
- 'tmpdir': {
13
- 'binapp': chance.string(),
14
- 'libxbase': mockFs.directory()
12
+ const cwd = process.cwd();
13
+
14
+ const frame: Iframe = {
15
+ './tmpdir/tings.txt': {
16
+ type: 'file',
17
+ data: chance.string()
15
18
  },
16
- 'flexapp': mockFs.symlink({
17
- path: 'tmpdir/binapp'
18
- })
19
- });
19
+ './tmpdir/digest/': { type: 'directory' },
20
+ './tmpdir/flexapp': {
21
+ type: 'symlink',
22
+ target: `${cwd}/tmpdir/tings.txt`
23
+ }
24
+ };
25
+
26
+ const counter = chance.natural({ max: 7 });
27
+
28
+ for (let i = 0; i < counter; i++) {
29
+ frame[`./tmpdir/${i}`] = { type: 'directory' };
30
+ }
31
+
32
+ fmock(frame);
20
33
  });
21
-
22
- afterEach(mockFs.restore);
23
-
34
+
35
+ afterEach(() => {
36
+ restore('./tmpdir');
37
+ });
38
+
39
+
24
40
  it('Positive: Must be created a symbolic link', async () => {
25
- const pfs = new PoweredFileSystem();
26
-
27
- await pfs.symlink('./tmpdir/binapp', './linkapp');
28
-
29
- const stats = await pfs.stat('./linkapp');
30
- assert(stats.isSymbolicLink());
41
+ await pfs.symlink('./tmpdir/tings.txt', './tmpdir/linkapp');
42
+
43
+ const stat = fs.lstatSync('./tmpdir/linkapp');
44
+
45
+ assert(stat.isSymbolicLink());
31
46
  });
32
-
47
+
48
+
33
49
  it('Positive: Must be created a symbolic link for directory', async () => {
34
- const pfs = new PoweredFileSystem();
35
-
36
- await pfs.symlink(`./tmpdir/libxbase`, './linkapp');
37
-
38
- const stats = await pfs.stat('./linkapp');
39
- assert(stats.isSymbolicLink());
50
+ await pfs.symlink('./tmpdir/digest', './tmpdir/linkapp');
51
+
52
+ const stat = fs.lstatSync('./tmpdir/linkapp');
53
+
54
+ assert(stat.isSymbolicLink());
40
55
  });
41
-
42
- it('Positive: Must be created a symbolic, when path is absolute', async () => {
43
- const pfs = new PoweredFileSystem();
44
-
45
- const cwd = process.cwd();
46
-
47
- await pfs.symlink(`${cwd}${sep}tmpdir${sep}libxbase`, `${cwd}${sep}linkapp`, {
48
- resolve: false
49
- });
50
-
51
- const stats = await pfs.stat('./linkapp');
52
- assert(stats.isSymbolicLink());
53
- });
54
-
56
+
57
+
55
58
  it('Negative: Throw if destination already exists', async () => {
56
- const pfs = new PoweredFileSystem();
57
-
58
- try {
59
- await pfs.symlink(`./flexapp`, './tmpdir/binapp');
60
- }
61
- catch (err) {
62
- assert(err.errno === -17);
63
- }
59
+ await expect(async () => {
60
+ await pfs.symlink('./tmpdir/tings.txt', './tmpdir/flexapp');
61
+ })
62
+ .rejects
63
+ .toThrow();
64
64
  });
65
+
66
+
67
+ it('[sync] Positive: Must be created a symbolic link', () => {
68
+ pfs.symlink('./tmpdir/tings.txt', './tmpdir/linkapp', {
69
+ sync: true
70
+ });
65
71
 
66
- it('Negative: Throw if not exists resource', async () => {
67
- const pfs = new PoweredFileSystem();
68
- const chance = new Chance();
69
-
70
- const base = chance.guid();
71
-
72
- try {
73
- await pfs.symlink(`./${base}`, './linkapp');
74
- }
75
- catch (err) {
76
- assert(err.errno === -2);
77
- }
72
+ const stat = fs.lstatSync('./tmpdir/linkapp');
73
+
74
+ assert(stat.isSymbolicLink());
78
75
  });
79
-
80
- describe('sync mode', () => {
81
- it('Positive: Must be created a symbolic link', async () => {
82
- const pfs = new PoweredFileSystem();
83
-
84
- pfs.symlink('./tmpdir/binapp', './linkapp', {
85
- sync: true
86
- });
87
-
88
- const stats = await pfs.stat('./linkapp');
89
- assert(stats.isSymbolicLink());
76
+
77
+
78
+ it('[sync] Positive: Must be created a symbolic link for directory', () => {
79
+ pfs.symlink('./tmpdir/digest', './tmpdir/linkapp', {
80
+ sync: true
90
81
  });
91
82
 
92
- it('Positive: Must be created a symbolic link for directory', async () => {
93
- const pfs = new PoweredFileSystem();
94
-
95
- pfs.symlink(`./tmpdir/libxbase`, './linkapp', {
83
+ const stat = fs.lstatSync('./tmpdir/linkapp');
84
+
85
+ assert(stat.isSymbolicLink());
86
+ });
87
+
88
+ it('[sync] Negative: Throw if destination already exists', () => {
89
+ assert.throws(() => {
90
+ pfs.symlink('./tmpdir/tings.txt', './tmpdir/flexapp', {
96
91
  sync: true
97
92
  });
98
-
99
- const stats = await pfs.stat('./linkapp');
100
- assert(stats.isSymbolicLink());
101
- });
102
-
103
- it('Positive: Must be created a symbolic, when path is absolute', async () => {
104
- const pfs = new PoweredFileSystem();
105
-
106
- const cwd = process.cwd();
107
-
108
- pfs.symlink(`${cwd}${sep}tmpdir${sep}libxbase`, `${cwd}${sep}linkapp`, {
109
- sync: true,
110
- resolve: false
111
- });
112
-
113
- const stats = await pfs.stat('./linkapp');
114
- assert(stats.isSymbolicLink());
115
- });
116
-
117
- it('Negative: Throw if destination already exists', async () => {
118
- const pfs = new PoweredFileSystem();
119
-
120
- try {
121
- pfs.symlink(`./flexapp`, './tmpdir/binapp', {
122
- sync: true
123
- });
124
- }
125
- catch (err) {
126
- assert(err.errno === -17);
127
- }
128
- });
129
-
130
- it('Negative: Throw if not exists resource', async () => {
131
- const pfs = new PoweredFileSystem();
132
- const chance = new Chance();
133
-
134
- const base = chance.guid();
135
-
136
- try {
137
- pfs.symlink(`./${base}`, './linkapp', {
138
- sync: true
139
- });
140
- }
141
- catch (err) {
142
- assert(err.errno === -2);
143
- }
144
93
  });
145
94
  });
146
95
  });
package/test/test.spec.ts CHANGED
@@ -1,113 +1,80 @@
1
- import assert from 'assert';
2
- import { sep } from 'path';
3
- import mockFs from 'mock-fs';
1
+ import assert from 'node:assert';
4
2
  import Chance from 'chance';
5
- import PoweredFileSystem from '../src';
3
+ import { fmock, restore } from './__fmock';
4
+ import { pfs } from '../src';
6
5
 
7
6
  describe('test(src[, options])', () => {
8
- beforeEach(() => {
9
- const chance = new Chance();
7
+ const chance = new Chance();
10
8
 
11
- mockFs({
12
- 'tmpdir': {
13
- 'binapp': chance.string(),
14
- 'libxbase': mockFs.directory()
9
+ beforeEach(() => {
10
+ fmock({
11
+ './tmpdir/tings.txt': {
12
+ type: 'file',
13
+ data: chance.string()
15
14
  },
16
- 'flexapp': mockFs.symlink({
17
- path: 'tmpdir/binapp'
18
- })
15
+ './tmpdir/digest/': { type: 'directory' }
19
16
  });
20
17
  });
21
-
22
- afterEach(mockFs.restore);
18
+
19
+ afterEach(() => {
20
+ restore('./tmpdir');
21
+ });
22
+
23
23
 
24
24
  it(`Positive: Should return 'true' for current working directory`, async () => {
25
- const pfs = new PoweredFileSystem();
26
-
27
25
  const exist = await pfs.test('.');
26
+
28
27
  assert(exist);
29
28
  });
30
-
31
- it(`Positive: For existing directory should return 'true'`, async () => {
32
- const pfs = new PoweredFileSystem();
33
-
34
- const exist = await pfs.test('./tmpdir/libxbase');
29
+
30
+
31
+ it(`Positive: For existing file should return 'true'`, async () => {
32
+ const exist = await pfs.test('./tmpdir/tings.txt');
33
+
35
34
  assert(exist);
36
35
  });
37
-
38
- it(`Positive: For existing file should return 'true'`, async () => {
39
- const pfs = new PoweredFileSystem();
40
-
41
- const exist = await pfs.test('./tmpdir/binapp');
36
+
37
+
38
+ it(`Positive: For existing directory should return 'true'`, async () => {
39
+ const exist = await pfs.test('./tmpdir/digest');
40
+
42
41
  assert(exist);
43
42
  });
44
-
43
+
44
+
45
45
  it(`Positive: A non-existent file must return 'false'`, async () => {
46
- const pfs = new PoweredFileSystem();
47
- const chance = new Chance();
48
-
49
- const base = chance.guid();
50
- const exists = await pfs.test(`./${base}`);
46
+ const guid = chance.guid();
47
+ const exist = await pfs.test(`./tmpdir/${guid}`);
51
48
 
52
- assert(exists === false);
49
+ assert(exist === false);
53
50
  });
54
-
55
- it(`Positive: Should return 'true' for absolute source`, async () => {
56
- const pfs = new PoweredFileSystem();
57
-
58
- const cwd = process.cwd();
59
-
60
- const exists = await pfs.test(`${cwd}${sep}tmpdir`, {
61
- resolve: false
51
+
52
+
53
+ it(`Positive: For existing file should return 'true'`, () => {
54
+ const exist = pfs.test('./tmpdir/tings.txt', {
55
+ sync: true
62
56
  });
63
57
 
64
- assert(exists);
58
+ assert(exist);
65
59
  });
66
-
67
- describe('sync mode', () => {
68
- it(`Positive: For existing directory should return 'true'`, () => {
69
- const pfs = new PoweredFileSystem();
70
-
71
- const exist = pfs.test('./tmpdir/libxbase', {
72
- sync: true
73
- });
74
-
75
- assert(exist);
76
- });
77
-
78
- it(`Positive: For existing file should return 'true'`, () => {
79
- const pfs = new PoweredFileSystem();
80
-
81
- const exist = pfs.test('./tmpdir/binapp', {
82
- sync: true
83
- });
84
-
85
- assert(exist);
60
+
61
+
62
+ it(`[sync] Positive: For existing directory should return 'true'`, () => {
63
+ const exist = pfs.test('./tmpdir/digest', {
64
+ sync: true
86
65
  });
87
66
 
88
- it(`Positive: A non-existent file must return 'false'`, async () => {
89
- const pfs = new PoweredFileSystem();
90
- const chance = new Chance();
91
-
92
- const base = chance.guid();
93
- const exists = pfs.test(`./${base}`, {
94
- sync: true
95
- });
67
+ assert(exist);
68
+ });
96
69
 
97
- assert(exists === false);
70
+
71
+ it(`[sync] Positive: A non-existent file must return 'false'`, () => {
72
+ const guid = chance.guid();
73
+
74
+ const exist = pfs.test(`./tmpdir/${guid}`, {
75
+ sync: true
98
76
  });
99
77
 
100
- it(`Positive: Should return 'true' for absolute source`, async () => {
101
- const pfs = new PoweredFileSystem();
102
-
103
- const cwd = process.cwd();
104
-
105
- const exists = pfs.test(`${cwd}${sep}tmpdir`, {
106
- sync: true,
107
- resolve: false
108
- });
109
-
110
- assert(exists);
111
- });
78
+ assert(exist === false);
112
79
  });
113
80
  });
@@ -1,167 +1,104 @@
1
- import assert from 'assert';
2
- import { sep } from 'path';
3
- import mockFs from 'mock-fs';
1
+ import assert from 'node:assert';
2
+ import fs from 'node:fs';
4
3
  import Chance from 'chance';
5
- import PoweredFileSystem from '../src';
4
+ import { expect } from 'expect';
5
+ import { fmock, restore } from './__fmock';
6
+ import { pfs } from '../src';
6
7
 
7
8
  describe('write(src, data[, options])', () => {
8
- beforeEach(() => {
9
- const chance = new Chance();
9
+ const chance = new Chance();
10
10
 
11
- mockFs({
12
- 'tmpdir': {
13
- 'binapp': chance.string(),
14
- 'libxbase': mockFs.directory()
15
- },
16
- 'flexapp': mockFs.symlink({
17
- path: 'tmpdir/binapp'
18
- })
11
+ beforeEach(() => {
12
+ fmock({
13
+ './tmpdir/tings.txt': {
14
+ type: 'file',
15
+ data: chance.string()
16
+ }
19
17
  });
20
18
  });
21
-
22
- afterEach(mockFs.restore);
19
+
20
+ afterEach(() => {
21
+ restore('./tmpdir');
22
+ });
23
23
 
24
24
  it('Positive: Must write content to file', async () => {
25
- const pfs = new PoweredFileSystem();
26
- const chance = new Chance();
27
-
28
- const base = chance.guid();
29
- const exists = await pfs.test(`./tmpdir/${base}`);
30
-
31
- assert(exists === false);
32
-
33
25
  const payload = chance.paragraph();
26
+ const guid = chance.guid();
34
27
 
35
- await pfs.write(`./tmpdir/${base}`, payload);
36
- const stats = await pfs.stat(`./tmpdir/${base}`);
37
-
38
- assert(stats.size > 0);
28
+ await pfs.write(`./tmpdir/${guid}.txt`, payload);
29
+ const { size } = fs.lstatSync(`./tmpdir/${guid}.txt`);
30
+
31
+ assert(payload.length === size);
39
32
  });
40
-
33
+
34
+
41
35
  it('Positive: Must rewrite content if file already exists', async () => {
42
- const pfs = new PoweredFileSystem();
43
- const chance = new Chance();
44
-
45
36
  const payload = chance.paragraph();
46
37
 
47
- await pfs.write('./tmpdir/binapp', payload);
48
-
49
- const stats = await pfs.stat(`./tmpdir/binapp`);
50
- assert(stats.size > 0);
38
+ await pfs.write('./tmpdir/tings.txt', payload);
39
+ const { size } = fs.lstatSync('./tmpdir/tings.txt');
40
+
41
+ assert(payload.length === size);
51
42
  });
52
43
 
53
- it(`Positive: Must write content to file, when path is absolute`, async () => {
54
- const pfs = new PoweredFileSystem();
55
- const chance = new Chance();
56
44
 
45
+ it('Negative: Throw if resource is directory', async () => {
57
46
  const payload = chance.paragraph();
58
- const cwd = process.cwd();
59
-
60
- await pfs.write(`${cwd}${sep}tmpdir${sep}binapp`, payload, {
61
- resolve: false
62
- });
63
-
64
- const stats = await pfs.stat(`./tmpdir/binapp`);
65
- assert(stats.size > 0);
47
+
48
+ await expect(async () => {
49
+ await pfs.write('./tmpdir', payload);
50
+ })
51
+ .rejects
52
+ .toThrow();
66
53
  });
67
54
 
68
- it('Negative: Throw if resource is directory', async () => {
69
- const pfs = new PoweredFileSystem();
70
- const chance = new Chance();
71
-
72
- try {
73
- const payload = chance.paragraph();
74
-
75
- await pfs.write('./tmpdir/libxbase', payload);
76
- }
77
- catch (err) {
78
- assert(err.errno === -21);
79
- }
80
- });
81
55
 
82
56
  it(`Negative: Unexpected option 'flag' returns Error`, async () => {
83
- const pfs = new PoweredFileSystem();
84
- const chance = new Chance();
85
-
86
- try {
87
- const payload = chance.paragraph();
88
-
89
- await pfs.write('./tmpdir/binapp', payload, {
57
+ const payload = chance.paragraph();
58
+
59
+ await expect(async () => {
60
+ await pfs.write('./tmpdir/tings.txt', payload, {
90
61
  flag: 'r'
91
62
  });
92
- }
93
- catch (err) {
94
- assert(err.errno === -9);
95
- }
63
+ })
64
+ .rejects
65
+ .toThrow();
96
66
  });
67
+
68
+
69
+ it('[sync] Positive: Write contents even to a non-existent file', () => {
70
+ const payload = chance.paragraph();
71
+ const guid = chance.guid();
97
72
 
98
- describe('sync mode', () => {
99
- it('Positive: Must write content to file', async () => {
100
- const pfs = new PoweredFileSystem();
101
- const chance = new Chance();
102
-
103
- const base = chance.guid();
104
- const exists = await pfs.test(`./tmpdir/${base}`);
105
-
106
- assert(exists === false);
107
-
108
- const payload = chance.paragraph();
73
+ pfs.write(`./tmpdir/${guid}.txt`, payload, {
74
+ sync: true
75
+ });
76
+
77
+ const content = fs.readFileSync(`./tmpdir/${guid}.txt`, 'utf8');
78
+
79
+ assert(payload === content);
80
+ });
81
+
82
+
83
+ it('[sync] Negative: Throw if resource is directory', () => {
84
+ const payload = chance.paragraph();
109
85
 
110
- pfs.write(`./tmpdir/${base}`, payload, {
86
+ assert.throws(() => {
87
+ pfs.write('./tmpdir', payload, {
111
88
  sync: true
112
89
  });
113
-
114
- const stats = await pfs.stat(`./tmpdir/${base}`);
115
- assert(stats.size > 0);
116
90
  });
91
+ });
92
+
93
+
94
+ it(`[sync] Negative: Unexpected option 'flag' returns Error`, () => {
95
+ const payload = chance.paragraph();
117
96
 
118
- it(`Positive: Must write content to file, when path is absolute`, async () => {
119
- const pfs = new PoweredFileSystem();
120
- const chance = new Chance();
121
-
122
- const payload = chance.paragraph();
123
- const cwd = process.cwd();
124
-
125
- pfs.write(`${cwd}${sep}tmpdir${sep}binapp`, payload, {
97
+ assert.throws(() => {
98
+ pfs.write('./tmpdir/tings.txt', payload, {
126
99
  sync: true,
127
- resolve: false
100
+ flag: 'r'
128
101
  });
129
-
130
- const stats = await pfs.stat(`./tmpdir/binapp`);
131
- assert(stats.size > 0);
132
- });
133
-
134
- it('Negative: Throw if resource is directory', async () => {
135
- const pfs = new PoweredFileSystem();
136
- const chance = new Chance();
137
-
138
- try {
139
- const payload = chance.paragraph();
140
-
141
- pfs.write('./tmpdir/libxbase', payload, {
142
- sync: true
143
- });
144
- }
145
- catch (err) {
146
- assert(err.errno === -21);
147
- }
148
- });
149
-
150
- it(`Negative: Unexpected option 'flag' returns Error`, async () => {
151
- const pfs = new PoweredFileSystem();
152
- const chance = new Chance();
153
-
154
- try {
155
- const payload = chance.paragraph();
156
-
157
- pfs.write('./tmpdir/binapp', payload, {
158
- sync: true,
159
- flag: 'r'
160
- });
161
- }
162
- catch (err) {
163
- assert(err.errno === -9);
164
- }
165
102
  });
166
103
  });
167
104
  });
package/tsconfig.json CHANGED
@@ -1,12 +1,19 @@
1
1
  {
2
- "extends": "@tsconfig/node16/tsconfig.json",
3
2
  "compilerOptions": {
3
+ "lib": [
4
+ "es2022"
5
+ ],
6
+ "module": "CommonJS",
7
+ "target": "es2022",
8
+ "moduleResolution": "node",
9
+ "resolveJsonModule": true,
10
+ "esModuleInterop": true,
11
+ "allowSyntheticDefaultImports": true,
12
+ "strict": true,
4
13
  "useUnknownInCatchVariables": false,
5
14
  "declaration": true,
6
- "outDir": "./lib",
7
- },
8
- "include": [
9
- "src/**/*",
10
- "**/*.spec.ts"
11
- ]
15
+ "noEmitOnError": true,
16
+ "noUnusedLocals": false,
17
+ "outDir": "lib"
18
+ }
12
19
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recurse-io-sync.js","sourceRoot":"","sources":["../../src/recurse-io-sync.ts"],"names":[],"mappings":"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"}