1
1
import { promises as fs } from 'fs'
2
- import { resolve } from 'path'
2
+ import { resolve , dirname } from 'path'
3
3
4
4
const _memo = {
5
5
_pid : process . pid
@@ -12,11 +12,11 @@ interface MemoOptions {
12
12
}
13
13
14
14
export async function getMemo ( config : Partial < MemoOptions > ) : Promise < any > {
15
- const options = getOptions ( config )
15
+ const file = getFile ( config )
16
16
17
17
// Try to load latest memo
18
18
try {
19
- const memo = JSON . parse ( await fs . readFile ( options . file , 'utf-8' ) ) || { }
19
+ const memo = JSON . parse ( await fs . readFile ( file , 'utf-8' ) ) || { }
20
20
if ( ! memo . _pid ) {
21
21
throw new Error ( 'Memo lacks _pid' )
22
22
}
@@ -35,23 +35,25 @@ export async function getMemo (config: Partial<MemoOptions>): Promise<any> {
35
35
}
36
36
37
37
export async function setMemo ( memo : object , config : Partial < MemoOptions > ) : Promise < void > {
38
- const options = getOptions ( config )
38
+ const file = getFile ( config )
39
39
40
40
// Set local memo
41
41
Object . assign ( _memo , memo )
42
42
_memo . _pid = process . pid
43
43
44
44
// Try to persist
45
- try { await fs . mkdir ( options . dir ) } catch ( e ) { }
46
- try { await fs . writeFile ( options . file , JSON . stringify ( _memo ) , 'utf-8' ) } catch ( e ) { }
45
+ try { await fs . mkdir ( dirname ( file ) ) } catch ( e ) { }
46
+ try { await fs . writeFile ( file , JSON . stringify ( _memo ) , 'utf-8' ) } catch ( e ) { }
47
47
}
48
48
49
- function getOptions ( config : Partial < MemoOptions > ) : MemoOptions {
50
- const options = { ...config }
51
- options . name = options . name || 'default'
52
- options . dir = options . dir || resolve ( process . cwd ( ) , 'node_modules/.cache/fs-memo' )
53
- options . file = options . file || resolve ( options . dir , options . name + '.json' )
54
- return options as MemoOptions
49
+ function getFile ( config : Partial < MemoOptions > ) : string {
50
+ if ( config . file ) {
51
+ return config . file
52
+ }
53
+ return resolve (
54
+ config . dir || resolve ( process . cwd ( ) , 'node_modules/.cache/fs-memo' ) ,
55
+ ( config . name || 'default' ) + '.json'
56
+ )
55
57
}
56
58
57
59
function isAlive ( pid : number ) : Boolean {
0 commit comments