UNPKG

antora-confluence

Version:

A tool to convert and publish Antora documentation to Confluence

65 lines (64 loc) 2.88 kB
"use strict"; 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;