"use strict"; const assert = require("assert"); const pickBestOption = require("./pick-best-option"); const mapManufacturer = require("./map-manufacturer"); const normalizeString = require("./normalize-string"); module.exports = function createDatasheet(api, data) { let { createItem, mergeItem } = api; let productID = normalizeString(data.productID); let manufacturer = normalizeString(data.manufacturer); let model = normalizeString(data.name); let description = normalizeString(data.description); let url = normalizeString(data.url); let source = data.source; let priority = data.priority; assert(manufacturer != null); assert(model != null); if (url != null) { let mappedManufacturer = mapManufacturer(manufacturer); let mappedID = `datasheet:${mappedManufacturer}:${model}`; let unmappedID = `datasheet:${manufacturer}:${model}`; createItem({ id: mappedID, update: (data) => pickBestOption(data, { priority: priority, source: source, manufacturer: mappedManufacturer, productID: productID, name: model, description: description, url: url }) }); if (mappedID !== unmappedID) { // NOTE: This is to get rid of items which were created before a mapping for that manufacturer existed; it essentially removes and redirects the old name into the new, normalized name. mergeItem({ from: unmappedID, into: mappedID, merge: (into, from) => pickBestOption(from, into) }); } } };