@cparra/apexdocs
Version:
Library with CLI capabilities to generate documentation for Salesforce Apex classes.
59 lines (58 loc) • 2.04 kB
JavaScript
;
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 },
});
}
});