antora-confluence
Version:
A tool to convert and publish Antora documentation to Confluence
65 lines (64 loc) • 2.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateState = exports.createState = exports.initializeState = void 0;
const types_1 = require("../types");
const RESTApiService_1 = require("./RESTApiService");
const node_html_parser_1 = __importDefault(require("node-html-parser"));
const node_zlib_1 = require("node:zlib");
const Logger_1 = require("../Logger");
const LOGGER = (0, Logger_1.getLogger)();
const decodeState = (state) => {
LOGGER.debug(`Decoding ${state}`);
return (0, node_zlib_1.inflateSync)(Buffer.from(state, "base64")).toString("utf-8");
};
const encodeState = (state) => {
LOGGER.debug(`Encoding ${state}`);
const compressed = (0, node_zlib_1.deflateSync)(Buffer.from(state));
return compressed.toString("base64");
};
const initializeState = async (confluenceClient) => {
LOGGER.info(`Initializing state (${confluenceClient.CAPTAIN_NAME})`);
const response = await (0, RESTApiService_1.sendRequest)(confluenceClient.fetchPageIdByName(confluenceClient.CAPTAIN_NAME, types_1.ConfluencePageStatus.DRAFT));
if (response.results && response.results.length > 0) {
LOGGER.info(`Decoding Confluence state (${confluenceClient.CAPTAIN_NAME})`);
const state = (0, node_html_parser_1.default)(response.results[0].body.storage.value).querySelector("p")?.textContent;
if (state) {
return {
id: response.results[0].id,
value: decodeState(state),
version: response.results[0].version.number,
};
}
else {
throw Error("Corrupt State page");
}
}
return;
};
exports.initializeState = initializeState;
const createState = async (confluenceClient, inventory) => {
LOGGER.info(`Creating Confluence state (${confluenceClient.CAPTAIN_NAME})`);
const state = encodeState(inventory);
const updateResponse = await (0, RESTApiService_1.sendRequest)(confluenceClient.createPage({
title: confluenceClient.CAPTAIN_NAME,
content: `<p>${state}</p>`,
}, types_1.ConfluencePageStatus.DRAFT));
return {
id: updateResponse.id,
value: decodeState(state),
version: updateResponse.version?.number ?? 1,
};
};
exports.createState = createState;
const updateState = async (confluenceClient, state) => {
LOGGER.info(`Updating state (${confluenceClient.CAPTAIN_NAME})`);
LOGGER.debug(`${state.value}`);
await (0, RESTApiService_1.sendRequest)(confluenceClient.updatePage({
title: confluenceClient.CAPTAIN_NAME,
content: `<p>${encodeState(state.value)}</p>`,
}, state.id, state.version, types_1.ConfluencePageStatus.DRAFT));
};
exports.updateState = updateState;