UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

72 lines 2.28 kB
import { findEntityTypeFromId } from 'wikibase-sdk'; import { getTimeObject } from './get_time_object.js'; import { parseQuantity } from './quantity.js'; // The difference in builders are due to the different expectations of the Wikibase API export const singleClaimBuilders = { string(str) { return `"${str}"`; }, entity(entityId) { return JSON.stringify(buildEntitySnakDataValue(entityId)); }, time(value) { return JSON.stringify(getTimeObject(value)); }, // Property type specific builders monolingualtext(valueObj) { return JSON.stringify(valueObj); }, quantity(amount, instance) { return JSON.stringify(parseQuantity(amount, instance)); }, globecoordinate(obj) { return JSON.stringify(obj); }, }; export const entityEditBuilders = { string(pid, value) { return valueStatementBase(pid, 'string', value); }, entity(pid, value) { const datavalue = buildEntitySnakDataValue(value); return valueStatementBase(pid, 'wikibase-entityid', datavalue); }, monolingualtext(pid, value) { return valueStatementBase(pid, 'monolingualtext', value); }, time(pid, value) { return valueStatementBase(pid, 'time', getTimeObject(value)); }, quantity(pid, value, instance) { return valueStatementBase(pid, 'quantity', parseQuantity(value, instance)); }, globecoordinate(pid, value) { return valueStatementBase(pid, 'globecoordinate', value); }, specialSnaktype(pid, snaktype) { return statementBase(pid, snaktype); }, }; function buildEntitySnakDataValue(entityId) { const id = typeof entityId === 'string' ? entityId : entityId.value.id; const type = findEntityTypeFromId(id); // @ts-expect-error return { id, 'entity-type': type }; } function statementBase(pid, snaktype) { return { rank: 'normal', type: 'statement', mainsnak: { property: pid, snaktype, }, }; } function valueStatementBase(pid, type, value) { const statement = statementBase(pid, 'value'); // @ts-expect-error statement.mainsnak.datavalue = { type, value }; return statement; } //# sourceMappingURL=builders.js.map