Skip to content
This repository was archived by the owner on Apr 29, 2020. It is now read-only.

Commit 8b569f4

Browse files
committed
feat: store mtime as timespec
1 parent 46f3a63 commit 8b569f4

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"devDependencies": {
3333
"aegir": "^20.0.0",
3434
"chai": "^4.2.0",
35-
"ipfs-http-client": "ipfs/js-ipfs-http-client#support-unixfs-metadata",
35+
"ipfs-http-client": "^40.1.0",
3636
"request": "^2.88.0"
3737
},
3838
"engines": {

src/parser.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,13 @@ async function * parseEntry (stream, options) {
6969
const entry = {}
7070

7171
if (part.headers.mtime) {
72-
entry.mtime = parseInt(part.headers.mtime, 10)
72+
entry.mtime = {
73+
secs: parseInt(part.headers.mtime, 10)
74+
}
75+
76+
if (part.headers['mtime-nsecs']) {
77+
entry.mtime.nsecs = parseInt(part.headers['mtime-nsecs'], 10)
78+
}
7379
}
7480

7581
if (part.headers.mode) {

test/parser.spec.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const readDir = (path, prefix, includeMetadata, output = []) => {
2727

2828
output.push({
2929
path: `${prefix}/${entry}`,
30-
mtime: includeMetadata ? parseInt(type.mtimeMs / 1000) : undefined,
30+
mtime: includeMetadata ? new Date(type.mtimeMs) : undefined,
3131
mode: includeMetadata ? type.mode : undefined
3232
})
3333
}
@@ -36,7 +36,7 @@ const readDir = (path, prefix, includeMetadata, output = []) => {
3636
output.push({
3737
path: `${prefix}/${entry}`,
3838
content: fs.createReadStream(entryPath),
39-
mtime: includeMetadata ? parseInt(type.mtimeMs / 1000) : undefined,
39+
mtime: includeMetadata ? new Date(type.mtimeMs) : undefined,
4040
mode: includeMetadata ? type.mode : undefined
4141
})
4242
}
@@ -191,9 +191,15 @@ describe('parser', () => {
191191
expect(files).to.have.lengthOf(contents.length)
192192

193193
for (let i = 0; i < contents.length; i++) {
194+
const msecs = contents[i].mtime.getTime()
195+
const secs = Math.floor(msecs / 1000)
196+
194197
expect(files[i].name).to.equal(contents[i].path)
195198
expect(files[i].mode).to.equal(contents[i].mode)
196-
expect(files[i].mtime).to.equal(contents[i].mtime)
199+
expect(files[i].mtime).to.deep.equal({
200+
secs,
201+
nsecs: (msecs - (secs * 1000)) * 1000
202+
})
197203
}
198204
})
199205
})

0 commit comments

Comments
 (0)