@@ -8,25 +8,25 @@ const log = require('debug')('ipfs-repo-migrations:migration-8')
8
8
9
9
const KEY_PREFIX = 'key_'
10
10
11
- function encode ( name ) {
11
+ function encode ( name ) {
12
12
name = Buffer . from ( name )
13
- const encoder = new base32 . Encoder ( { type : "rfc4648" } ) ;
13
+ const encoder = new base32 . Encoder ( { type : "rfc4648" } )
14
14
return ( KEY_PREFIX + encoder . finalize ( name ) ) . toLowerCase ( )
15
15
}
16
16
17
- function decode ( name ) {
17
+ function decode ( name ) {
18
18
log ( name )
19
19
if ( ! name . startsWith ( KEY_PREFIX ) ) {
20
20
throw Error ( "Unknown format of key's name!" )
21
21
}
22
22
23
- const decoder = new base32 . Decoder ( { type : "rfc4648" } ) ;
23
+ const decoder = new base32 . Decoder ( { type : "rfc4648" } )
24
24
return decoder . finalize ( name . replace ( KEY_PREFIX , '' ) . toUpperCase ( ) )
25
25
}
26
26
27
- async function processFolder ( store , prefix , fileNameProcessor ) {
27
+ async function processFolder ( store , prefix , fileNameProcessor ) {
28
28
const query = {
29
- prefix : `/${ prefix } ` ,
29
+ prefix : `/${ prefix } `
30
30
}
31
31
32
32
const files = await store . query ( query )
@@ -41,9 +41,18 @@ async function processFolder(store, prefix, fileNameProcessor) {
41
41
}
42
42
}
43
43
44
- async function migrate ( repoPath , isBrowser ) {
45
- const store = new Datastore ( path . join ( repoPath , 'keys' ) , { extension : '.data' , createIfMissing : false } )
46
- store . open ( )
44
+ async function migrate ( repoPath , options , isBrowser ) {
45
+ let storageBackend
46
+ if ( options !== undefined
47
+ && options [ 'storageBackends' ] !== undefined
48
+ && options [ 'storageBackends' ] [ 'keys' ] !== undefined
49
+ ) {
50
+ storageBackend = options [ 'storageBackends' ] [ 'keys' ]
51
+ } else {
52
+ storageBackend = Datastore
53
+ }
54
+
55
+ const store = new storageBackend ( path . join ( repoPath , 'keys' ) , { extension : '.data' } )
47
56
try {
48
57
const info = processFolder ( store , 'info' , encode )
49
58
const data = processFolder ( store , 'pkcs8' , encode )
@@ -54,10 +63,18 @@ async function migrate(repoPath, isBrowser) {
54
63
}
55
64
}
56
65
57
- async function revert ( repoPath , isBrowser ) {
58
- const store = new Datastore ( path . join ( repoPath , 'keys' ) , { extension : '.data' , createIfMissing : false } )
59
- store . open ( )
66
+ async function revert ( repoPath , options , isBrowser ) {
67
+ let storageBackend
68
+ if ( options !== undefined
69
+ && options [ 'storageBackends' ] !== undefined
70
+ && options [ 'storageBackends' ] [ 'keys' ] !== undefined
71
+ ) {
72
+ storageBackend = options [ 'storageBackends' ] [ 'keys' ]
73
+ } else {
74
+ storageBackend = Datastore
75
+ }
60
76
77
+ const store = new storageBackend ( path . join ( repoPath , 'keys' ) , { extension : '.data' } )
61
78
try {
62
79
const info = processFolder ( store , 'info' , decode )
63
80
const data = processFolder ( store , 'pkcs8' , decode )
@@ -73,5 +90,5 @@ module.exports = {
73
90
description : 'Transforms key\'s names into base32 encoding.' ,
74
91
reversible : true ,
75
92
migrate,
76
- revert,
93
+ revert
77
94
}
0 commit comments