UNPKG

@cparra/apexdocs

Version:

Library with CLI capabilities to generate documentation for Salesforce Apex classes.

59 lines (58 loc) 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const node_worker_threads_1 = require("node:worker_threads"); const apex_reflection_1 = require("@cparra/apex-reflection"); function isRequestMessage(message) { if (!message || typeof message !== 'object') { return false; } const candidateMessage = message; if (typeof candidateMessage.id !== 'number') { return false; } if (!candidateMessage.payload || typeof candidateMessage.payload !== 'object') { return false; } const candidatePayload = candidateMessage.payload; return typeof candidatePayload.content === 'string'; } function post(responseMessage) { // `parentPort` should always exist in a worker, but guard anyway. if (!node_worker_threads_1.parentPort) { return; } node_worker_threads_1.parentPort.postMessage(responseMessage); } function reflectOrThrow(rawSource) { const result = (0, apex_reflection_1.reflect)(rawSource); if (result.typeMirror) { return result.typeMirror; } if (result.error) { throw result.error; } throw new Error('Unknown reflection failure: no typeMirror or error returned.'); } if (!node_worker_threads_1.parentPort) { throw new Error('apex-reflection.worker started without a parentPort'); } node_worker_threads_1.parentPort.on('message', (message) => { if (!isRequestMessage(message)) { // Can't correlate without a valid id; ignore. return; } const { id, payload } = message; try { const typeMirror = reflectOrThrow(payload.content); post({ id, ok: true, result: typeMirror }); } catch (caughtError) { const candidateMessage = caughtError === null || caughtError === void 0 ? void 0 : caughtError.message; const errorMessage = typeof candidateMessage === 'string' ? candidateMessage : 'Unknown error'; post({ id, ok: false, error: { message: errorMessage }, }); } });