UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

40 lines (33 loc) 1.2 kB
import { uniq } from 'lodash-es' import { formatBadges } from '../entity/format.js' import { newError } from '../error.js' import { getEntitySitelinks } from '../get_entity.js' import { validateEntityId, validateSite } from '../validate.js' import type { WikibaseEditAPI } from '../index.js' import type { SetSitelinkResponse } from '../sitelink/set.js' import type { SerializedConfig } from '../types/config.js' import type { EntityWithSitelinks, ItemId } from 'wikibase-sdk' export interface AddBadgeParams { id: EntityWithSitelinks['id'] site: string badges: ItemId | ItemId[] } export async function addBadge (params: AddBadgeParams, config: SerializedConfig, API: WikibaseEditAPI) { let { id, site, badges } = params validateEntityId(id) validateSite(site) badges = formatBadges(badges) const sitelinks = await getEntitySitelinks(id, config) const siteObj = sitelinks[site] if (!siteObj) { throw newError('sitelink does not exist', 400, params) } const { title, badges: currentBadges } = siteObj return API.sitelink.set({ id, site, title, badges: uniq(currentBadges.concat(badges)), }) } export type AddBadgeResponse = SetSitelinkResponse