New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@citation-js/plugin-bibtex

Package Overview
Dependencies
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@citation-js/plugin-bibtex - npm Package Compare versions

Comparing version 0.4.7 to 0.4.8

4

lib-mjs/index.js

@@ -5,4 +5,4 @@ import { plugins } from '@citation-js/core';

plugins.add(ref, {
input: input,
output: output
input,
output
});

@@ -9,3 +9,3 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

var bibTxtRegex = {
const bibTxtRegex = {
splitEntries: /\n\s*(?=\[)/g,

@@ -17,7 +17,7 @@ parseEntry: /^\[(.+?)\]\s*(?:\n([\s\S]+))?$/,

var parseBibTxtEntry = function parseBibTxtEntry(entry) {
var _ref = entry.match(bibTxtRegex.parseEntry) || [],
_ref2 = _slicedToArray(_ref, 3),
label = _ref2[1],
pairs = _ref2[2];
const parseBibTxtEntry = entry => {
const _ref = entry.match(bibTxtRegex.parseEntry) || [],
_ref2 = _slicedToArray(_ref, 3),
label = _ref2[1],
pairs = _ref2[2];

@@ -27,11 +27,9 @@ if (!label || !pairs) {

} else {
var out = {
const out = {
type: 'book',
label: label,
label,
properties: {}
};
pairs.trim().split(bibTxtRegex.splitPairs).filter(function (v) {
return v;
}).forEach(function (pair) {
var _pair$split = pair.split(bibTxtRegex.splitPair),
pairs.trim().split(bibTxtRegex.splitPairs).filter(v => v).forEach(pair => {
let _pair$split = pair.split(bibTxtRegex.splitPair),
_pair$split2 = _slicedToArray(_pair$split, 2),

@@ -56,6 +54,4 @@ key = _pair$split2[0],

var parseBibTxt = function parseBibTxt(src) {
return src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry);
};
const parseBibTxt = src => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry);
export { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry };

@@ -6,11 +6,11 @@ import * as text from './text';

import * as bibtxt from './bibtxt';
export var ref = '@bibtex';
export var parsers = {
text: text,
json: json,
prop: prop,
type: type,
bibtxt: bibtxt
export const ref = '@bibtex';
export const parsers = {
text,
json,
prop,
type,
bibtxt
};
export var formats = {
export const formats = {
'@bibtex/text': {

@@ -17,0 +17,0 @@ parse: text.parse,

@@ -12,14 +12,14 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

var parseBibTeXJSON = function parseBibTeXJSON(data) {
return [].concat(data).map(function (entry) {
var newEntry = {};
var toMerge = [];
const parseBibTeXJSON = function parseBibTeXJSON(data) {
return [].concat(data).map(entry => {
const newEntry = {};
let toMerge = [];
for (var prop in entry.properties) {
var oldValue = entry.properties[prop];
for (let prop in entry.properties) {
const oldValue = entry.properties[prop];
var _ref = parseBibTeXProp(prop, oldValue) || [],
_ref2 = _slicedToArray(_ref, 2),
cslField = _ref2[0],
cslValue = _ref2[1];
const _ref = parseBibTeXProp(prop, oldValue) || [],
_ref2 = _slicedToArray(_ref, 2),
cslField = _ref2[0],
cslValue = _ref2[1];

@@ -42,14 +42,9 @@ if (cslField) {

toMerge.forEach(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
cslField = _ref4[0],
value = _ref4[1];
toMerge.forEach(([cslField, value]) => {
const props = cslField.split(/:|\./g);
let cursor = newEntry;
var props = cslField.split(/:|\./g);
var cursor = newEntry;
while (props.length > 0) {
var _prop = props.shift();
cursor = cursor[_prop] || (cursor[_prop] = !props.length ? value : isNaN(+props[0]) ? {} : []);
const prop = props.shift();
cursor = cursor[prop] || (cursor[prop] = !props.length ? value : isNaN(+props[0]) ? {} : []);
}

@@ -56,0 +51,0 @@ });

import { logger } from '@citation-js/core';
import { parse as parseName } from '@citation-js/name';
import { parse as parseDate } from '@citation-js/date';
var months = [/jan(uary)?\.?/i, /feb(ruary)?\.?/i, /mar(ch)?\.?/i, /apr(il)?\.?/i, /may\.?/i, /jun(e)?\.?/i, /jul(y)?\.?/i, /aug(ust)?\.?/i, /sep(tember)?\.?/i, /oct(ober)?\.?/i, /nov(ember)?\.?/i, /dec(ember)?\.?/i];
const months = [/jan(uary)?\.?/i, /feb(ruary)?\.?/i, /mar(ch)?\.?/i, /apr(il)?\.?/i, /may\.?/i, /jun(e)?\.?/i, /jul(y)?\.?/i, /aug(ust)?\.?/i, /sep(tember)?\.?/i, /oct(ober)?\.?/i, /nov(ember)?\.?/i, /dec(ember)?\.?/i];
var parseBibtexDate = function parseBibtexDate(value) {
const parseBibtexDate = function parseBibtexDate(value) {
if (/{|}/.test(value)) {

@@ -13,5 +13,3 @@ return {

return {
'date-parts': value.split(/[—–]/).map(function (part) {
return parseDate(part)['date-parts'][0];
})
'date-parts': value.split(/[—–]/).map(part => parseDate(part)['date-parts'][0])
};

@@ -23,3 +21,3 @@ } else {

var parseBibtexName = function parseBibtexName(name) {
const parseBibtexName = function parseBibtexName(name) {
if (/{|}/.test(name)) {

@@ -34,15 +32,9 @@ return {

var parseBibtexNameList = function parseBibtexNameList(list) {
var literals = [];
list = list.replace(/%/g, '%0').replace(/{.*?}/g, function (m) {
return "%[".concat(literals.push(m) - 1, "]");
});
return list.split(' and ').map(function (name) {
return name.replace(/%\[(\d+)\]/g, function (_, i) {
return literals[+i];
}).replace(/%0/g, '%');
}).map(parseBibtexName);
const parseBibtexNameList = function parseBibtexNameList(list) {
const literals = [];
list = list.replace(/%/g, '%0').replace(/{.*?}/g, m => `%[${literals.push(m) - 1}]`);
return list.split(' and ').map(name => name.replace(/%\[(\d+)\]/g, (_, i) => literals[+i]).replace(/%0/g, '%')).map(parseBibtexName);
};
var richTextMappings = {
const richTextMappings = {
textit: 'i',

@@ -55,15 +47,15 @@ textbf: 'b',

var parseBibtexRichText = function parseBibtexRichText(text) {
var tokens = text.split(/((?:\\[a-z]+)?{|})/);
var closingTags = [];
var hasTopLevelTag = text[0] === '{' && text[text.length - 1] === '}';
tokens = tokens.map(function (token, index) {
const parseBibtexRichText = function parseBibtexRichText(text) {
let tokens = text.split(/((?:\\[a-z]+)?{|})/);
let closingTags = [];
let hasTopLevelTag = text[0] === '{' && text[text.length - 1] === '}';
tokens = tokens.map((token, index) => {
if (index % 2 === 0) {
return token;
} else if (token[0] === '\\') {
var tag = richTextMappings[token.slice(1, -1)];
let tag = richTextMappings[token.slice(1, -1)];
if (tag) {
closingTags.push("</".concat(tag, ">"));
return "<".concat(tag, ">");
closingTags.push(`</${tag}>`);
return `<${tag}>`;
} else {

@@ -93,3 +85,3 @@ closingTags.push('');

var propMap = {
const propMap = {
address: 'publisher-place',

@@ -126,3 +118,3 @@ author: true,

var parseBibTeXProp = function parseBibTeXProp(name, value) {
const parseBibTeXProp = function parseBibTeXProp(name, value) {
if (!propMap.hasOwnProperty(name)) {

@@ -135,5 +127,5 @@ logger.unmapped('[plugin-bibtex]', 'property', name);

var cslProp = propMap[name] === true ? name : propMap[name];
const cslProp = propMap[name] === true ? name : propMap[name];
var cslValue = function (name, value) {
const cslValue = ((name, value) => {
switch (name) {

@@ -151,5 +143,3 @@ case 'author':

case 'issued:date-parts.0.1':
return parseFloat(value) ? value : months.findIndex(function (month) {
return month.test(value);
}) + 1;
return parseFloat(value) ? value : months.findIndex(month => month.test(value)) + 1;

@@ -165,3 +155,3 @@ case 'page':

}
}(cslProp, value);
})(cslProp, value);

@@ -168,0 +158,0 @@ return [cslProp, cslValue];

import { util } from '@citation-js/core';
import varBibTeXTokens from './tokens.json';
var tokenPattern = /\\url|\\href|{\\[a-zA-Z]+}|\$\\[a-zA-Z]+\$|\$[_^]{[0-9()+=\-n]}\$|`{2,3}|'{2,3}|-{2,3}|[!?]!|!\?|{\\~}|\\[#$%&~_^\\{}]|{\\(?:[a-z] |[`"'^~=.])\\?[a-zA-Z]}|[\s\S]/g;
var whitespace = /^\s$/;
var syntax = /^[@{}"=,\\]$/;
var delimiters = {
const tokenPattern = /\\url|\\href|{\\[a-zA-Z]+}|\$\\[a-zA-Z]+\$|\$[_^]{[0-9()+=\-n]}\$|`{2,3}|'{2,3}|-{2,3}|[!?]!|!\?|{\\~}|\\[#$%&~_^\\{}]|{\\(?:[a-z] |[`"'^~=.])\\?[a-zA-Z]}|[\s\S]/g;
const whitespace = /^\s$/;
const syntax = /^[@{}"=,\\]$/;
const delimiters = {
'"': '"',

@@ -12,3 +12,3 @@ '{': '}',

var getTokenizedBibtex = function getTokenizedBibtex(str) {
const getTokenizedBibtex = function getTokenizedBibtex(str) {
str = str.replace(/(\\[`"'^~=.]){\\?([A-Za-z])}/g, '{$1$2}').replace(/(\\[a-z]) ?{\\?([A-Za-z])}/g, '{$1 $2}');

@@ -18,6 +18,6 @@ return str.match(tokenPattern);

var parseBibTeX = function parseBibTeX(str) {
var entries = [];
var tokens = getTokenizedBibtex(str);
var stack = new util.TokenStack(tokens);
const parseBibTeX = function parseBibTeX(str) {
const entries = [];
const tokens = getTokenizedBibtex(str);
const stack = new util.TokenStack(tokens);
stack.consumeWhitespace();

@@ -30,27 +30,25 @@

stack.consumeWhitespace();
var type = stack.consume([whitespace, syntax], {
const type = stack.consume([whitespace, syntax], {
inverse: true
}).toLowerCase();
stack.consumeToken('{');
var label = stack.consume([whitespace, syntax], {
const label = stack.consume([whitespace, syntax], {
inverse: true
});
stack.consumeToken(',');
var properties = {};
const properties = {};
var _loop = function _loop() {
var key = stack.consume([whitespace, '='], {
while (stack.tokensLeft()) {
const key = stack.consume([whitespace, '='], {
inverse: true
}).toLowerCase();
stack.consumeToken('=');
var startDelimiter = stack.consume(/^({|"|)$/g);
var endDelimiter = delimiters[startDelimiter];
const startDelimiter = stack.consume(/^({|"|)$/g);
const endDelimiter = delimiters[startDelimiter];
if (!delimiters.hasOwnProperty(startDelimiter)) {
throw new SyntaxError("Unexpected field delimiter at index ".concat(stack.index, ". Expected ") + "".concat(Object.keys(delimiters).map(function (v) {
return "\"".concat(v, "\"");
}).join(', '), "; got \"").concat(startDelimiter, "\""));
throw new SyntaxError(`Unexpected field delimiter at index ${stack.index}. Expected ` + `${Object.keys(delimiters).map(v => `"${v}"`).join(', ')}; got "${startDelimiter}"`);
}
var tokenMap = function tokenMap(token) {
const tokenMap = token => {
if (varBibTeXTokens.hasOwnProperty(token)) {

@@ -61,3 +59,3 @@ return varBibTeXTokens[token];

} else if (token.length > 1) {
throw new SyntaxError("Escape sequence not recognized: ".concat(token));
throw new SyntaxError(`Escape sequence not recognized: ${token}`);
} else {

@@ -68,4 +66,4 @@ return token;

var openBrackets = 0;
var val = stack.consume(function (token, index) {
let openBrackets = 0;
const val = stack.consume((token, index) => {
if (token === '{') {

@@ -76,7 +74,5 @@ openBrackets++;

if (stack.tokensLeft() < endDelimiter.length) {
throw new SyntaxError("Unmatched delimiter at index ".concat(stack.index, ": Expected ").concat(endDelimiter));
throw new SyntaxError(`Unmatched delimiter at index ${stack.index}: Expected ${endDelimiter}`);
} else if (!endDelimiter.length) {
return ![whitespace, syntax].some(function (rgx) {
return rgx.test(token);
});
return ![whitespace, syntax].some(rgx => rgx.test(token));
} else {

@@ -86,3 +82,3 @@ return token === '}' && openBrackets-- || !stack.matchesSequence(endDelimiter);

}, {
tokenMap: tokenMap
tokenMap
});

@@ -94,3 +90,3 @@ properties[key] = val.replace(/[ \t\n]+/g, ' ');

if (stack.matches('}')) {
return "break";
break;
}

@@ -104,10 +100,4 @@

if (stack.matches('}')) {
return "break";
break;
}
};
while (stack.tokensLeft()) {
var _ret = _loop();
if (_ret === "break") break;
}

@@ -126,5 +116,5 @@

entries.push({
type: type,
label: label,
properties: properties
type,
label,
properties
});

@@ -131,0 +121,0 @@ }

import { logger } from '@citation-js/core';
var typeMap = {
const typeMap = {
article: 'article-journal',

@@ -21,3 +21,3 @@ book: 'book',

var parseBibTeXType = function parseBibTeXType(pubType) {
const parseBibTeXType = function parseBibTeXType(pubType) {
if (!typeMap.hasOwnProperty(pubType)) {

@@ -24,0 +24,0 @@ logger.unmapped('[plugin-bibtex]', 'publication type', pubType);

import getBibTeXJSON from './json';
import { plugins } from '@citation-js/core';
var getBibtxt = function getBibtxt(src, dict, opts) {
var entries = src.map(function (entry) {
var bib = getBibTeXJSON(entry, opts);
const getBibtxt = function getBibtxt(src, dict, opts) {
const entries = src.map(entry => {
const bib = getBibTeXJSON(entry, opts);
bib.properties.type = bib.type;
var properties = Object.keys(bib.properties).map(function (prop) {
return dict.listItem.join("".concat(prop, ": ").concat(bib.properties[prop]));
}).join('');
return dict.entry.join("[".concat(bib.label, "]").concat(dict.list.join(properties)));
const properties = Object.keys(bib.properties).map(prop => dict.listItem.join(`${prop}: ${bib.properties[prop]}`)).join('');
return dict.entry.join(`[${bib.label}]${dict.list.join(properties)}`);
}).join('\n');

@@ -16,4 +14,4 @@ return dict.bibliographyContainer.join(entries);

var getBibtxtWrapper = function getBibtxtWrapper(src, html) {
var dict = plugins.dict.get(html ? 'html' : 'text');
const getBibtxtWrapper = function getBibtxtWrapper(src, html) {
const dict = plugins.dict.get(html ? 'html' : 'text');
return getBibtxt(src, dict);

@@ -20,0 +18,0 @@ };

@@ -6,8 +6,7 @@ import { plugins } from '@citation-js/core';

var factory = function factory(formatter) {
return function (data) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var type = opts.type,
_opts$format = opts.format,
format = _opts$format === void 0 ? type || 'text' : _opts$format;
const factory = function factory(formatter) {
return function (data, opts = {}) {
const type = opts.type,
_opts$format = opts.format,
format = _opts$format === void 0 ? type || 'text' : _opts$format;

@@ -14,0 +13,0 @@ if (format === 'object') {

@@ -7,14 +7,12 @@ import fetchBibTeXType from './type';

function getNames(names) {
return names.map(function (name) {
return getName(name, true);
}).join(' and ');
return names.map(name => getName(name, true)).join(' and ');
}
var getBibTeXJSON = function getBibTeXJSON(src, opts) {
var res = {
const getBibTeXJSON = function getBibTeXJSON(src, opts) {
const res = {
label: getBibTeXLabel(src, opts),
type: fetchBibTeXType(src.type)
};
var props = {};
var simple = {
const props = {};
const simple = {
'collection-title': 'series',

@@ -40,3 +38,3 @@ 'container-title': ['chapter', 'inproceedings'].includes(src.type) ? 'booktitle' : 'journal',

for (var prop in simple) {
for (let prop in simple) {
if (src.hasOwnProperty(prop)) {

@@ -56,3 +54,3 @@ props[simple[prop]] = src[prop] + '';

if (!src.note && src.accessed) {
props.note = "[Online; accessed ".concat(getDate(src.accessed), "]");
props.note = `[Online; accessed ${getDate(src.accessed)}]`;
}

@@ -65,3 +63,3 @@

if (src.issued) {
var dateParts = src.issued['date-parts'][0];
let dateParts = src.issued['date-parts'][0];

@@ -68,0 +66,0 @@ if (dateParts.length > 0) {

@@ -1,14 +0,10 @@

var stopWords = ['the', 'a', 'an'];
const stopWords = ['the', 'a', 'an'];
var safeSlug = function safeSlug(text) {
return text.replace(/<\/?.*?>/g, '').split(/[\u0020-\u002F\u003A-\u0040\u005B-\u005E\u0060\u007B-\u007F]+/).find(function (word) {
return word.length && !stopWords.includes(word.toLowerCase());
});
const safeSlug = text => {
return text.replace(/<\/?.*?>/g, '').split(/[\u0020-\u002F\u003A-\u0040\u005B-\u005E\u0060\u007B-\u007F]+/).find(word => word.length && !stopWords.includes(word.toLowerCase()));
};
var getBibTeXLabel = function getBibTeXLabel() {
var entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _opts$generateLabel = opts.generateLabel,
generateLabel = _opts$generateLabel === void 0 ? true : _opts$generateLabel;
const getBibTeXLabel = function getBibTeXLabel(entry = {}, opts = {}) {
const _opts$generateLabel = opts.generateLabel,
generateLabel = _opts$generateLabel === void 0 ? true : _opts$generateLabel;

@@ -21,3 +17,3 @@ if (entry['citation-label']) {

var res = '';
let res = '';

@@ -24,0 +20,0 @@ if (entry.author) {

import getBibTeXJSON from './json';
import { plugins } from '@citation-js/core';
var syntaxTokens = {
const syntaxTokens = {
'|': '{\\textbar}',

@@ -15,8 +15,6 @@ '<': '{\\textless}',

function escapeValue(value) {
return value.replace(/[|<>~^\\{}]/g, function (match) {
return syntaxTokens[match];
});
return value.replace(/[|<>~^\\{}]/g, match => syntaxTokens[match]);
}
var richTextMappings = {
const richTextMappings = {
'i': '\\textit{',

@@ -32,4 +30,4 @@ 'b': '\\textbf{',

function serializeRichTextValue(value) {
var tokens = value.split(/<(\/.*?|i|b|sc|sup|sub|span.*?)>/g);
tokens = tokens.map(function (token, index) {
let tokens = value.split(/<(\/.*?|i|b|sc|sup|sub|span.*?)>/g);
tokens = tokens.map((token, index) => {
if (index % 2 === 0) {

@@ -46,3 +44,3 @@ return escapeValue(token);

var richTextFields = ['title'];
const richTextFields = ['title'];

@@ -56,7 +54,7 @@ function serializeValue(prop, value, dict) {

return dict.listItem.join("".concat(prop, " = {").concat(value, "},"));
return dict.listItem.join(`${prop} = {${value}},`);
}
function serializeEntry(entry, dict, opts) {
var _getBibTeXJSON = getBibTeXJSON(entry, opts),
let _getBibTeXJSON = getBibTeXJSON(entry, opts),
type = _getBibTeXJSON.type,

@@ -66,17 +64,13 @@ label = _getBibTeXJSON.label,

properties = Object.keys(properties).map(function (prop) {
return serializeValue(prop, properties[prop], dict);
}).join('');
return dict.entry.join("@".concat(type, "{").concat(label, ",").concat(dict.list.join(properties), "}"));
properties = Object.keys(properties).map(prop => serializeValue(prop, properties[prop], dict)).join('');
return dict.entry.join(`@${type}{${label},${dict.list.join(properties)}}`);
}
var getBibtex = function getBibtex(src, dict, opts) {
var entries = src.map(function (entry) {
return serializeEntry(entry, dict, opts);
}).join('');
const getBibtex = function getBibtex(src, dict, opts) {
let entries = src.map(entry => serializeEntry(entry, dict, opts)).join('');
return dict.bibliographyContainer.join(entries);
};
var getBibTeXWrapper = function getBibTeXWrapper(src, html) {
var dict = plugins.dict.get(html ? 'html' : 'text');
const getBibTeXWrapper = function getBibTeXWrapper(src, html) {
const dict = plugins.dict.get(html ? 'html' : 'text');
return getBibtex(src, dict);

@@ -83,0 +77,0 @@ };

import { logger } from '@citation-js/core';
var bibtexTypes = {
const bibtexTypes = {
article: 'article',

@@ -21,3 +21,3 @@ 'article-journal': 'article',

var fetchBibTeXType = function fetchBibTeXType(pubType) {
const fetchBibTeXType = function fetchBibTeXType(pubType) {
if (pubType in bibtexTypes) {

@@ -24,0 +24,0 @@ return bibtexTypes[pubType];

{
"name": "@citation-js/plugin-bibtex",
"version": "0.4.7",
"version": "0.4.8",
"description": "Plugin for BibTeX formats for Citation.js",

@@ -39,3 +39,3 @@ "keywords": [

"devDependencies": {
"@citation-js/core": "^0.4.7"
"@citation-js/core": "^0.4.8"
},

@@ -45,3 +45,3 @@ "peerDependencies": {

},
"gitHead": "96d42cc13bf1ce0a53f54f186007ff40b15d1460"
"gitHead": "0be8501cbe0541828e73912230b9d56762038f8d"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc