wikibase-edit
Version:
Edit Wikibase from NodeJS
36 lines • 1.41 kB
JavaScript
import { buildClaim } from '../entity/build_claim.js';
import { newError } from '../error.js';
import { getEntityClaims } from '../get_entity.js';
import { forceArray } from '../utils.js';
import { validateGuid } from '../validate.js';
import { isMatchingClaimFactory } from './is_matching_claim.js';
export async function removeClaim(params, properties, instance, config) {
let { guid } = params;
const { id, property, value, qualifiers, reconciliation = {} } = params;
if (!(guid || (id && property && value))) {
throw newError('missing guid or id/property/value', params);
}
let guids;
if (guid) {
guids = forceArray(guid);
}
else {
const existingClaims = await getEntityClaims(id, config);
const claimData = { value, qualifiers };
// @ts-expect-error
const claim = buildClaim(property, properties, claimData, instance);
const { matchingQualifiers } = reconciliation;
const matchingClaims = existingClaims[property].filter(isMatchingClaimFactory(claim, matchingQualifiers));
if (matchingClaims.length === 0)
throw newError('claim not found', params);
guids = matchingClaims.map(({ id }) => id);
}
guids.forEach(validateGuid);
return {
action: 'wbremoveclaims',
data: {
claim: guids.join('|'),
},
};
}
//# sourceMappingURL=remove.js.map