UNPKG

@neo-one/server-plugin-project

Version:

NEO•ONE server plugin for project functionality.

26 lines (24 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const crypto_1 = require("crypto"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const hashRegex = /@hash ([0-9a-z-]+)/; exports.writeFile = async (filePath, contents) => { if (contents === undefined) { return; } const exists = await fs_extra_1.default.pathExists(filePath); const hash = crypto_1.createHash('md5') .update(contents) .digest('hex'); if (exists) { const currentContents = await fs_extra_1.default.readFile(filePath, 'utf8'); const match = hashRegex.exec(currentContents); if (match !== null && match[1] === hash) { return; } } await fs_extra_1.default.writeFile(filePath, `/* @hash ${hash} */\n${contents}`); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndyaXRlRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsZ0VBQTBCO0FBRTFCLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDO0FBRTFCLFFBQUEsU0FBUyxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUNyRSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDMUIsT0FBTztLQUNSO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxNQUFNLElBQUksR0FBRyxtQkFBVSxDQUFDLEtBQUssQ0FBQztTQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixJQUFJLE1BQU0sRUFBRTtRQUNWLE1BQU0sZUFBZSxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFOUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdkMsT0FBTztTQUNSO0tBQ0Y7SUFFRCxNQUFNLGtCQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxZQUFZLElBQUksUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNlcnZlci1wbHVnaW4tcHJvamVjdC9zcmMvYnVpbGQvd3JpdGVGaWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG5jb25zdCBoYXNoUmVnZXggPSAvQGhhc2ggKFswLTlhLXotXSspLztcblxuZXhwb3J0IGNvbnN0IHdyaXRlRmlsZSA9IGFzeW5jIChmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50cz86IHN0cmluZykgPT4ge1xuICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0cyA9IGF3YWl0IGZzLnBhdGhFeGlzdHMoZmlsZVBhdGgpO1xuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaCgnbWQ1JylcbiAgICAudXBkYXRlKGNvbnRlbnRzKVxuICAgIC5kaWdlc3QoJ2hleCcpO1xuICBpZiAoZXhpc3RzKSB7XG4gICAgY29uc3QgY3VycmVudENvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgbWF0Y2ggPSBoYXNoUmVnZXguZXhlYyhjdXJyZW50Q29udGVudHMpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwb3NzaWJsZS10aW1pbmctYXR0YWNrXG4gICAgaWYgKG1hdGNoICE9PSBudWxsICYmIG1hdGNoWzFdID09PSBoYXNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCBgLyogQGhhc2ggJHtoYXNofSAqL1xcbiR7Y29udGVudHN9YCk7XG59O1xuIl19