UNPKG

vlang-loader

Version:

Webpack loader for the V programming language; supports JS and WASM builds

36 lines (35 loc) 1.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const os_1 = __importDefault(require("os")); const path_1 = __importDefault(require("path")); const cross_spawn_1 = __importDefault(require("cross-spawn")); let v_output = []; const append_output = (out) => v_output.push(out); const tmp_file = path_1.default.join(os_1.default.tmpdir(), '__v_webpack_tmp__'); const tmp_file_js = `${tmp_file}.js`; function loader(_source) { var _a, _b; const cb = this.async(); const file_path = this.resourcePath; const v_cmd = cross_spawn_1.default('v', ['-b', 'js', '-o', tmp_file, file_path], {}); (_a = v_cmd.stdout) === null || _a === void 0 ? void 0 : _a.on('data', append_output); (_b = v_cmd.stderr) === null || _b === void 0 ? void 0 : _b.on('data', append_output); v_cmd.on('close', code => { if (code === 0) { fs_1.default.readFile(tmp_file_js, (err, data) => { fs_1.default.unlink(tmp_file_js, err1 => { cb === null || cb === void 0 ? void 0 : cb(err !== null && err !== void 0 ? err : err1, data); }); }); } else { cb === null || cb === void 0 ? void 0 : cb(new Error(v_output.join('\n'))); } v_output = []; }); } exports.default = loader;