summaryrefslogtreecommitdiffstats
path: root/devtools/client/shared/file-watcher.js
blob: 7799422f16046eb9e91c2d4e6513c1a3f630de41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";

const { ChromeWorker } = require("chrome");

function watchFiles(path, onFileChanged) {
  const watchWorker = new ChromeWorker(
    "resource://devtools/client/shared/file-watcher-worker.js"
  );

  watchWorker.onmessage = event => {
    // We need to turn a local path back into a resource URI (or
    // chrome). This means that this system will only work when built
    // files are symlinked, so that these URIs actually read from
    // local sources. There might be a better way to do this.
    const { path: newPath } = event.data;
    onFileChanged(newPath);
  };

  watchWorker.postMessage({
    path,
    fileRegex: /\.(js|css|svg|png)$/
  });
  return watchWorker;
}
exports.watchFiles = watchFiles;