UNPKG

1.76 kBJavaScriptView Raw
1var debug = require('debug')('bankai.node-manifest')
2var parseJson = require('fast-json-parse')
3var fs = require('fs')
4
5var utils = require('./utils')
6
7var DEFAULT_COLOR = '#fff'
8var DEFAULT_DESCRIPTION = ''
9var DEFAULT_MANIFEST = Buffer.from(JSON.stringify({
10 name: '',
11 short_name: '',
12 start_url: '/',
13 display: 'minimal-ui',
14 background_color: '#fff',
15 theme_color: DEFAULT_COLOR
16}))
17
18var filenames = [
19 'manifest.json'
20]
21
22module.exports = node
23
24function node (state, createEdge, emit) {
25 var basedir = state.metadata.dirname
26 var self = this
27
28 if (state.metadata.watch && !state.metadata.watchers.manifest) {
29 state.metadata.watchers.manifest = true
30 debug('watching ' + basedir + ' for ' + filenames.join(', '))
31 var unwatch = utils.watch(basedir, filenames, parse)
32 this.on('close', function () {
33 debug('closing file watcher')
34 unwatch()
35 })
36 }
37
38 parse()
39
40 function parse () {
41 debug('parsing')
42 utils.find(basedir, filenames, function (err, filename) {
43 if (err) {
44 createEdge('bundle', DEFAULT_MANIFEST, {
45 color: DEFAULT_COLOR,
46 description: DEFAULT_DESCRIPTION,
47 mime: 'application/json'
48 })
49 return
50 }
51
52 fs.readFile(filename, function (err, file) {
53 if (err) return self.emit('error', 'manifest', 'fs.readfile', err)
54
55 var res = parseJson(file)
56 if (res.err) return self.emit('error', 'manifest', 'JSON.parse', res.err)
57
58 debug('creating edges')
59 createEdge('bundle', Buffer.from(JSON.stringify(res.value)), {
60 color: res.value.theme_color || DEFAULT_COLOR,
61 description: res.value.description || DEFAULT_DESCRIPTION,
62 mime: 'application/json'
63 })
64 })
65 })
66 }
67}