UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

45 lines 2.1 kB
import { newError } from './error.js'; import { fetchUsedPropertiesDatatypes } from './properties/fetch_used_properties_datatypes.js'; import { initializeConfigAuth } from './request/initialize_config_auth.js'; import { post } from './request/post.js'; import { resolveTitle } from './resolve_title.js'; import { isNonEmptyString } from './utils.js'; import { validateAndEnrichConfig } from './validate_and_enrich_config.js'; import validateParameters from './validate_parameters.js'; // Params could be captured with Parameters<ActionFunction>[0], but the resulting typing isn't great export function requestWrapper(actionFn, generalConfig) { return async function request(params, reqConfig) { const config = validateAndEnrichConfig(generalConfig, reqConfig); validateParameters(params); initializeConfigAuth(config); await fetchUsedPropertiesDatatypes(params, config); if (!config.properties) throw newError('properties not found', config); const { action, data } = await actionFn(params, config.properties, config.instance, config); const { summarySuffix } = config; let summary = 'summary' in params ? params.summary : config.summary; if (summarySuffix) { if (typeof summary === 'string') { summary = `${summary.trim()} ${summarySuffix.trim()}`; } else { summary = summarySuffix; } } const baserevid = 'baserevid' in params ? params.baserevid : config.baserevid; const extraData = {}; if (isNonEmptyString(summary)) { extraData.summary = summary.trim(); } if (baserevid != null) extraData.baserevid = baserevid; if ('title' in data) { const title = await resolveTitle(data.title, config.instanceApiEndpoint); return post(action, { ...data, ...extraData, title }, config); } else { return post(action, { ...data, ...extraData }, config); } }; } //# sourceMappingURL=request_wrapper.js.map