wikibase-edit
Version:
Edit Wikibase from NodeJS
102 lines • 4.39 kB
JavaScript
import { merge } from 'lodash-es';
import { addAlias } from './alias/add.js';
import { removeAlias } from './alias/remove.js';
import { setAlias } from './alias/set.js';
import { addBadge } from './badge/add.js';
import { removeBadge } from './badge/remove.js';
import { bundleWrapper } from './bundle_wrapper.js';
import { createClaim } from './claim/create.js';
import { moveClaims } from './claim/move.js';
import { removeClaim } from './claim/remove.js';
import { setClaim } from './claim/set.js';
import { updateClaim } from './claim/update.js';
import { setDescription } from './description/set.js';
import { createEntity } from './entity/create.js';
import { deleteEntity } from './entity/delete.js';
import { editEntity, _rawEditEntity } from './entity/edit.js';
import { mergeEntity } from './entity/merge.js';
import { newError } from './error.js';
import { setLabel } from './label/set.js';
import { moveQualifier } from './qualifier/move.js';
import { removeQualifier } from './qualifier/remove.js';
import { setQualifier } from './qualifier/set.js';
import { updateQualifier } from './qualifier/update.js';
import { removeReference } from './reference/remove.js';
import { setReference } from './reference/set.js';
import { getAuthDataFactory } from './request/get_auth_data.js';
import { requestWrapper } from './request_wrapper.js';
import { setSitelink } from './sitelink/set.js';
import { validateAndEnrichConfig } from './validate_and_enrich_config.js';
/**
* See https://github.com/maxlath/wikibase-edit/blob/main/docs/how_to.md#config
*/
export default function WBEdit(generalConfig = {}) {
if (typeof generalConfig !== 'object') {
throw newError('invalid general config object', { generalConfig, type: typeof generalConfig });
}
// Primitives: sync or async functions that return an { action, params } object
// passed to request.post by requestWrapper
const primaryAPI = {
label: {
set: requestWrapper(setLabel, generalConfig),
},
description: {
set: requestWrapper(setDescription, generalConfig),
},
alias: {
set: requestWrapper(setAlias, generalConfig),
add: requestWrapper(addAlias, generalConfig),
remove: requestWrapper(removeAlias, generalConfig),
},
claim: {
set: requestWrapper(setClaim, generalConfig),
remove: requestWrapper(removeClaim, generalConfig),
},
qualifier: {
set: requestWrapper(setQualifier, generalConfig),
remove: requestWrapper(removeQualifier, generalConfig),
},
reference: {
set: requestWrapper(setReference, generalConfig),
remove: requestWrapper(removeReference, generalConfig),
},
entity: {
create: requestWrapper(createEntity, generalConfig),
edit: requestWrapper(editEntity, generalConfig),
merge: requestWrapper(mergeEntity, generalConfig),
delete: requestWrapper(deleteEntity, generalConfig),
_rawEdit: requestWrapper(_rawEditEntity, generalConfig),
},
sitelink: {
set: requestWrapper(setSitelink, generalConfig),
},
badge: {},
};
// Bundles: async functions that make use of the primitives to offer more sophisticated behaviors
const secondaryAPI = {
claim: {
create: bundleWrapper(createClaim, generalConfig, primaryAPI),
update: bundleWrapper(updateClaim, generalConfig, primaryAPI),
move: bundleWrapper(moveClaims, generalConfig, primaryAPI),
},
qualifier: {
update: bundleWrapper(updateQualifier, generalConfig, primaryAPI),
move: bundleWrapper(moveQualifier, generalConfig, primaryAPI),
},
badge: {
add: bundleWrapper(addBadge, generalConfig, primaryAPI),
remove: bundleWrapper(removeBadge, generalConfig, primaryAPI),
},
};
return {
...merge(primaryAPI, secondaryAPI),
getAuthData(reqConfig) {
const config = validateAndEnrichConfig(generalConfig, reqConfig);
return getAuthDataFactory(config);
},
};
}
export * from './types/config.js';
export * from './types/edit_entity.js';
export * from './types/snaks.js';
//# sourceMappingURL=index.js.map