12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.receive = exports.send = void 0;
- const tslib_1 = require("tslib");
- const utils_fs_1 = require("@ionic/utils-fs");
- const utils_subprocess_1 = require("@ionic/utils-subprocess");
- const debug_1 = tslib_1.__importDefault(require("debug"));
- const https_1 = require("https");
- const path_1 = require("path");
- const cli_1 = require("./util/cli");
- const debug = (0, debug_1.default)('capacitor:ipc');
- /**
- * Send an IPC message to a forked process.
- */
- async function send(msg) {
- const dir = cli_1.ENV_PATHS.log;
- await (0, utils_fs_1.mkdirp)(dir);
- const logPath = (0, path_1.resolve)(dir, 'ipc.log');
- debug('Sending %O IPC message to forked process (logs: %O)', msg.type, logPath);
- const fd = await (0, utils_fs_1.open)(logPath, 'a');
- const p = (0, utils_subprocess_1.fork)(process.argv[1], ['📡'], { stdio: ['ignore', fd, fd, 'ipc'] });
- p.send(msg);
- p.disconnect();
- p.unref();
- }
- exports.send = send;
- /**
- * Receive and handle an IPC message.
- *
- * Assume minimal context and keep external dependencies to a minimum.
- */
- async function receive(msg) {
- debug('Received %O IPC message', msg.type);
- if (msg.type === 'telemetry') {
- const now = new Date().toISOString();
- const { data } = msg;
- // This request is only made if telemetry is on.
- const req = (0, https_1.request)({
- hostname: 'api.ionicjs.com',
- port: 443,
- path: '/events/metrics',
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- }, response => {
- debug('Sent %O metric to events service (status: %O)', data.name, response.statusCode);
- if (response.statusCode !== 204) {
- response.on('data', chunk => {
- debug('Bad response from events service. Request body: %O', chunk.toString());
- });
- }
- });
- const body = {
- metrics: [data],
- sent_at: now,
- };
- req.end(JSON.stringify(body));
- }
- }
- exports.receive = receive;
|