{"version":3,"file":"rehype-citation.mjs","sources":["../../src/regex.js","../../src/parse-citation.js","../../src/utils.js","../../src/html-transform-browser.js","../../src/generator.js","../../src/gen-citation.js","../../src/gen-biblio.js","../../src/gen-footnote.js","../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/buffer/index.js","../../node_modules/sync-fetch/browser.js","../../node_modules/fetch-ponyfill/build/fetch-browser.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.js","../../src/citation-js/plugin-bibtex/input/constants.js","../../src/citation-js/plugin-bibtex/input/required.js","../../src/citation-js/plugin-bibtex/input/fieldTypes.js","../../src/citation-js/plugin-bibtex/input/unicode.js","../../src/citation-js/plugin-bibtex/config.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.js","../../src/citation-js/plugin-bibtex/mapping/shared.js","../../src/citation-js/plugin-bibtex/mapping/biblatex.js","../../src/citation-js/plugin-bibtex/mapping/bibtex.js","../../src/citation-js/plugin-bibtex/mapping/crossref.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js","../../src/index.js","../../styles/vancouver.js","../../styles/harvard1.js","../../styles/mla.js","../../styles/chicago.js"],"sourcesContent":["// Regex adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n\n/**\n * Citation detection: The first alternative matches \"full\" citations surrounded\n * by square brackets, whereas the second one matches in-text citations,\n * optionally with suffixes.\n *\n * * Group 1 matches regular \"full\" citations\n * * Group 2 matches in-text citations (not surrounded by brackets)\n * * Group 3 matches optional square-brackets suffixes to group 2 matches\n *\n * For more information, see https://pandoc.org/MANUAL.html#extension-citations\n *\n * @var {RegExp}\n */\nexport const citationRE =\n /(?:\\[([^[\\]]*@[^[\\]]+)\\])|(?<=\\s|^|(-))(?:@([\\p{L}\\d_][^\\s]*[\\p{L}\\d_]|\\{.+\\})(?:\\s+\\[(.*?)\\])?)/u\n\n/**\n * I hate everything at this. This can match every single possible variation on\n * whatever the f*** you can possibly do within square brackets according to the\n * documentation. I opted for named groups for these because otherwise I have no\n * idea what I have been doing here.\n *\n * * Group prefix: Contains the prefix, ends with a dash if we should suppress the author\n * * Group citekey: Contains the actual citekey, can be surrounded in curly brackets\n * * Group explicitLocator: Contains an explicit locator statement. If given, we MUST ignore any form of locator in the suffix\n * * Group explicitLocatorInSuffix: Same as above, but not concatenated to the citekey\n * * Group suffix: Contains the suffix, but may start with a locator (if explicitLocator and explicitLocatorInSuffix are not given)\n *\n * @var {RegExp}\n */\nexport const fullCitationRE =\n /(?.+)?(?:@(?[\\p{L}\\d_][^\\s{]*[\\p{L}\\d_]|\\{.+\\}))(?:\\{(?.*)\\})?(?:,\\s+(?:\\{(?.*)\\})?(?.*))?/u\n\n/**\n * This regular expression matches locator ranges, like the following:\n *\n * * 23-45, and further (here it matches up to, not including the comma)\n * * 45\n * * 15423\n * * 14235-12532\n * * 12-34, 23, 56\n * * 12, 23-14, 23\n * * 12, 54, 12-23\n * * 1, 1-4\n * * 3\n * * NEW NEW NEW: Now also matches Roman numerals as sometimes used in forewords!\n *\n * @var {RegExp}\n */\nexport const locatorRE = /^(?:[\\d, -]*\\d|[ivxlcdm, -]*[ivxlcdm])/i\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').CiteItemSuffix} CiteItemSuffix\n */\n\nimport { fullCitationRE, locatorRE } from './regex.js'\n\n/**\n * The locatorLabels have been sourced from the Citr library. Basically it's just\n * a map with valid CSL locator labels and an array of possible natural labels\n * which a user might want to write (instead of the standardized labels).\n *\n * @var {{ [key: string]: string[] }}}\n */\nconst locatorLabels = {\n book: ['Buch', 'Bücher', 'B.', 'book', 'books', 'bk.', 'bks.', 'livre', 'livres', 'liv.'],\n chapter: ['Kapitel', 'Kap.', 'chapter', 'chapters', 'chap.', 'chaps', 'chapitre', 'chapitres'],\n column: ['Spalte', 'Spalten', 'Sp.', 'column', 'columns', 'col.', 'cols', 'colonne', 'colonnes'],\n figure: ['Abbildung', 'Abbildungen', 'Abb.', 'figure', 'figures', 'fig.', 'figs'],\n folio: ['Blatt', 'Blätter', 'Fol.', 'folio', 'folios', 'fol.', 'fols', 'fᵒ', 'fᵒˢ'],\n issue: [\n 'Nummer',\n 'Nummern',\n 'Nr.',\n 'number',\n 'numbers',\n 'no.',\n 'nos.',\n 'numéro',\n 'numéros',\n 'nᵒ',\n 'nᵒˢ',\n ],\n line: ['Zeile', 'Zeilen', 'Z', 'line', 'lines', 'l.', 'll.', 'ligne', 'lignes'],\n note: ['Note', 'Noten', 'N.', 'note', 'notes', 'n.', 'nn.'],\n opus: ['Opus', 'Opera', 'op.', 'opus', 'opera', 'opp.'],\n page: ['Seite', 'Seiten', 'S.', 'page', 'pages', 'p.', 'pp.'],\n paragraph: [\n 'Absatz',\n 'Absätze',\n 'Abs.',\n '¶',\n '¶¶',\n 'paragraph',\n 'paragraphs',\n 'para.',\n 'paras',\n 'paragraphe',\n 'paragraphes',\n 'paragr.',\n ],\n part: ['Teil', 'Teile', 'part', 'parts', 'pt.', 'pts', 'partie', 'parties', 'part.'],\n section: [\n 'Abschnitt',\n 'Abschnitte',\n 'Abschn.',\n '§',\n '§§',\n 'section',\n 'sections',\n 'sec.',\n 'secs',\n 'sect.',\n ],\n 'sub verbo': ['sub verbo', 'sub verbis', 's. v.', 's. vv.', 's.v.', 's.vv.'],\n verse: ['Vers', 'Verse', 'V.', 'verse', 'verses', 'v.', 'vv.', 'verset', 'versets'],\n volume: ['Band', 'Bände', 'Bd.', 'Bde.', 'volume', 'volumes', 'vol.', 'vols.'],\n}\n\n/**\n * Parses a given citation string and return entries and isComposite flag required for cite-proc.\n * Adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n *\n * @param {RegExpMatchArray} regexMatch Cite string in the form of '[@item]' or '@item'\n * @return {[CiteItem[], boolean]} [entries, isComposite]\n */\nexport const parseCitation = (regexMatch) => {\n /** @type {CiteItem[]} */\n let entries = []\n let isComposite = false\n const fullCitation = regexMatch[1]\n const inTextSuppressAuthor = regexMatch[2]\n const inTextCitation = regexMatch[3]\n const optionalSuffix = regexMatch[4]\n\n if (fullCitation !== undefined) {\n // Handle citations in the form of [@item1; @item2]\n for (const citationPart of fullCitation.split(';')) {\n const match = fullCitationRE.exec(citationPart.trim())\n if (match === null) {\n continue // Faulty citation\n }\n // Prefix is the portion before @ e.g. [see @item1] or an empty string\n // We explicitly cast groups since we have groups in our RegExp and as\n // such the groups object will be set.\n /** @type {CiteItem} */\n const thisCitation = {\n id: match.groups.citekey.replace(/{(.+)}/, '$1'),\n prefix: undefined,\n locator: undefined,\n label: 'page',\n 'suppress-author': false,\n suffix: undefined,\n }\n\n // First, deal with the prefix. The speciality here is that it can\n // indicate if we should suppress the author.\n const rawPrefix = match.groups.prefix\n if (rawPrefix !== undefined) {\n thisCitation['suppress-author'] = rawPrefix.trim().endsWith('-')\n if (thisCitation['suppress-author']) {\n thisCitation.prefix = rawPrefix.substring(0, rawPrefix.trim().length - 1).trim()\n } else {\n thisCitation.prefix = rawPrefix.trim()\n }\n }\n\n // Second, deal with the suffix. This one can be much more tricky than\n // the prefix. We have three alternatives where the locator may be\n // present: If we have an explicitLocator or an explicitLocatorInSuffix,\n // we should extract the locator from there and leave the actual suffix\n // untouched. Only if those two alternatives are not present, then we\n // have a look at the rawSuffix and extract a (potential) locator.\n const explicitLocator = match.groups.explicitLocator\n const explicitLocatorInSuffix = match.groups.explicitLocatorInSuffix\n const rawSuffix = match.groups.suffix\n\n let suffixToParse\n let containsLocator = true\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n // Potential locator in rawSuffix. Only in this case should we overwrite\n // the suffix (hence the same if-condition below)\n suffixToParse = rawSuffix\n containsLocator = false\n } else if (explicitLocatorInSuffix !== undefined || explicitLocator !== undefined) {\n suffixToParse = explicitLocator !== undefined ? explicitLocator : explicitLocatorInSuffix\n thisCitation.suffix = rawSuffix?.trim()\n }\n\n const { label, locator, suffix } = parseSuffix(suffixToParse, containsLocator)\n thisCitation.locator = locator\n\n if (label !== undefined) {\n thisCitation.label = label\n }\n\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n thisCitation.suffix = suffix\n } else if (suffix !== undefined && thisCitation.locator !== undefined) {\n // If we're here, we should not change the suffix, but parseSuffix may\n // have put something into the suffix return. If we're here, that will\n // definitely be a part of the locator.\n thisCitation.locator += suffix\n }\n\n entries.push(thisCitation)\n }\n } else {\n // We have an in-text citation, so we can take a shortcut\n isComposite = true\n entries.push({\n prefix: undefined,\n id: inTextCitation.replace(/{(.+)}/, '$1'),\n 'suppress-author': inTextSuppressAuthor !== undefined,\n ...parseSuffix(optionalSuffix, false), // Populate more depending on the suffix\n })\n }\n return [entries, isComposite]\n}\n\n/**\n * This takes a suffix and extracts optional label and locator from this. Pass\n * true for the containsLocator property to indicate to this function that what\n * it got was not a regular suffix with an optional locator, but an explicit\n * locator so it knows it just needs to look for an optional label.\n *\n * @param {string} suffix The suffix to parse\n * @param {boolean} containsLocator If true, forces parseSuffix to return a locator\n *\n * @return {CiteItemSuffix} An object containing three optional properties locator, label, or suffix.\n */\nfunction parseSuffix(suffix, containsLocator) {\n /** @type {CiteItemSuffix} */\n const retValue = {\n locator: undefined,\n label: 'page',\n suffix: undefined,\n }\n\n if (suffix === undefined) {\n return retValue\n }\n\n // Make sure the suffix does not start or end with spaces\n suffix = suffix.trim()\n\n // If there is a label, the suffix must start with it\n for (const label in locatorLabels) {\n for (const natural of locatorLabels[label]) {\n if (suffix.toLowerCase().startsWith(natural.toLowerCase())) {\n retValue.label = label\n if (containsLocator) {\n // The suffix actually is the full locator, we just had to extract\n // the label from it. There is no remaining suffix.\n retValue.locator = suffix.substr(natural.length).trim()\n } else {\n // The caller indicated that this is a regular suffix, so we must also\n // extract the locator from what is left after label extraction.\n retValue.suffix = suffix.substr(natural.length).trim()\n const match = locatorRE.exec(retValue.suffix)\n if (match !== null) {\n retValue.locator = match[0] // Extract the full match\n retValue.suffix = retValue.suffix.substr(match[0].length).trim()\n }\n }\n\n return retValue // Early exit\n }\n }\n }\n\n // If we're here, there was no explicit label given, but the caller has indicated\n // that this suffix MUST contain a locator. This means that the whole suffix is\n // the locator.\n if (containsLocator) {\n retValue.locator = suffix\n } else {\n // The caller has not indicated that the whole suffix is the locator, so it\n // can be at the beginning. We only accept simple page/number ranges here.\n // For everything, the user should please be more specific.\n const match = locatorRE.exec(suffix)\n if (match !== null) {\n retValue.locator = match[0] // Full match is the locator\n retValue.suffix = suffix.substr(match[0].length).trim() // The rest is the suffix.\n }\n }\n\n return retValue\n}\n","import fetch from 'cross-fetch'\n\nexport const isNode = typeof window === 'undefined'\n\nexport const readFile = async (path) => {\n if (isValidHttpUrl(path)) {\n try {\n const response = await fetch(path)\n return await response.text()\n } catch (error) {\n throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n }\n } else {\n if (isNode) {\n try {\n return import('fs').then((fs) => fs.readFileSync(path, 'utf8'))\n } catch (error) {\n throw new Error(`Cannot read non valid URL in node env.`)\n }\n }\n }\n}\n\n/**\n * Check if valid URL\n * https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n *\n * @param {string} str\n * @return {boolean}\n */\nexport const isValidHttpUrl = (str) => {\n let url\n\n try {\n url = new URL(str)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:' || url.protocol === 'blob:'\n}\n\n/**\n * Get bibliography by merging options and vfile data\n *\n * @param {import('./generator.js').Options} options\n * @param {import('vfile').VFile} file\n */\nexport const getBibliography = async (options, file) => {\n /** @type {string[]} */\n let bibliography = []\n const frontmatterBibliography = getFrontmatterField(file, 'bibliography')\n if (options.bibliography) {\n bibliography =\n typeof options.bibliography === 'string' ? [options.bibliography] : options.bibliography\n } else if (frontmatterBibliography) {\n bibliography =\n typeof frontmatterBibliography === 'string'\n ? [frontmatterBibliography]\n : frontmatterBibliography\n }\n // If local path, get absolute path\n for (let i = 0; i < bibliography.length; i++) {\n if (!isValidHttpUrl(bibliography[i])) {\n // Case options.path is provided and non empty\n if (options.path) {\n // if node env we construct the full path using options.path\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(options.path, bibliography[i])\n )\n // else we throw as it's non valid http url\n } else {\n throw new Error(`Cannot read non valid bibliography URL.`)\n }\n // Case options.path is empt\n } else {\n // if node env we construct the full path using default `process.cwd`\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(file.cwd, bibliography[i])\n )\n // else as it's a non valid http url we throw as a base url must be provided using options.path\n } else {\n throw new Error(\n `Non valid bibliography URL: Provide a full valid path for biblio ${bibliography[i]} or set an appropriate \"options.path\"`\n )\n }\n }\n }\n }\n\n return bibliography\n}\n\n/**\n * Load CSL - supports predefined name from config.templates.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format CSL name e.g. apa or file path to CSL file\n * @param {string} root optional root path\n */\nexport const loadCSL = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.templates.data).includes(format)) {\n const cslName = `customCSL-${Math.random().toString(36).slice(2, 7)}`\n let cslPath = ''\n if (isValidHttpUrl(format)) cslPath = format\n else {\n if (isNode) cslPath = await import('path').then((path) => path.join(root, format))\n }\n try {\n config.templates.add(cslName, await readFile(cslPath))\n } catch (err) {\n throw new Error(`Input CSL option, ${format}, is invalid or is an unknown file.`)\n }\n return cslName\n } else {\n return format\n }\n}\n\n/**\n * Load locale - supports predefined name from config.locales.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format locale name\n * @param {string} root optional root path\n */\nexport const loadLocale = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.locales.data).includes(format)) {\n let localePath = ''\n if (isValidHttpUrl(format)) localePath = format\n else {\n if (isNode) localePath = await import('path').then((path) => path.join(root, format))\n }\n try {\n const file = await readFile(localePath)\n const xmlLangRe = /xml:lang=\"(.+)\"/\n const localeName = file.match(xmlLangRe)[1]\n config.locales.add(localeName, file)\n return localeName\n } catch (err) {\n throw new Error(`Input locale option, ${format}, is invalid or is an unknown file.`)\n }\n } else {\n return format\n }\n}\n\n/**\n * Get citation format\n *\n * @param {*} citeproc citeproc\n * @returns string\n */\nexport const getCitationFormat = (citeproc) => {\n const info = citeproc.cslXml.dataObj.children[0]\n const node = info.children.find((x) => x['attrs'] && x['attrs']['citation-format'])\n // citation-format takes 5 possible values\n // https://docs.citationstyles.org/en/stable/specification.html#toc-entry-14\n /** @type {'author-date' | 'author' | 'numeric' | 'note' | 'label'} */\n const citationFormat = node['attrs']['citation-format']\n return citationFormat\n}\n\n/**\n * Get registry objects that matches a list of relevantIds\n * If sorted is false, retrieve registry item in the order of the given relevantIds\n *\n * @param {*} citeproc citeproc\n * @param {string[]} relevantIds\n * @param {boolean} sorted\n * @return {*} registry objects that matches Ids, in the correct order\n */\nexport const getSortedRelevantRegistryItems = (citeproc, relevantIds, sorted) => {\n const res = []\n if (sorted) {\n // If sorted follow registry order\n for (const item of citeproc.registry.reflist) {\n if (relevantIds.includes(item.id)) res.push(item)\n }\n } else {\n // Otherwise follow the relevantIds\n for (const id of relevantIds) {\n res.push(citeproc.registry.reflist.find((x) => x.id === id))\n }\n }\n return res\n}\n\n/**\n * Split a string into two parts based on a given index position\n *\n * @param {string} str\n * @param {number} index\n * @return {string[]}\n */\nexport const split = (str, index) => {\n return [str.slice(0, index), str.slice(index)]\n}\n\n/**\n * Check if two registry objects belong to the same author\n * Currently only checks on family name\n *\n * @param {*} item registry object\n * @param {*} item2 registry object\n * @return {boolean}\n */\nexport const isSameAuthor = (item, item2) => {\n const authorList = item.ref.author\n const authorList2 = item2.ref.author\n if (authorList.length !== authorList2.length) return false\n for (let i = 0; i < authorList.length; i++) {\n if (authorList[i].family !== authorList2[i].family) return false\n }\n return true\n}\n\n/**\n * @typedef {Object} FrontmatterSource\n * @property {Record} [matter]\n * @property {Record} [frontmatter]\n * @property {{ frontmatter?: Record }} [astro]\n */\n\n/**\n * @param {{ data?: FrontmatterSource }} file\n * @param {string} fieldName\n * @returns {any}\n */\nexport const getFrontmatterField = (file, fieldName) => {\n if (!file || !file.data) {\n return undefined\n }\n\n const sources = [file.data.matter, file.data.frontmatter, file.data.astro?.frontmatter]\n\n for (const source of sources) {\n if (source && fieldName in source) {\n return source[fieldName]\n }\n }\n\n return undefined\n}\n\n/**\n * Get bibliography entry text for a citation ID\n *\n * @param {*} citeproc citeproc engine\n * @param {string} id citation ID\n * @return {string} formatted bibliography entry without HTML tags\n */\nexport const getBibliographyEntryText = (citeproc, id) => {\n try {\n // Save the current state\n const originalItemIds = [...citeproc.registry.mylist]\n\n // Since creating bibliography affects the state we need to save the current state and restore it\n citeproc.updateItems([id])\n const bibOutput = citeproc.makeBibliography([id])\n if (!bibOutput || !bibOutput[1] || bibOutput[1].length === 0) {\n citeproc.updateItems(originalItemIds)\n return ''\n }\n\n // Get the text\n let entryText = bibOutput[1][0].replace(/<[^>]*>/g, '')\n entryText = entryText.replace(/\\s+/g, ' ').trim()\n\n // Restore the original state\n citeproc.updateItems(originalItemIds)\n\n return entryText\n } catch (error) {\n console.error('Error getting bibliography entry text:', error)\n return ''\n }\n}\n","import { fromDom } from 'hast-util-from-dom'\n\n/**\n * Convert HTML to HAST node\n *\n * @param {string} html\n */\nexport const htmlToHast = (html) => {\n const frag = document.createRange().createContextualFragment(html)\n return fromDom(frag).children[0]\n}\n","/**\n * @typedef {import('hast').Node} Node\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('unist-util-visit').Visitor} Visitor\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { visit } from 'unist-util-visit'\nimport fetch from 'cross-fetch'\nimport { parseCitation } from './parse-citation.js'\nimport { genCitation } from './gen-citation.js'\nimport { genBiblioNode } from './gen-biblio.js'\nimport { genFootnoteSection } from './gen-footnote.js'\nimport { citationRE } from './regex.js'\nimport {\n isNode,\n isValidHttpUrl,\n readFile,\n getBibliography,\n loadCSL,\n loadLocale,\n getCitationFormat,\n getFrontmatterField,\n} from './utils.js'\n\nconst defaultCiteFormat = 'apa'\nconst permittedTags = ['div', 'p', 'span', 'li', 'td', 'th']\nconst idRoot = 'CITATION'\n\n/**\n * Rehype plugin that formats citations in markdown documents and insert bibliography in html format\n *\n * [-@wadler1990] --> (1990)\n * [@hughes1989, sec 3.4] --> (Hughes 1989, sec 3.4)\n * [see @wadler1990; and @hughes1989, pp. 4] --> (see Wadler 1990 and Hughes 1989, pp. 4)\n *\n * @param {*} Cite cite object from citation-js configured with the required CSLs\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypeCitationGenerator = (Cite) => {\n return (options = {}) => {\n return async (tree, file) => {\n /** @type {string[]} */\n let bibtexFile = []\n const inputCiteformat =\n /** @type {string} */\n options.csl || getFrontmatterField(file, 'csl') || defaultCiteFormat\n const noCite =\n /** @type {string[] | false} */\n options.noCite || getFrontmatterField(file, 'noCite') || false\n const inputLang = options.lang || 'en-US'\n const config = Cite.plugins.config.get('@csl')\n const citeFormat = await loadCSL(Cite, inputCiteformat, options.path)\n const lang = await loadLocale(Cite, inputLang, options.path)\n\n let bibliography = await getBibliography(options, file)\n if (bibliography.length === 0) {\n return\n }\n\n for (let i = 0; i < bibliography.length; i++) {\n /**\n * getBibibliography is building full path/url safely in both node and browser\n * If it's a valid http url, we can try to fetch safely \n * else we can try to read from file system safely \n */\n if (isValidHttpUrl(bibliography[i])) {\n try {\n const response = await fetch(bibliography[i])\n bibtexFile.push(await response.text())\n } catch (error) {\n throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n }\n } else {\n try {\n bibtexFile.push(await readFile(bibliography[i]))\n } catch (error) {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n const citations = new Cite(bibtexFile, { generateGraph: false })\n const citationIds = citations.data.map((x) => x.id)\n const citationPre = []\n const citationDict = {}\n let citationId = 1\n const citeproc = config.engine(citations.data, citeFormat, lang, 'html')\n /** @type {Mode} */\n const mode = citeproc.opt.xclass\n const citationFormat = getCitationFormat(citeproc)\n let parsedEntries = []\n visit(tree, 'text', (node, idx, parent) => {\n const match = node.value.match(citationRE)\n if (!match || ('tagName' in parent && !permittedTags.includes(parent.tagName))) return\n let citeStartIdx = match.index\n let citeEndIdx = match.index + match[0].length\n // If we have an in-text citation and we should suppress the author, the\n // match.index does NOT include the positive lookbehind, so we have to manually\n // shift \"from\" to one before.\n if (match[2] !== undefined) {\n citeStartIdx--\n }\n const newChildren = []\n // if preceding string\n if (citeStartIdx !== 0) {\n // create a new child node\n newChildren.push({\n type: 'text',\n value: node.value.slice(0, citeStartIdx),\n })\n }\n\n const [entries, isComposite] = parseCitation(match)\n parsedEntries = entries\n\n // If id is not in citation file (e.g. route alias or js package), abort process\n for (const citeItem of entries) {\n if (!citationIds.includes(citeItem.id)) return\n }\n const [citedText, citedTextNode] = genCitation(\n citeproc,\n mode,\n entries,\n idRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n )\n citationDict[citationId] = citedText\n\n // Prepare citationPre and citationId for the next cite instance\n citationPre.push([`${idRoot}-${citationId}`, 0])\n citationId = citationId + 1\n\n newChildren.push(citedTextNode)\n\n // if trailing string\n if (citeEndIdx < node.value.length) {\n newChildren.push({\n type: 'text',\n value: node.value.slice(citeEndIdx),\n })\n }\n\n // insert into the parent\n // @ts-ignore\n parent.children = [\n ...parent.children.slice(0, idx),\n ...newChildren,\n ...parent.children.slice(idx + 1),\n ]\n })\n\n if (noCite) {\n if (noCite.length === 1 && noCite[0] === '@*') {\n citeproc.updateItems(citationIds)\n } else {\n const mergedIds = citations.data\n .filter((x) => noCite.map((x) => x.replace('@', '')).includes(x['citation-key']))\n .map((x) => x.id)\n .concat(parsedEntries.map((x) => x.id))\n\n citeproc.updateItems(mergedIds)\n }\n }\n\n if (\n citeproc.registry.mylist.length >= 1 &&\n (!options.suppressBibliography || options.inlineBibClass?.length > 0)\n ) {\n const biblioNode = genBiblioNode(citeproc)\n let bilioInserted = false\n\n const biblioMap = {}\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node) => {\n const citekey = node.properties.id.split('-').slice(1).join('-')\n biblioMap[citekey] = { ...node }\n biblioMap[citekey].properties = { id: 'inlinebib-' + citekey }\n })\n\n // Insert it at ^ref, if not found insert it as the last element of the tree\n visit(tree, 'element', (node, idx, parent) => {\n // Add inline bibliography\n if (\n options.inlineBibClass?.length > 0 &&\n node.properties?.id?.toString().startsWith('citation-')\n ) {\n // id is citation--nash1951--nash1950--1\n const [, ...citekeys] = node.properties.id.toString().split('--')\n const citationID = citekeys.pop()\n\n /** @type {Element} */\n const inlineBibNode = {\n type: 'element',\n tagName: 'div',\n properties: {\n className: options.inlineBibClass,\n id: `inlineBib--${citekeys.join('--')}--${citationID}`,\n },\n children: citekeys.map((citekey) => {\n const aBibNode = biblioMap[citekey]\n aBibNode.properties = {\n class: 'inline-entry',\n id: `inline--${citekey}--${citationID}`,\n }\n return aBibNode\n }),\n }\n parent.children.push(inlineBibNode)\n }\n\n // Add bibliography\n if (\n !options.suppressBibliography &&\n (node.tagName === 'p' || node.tagName === 'div') &&\n node.children.length >= 1 &&\n node.children[0].type === 'text' &&\n node.children[0].value === '[^ref]'\n ) {\n parent.children[idx] = biblioNode\n bilioInserted = true\n }\n })\n\n if (!options.suppressBibliography && !bilioInserted) {\n tree.children.push(biblioNode)\n }\n }\n\n let footnoteSection\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'section' && node.properties.dataFootnotes) {\n footnoteSection = node\n parent.children.splice(index, 1)\n }\n })\n\n // Need to adjust footnote numbering based on existing ones already assigned\n // And insert them into the footnote section (if exists)\n // Footnote comes after bibliography\n if (mode === 'note' && Object.keys(citationDict).length > 0) {\n /** @type {{type: 'citation' | 'existing', oldId: string}[]} */\n let fnArray = []\n let index = 1\n visit(tree, 'element', (node) => {\n if (node.tagName === 'sup' && node.children[0].type === 'element') {\n let nextNode = node.children[0]\n if (nextNode.tagName === 'a') {\n /** @type {{href: string, id: string}} */ // @ts-ignore\n const { href, id } = nextNode.properties\n if (href.includes('fn') && id.includes('fnref')) {\n const oldId = href.split('-').pop()\n fnArray.push({\n type: href.includes('cite') ? 'citation' : 'existing',\n oldId,\n })\n // Update ref number\n nextNode.properties.href = `#user-content-fn-${index}`\n nextNode.properties.id = `user-content-fnref-${index}`\n // @ts-ignore\n nextNode.children[0].value = index.toString()\n index += 1\n }\n }\n }\n })\n // @ts-ignore\n const newFootnoteSection = genFootnoteSection(citationDict, fnArray, footnoteSection)\n tree.children.push(newFootnoteSection)\n } else {\n if (footnoteSection) tree.children.push(footnoteSection)\n }\n }\n }\n}\n\nexport default rehypeCitationGenerator\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport {\n getSortedRelevantRegistryItems,\n split,\n isSameAuthor,\n getBibliographyEntryText,\n} from './utils.js'\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate citation using citeproc\n * This accounts for prev citations and additional properties\n *\n * @param {*} citeproc\n * @param {Mode} mode\n * @param {CiteItem[]} entries\n * @param {string} citationIdRoot\n * @param {number} citationId\n * @param {any[]} citationPre\n * @param {Options} options\n * @param {boolean} isComposite\n * @param {import('./types').CitationFormat} citationFormat\n * @return {[string, string]}\n */\nexport const genCitation = (\n citeproc,\n mode,\n entries,\n citationIdRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n) => {\n const { inlineClass, linkCitations, showTooltips = false, tooltipAttribute = 'title' } = options\n const key = `${citationIdRoot}-${citationId}`\n const c = citeproc.processCitationCluster(\n {\n citationID: key,\n citationItems: entries,\n properties:\n mode === 'in-text'\n ? { noteIndex: 0, mode: isComposite ? 'composite' : '' }\n : { noteIndex: citationId, mode: isComposite ? 'composite' : '' },\n },\n citationPre.length > 0 ? citationPre : [],\n []\n )\n\n const citationText = c[1].find((x) => x[2] === key)[1]\n const ids = `citation--${entries.map((x) => x.id.toLowerCase()).join('--')}--${citationId}`\n\n // Generate tooltip map for each entry if enabled\n const tooltipMap = {}\n if (showTooltips) {\n entries.forEach((entry) => {\n const entryText = getBibliographyEntryText(citeproc, entry.id)\n // Escape quotes and HTML entities for attribute value\n tooltipMap[entry.id.toLowerCase()] = entryText.replace(/\"/g, '"').replace(/&/g, '&')\n })\n }\n\n // Wrapper tooltip for the span element (combined tooltip for all entries)\n const wrapperTooltipAttr = showTooltips\n ? ` ${tooltipAttribute}=\"${entries.map((e) => tooltipMap[e.id.toLowerCase()]).join('; ')}\"`\n : ''\n\n if (mode === 'note') {\n return [\n citationText,\n htmlToHast(\n `${citationId}`\n ),\n ]\n } else if (linkCitations && citationFormat === 'numeric') {\n // e.g. [1, 2]\n let i = 0\n const refIds = entries.map((e) => e.id)\n const output = citationText.replace(/\\d+/g, function (d) {\n const refId = refIds[i].toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n const url = `${d}`\n i++\n return url\n })\n\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else if (linkCitations && citationFormat === 'author-date') {\n // E.g. (see Nash, 1950, pp. 12–13, 1951); (Nash, 1950; Xie, 2016)\n if (entries.length === 1) {\n // Do not link bracket\n const refId = entries[0].id.toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n\n const output = isComposite\n ? `${citationText}`\n : `${citationText.slice(0, 1)}${citationText.slice(\n 1,\n -1\n )}${citationText.slice(-1)}`\n\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else {\n // Retrieve the items in the correct order and attach link each of them\n const refIds = entries.map((e) => e.id)\n const results = getSortedRelevantRegistryItems(citeproc, refIds, citeproc.opt.sort_citations)\n const output = []\n let str = citationText\n\n for (const [i, item] of results.entries()) {\n // Need to compare author. If same just match on date.\n const id = item.id\n let citeMatch = item.ambig\n // If author is the same as the previous, some styles like apa collapse the author\n if (i > 0 && isSameAuthor(results[i - 1], item) && str.indexOf(citeMatch) === -1) {\n // Just match on year\n citeMatch = item.ref.issued.year.toString()\n }\n const startPos = str.indexOf(citeMatch)\n const [start, rest] = split(str, startPos)\n output.push(start) // Irrelevant parts\n\n const refId = id.toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n const url = `${rest.substring(\n 0,\n citeMatch.length\n )}`\n\n output.push(url)\n str = rest.substring(citeMatch.length)\n }\n output.push(str)\n return [\n citationText,\n htmlToHast(\n `${output.join('')}`\n ),\n ]\n }\n } else {\n return [\n citationText,\n htmlToHast(\n `${citationText}`\n ),\n ]\n }\n}\n","import { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate bibliography in html and convert it to hast\n *\n * @param {*} citeproc\n */\nexport const genBiblioNode = (citeproc) => {\n const [params, bibBody] = citeproc.makeBibliography()\n const bibliography =\n '
\\n' + bibBody.join('') + '
'\n const biblioNode = htmlToHast(bibliography)\n\n // Add citekey id to each bibliography entry.\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node, i) => {\n const citekey = params.entry_ids[i][0].toLowerCase()\n node.properties = node.properties || {}\n node.properties.id = 'bib-' + citekey\n })\n return biblioNode\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n */\n\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Create new footnote section node based on footnoteArray mappings\n *\n * @param {{int: string}} citationDict\n * @param {{type: 'citation' | 'existing', oldId: string}[]} footnoteArray\n * @param {Element | undefined} footnoteSection\n * @return {Element}\n */\nexport const genFootnoteSection = (citationDict, footnoteArray, footnoteSection) => {\n /** @type {Element} */\n const list = {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: [{ type: 'text', value: '\\n' }],\n }\n let oldFootnoteList\n if (footnoteSection) {\n /** @type {Element} */ // @ts-ignore - for some reason, the type does not narrow even after filtering\n oldFootnoteList = footnoteSection.children.filter(n => (n.type == \"element\")).find((n) => (n.tagName === 'ol'))\n }\n for (const [idx, item] of footnoteArray.entries()) {\n const { type, oldId } = item\n if (type === 'citation') {\n list.children.push({\n type: 'element',\n tagName: 'li',\n properties: { id: `user-content-fn-${idx + 1}` },\n children: [\n {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: [\n htmlToHast(`${citationDict[oldId]}`),\n {\n type: 'element',\n tagName: 'a',\n properties: {\n href: `#user-content-fnref-${idx + 1}`,\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: 'Back to content',\n },\n children: [{ type: 'text', value: '↩' }],\n },\n ],\n },\n { type: 'text', value: '\\n' },\n ],\n })\n } else if (type === 'existing') {\n // @ts-ignore\n const liNode = oldFootnoteList.children.find(\n (n) => n.tagName === 'li' && n.properties.id === `user-content-fn-${oldId}`\n )\n liNode.properties.id = `user-content-fn-${idx + 1}`\n const aNode = liNode.children[1].children.find((n) => n.tagName === 'a')\n aNode.properties.href = `#user-content-fnref-${idx + 1}`\n list.children.push(liNode)\n }\n }\n\n /** @type {Element} */\n const newfootnoteSection = {\n type: 'element',\n tagName: 'section',\n properties: { dataFootnotes: true, className: ['footnotes'] },\n children: [\n {\n type: 'element',\n tagName: 'h2',\n properties: { className: ['sr-only'], id: 'footnote-label' },\n children: [{ type: 'text', value: 'Footnotes' }],\n },\n { type: 'text', value: '\\n' },\n list,\n ],\n }\n return newfootnoteSection\n}\n","function currentVersion() {\n return this.log.length\n}\nfunction retrieveVersion(versnum = 1) {\n if (versnum <= 0 || versnum > this.currentVersion()) {\n return null\n } else {\n const [data, options] = this.log[versnum - 1]\n const image = new this.constructor(JSON.parse(data), JSON.parse(options))\n image.log = this.log.slice(0, versnum)\n return image\n }\n}\nfunction undo(number = 1) {\n return this.retrieveVersion(this.currentVersion() - number)\n}\nfunction retrieveLastVersion() {\n return this.retrieveVersion(this.currentVersion())\n}\nfunction save() {\n this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n return this\n}\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","const formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\nexport function validateOutputOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options not an object!')\n }\n const { format, type, style, lang, append, prepend } = options\n if (format && !formats.includes(format)) {\n throw new TypeError(`Option format (\"${format}\") should be one of: ${formats}`)\n } else if (type && !types.includes(type)) {\n throw new TypeError(`Option type (\"${type}\") should be one of: ${types}`)\n } else if (style && !styles.includes(style) && !/^citation/.test(style)) {\n throw new TypeError(`Option style (\"${style}\") should be one of: ${styles}`)\n } else if (lang && typeof lang !== 'string') {\n throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`)\n } else if (prepend && !wrapperTypes.includes(typeof prepend)) {\n throw new TypeError(\n `Option prepend should be a string or a function, but is a ${typeof prepend}`\n )\n } else if (append && !wrapperTypes.includes(typeof append)) {\n throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`)\n }\n if (/^citation/.test(style) && type === 'json') {\n throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n }\n return true\n}\nexport function validateOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options should be an object')\n }\n if (options.output) {\n validateOutputOptions(options.output)\n } else if (options.maxChainLength && typeof options.maxChainLength !== 'number') {\n throw new TypeError('Option maxChainLength should be a number')\n } else if (options.forceType && typeof options.forceType !== 'string') {\n throw new TypeError('Option forceType should be a string')\n } else if (options.generateGraph != null && typeof options.generateGraph !== 'boolean') {\n throw new TypeError('Option generateGraph should be a boolean')\n } else if (options.strict != null && typeof options.strict !== 'boolean') {\n throw new TypeError('Option strict should be a boolean')\n } else if (options.target != null && typeof options.target !== 'string') {\n throw new TypeError('Option target should be a boolean')\n }\n return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\nconst defaultOptions = {\n format: 'real',\n type: 'json',\n style: 'csl',\n lang: 'en-US',\n}\nfunction options(options, log) {\n validate(options)\n if (log) {\n this.save()\n }\n Object.assign(this._options, options)\n return this\n}\nexport { options, defaultOptions }\n","export function typeOf(thing) {\n switch (thing) {\n case undefined:\n return 'Undefined'\n case null:\n return 'Null'\n default:\n return thing.constructor.name\n }\n}\nexport function dataTypeOf(thing) {\n switch (typeof thing) {\n case 'string':\n return 'String'\n case 'object':\n if (Array.isArray(thing)) {\n return 'Array'\n } else if (typeOf(thing) === 'Object') {\n return 'SimpleObject'\n } else if (typeOf(thing) !== 'Null') {\n return 'ComplexObject'\n }\n default:\n return 'Primitive'\n }\n}\n","export function applyGraph(entry, graph) {\n if (entry._graph) {\n const index = graph.findIndex(({ type }) => type === '@else/list+object')\n if (index !== -1) {\n graph.splice(index + 1, 0, ...entry._graph.slice(0, -1))\n }\n }\n entry._graph = graph\n return entry\n}\nexport function removeGraph(entry) {\n delete entry._graph\n return entry\n}\n","const logger = {\n _output(level, scope, msg) {\n this._log.push(scope, msg)\n if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n return\n }\n this._console.log(scope, ...msg)\n },\n _console: null,\n _log: [],\n _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n level: 'silent',\n}\nfor (const level of logger._levels) {\n logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\nif (typeof console.Console === 'function') {\n logger._console = new console.Console(process.stderr)\n} else {\n logger._console = console\n}\nexport default logger\n","import logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\nconst types = {}\nconst dataTypes = {}\nconst unregExts = {}\nfunction parseNativeTypes(input, dataType) {\n switch (dataType) {\n case 'Array':\n if (input.length === 0 || input.every((entry) => type(entry) === '@csl/object')) {\n return '@csl/list+object'\n } else {\n return '@else/list+object'\n }\n case 'SimpleObject':\n case 'ComplexObject':\n return '@csl/object'\n default:\n return '@invalid'\n }\n}\nfunction matchType(typeList = [], data) {\n for (const type of typeList) {\n if (types[type].predicate(data)) {\n return matchType(types[type].extensions, data) || type\n }\n }\n}\nexport function type(input) {\n const dataType = dataTypeOf(input)\n if (dataType === 'Array' && input.length === 0) {\n return parseNativeTypes(input, dataType)\n }\n const match = matchType(dataTypes[dataType], input)\n return match || parseNativeTypes(input, dataType)\n}\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\n let extensions = []\n if (format in unregExts) {\n extensions = unregExts[format]\n delete unregExts[format]\n logger.debug(\n '[core]',\n `Subclasses \"${extensions}\" finally registered to parent type \"${format}\"`\n )\n }\n const object = {\n predicate,\n extensions,\n }\n types[format] = object\n if (extend) {\n const parentTypeParser = types[extend]\n if (parentTypeParser) {\n parentTypeParser.extensions.push(format)\n } else {\n if (!unregExts[extend]) {\n unregExts[extend] = []\n }\n unregExts[extend].push(format)\n logger.debug('[core]', `Subclass \"${format}\" is waiting on parent type \"${extend}\"`)\n }\n } else {\n const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n typeList.push(format)\n }\n}\nexport function hasTypeParser(type) {\n return Object.prototype.hasOwnProperty.call(types, type)\n}\nexport function removeTypeParser(type) {\n delete types[type]\n const typeLists = [\n ...Object.keys(dataTypes).map((key) => dataTypes[key]),\n ...Object.keys(types)\n .map((type) => types[type].extensions)\n .filter((list) => list.length > 0),\n ]\n typeLists.forEach((typeList) => {\n const index = typeList.indexOf(type)\n if (index > -1) {\n typeList.splice(index, 1)\n }\n })\n}\nexport function listTypeParser() {\n return Object.keys(types)\n}\nexport function treeTypeParser() {\n const attachNode = (name) => ({\n name,\n children: types[name].extensions.map(attachNode),\n })\n return {\n name: 'Type tree',\n children: Object.keys(dataTypes).map((name) => ({\n name,\n children: dataTypes[name].map(attachNode),\n })),\n }\n}\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { type, typeMatcher } from './type.js'\nclass TypeParser {\n constructor(data) {\n _defineProperty(this, 'validDataTypes', [\n 'String',\n 'Array',\n 'SimpleObject',\n 'ComplexObject',\n 'Primitive',\n ])\n this.data = data\n }\n validateDataType() {\n const dataType = this.data.dataType\n if (dataType && !this.validDataTypes.includes(dataType)) {\n throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`)\n }\n }\n validateParseType() {\n const predicate = this.data.predicate\n if (predicate && !(predicate instanceof RegExp || typeof predicate === 'function')) {\n throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`)\n }\n }\n validateTokenList() {\n const tokenList = this.data.tokenList\n if (tokenList && typeof tokenList !== 'object') {\n throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`)\n }\n }\n validatePropertyConstraint() {\n const propertyConstraint = this.data.propertyConstraint\n if (propertyConstraint && typeof propertyConstraint !== 'object') {\n throw new TypeError(\n `propertyConstraint was ${typeof propertyConstraint}; expected array or object`\n )\n }\n }\n validateElementConstraint() {\n const elementConstraint = this.data.elementConstraint\n if (elementConstraint && typeof elementConstraint !== 'string') {\n throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`)\n }\n }\n validateExtends() {\n const extend = this.data.extends\n if (extend && typeof extend !== 'string') {\n throw new TypeError(`extends was ${typeof extend}; expected string`)\n }\n }\n validate() {\n if (this.data === null || typeof this.data !== 'object') {\n throw new TypeError(`typeParser was ${typeof this.data}; expected object`)\n }\n this.validateDataType()\n this.validateParseType()\n this.validateTokenList()\n this.validatePropertyConstraint()\n this.validateElementConstraint()\n this.validateExtends()\n }\n parseTokenList() {\n let tokenList = this.data.tokenList\n if (!tokenList) {\n return []\n } else if (tokenList instanceof RegExp) {\n tokenList = {\n token: tokenList,\n }\n }\n const { token, split = /\\s+/, trim = true, every = true } = tokenList\n const trimInput = (input) => (trim ? input.trim() : input)\n const testTokens = every ? 'every' : 'some'\n const predicate = (input) =>\n trimInput(input)\n .split(split)\n [testTokens]((part) => token.test(part))\n return [predicate]\n }\n parsePropertyConstraint() {\n const constraints = [].concat(this.data.propertyConstraint || [])\n return constraints.map(({ props, match, value }) => {\n props = [].concat(props)\n switch (match) {\n case 'any':\n case 'some':\n return (input) => props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'none':\n return (input) => !props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'every':\n default:\n return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n }\n })\n }\n parseElementConstraint() {\n const constraint = this.data.elementConstraint\n return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\n }\n parsePredicate() {\n if (this.data.predicate instanceof RegExp) {\n return [this.data.predicate.test.bind(this.data.predicate)]\n } else if (this.data.predicate) {\n return [this.data.predicate]\n } else {\n return []\n }\n }\n getCombinedPredicate() {\n const predicates = [\n ...this.parsePredicate(),\n ...this.parseTokenList(),\n ...this.parsePropertyConstraint(),\n ...this.parseElementConstraint(),\n ]\n if (predicates.length === 0) {\n return () => true\n } else if (predicates.length === 1) {\n return predicates[0]\n } else {\n return (input) => predicates.every((predicate) => predicate(input))\n }\n }\n getDataType() {\n if (this.data.dataType) {\n return this.data.dataType\n } else if (this.data.predicate instanceof RegExp) {\n return 'String'\n } else if (this.data.tokenList) {\n return 'String'\n } else if (this.data.elementConstraint) {\n return 'Array'\n } else {\n return 'Primitive'\n }\n }\n get dataType() {\n return this.getDataType()\n }\n get predicate() {\n return this.getCombinedPredicate()\n }\n get extends() {\n return this.data.extends\n }\n}\nclass DataParser {\n constructor(parser, { async } = {}) {\n this.parser = parser\n this.async = async\n }\n validate() {\n const parser = this.parser\n if (typeof parser !== 'function') {\n throw new TypeError(`parser was ${typeof parser}; expected function`)\n }\n }\n}\nclass FormatParser {\n constructor(format, parsers = {}) {\n this.format = format\n if (parsers.parseType) {\n this.typeParser = new TypeParser(parsers.parseType)\n }\n if (parsers.parse) {\n this.dataParser = new DataParser(parsers.parse, {\n async: false,\n })\n }\n if (parsers.parseAsync) {\n this.asyncDataParser = new DataParser(parsers.parseAsync, {\n async: true,\n })\n }\n }\n validateFormat() {\n const format = this.format\n if (!typeMatcher.test(format)) {\n throw new TypeError(`format name was \"${format}\"; didn't match expected pattern`)\n }\n }\n validate() {\n this.validateFormat()\n if (this.typeParser) {\n this.typeParser.validate()\n }\n if (this.dataParser) {\n this.dataParser.validate()\n }\n if (this.asyncDataParser) {\n this.asyncDataParser.validate()\n }\n }\n}\nexport { TypeParser, DataParser, FormatParser }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { parse as parseName } from '@citation-js/name'\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\nconst entryTypes = {\n article: true,\n 'article-journal': true,\n 'article-magazine': true,\n 'article-newspaper': true,\n bill: true,\n book: true,\n broadcast: true,\n chapter: true,\n classic: true,\n collection: true,\n dataset: true,\n document: true,\n entry: true,\n 'entry-dictionary': true,\n 'entry-encyclopedia': true,\n event: true,\n figure: true,\n graphic: true,\n hearing: true,\n interview: true,\n legal_case: true,\n legislation: true,\n manuscript: true,\n map: true,\n motion_picture: true,\n musical_score: true,\n pamphlet: true,\n 'paper-conference': true,\n patent: true,\n performance: true,\n periodical: true,\n personal_communication: true,\n post: true,\n 'post-weblog': true,\n regulation: true,\n report: true,\n review: true,\n 'review-book': true,\n software: true,\n song: true,\n speech: true,\n standard: true,\n thesis: true,\n treaty: true,\n webpage: true,\n 'journal-article': 'article-journal',\n 'book-chapter': 'chapter',\n 'posted-content': 'manuscript',\n 'proceedings-article': 'paper-conference',\n dissertation: 'thesis',\n}\nconst fieldTypes = {\n author: NAME_LIST,\n chair: NAME_LIST,\n 'collection-editor': NAME_LIST,\n compiler: NAME_LIST,\n composer: NAME_LIST,\n 'container-author': NAME_LIST,\n contributor: NAME_LIST,\n curator: NAME_LIST,\n director: NAME_LIST,\n editor: NAME_LIST,\n 'editorial-director': NAME_LIST,\n 'executive-producer': NAME_LIST,\n guest: NAME_LIST,\n host: NAME_LIST,\n interviewer: NAME_LIST,\n illustrator: NAME_LIST,\n narrator: NAME_LIST,\n organizer: NAME_LIST,\n 'original-author': NAME_LIST,\n performer: NAME_LIST,\n producer: NAME_LIST,\n 'reviewed-author': NAME_LIST,\n recipient: NAME_LIST,\n 'script-writer': NAME_LIST,\n 'series-creator': NAME_LIST,\n translator: NAME_LIST,\n accessed: DATE,\n 'available-date': DATE,\n container: DATE,\n 'event-date': DATE,\n issued: DATE,\n 'original-date': DATE,\n submitted: DATE,\n type: TYPE,\n categories: 'object',\n custom: 'object',\n id: ['string', 'number'],\n language: 'string',\n journalAbbreviation: 'string',\n shortTitle: 'string',\n abstract: 'string',\n annote: 'string',\n archive: 'string',\n archive_collection: 'string',\n archive_location: 'string',\n 'archive-place': 'string',\n authority: 'string',\n 'call-number': 'string',\n 'chapter-number': 'string',\n 'citation-number': 'string',\n 'citation-key': 'string',\n 'citation-label': 'string',\n 'collection-number': 'string',\n 'collection-title': 'string',\n 'container-title': 'string',\n 'container-title-short': 'string',\n dimensions: 'string',\n division: 'string',\n DOI: 'string',\n edition: ['string', 'number'],\n event: 'string',\n 'event-title': 'string',\n 'event-place': 'string',\n 'first-reference-note-number': 'string',\n genre: 'string',\n ISBN: 'string',\n ISSN: 'string',\n issue: ['string', 'number'],\n jurisdiction: 'string',\n keyword: 'string',\n locator: 'string',\n medium: 'string',\n note: 'string',\n number: ['string', 'number'],\n 'number-of-pages': 'string',\n 'number-of-volumes': ['string', 'number'],\n 'original-publisher': 'string',\n 'original-publisher-place': 'string',\n 'original-title': 'string',\n page: 'string',\n 'page-first': 'string',\n 'part-number': ['string', 'number'],\n 'part-title': 'string',\n PMCID: 'string',\n PMID: 'string',\n printing: 'string',\n publisher: 'string',\n 'publisher-place': 'string',\n references: 'string',\n 'reviewed-title': 'string',\n 'reviewed-genre': 'string',\n scale: 'string',\n section: 'string',\n source: 'string',\n status: 'string',\n supplement: ['string', 'number'],\n title: 'string',\n 'title-short': 'string',\n URL: 'string',\n version: 'string',\n volume: ['string', 'number'],\n 'volume-title': 'string',\n 'volume-title-short': 'string',\n 'year-suffix': 'string',\n}\nfunction correctName(name, bestGuessConversions) {\n if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n if (name.ORCID || name.orcid || name._ORCID) {\n name = _objectSpread(\n {\n _orcid: name.ORCID || name.orcid || name._ORCID,\n },\n name\n )\n delete name.ORCID\n delete name.orcid\n delete name._ORCID\n }\n return name\n } else if (!bestGuessConversions) {\n return undefined\n } else if (typeof name === 'string') {\n return parseName(name)\n }\n}\nfunction correctNameList(nameList, bestGuessConversions) {\n if (nameList instanceof Array) {\n const names = nameList.map((name) => correctName(name, bestGuessConversions)).filter(Boolean)\n return names.length ? names : undefined\n }\n}\nfunction correctDateParts(dateParts, bestGuessConversions) {\n if (dateParts.every((part) => typeof part === 'number')) {\n return dateParts\n } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {\n return undefined\n } else {\n return dateParts.map((part) => parseInt(part))\n }\n}\nfunction correctDate(date, bestGuessConversions) {\n const dp = 'date-parts'\n if (typeof date !== 'object' || date === null) {\n return undefined\n } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {\n const range = date[dp]\n .map((dateParts) => correctDateParts(dateParts, bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? _objectSpread(\n _objectSpread({}, date),\n {},\n {\n 'date-parts': range,\n }\n )\n : undefined\n } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {\n const range = date\n .map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? {\n 'date-parts': range,\n }\n : undefined\n } else if (date[dp] instanceof Array) {\n const dateParts = correctDateParts(date[dp], bestGuessConversions)\n return (\n dateParts && {\n 'date-parts': [dateParts],\n }\n )\n } else if ('literal' in date || 'raw' in date) {\n return date\n }\n}\nfunction correctType(type, bestGuessConversions) {\n type = correctField('language', type, bestGuessConversions)\n if (entryTypes[type] === true) {\n return type\n }\n if (bestGuessConversions) {\n if (type in entryTypes) {\n return entryTypes[type]\n } else if (type.toLowerCase() !== type) {\n return correctType(type.toLowerCase(), bestGuessConversions)\n }\n }\n return undefined\n}\nfunction correctField(fieldName, value, bestGuessConversions) {\n const fieldType = [].concat(fieldTypes[fieldName])\n switch (fieldTypes[fieldName]) {\n case NAME:\n return correctName(value, bestGuessConversions)\n case NAME_LIST:\n return correctNameList(value, bestGuessConversions)\n case DATE:\n return correctDate(value, bestGuessConversions)\n case TYPE:\n return correctType(value, bestGuessConversions)\n }\n if (bestGuessConversions) {\n if (\n typeof value === 'string' &&\n fieldType.includes('number') &&\n !fieldType.includes('string') &&\n !isNaN(+value)\n ) {\n return parseFloat(value)\n } else if (\n typeof value === 'number' &&\n fieldType.includes('string') &&\n !fieldType.includes('number')\n ) {\n return value.toString()\n } else if (Array.isArray(value) && value.length) {\n return correctField(fieldName, value[0], bestGuessConversions)\n }\n }\n if (fieldType.includes(typeof value)) {\n return value\n }\n}\nfunction parseCsl(data, bestGuessConversions = true) {\n return data.map(function (entry) {\n const clean = {}\n for (const field in entry) {\n const correction = correctField(field, entry[field], bestGuessConversions)\n if (correction !== undefined) {\n clean[field] = correction\n }\n }\n return clean\n })\n}\nexport { parseCsl as clean }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nexport function upgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(upgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event' in item) {\n item['event-title'] = item.event\n delete item.event\n }\n if (item.type === 'book' && 'version' in item) {\n item.type = 'software'\n }\n return item\n}\nexport function downgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(downgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event-title' in item) {\n item.event = item['event-title']\n delete item['event-title']\n }\n if (item.type === 'software') {\n item.type = 'book'\n }\n return item\n}\n","export function deepCopy(value, seen = new Set()) {\n if (\n typeof value !== 'object' ||\n value === null ||\n (value.constructor !== Object && value.constructor !== Array)\n ) {\n return value\n }\n if (seen.has(value)) {\n throw new TypeError('Recursively copying circular structure')\n }\n seen.add(value)\n let copy\n if (value.constructor === Array) {\n copy = value.map((value) => deepCopy(value, seen))\n } else {\n const object = {}\n for (const key in value) {\n object[key] = deepCopy(value[key], seen)\n }\n copy = object\n }\n seen.delete(value)\n return copy\n}\nexport default deepCopy\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/* eslint-env browser */\n\nconst { Buffer } = require('buffer/')\n\nfunction syncFetch (...args) {\n const request = new syncFetch.Request(...args)\n\n const xhr = new XMLHttpRequest()\n xhr.withCredentials = request.credentials === 'include'\n xhr.timeout = request[INTERNALS].timeout\n\n // Request\n xhr.open(request.method, request.url, false)\n\n let useBinaryEncoding = false\n try {\n // Only allowed in Worker scope, not available in older browsers\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType#Synchronous_XHR_restrictions\n xhr.responseType = 'arraybuffer'\n } catch (e) {\n // Not in Worker scope; instead, attempt this alternative method\n // https://web.archive.org/web/20071103070418/http://mgran.blogspot.com/2006/08/downloading-binary-streams-with.html\n xhr.overrideMimeType('text/plain; charset=x-user-defined')\n useBinaryEncoding = true\n }\n\n for (const header of request.headers) {\n xhr.setRequestHeader(...header)\n }\n\n xhr.send(request.body || null)\n\n // Response\n let headers = xhr.getAllResponseHeaders()\n headers = headers && headers.split('\\r\\n').filter(Boolean).map(header => header.split(': ', 2))\n\n let body = xhr.response\n if (useBinaryEncoding) {\n const buffer = Buffer.alloc(body.length)\n for (let i = 0; i < body.length; i++) {\n buffer[i] = body.charCodeAt(i) & 0xff\n }\n body = buffer\n }\n\n const response = new syncFetch.Response(body, {\n headers,\n status: xhr.status,\n statusText: xhr.statusText\n })\n\n response[INTERNALS].url = xhr.responseURL\n response[INTERNALS].redirected = xhr.responseURL !== request.url\n\n return response\n}\n\nconst INTERNALS = Symbol('SyncFetch Internals')\nconst REQ_UNSUPPORTED = ['mode', 'cache', 'redirect', 'referrer', 'integrity']\nconst HTTP_STATUS = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 426: 'Upgrade Required',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported'\n}\n\nclass SyncRequest {\n constructor (resource, init = {}) {\n for (const option of REQ_UNSUPPORTED) {\n if (option in init) {\n throw new TypeError(`option ${option} not supported`)\n }\n }\n\n if (init.credentials === 'same-origin') {\n throw new TypeError('option credentials with value \\'same-origin\\' not supported')\n }\n\n this[INTERNALS] = {\n method: init.method || 'GET',\n headers: new syncFetch.Headers(init.headers),\n body: init.body ? Buffer.from(init.body) : null,\n credentials: init.credentials || 'omit',\n\n // Non-spec\n timeout: init.timeout || 0\n }\n\n if (typeof resource === 'string') {\n this[INTERNALS].url = resource\n } else if (resource instanceof SyncRequest) {\n this[INTERNALS].url = resource.url\n if (!init.method) {\n this[INTERNALS].method = resource.method\n }\n if (!init.headers) {\n this[INTERNALS].headers = resource.headers\n }\n if (!init.body) {\n this[INTERNALS].body = resource[INTERNALS].body\n }\n if (!init.credentials) {\n this[INTERNALS].credentials = resource.credentials\n }\n } else {\n throw new TypeError('Request input should be a URL string or a Request object')\n }\n }\n\n get cache () {\n return 'default'\n }\n\n get credentials () {\n return this[INTERNALS].credentials\n }\n\n get destination () {\n return ''\n }\n\n get headers () {\n return this[INTERNALS].headers\n }\n\n get integrity () {\n return ''\n }\n\n get method () {\n return this[INTERNALS].method\n }\n\n get mode () {\n return 'cors'\n }\n\n get priority () {\n return 'auto'\n }\n\n get redirect () {\n return 'follow'\n }\n\n get referrer () {\n return 'about:client'\n }\n\n get referrerPolicy () {\n return ''\n }\n\n get url () {\n return this[INTERNALS].url\n }\n\n clone () {\n checkBody(this)\n return new SyncRequest(this.url, this[INTERNALS])\n }\n}\n\nclass SyncResponse {\n constructor (body, init = {}) {\n this[INTERNALS] = {\n body: body ? Buffer.from(body) : null,\n bodyUsed: false,\n\n headers: new syncFetch.Headers(init.headers),\n status: init.status,\n statusText: init.statusText\n }\n }\n\n get headers () {\n return this[INTERNALS].headers\n }\n\n get ok () {\n const status = this[INTERNALS].status\n return status >= 200 && status < 300\n }\n\n get redirected () {\n return this[INTERNALS].redirected\n }\n\n get status () {\n return this[INTERNALS].status\n }\n\n get statusText () {\n return this[INTERNALS].statusText\n }\n\n get url () {\n return this[INTERNALS].url\n }\n\n clone () {\n return this.redirect(this[INTERNALS].url, this[INTERNALS].status)\n }\n\n redirect (url, status) {\n checkBody(this)\n\n const response = new SyncResponse(this[INTERNALS].body, {\n headers: this[INTERNALS].headers,\n status: status || this[INTERNALS].status,\n statusText: HTTP_STATUS[status] || this[INTERNALS].statusText\n })\n\n response[INTERNALS].url = url || this[INTERNALS].url\n response[INTERNALS].redirected = this[INTERNALS].redirected\n\n return response\n }\n}\n\nclass Body {\n constructor (body) {\n this[INTERNALS] = {\n body: Buffer.from(body),\n bodyUsed: false\n }\n }\n\n get bodyUsed () {\n return this[INTERNALS].bodyUsed\n }\n\n static mixin (prototype) {\n for (const name of Object.getOwnPropertyNames(Body.prototype)) {\n if (name === 'constructor') { continue }\n const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)\n Object.defineProperty(prototype, name, { ...desc, enumerable: true })\n }\n }\n\n arrayBuffer () {\n const buffer = consumeBody(this)\n return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n }\n\n blob () {\n const type = this.headers && this.headers.get('content-type')\n return new Blob([consumeBody(this)], type && { type })\n }\n\n text () {\n return consumeBody(this).toString()\n }\n\n json () {\n try {\n return JSON.parse(consumeBody(this).toString())\n } catch (err) {\n throw new TypeError(`invalid json response body at ${this.url} reason: ${err.message}`, 'invalid-json')\n }\n }\n\n buffer () {\n return consumeBody(this).clone()\n }\n}\n\nfunction checkBody (body) {\n if (body.bodyUsed) {\n throw new TypeError(`body used already for: ${body.url}`)\n }\n}\n\nfunction consumeBody (body) {\n checkBody(body)\n body[INTERNALS].bodyUsed = true\n return body[INTERNALS].body || Buffer.alloc(0)\n}\n\nBody.mixin(SyncRequest.prototype)\nBody.mixin(SyncResponse.prototype)\n\nclass Headers {\n constructor (headers) {\n if (headers instanceof syncFetch.Headers) {\n this[INTERNALS] = { ...headers[INTERNALS] }\n } else {\n this[INTERNALS] = {}\n\n if (Array.isArray(headers)) {\n for (const [name, value] of headers) {\n this.append(name, value)\n }\n } else if (typeof headers === 'object') {\n for (const name in headers) {\n this.set(name, headers[name])\n }\n }\n }\n }\n\n // modification\n append (name, value) {\n name = name.toLowerCase()\n if (!this[INTERNALS][name]) {\n this[INTERNALS][name] = []\n }\n this[INTERNALS][name].push(value)\n }\n\n delete (name) {\n delete this[INTERNALS][name.toLowerCase()]\n }\n\n set (name, value) {\n this[INTERNALS][name.toLowerCase()] = [value]\n }\n\n // access\n entries () {\n const pairs = []\n for (const name in this[INTERNALS]) {\n for (const value of this[INTERNALS][name]) {\n pairs.push([name, value])\n }\n }\n return pairs\n }\n\n get (name) {\n name = name.toLowerCase()\n return name in this[INTERNALS] ? this[INTERNALS][name].join(', ') : null\n }\n\n keys () {\n return Object.keys(this[INTERNALS])\n }\n\n has (name) {\n return name.toLowerCase() in this[INTERNALS]\n }\n\n values () {\n const values = []\n for (const name in this[INTERNALS]) {\n for (const value of this[INTERNALS][name]) {\n values.push(value)\n }\n }\n return values\n }\n\n * [Symbol.iterator] () {\n for (const name in this[INTERNALS]) {\n for (const value of this[INTERNALS][name]) {\n yield [name, value]\n }\n }\n }\n}\n\nsyncFetch.Headers = Headers\nsyncFetch.Request = SyncRequest\nsyncFetch.Response = SyncResponse\nmodule.exports = syncFetch\n","(function (global) {\n 'use strict';\n\n function fetchPonyfill(options) {\n var Promise = options && options.Promise || global.Promise;\n var XMLHttpRequest = options && options.XMLHttpRequest || global.XMLHttpRequest;\n\n return (function () {\n var globalThis = Object.create(global, {\n fetch: {\n value: undefined,\n writable: true\n }\n });\n\n (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.WHATWGFetch = {})));\n }(this, (function (exports) { 'use strict';\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : '';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n })));\n\n\n return {\n fetch: globalThis.fetch,\n Headers: globalThis.Headers,\n Request: globalThis.Request,\n Response: globalThis.Response,\n DOMException: globalThis.DOMException\n };\n }());\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return fetchPonyfill;\n });\n } else if (typeof exports === 'object') {\n module.exports = fetchPonyfill;\n } else {\n global.fetchPonyfill = fetchPonyfill;\n }\n}(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof global !== 'undefined' ? global : this));\n\n","// @ts-nocheck\nimport syncFetch from 'sync-fetch'\nimport fetchPolyfill from 'fetch-ponyfill'\nimport logger from '../logger.js'\nconst isBrowser = typeof location !== 'undefined' && typeof navigator !== 'undefined'\nconst { fetch: asyncFetch, Headers: asyncHeaders } =\n typeof fetch === 'function' && isBrowser\n ? {\n fetch,\n Headers,\n }\n : fetchPolyfill()\n\nlet userAgent = `Citation.js/0.7`\nif (\n typeof process !== 'undefined' &&\n process &&\n process.release &&\n process.release.name === 'node' &&\n process.version\n) {\n userAgent += ` Node.js/${process.version}`\n}\n\nfunction normaliseHeaders(headers) {\n const result = {}\n const entries =\n headers instanceof asyncHeaders || headers instanceof syncFetch.Headers\n ? Array.from(headers)\n : Object.entries(headers)\n for (const [name, header] of entries) {\n result[name.toLowerCase()] = header.toString()\n }\n return result\n}\nfunction parseOpts(opts = {}) {\n const reqOpts = {\n headers: {\n accept: '*/*',\n },\n method: 'GET',\n checkContentType: opts.checkContentType,\n }\n if (userAgent && !isBrowser) {\n reqOpts.headers['user-agent'] = userAgent\n }\n if (opts.body) {\n reqOpts.method = 'POST'\n const isJson = typeof opts.body !== 'string'\n reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body\n reqOpts.headers['content-type'] = isJson ? 'application/json' : 'text/plain'\n }\n if (opts.headers) {\n Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n }\n return reqOpts\n}\nfunction sameType(request, response) {\n if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n return true\n }\n const [a, b] = response['content-type'].split(';')[0].trim().split('/')\n return request.accept\n .split(',')\n .map((type) => type.split(';')[0].trim().split('/'))\n .some(([c, d]) => (c === a || c === '*') && (d === b || d === '*'))\n}\nfunction checkResponse(response, opts) {\n const { status, headers } = response\n let error\n if (status >= 400) {\n error = new Error(`Server responded with status code ${status}`)\n } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {\n error = new Error(`Server responded with content-type ${headers.get('content-type')}`)\n }\n if (error) {\n error.status = status\n error.headers = headers\n error.body = response.body\n throw error\n }\n return response\n}\nexport function fetchFile(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n const response = checkResponse(syncFetch(url, reqOpts), reqOpts)\n return response.text()\n}\nexport async function fetchFileAsync(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n return asyncFetch(url, reqOpts)\n .then((response) => checkResponse(response, reqOpts))\n .then((response) => response.text())\n}\nexport function setUserAgent(newUserAgent) {\n userAgent = newUserAgent\n}\nexport default fetchFile\n","function fetchId(list, prefix) {\n let id\n while (id === undefined || list.includes(id)) {\n id = `${prefix}${Math.random().toString().slice(2)}`\n }\n return id\n}\nexport default fetchId\n","class Register {\n constructor(data = {}) {\n this.data = data\n }\n set(key, value) {\n this.data[key] = value\n return this\n }\n add(...args) {\n return this.set(...args)\n }\n delete(key) {\n delete this.data[key]\n return this\n }\n remove(...args) {\n return this.delete(...args)\n }\n get(key) {\n return this.data[key]\n }\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.data, key)\n }\n list() {\n return Object.keys(this.data)\n }\n}\nexport default Register\n","import { deepCopy } from './deepCopy.js'\nclass Grammar {\n constructor(rules, state) {\n this.rules = rules\n this.defaultState = state\n this.mainRule = Object.keys(rules)[0]\n this.log = []\n }\n parse(iterator, mainRule) {\n this.lexer = iterator\n this.token = this.lexer.next()\n this.state = deepCopy(this.defaultState)\n this.log = []\n return this.consumeRule(mainRule || this.mainRule)\n }\n matchEndOfFile() {\n return !this.token\n }\n matchToken(type) {\n return this.token && type === this.token.type\n }\n consumeToken(type, optional) {\n const token = this.token\n if (!type || (token && token.type === type)) {\n this.token = this.lexer.next()\n return token\n } else if (optional) {\n return undefined\n } else {\n const got = token ? `\"${token.type}\"` : 'EOF'\n const error = new SyntaxError(this.lexer.formatError(token, `expected \"${type}\", got ${got}`))\n error.message += ` (${this.log.join('->')})`\n throw error\n }\n }\n consumeRule(rule) {\n this.log.push(rule)\n const result = this.rules[rule].call(this)\n this.log.pop()\n return result\n }\n}\nexport { Grammar }\n","// @ts-nocheck\nfunction createConditionEval(condition) {\n return function conditionEval(input) {\n if (typeof condition === 'boolean') {\n return condition\n }\n return Object.keys(condition).every((prop) => {\n const value = condition[prop]\n if (value === true) {\n return prop in input\n } else if (value === false) {\n return !(prop in input)\n } else if (typeof value === 'function') {\n return value(input[prop])\n } else if (Array.isArray(value)) {\n return value.includes(input[prop])\n } else {\n return input[prop] === value\n }\n })\n }\n}\nfunction parsePropStatement(prop, toSource) {\n let inputProp\n let outputProp\n let convert\n let condition\n if (typeof prop === 'string') {\n inputProp = outputProp = prop\n } else if (prop) {\n inputProp = toSource ? prop.target : prop.source\n outputProp = toSource ? prop.source : prop.target\n if (prop.convert) {\n convert = toSource ? prop.convert.toSource : prop.convert.toTarget\n }\n if (prop.when) {\n condition = toSource ? prop.when.target : prop.when.source\n if (condition != null) {\n condition = createConditionEval(condition)\n }\n }\n } else {\n return null\n }\n inputProp = [].concat(inputProp).filter(Boolean)\n outputProp = [].concat(outputProp).filter(Boolean)\n return {\n inputProp,\n outputProp,\n convert,\n condition,\n }\n}\nfunction createConverter(props, toSource) {\n toSource = toSource === Translator.CONVERT_TO_SOURCE\n props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n return function converter(input) {\n const output = {}\n for (const { inputProp, outputProp, convert, condition } of props) {\n if (outputProp.length === 0) {\n continue\n } else if (condition && !condition(input)) {\n continue\n } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n continue\n }\n let outputData = inputProp.map((prop) => input[prop])\n if (convert) {\n try {\n const converted = convert.apply(input, outputData)\n outputData = outputProp.length === 1 ? [converted] : converted\n } catch (cause) {\n throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, {\n cause,\n })\n }\n }\n outputProp.forEach((prop, index) => {\n const value = outputData[index]\n if (value !== undefined) {\n output[prop] = value\n }\n })\n }\n return output\n }\n}\nclass Translator {\n constructor(props) {\n this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n }\n}\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\nimport { get as getTypeInfo } from './register.js'\nimport { type as parseType } from './type.js'\nimport { data as parseData, dataAsync as parseDataAsync } from './data.js'\nimport { applyGraph, removeGraph } from './graph.js'\nfunction prepareParseGraph(graph) {\n return graph\n .reduce((array, next) => {\n const last = array[array.length - 1]\n if (last && last.type === next.type) {\n last.count = last.count + 1 || 2\n } else {\n array.push(next)\n }\n return array\n }, [])\n .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n .join(' -> ')\n}\nclass ChainParser {\n constructor(input, options = {}) {\n this.options = Object.assign(\n {\n generateGraph: true,\n forceType: parseType(input),\n maxChainLength: 10,\n strict: true,\n target: '@csl/list+object',\n },\n options\n )\n this.type = this.options.forceType\n this.data = typeof input === 'object' ? deepCopy(input) : input\n this.graph = [\n {\n type: this.type,\n data: input,\n },\n ]\n this.iteration = 0\n }\n iterate() {\n if (this.iteration !== 0) {\n const typeInfo = getTypeInfo(this.type)\n if (typeInfo && typeInfo.outputs) {\n this.type = typeInfo.outputs\n } else {\n this.type = parseType(this.data)\n }\n this.graph.push({\n type: this.type,\n })\n }\n if (this.error || this.type === this.options.target) {\n return false\n } else if (this.iteration >= this.options.maxChainLength) {\n this.error = new RangeError(\n `Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`\n )\n return false\n } else {\n this.iteration++\n return true\n }\n }\n end() {\n if (this.error) {\n logger.error('[core]', this.error.message)\n if (this.options.strict !== false) {\n throw this.error\n } else {\n return []\n }\n } else if (this.options.target === '@csl/list+object') {\n return upgradeCsl(this.data).map(\n this.options.generateGraph ? (entry) => applyGraph(entry, this.graph) : removeGraph\n )\n } else {\n return this.data\n }\n }\n}\nexport const chain = (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n try {\n chain.data = parseData(chain.data, chain.type)\n } catch (e) {\n chain.error = e\n }\n }\n return chain.end()\n}\nexport const chainLink = (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseData(output, type)\n}\nexport const chainAsync = async (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n chain.error = e\n })\n }\n return chain.end()\n}\nexport const chainLinkAsync = async (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseDataAsync(output, type)\n}\n","import { chain, chainAsync } from './chain.js'\nconst parsers = {}\nconst asyncParsers = {}\nconst nativeParsers = {\n '@csl/object': (input) => [input],\n '@csl/list+object': (input) => input,\n '@else/list+object': (input) => input.map(chain).flat(),\n '@invalid': () => {\n throw new Error('This format is not supported or recognized')\n },\n}\nconst nativeAsyncParsers = {\n '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\nexport function data(input, type) {\n if (typeof parsers[type] === 'function') {\n return parsers[type](input)\n } else if (typeof nativeParsers[type] === 'function') {\n return nativeParsers[type](input)\n } else {\n throw new TypeError(`No synchronous parser found for ${type}`)\n }\n}\nexport async function dataAsync(input, type) {\n if (typeof asyncParsers[type] === 'function') {\n return asyncParsers[type](input)\n } else if (typeof nativeAsyncParsers[type] === 'function') {\n return nativeAsyncParsers[type](input)\n } else if (hasDataParser(type, false)) {\n return data(input, type)\n } else {\n throw new TypeError(`No parser found for ${type}`)\n }\n}\nexport function addDataParser(format, { parser, async }) {\n if (async) {\n asyncParsers[format] = parser\n } else {\n parsers[format] = parser\n }\n}\nexport function hasDataParser(type, async) {\n return async\n ? asyncParsers[type] || nativeAsyncParsers[type]\n : parsers[type] || nativeParsers[type]\n}\nexport function removeDataParser(type, async) {\n delete (async ? asyncParsers : parsers)[type]\n}\nexport function listDataParser(async) {\n return Object.keys(async ? asyncParsers : parsers)\n}\n","import { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\nconst formats = {}\nexport function add(format, parsers) {\n const formatParser = new FormatParser(format, parsers)\n formatParser.validate()\n const index = formats[format] || (formats[format] = {})\n if (formatParser.typeParser) {\n addTypeParser(format, formatParser.typeParser)\n index.type = true\n }\n if (formatParser.dataParser) {\n addDataParser(format, formatParser.dataParser)\n index.data = true\n }\n if (formatParser.asyncDataParser) {\n addDataParser(format, formatParser.asyncDataParser)\n index.asyncData = true\n }\n if (parsers.outputs) {\n index.outputs = parsers.outputs\n }\n}\nexport function get(format) {\n return formats[format]\n}\nexport function remove(format) {\n const index = formats[format]\n if (!index) {\n return\n }\n if (index.type) {\n removeTypeParser(format)\n }\n if (index.data) {\n removeDataParser(format)\n }\n if (index.asyncData) {\n removeDataParser(format, true)\n }\n delete formats[format]\n}\nexport function has(format) {\n return format in formats\n}\nexport function list() {\n return Object.keys(formats)\n}\n","import * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\nexport const util = Object.assign({}, dataType, graph, parser, csl)\nexport * from './register'\nexport * from './chain'\nexport * from './type'\nexport * from './data'\n","// @ts-nocheck\nimport { chain as parseInput, chainAsync as parseInputAsync } from '../plugins/input/index.js'\nimport fetchId from '../util/fetchId.js'\nfunction add(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...parseInput(data, options))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nasync function addAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...(await parseInputAsync(data, options)))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nfunction set(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\nasync function setAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\nfunction reset(log) {\n if (log) {\n this.save()\n }\n this.data = []\n this._options = {}\n return this\n}\nexport { add, addAsync, set, setAsync, reset }\n","function getLabel(entry) {\n if ('citation-label' in entry) {\n return entry['citation-label']\n }\n let res = ''\n if (entry.author) {\n res += entry.author[0].family || entry.author[0].literal\n }\n if (entry.issued && entry.issued['date-parts'] && entry.issued['date-parts'][0]) {\n res += entry.issued['date-parts'][0][0]\n }\n if (entry['year-suffix']) {\n res += entry['year-suffix']\n } else if (entry.title) {\n res += entry.title.replace(/<\\/?.*?>/g, '').match(/^(?:(?:the|a|an)\\s+)?(\\S+)/i)[1]\n }\n return res\n}\nexport { getLabel }\nexport default {\n label(data) {\n return data.reduce((object, entry) => {\n object[entry.id] = getLabel(entry)\n return object\n }, {})\n },\n}\n","import { getLabel } from '../plugin-common/output/label.js'\nimport { format as getName } from '@citation-js/name'\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n let value = label ? getLabel(obj) : obj[prop]\n switch (prop) {\n case 'author':\n case 'editor':\n return value.map((name) => name.literal || name.family || getName(name))\n case 'accessed':\n case 'issued':\n return value['date-parts'][0]\n case 'page':\n return value.split('-').map((num) => parseInt(num))\n case 'edition':\n case 'issue':\n case 'volume':\n value = parseInt(value)\n return !isNaN(value) ? value : -Infinity\n default:\n return value || -Infinity\n }\n}\nfunction compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {\n prop = prop.replace(/^!/, '')\n const a = getComparisonValue(entryA, prop)\n const b = getComparisonValue(entryB, prop)\n return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\nfunction getSortCallback(...props) {\n return (a, b) => {\n const keys = props.slice()\n let output = 0\n while (!output && keys.length) {\n output = compareProp(a, b, keys.shift())\n }\n return output\n }\n}\nfunction sort(method = [], log) {\n if (log) {\n this.save()\n }\n this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n return this\n}\nexport { sort }\n","import Register from '../util/register.js'\nfunction validate(name, formatter) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`)\n } else if (typeof formatter !== 'function') {\n throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`)\n }\n}\nexport const register = new Register()\nexport function add(name, formatter) {\n validate(name, formatter)\n register.set(name, formatter)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function format(name, data, ...options) {\n if (!register.has(name)) {\n throw new Error(`Output format \"${name}\" unavailable`)\n }\n return register.get(name)(data, ...options)\n}\n","import { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\nexport function getIds() {\n return this.data.map((entry) => entry.id)\n}\nexport function format(format, ...options) {\n return formatData(format, parseCsl(this.data), ...options)\n}\nexport function get(options = {}) {\n validate(options)\n const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\n const { type, style } = parsedOptions\n const [styleType, styleFormat] = style.split('-')\n const newStyle =\n styleType === 'citation' ? 'bibliography' : styleType === 'csl' ? 'data' : styleType\n const newType = type === 'string' ? 'text' : type === 'json' ? 'object' : type\n let formatOptions\n switch (newStyle) {\n case 'bibliography': {\n const { lang, append, prepend } = parsedOptions\n formatOptions = {\n template: styleFormat,\n lang,\n format: newType,\n append,\n prepend,\n }\n break\n }\n case 'data':\n case 'bibtex':\n case 'bibtxt':\n case 'ndjson':\n case 'ris':\n formatOptions = {\n type: newType,\n }\n break\n default:\n throw new Error(`Invalid style \"${newStyle}\"`)\n }\n const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\n const { format } = parsedOptions\n if (\n format === 'real' &&\n newType === 'html' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n ) {\n const tmp = document.createElement('div')\n tmp.innerHTML = result\n return tmp.firstChild\n } else if (format === 'string' && typeof result === 'object') {\n return JSON.stringify(result)\n } else {\n return result\n }\n}\n","function async(data, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options\n options = undefined\n }\n const promise = new this().setAsync(data, options)\n if (typeof callback === 'function') {\n promise.then(callback)\n return undefined\n } else {\n return promise\n }\n}\nexport default async\n","// @ts-nocheck\nimport * as log from './log.js'\nimport * as options from './options.js'\nimport * as set from './set.js'\nimport * as sort from './sort.js'\nimport * as get from './get.js'\nimport * as staticMethods from './static.js'\nfunction Cite(data, options = {}) {\n if (!(this instanceof Cite)) {\n return new Cite(data, options)\n }\n this._options = options\n this.log = []\n this.data = []\n this.set(data, options)\n this.options(options)\n return this\n}\nObject.assign(Cite.prototype, log, options, set, sort, get)\nCite.prototype[Symbol.iterator] = function* () {\n yield* this.data\n}\nObject.assign(Cite, staticMethods)\nexport default Cite\n","import Register from '../util/register.js'\nfunction validate(name, dict) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid dict name, expected string, got ${typeof name}`)\n } else if (typeof dict !== 'object') {\n throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`)\n }\n for (const entryName in dict) {\n const entry = dict[entryName]\n if (!Array.isArray(entry) || entry.some((part) => typeof part !== 'string')) {\n throw new TypeError(`Invalid dict entry \"${entryName}\", expected array of strings`)\n }\n }\n}\nexport const register = new Register({\n html: {\n bibliographyContainer: ['
', '
'],\n entry: ['
', '
'],\n list: ['
    ', '
'],\n listItem: ['
  • ', '
  • '],\n },\n text: {\n bibliographyContainer: ['', '\\n'],\n entry: ['', '\\n'],\n list: ['\\n', ''],\n listItem: ['\\t', '\\n'],\n },\n})\nexport function add(name, dict) {\n validate(name, dict)\n register.set(name, dict)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function get(name) {\n if (!register.has(name)) {\n throw new Error(`Dict \"${name}\" unavailable`)\n }\n return register.get(name)\n}\nexport const htmlDict = {\n wr_start: '
    ',\n wr_end: '
    ',\n en_start: '
    ',\n en_end: '
    ',\n ul_start: '
      ',\n ul_end: '
    ',\n li_start: '
  • ',\n li_end: '
  • ',\n}\nexport const textDict = {\n wr_start: '',\n wr_end: '\\n',\n en_start: '',\n en_end: '\\n',\n ul_start: '\\n',\n ul_end: '',\n li_start: '\\t',\n li_end: '\\n',\n}\n","const configs = {}\nexport function add(ref, config) {\n configs[ref] = config\n}\nexport function get(ref) {\n return configs[ref]\n}\nexport function has(ref) {\n return Object.prototype.hasOwnProperty.call(configs, ref)\n}\nexport function remove(ref) {\n delete configs[ref]\n}\nexport function list() {\n return Object.keys(configs)\n}\n","// @ts-nocheck\nimport * as input from './input/index.js'\nimport * as output from './output.js'\nimport * as dict from './dict.js'\nimport * as config from './config.js'\nconst registers = {\n input,\n output,\n dict,\n config,\n}\nconst indices = {}\nexport function add(ref, plugins = {}) {\n const mainIndex = (indices[ref] = {})\n for (const type in plugins) {\n if (type === 'config') {\n mainIndex.config = {\n [ref]: plugins.config,\n }\n registers.config.add(ref, plugins.config)\n continue\n }\n const typeIndex = (mainIndex[type] = {})\n const typePlugins = plugins[type]\n for (const name in typePlugins) {\n const typePlugin = typePlugins[name]\n typeIndex[name] = true\n registers[type].add(name, typePlugin)\n }\n }\n}\nexport function remove(ref) {\n const mainIndex = indices[ref]\n for (const type in mainIndex) {\n const typeIndex = mainIndex[type]\n for (const name in typeIndex) {\n registers[type].remove(name)\n }\n }\n delete indices[ref]\n}\nexport function has(ref) {\n return ref in indices\n}\nexport function list() {\n return Object.keys(indices)\n}\nexport { input, output, dict, config }\n","export function parse() {\n return []\n}\n","import logger from '../../logger.js'\nconst substituters = [\n [/((?:\\[|:|,)\\s*)'((?:\\\\'|[^'])*?[^\\\\])?'(?=\\s*(?:\\]|}|,))/g, '$1\"$2\"'],\n [\n /((?:(?:\"|]|}|\\/[gmiuys]|\\.|(?:\\d|\\.|-)*\\d)\\s*,|{)\\s*)(?:\"([^\":\\n]+?)\"|'([^\":\\n]+?)'|([^\":\\n]+?))(\\s*):/g,\n '$1\"$2$3$4\"$5:',\n ],\n]\nfunction parseJSON(str) {\n if (typeof str !== 'string') {\n return JSON.parse(str)\n }\n try {\n return JSON.parse(str)\n } catch (e) {\n logger.debug('[plugin-common]', 'Invalid JSON, switching to experimental parser')\n substituters.forEach(([regex, subst]) => {\n str = str.replace(regex, subst)\n })\n return JSON.parse(str)\n }\n}\nexport { parseJSON as parse, parseJSON as default }\n","// @ts-nocheck\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\nexport const ref = '@else'\nexport const parsers = {\n empty,\n json,\n jquery,\n html,\n}\nexport const formats = {\n '@empty/text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: (input) => input === '',\n },\n },\n '@empty/whitespace+text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s+$/,\n },\n },\n '@empty': {\n parse: empty.parse,\n parseType: {\n dataType: 'Primitive',\n predicate: (input) => input == null,\n },\n },\n '@else/json': {\n parse: json.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\{[\\S\\s]*\\}|\\[[\\S\\s]*\\])\\s*$/,\n },\n },\n '@else/url': {\n parseType: {\n dataType: 'String',\n predicate: /^https?:\\/\\/(([\\w-]+\\.)*[\\w-]+)(:\\d+)?(\\/[^?/]*)*(\\?[^#]*)?(#.*)?$/i,\n },\n },\n '@else/jquery': {\n parse: jquery.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof jQuery !== 'undefined' && input instanceof jQuery\n },\n },\n },\n '@else/html': {\n parse: html.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n },\n },\n },\n}\n","export function parse(input) {\n return input.val() || input.text() || input.html()\n}\n","export function parse(input) {\n return input.value || input.textContent\n}\n","// @ts-nocheck\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\nfunction appendCommas(string, index, array) {\n return string + (index < array.length - 1 ? ',' : '')\n}\nfunction getJsonObject(src, dict) {\n const isArray = Array.isArray(src)\n let entries\n if (isArray) {\n entries = src.map((entry) => getJsonValue(entry, dict))\n } else {\n entries = Object.keys(src)\n .filter((prop) => JSON.stringify(src[prop]))\n .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n }\n entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n entries = dict.list.join(entries.join(''))\n return isArray ? `[${entries}]` : `{${entries}}`\n}\nfunction getJsonValue(src, dict) {\n if (typeof src === 'object' && src !== null) {\n if (src.length === 0) {\n return '[]'\n } else if (Object.keys(src).length === 0) {\n return '{}'\n } else {\n return getJsonObject(src, dict)\n }\n } else {\n return JSON.stringify(src)\n }\n}\nfunction getJson(src, dict) {\n let entries = src.map((entry) => getJsonObject(entry, dict))\n entries = entries.map(appendCommas).map((entry) => dict.entry.join(entry))\n entries = entries.join('')\n return dict.bibliographyContainer.join(`[${entries}]`)\n}\nexport function getJsonWrapper(src) {\n return getJson(src, plugins.dict.get('html'))\n}\nexport default {\n data(data, { type, format = type || 'text', version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n if (format === 'object') {\n return util.deepCopy(data)\n } else if (format === 'text') {\n return JSON.stringify(data, null, 2)\n } else {\n logger.warn(\n '[core]',\n 'This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144'\n )\n return getJson(data, plugins.dict.get(format))\n }\n },\n ndjson(data, { version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n return data.map((entry) => JSON.stringify(entry)).join('\\n')\n },\n}\n","// @ts-nocheck\nimport { parse as parseDate } from '@citation-js/date'\nimport { parse as parseName } from '@citation-js/name'\nfunction nameProps(person) {\n const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n if (given && family) {\n return {\n given,\n family,\n }\n } else if (person.name) {\n return parseName(person.name)\n }\n}\nconst identifiers = ['PMID', 'PMCID', 'DOI', 'ISBN']\nconst journalIdentifiers = ['ISSN']\nfunction idProps(input, identifiers) {\n const output = {}\n for (const prop in input) {\n const upperCaseProp = prop.toUpperCase()\n if (identifiers.includes(upperCaseProp)) {\n output[upperCaseProp] = input[prop]\n }\n }\n if (input.identifier) {\n for (let { id, type = '' } of input.identifier) {\n type = type.toUpperCase()\n if (identifiers.includes(type)) {\n output[type] = id\n }\n }\n }\n return output\n}\nconst typeMap = {\n article: 'article',\n book: 'book',\n booklet: 'book',\n proceedings: 'book',\n mastersthesis: 'thesis',\n inbook: 'chapter',\n incollection: 'chapter',\n conference: 'paper-conference',\n inproceedings: 'paper-conference',\n manual: 'report',\n misc: 'document',\n online: 'website',\n patent: 'patent',\n phdthesis: 'thesis',\n techreport: 'report',\n unpublished: 'manuscript',\n}\nfunction quickscrapeSpecificProps() {\n return {\n type: 'article-journal',\n }\n}\nfunction generalProps(input) {\n const output = {\n type: typeMap[input.type] || 'document',\n title: input.title,\n }\n if (input.author) {\n output.author = input.author.map(nameProps).filter(Boolean)\n }\n if (input.editor) {\n output.editor = input.editor.map(nameProps).filter(Boolean)\n }\n if (input.reviewer) {\n if (input.author) {\n output['reviewed-author'] = output.author\n }\n output.author = input.reviewer.map(nameProps).filter(Boolean)\n }\n if (Array.isArray(input.keywords)) {\n output.keyword = input.keywords.join()\n } else if (input.keywords) {\n output.keyword = input.keywords\n }\n if (input.publisher) {\n output.publisher = input.publisher.name || input.publisher\n }\n if (input.date && input.date.published) {\n output.issued = parseDate(input.date.published)\n } else if (input.year) {\n output.issued = {\n 'date-parts': [[+input.year]],\n }\n }\n if (input.date && input.date.submitted) {\n output.submitted = parseDate(input.date.submitted)\n }\n if (input.journal) {\n const journal = input.journal\n if (journal.name) {\n output['container-title'] = journal.name\n }\n if (journal.volume) {\n output.volume = journal.volume\n }\n if (journal.issue) {\n output.issue = journal.issue\n }\n Object.assign(output, idProps(journal, journalIdentifiers))\n if (journal.firstpage) {\n output['page-first'] = journal.firstpage\n }\n if (journal.pages) {\n output.page = journal.pages.replace('--', '-')\n } else if (journal.firstpage && journal.lastpage) {\n output.page = journal.firstpage + '-' + journal.lastpage\n }\n }\n if (input.link && typeof input.link[0] === 'object') {\n output.URL = input.link[0].url\n }\n Object.assign(output, idProps(input, identifiers))\n if (input.cid) {\n output.id = input.cid\n } else if (output.DOI) {\n output.id = output.DOI\n }\n return output\n}\nconst parseContentMine = function (data) {\n return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\nconst parseBibJson = function (data) {\n return generalProps(data)\n}\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","import * as plugins from '../plugins'\nimport { ref, formats as input } from './input/'\nimport output from './output/'\nplugins.add(ref, {\n input,\n output,\n})\n","import json from './json.js'\nimport label from './label.js'\nexport default Object.assign({}, json, label)\n","import * as json from './json.js'\nimport { plugins } from '../core/index.js'\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\nconst ref = '@bibjson'\nconst parsers = {\n json,\n}\nconst formats = {\n '@bibjson/quickscrape+record+object': {\n parse: json.quickscrapeRecord,\n parseType: {\n propertyConstraint: {\n props: 'link',\n value(links) {\n return scraperLinks.some((link) => links.find(({ type }) => type === link))\n },\n },\n extends: '@bibjson/record+object',\n },\n },\n '@bibjson/record+object': {\n parse: json.record,\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'title',\n },\n {\n props: ['author', 'editor'],\n match: 'some',\n value(authors) {\n return (\n Array.isArray(authors) &&\n authors[0] &&\n authorNameFields.some((field) => field in authors[0])\n )\n },\n },\n ],\n },\n },\n '@bibjson/collection+object': {\n parse(collection) {\n return collection.records\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'metadata',\n value(metadata) {\n return 'collection' in metadata\n },\n },\n {\n props: 'records',\n value(records) {\n return Array.isArray(records)\n },\n },\n ],\n },\n },\n}\nplugins.add(ref, {\n input: formats,\n})\nexport { ref, parsers, formats }\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function pad(s, length) {\n if (s.length > length) {\n return s\n }\n return Array(length - s.length + 1).join(\" \") + s\n }\n\n function lastNLines(string, numLines) {\n var position = string.length\n var lineBreaks = 0;\n while (true) {\n var idx = string.lastIndexOf(\"\\n\", position - 1)\n if (idx === -1) {\n break;\n } else {\n lineBreaks++\n }\n position = idx\n if (lineBreaks === numLines) {\n break;\n }\n if (position === 0) {\n break;\n }\n }\n var startPosition = \n lineBreaks < numLines ?\n 0 : \n position + 1\n return string.substring(startPosition).split(\"\\n\")\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n\n // Use a JavaScript Map to map keywords to their corresponding token type\n // unless Map is unsupported, then fall back to using an Object:\n var isMap = typeof Map !== 'undefined'\n var reverseMap = isMap ? new Map : Object.create(null)\n\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n if (isMap) {\n reverseMap.set(keyword, tokenType)\n } else {\n reverseMap[keyword] = tokenType\n }\n })\n }\n return function(k) {\n return isMap ? reverseMap.get(k) : reverseMap[k]\n }\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedText = info ? info.queuedText: \"\";\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedText: this.queuedText,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n var err = new Error(this.formatError(token, \"invalid syntax\"))\n throw err;\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n \n var numLinesAround = 2\n var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)\n var lastDisplayedLine = token.line + numLinesAround\n var lastLineDigits = String(lastDisplayedLine).length\n var displayedLines = lastNLines(\n this.buffer, \n (this.line - token.line) + numLinesAround + 1\n )\n .slice(0, 5)\n var errorLines = []\n errorLines.push(message + \" at line \" + token.line + \" col \" + token.col + \":\")\n errorLines.push(\"\")\n for (var i = 0; i < displayedLines.length; i++) {\n var line = displayedLines[i]\n var lineNo = firstDisplayedLine + i\n errorLines.push(pad(String(lineNo), lastLineDigits) + \" \" + line);\n if (lineNo === token.line) {\n errorLines.push(pad(\"\", lastLineDigits + token.col + 1) + \"^\")\n }\n }\n return errorLines.join(\"\\n\")\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","const biblatexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n mvbook: 'book',\n inbook: 'chapter',\n bookinbook: 'book',\n booklet: 'book',\n collection: 'book',\n mvcollection: 'book',\n incollection: 'chapter',\n dataset: 'dataset',\n manual: 'report',\n misc: 'document',\n online: 'webpage',\n patent: 'patent',\n periodical: 'periodical',\n proceedings: 'book',\n mvproceedings: 'book',\n inproceedings: 'paper-conference',\n reference: 'book',\n mvreference: 'book',\n inreference: 'entry',\n report: 'report',\n software: 'software',\n thesis: 'thesis',\n unpublished: 'manuscript',\n artwork: 'graphic',\n audio: 'song',\n image: 'figure',\n jurisdiction: 'legal_case',\n legislation: 'legislation',\n legal: 'treaty',\n letter: 'personal_communication',\n movie: 'motion_picture',\n music: 'musical_score',\n performance: 'performance',\n review: 'review',\n standard: 'standard',\n video: 'motion_picture',\n conference: 'paper-conference',\n electronic: 'webpage',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n techreport: 'report',\n www: 'webpage',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n bill: 'legislation',\n book: 'book',\n broadcast: 'audio',\n chapter: 'inbook',\n classic: 'unpublished',\n collection: 'misc',\n dataset: 'dataset',\n document: 'misc',\n entry: 'inreference',\n 'entry-dictionary': 'inreference',\n 'entry-encyclopedia': 'inreference',\n event: 'misc',\n figure: 'artwork',\n graphic: 'artwork',\n hearing: 'legal',\n interview: 'audio',\n legal_case: 'jurisdiction',\n legislation: 'legislation',\n manuscript: 'unpublished',\n motion_picture: 'movie',\n musical_score: 'music',\n 'paper-conference': 'inproceedings',\n patent: 'patent',\n performance: 'performance',\n periodical: 'periodical',\n personal_communication: 'letter',\n post: 'online',\n 'post-weblog': 'online',\n regulation: 'legal',\n report: 'report',\n review: 'review',\n 'review-book': 'review',\n software: 'software',\n song: 'music',\n speech: 'audio',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'legal',\n webpage: 'online',\n },\n}\n\nexport default biblatexTypes\n","const bibtexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n booklet: 'book',\n conference: 'paper-conference',\n inbook: 'chapter',\n incollection: 'chapter',\n inproceedings: 'paper-conference',\n manual: 'report',\n mastersthesis: 'thesis',\n misc: 'document',\n phdthesis: 'thesis',\n proceedings: 'book',\n techreport: 'report',\n unpublished: 'manuscript',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n book: 'book',\n chapter: 'inbook',\n manuscript: 'unpublished',\n 'paper-conference': 'inproceedings',\n report: 'techreport',\n review: 'article',\n 'review-book': 'article',\n },\n}\n\nexport default bibtexTypes\n","// import _required from './required.json' assert { type: \"json\" };\n// import _fieldTypes from './fieldTypes.json' assert { type: \"json\" };\n// import unicode from './unicode.json' assert { type: \"json\" };\nimport _required from './required.js'\nimport _fieldTypes from './fieldTypes.js'\nimport unicode from './unicode.js'\nexport const required = _required\nexport const fieldTypes = _fieldTypes\nexport const diacritics = unicode.diacritics\nexport const commands = unicode.commands\nexport const mathCommands = unicode.mathCommands\nexport const defaultStrings = {\n jan: '01',\n feb: '02',\n mar: '03',\n apr: '04',\n may: '05',\n jun: '06',\n jul: '07',\n aug: '08',\n sep: '09',\n oct: '10',\n nov: '11',\n dec: '12',\n acmcs: 'ACM Computing Surveys',\n acta: 'Acta Informatica',\n cacm: 'Communications of the ACM',\n ibmjrd: 'IBM Journal of Research and Development',\n ibmsj: 'IBM Systems Journal',\n ieeese: 'IEEE Transactions on Software Engineering',\n ieeetc: 'IEEE Transactions on Computers',\n ieeetcad: 'IEEE Transactions on Computer-Aided Design of Integrated Circuits',\n ipl: 'Information Processing Letters',\n jacm: 'Journal of the ACM',\n jcss: 'Journal of Computer and System Sciences',\n scp: 'Science of Computer Programming',\n sicomp: 'SIAM Journal on Computing',\n tocs: 'ACM Transactions on Computer Systems',\n tods: 'ACM Transactions on Database Systems',\n tog: 'ACM Transactions on Graphics',\n toms: 'ACM Transactions on Mathematical Software',\n toois: 'ACM Transactions on Office Information Systems',\n toplas: 'ACM Transactions on Programming Languages and Systems',\n tcs: 'Theoretical Computer Science',\n}\nexport const formattingEnvs = {\n it: 'italics',\n itshape: 'italics',\n sl: 'italics',\n slshape: 'italics',\n em: 'italics',\n bf: 'bold',\n bfseries: 'bold',\n sc: 'smallcaps',\n scshape: 'smallcaps',\n rm: undefined,\n sf: undefined,\n tt: undefined,\n}\nexport const formattingCommands = {\n textit: 'italics',\n textsl: 'italics',\n emph: 'italics',\n mkbibitalic: 'italics',\n mkbibemph: 'italics',\n textbf: 'bold',\n strong: 'bold',\n mkbibbold: 'bold',\n textsc: 'smallcaps',\n textsuperscript: 'superscript',\n textsubscript: 'subscript',\n enquote: 'quotes',\n mkbibquote: 'quotes',\n textmd: undefined,\n textrm: undefined,\n textsf: undefined,\n texttt: undefined,\n textup: undefined,\n}\nexport const formatting = {\n italics: ['', ''],\n bold: ['', ''],\n superscript: ['', ''],\n subscript: ['', ''],\n smallcaps: ['', ''],\n nocase: ['', ''],\n quotes: ['\\u201C', '\\u201D'],\n}\nexport const argumentCommands = {\n ElsevierGlyph(glyph) {\n return String.fromCharCode(parseInt(glyph, 16))\n },\n href(url, text) {\n return url\n },\n url(url) {\n return url\n },\n}\nexport const ligaturePattern = /---?|''|``|~/g\nexport const ligatures = {\n '--': '\\u2013',\n '---': '\\u2014',\n '``': '\\u201C',\n \"''\": '\\u201D',\n '~': '\\u00A0',\n}\nexport const mathScriptFormatting = {\n '^': 'superscript',\n sp: 'superscript',\n _: 'subscript',\n sb: 'subscript',\n mathrm: undefined,\n}\nexport const mathScripts = {\n '^': {\n 0: '\\u2070',\n 1: '\\u00B9',\n 2: '\\u00B2',\n 3: '\\u00B3',\n 4: '\\u2074',\n 5: '\\u2075',\n 6: '\\u2076',\n 7: '\\u2077',\n 8: '\\u2078',\n 9: '\\u2079',\n '+': '\\u207A',\n '-': '\\u207B',\n '=': '\\u207C',\n '(': '\\u207D',\n ')': '\\u207E',\n i: '\\u2071',\n n: '\\u207F',\n },\n _: {\n 0: '\\u2080',\n 1: '\\u2081',\n 2: '\\u2082',\n 3: '\\u2083',\n 4: '\\u2084',\n 5: '\\u2085',\n 6: '\\u2086',\n 7: '\\u2087',\n 8: '\\u2088',\n 9: '\\u2089',\n '+': '\\u208A',\n '-': '\\u208B',\n '=': '\\u208C',\n '(': '\\u208D',\n ')': '\\u208E',\n a: '\\u2090',\n e: '\\u2091',\n o: '\\u2092',\n x: '\\u2093',\n '\\u0259': '\\u2094',\n h: '\\u2095',\n k: '\\u2096',\n l: '\\u2097',\n m: '\\u2098',\n n: '\\u2099',\n s: '\\u209A',\n p: '\\u209B',\n t: '\\u209C',\n },\n}\nexport const sentenceCaseLanguages = [\n 'american',\n 'british',\n 'canadian',\n 'english',\n 'australian',\n 'newzealand',\n 'usenglish',\n 'ukenglish',\n 'en',\n 'eng',\n 'en-au',\n 'en-bz',\n 'en-ca',\n 'en-cb',\n 'en-gb',\n 'en-ie',\n 'en-jm',\n 'en-nz',\n 'en-ph',\n 'en-tt',\n 'en-us',\n 'en-za',\n 'en-zw',\n 'anglais',\n]\n","const required = {\n biblatex: {\n article: ['author', 'title', 'journaltitle', ['year', 'date']],\n book: ['author', 'title', ['year', 'date']],\n mvbook: ['author', 'title', ['year', 'date']],\n inbook: ['author', 'title', 'booktitle', ['year', 'date']],\n booklet: [['author', 'editor'], 'title', ['year', 'date']],\n collection: ['editor', 'title', ['year', 'date']],\n mvcollection: ['editor', 'title', ['year', 'date']],\n incollection: ['author', 'title', 'booktitle', ['year', 'date']],\n dataset: [['author', 'editor'], 'title', ['year', 'date']],\n online: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n patent: ['author', 'title', 'number', ['year', 'date']],\n periodical: ['editor', 'title', ['year', 'date']],\n proceedings: ['title', ['year', 'date']],\n mvproceedings: ['title', ['year', 'date']],\n inproceedings: ['author', 'title', 'booktitle', ['year', 'date']],\n report: ['author', 'title', 'type', 'institution', ['year', 'date']],\n thesis: ['author', 'title', 'type', 'institution', ['year', 'date']],\n unpublished: ['author', 'title', ['year', 'date']],\n conference: ['author', 'title', 'booktitle', ['year', 'date']],\n electronic: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n mastersthesis: ['author', 'title', 'institution', ['year', 'date']],\n phdthesis: ['author', 'title', 'institution', ['year', 'date']],\n techreport: ['author', 'title', 'institution', ['year', 'date']],\n www: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n },\n bibtex: {\n article: ['author', 'title', 'journal', 'year'],\n book: [['author', 'editor'], 'title', 'publisher', 'year'],\n booklet: ['title'],\n inbook: [['author', 'editor'], 'title', ['chapter', 'pages'], 'publisher', 'year'],\n incollection: ['author', 'title', 'booktitle', 'publisher', 'year'],\n inproceedings: ['author', 'title', 'booktitle', 'year'],\n mastersthesis: ['author', 'title', 'school', 'year'],\n phdthesis: ['author', 'title', 'school', 'year'],\n proceedings: ['title', 'year'],\n techreport: ['author', 'title', 'institution', 'year'],\n unpublished: ['author', 'title', 'note'],\n },\n}\n\nexport default required\n","const fieldTypes = {\n abstract: ['field', 'literal'],\n addendum: ['field', 'literal'],\n afterword: ['list', 'name'],\n annotation: ['field', 'literal'],\n annotator: ['list', 'name'],\n author: ['list', 'name'],\n authortype: ['field', 'key'],\n bookauthor: ['list', 'name'],\n bookpagination: ['field', 'key'],\n booksubtitle: ['field', 'literal'],\n booktitle: ['field', 'title'],\n booktitleaddon: ['field', 'literal'],\n chapter: ['field', 'literal'],\n commentator: ['list', 'name'],\n date: ['field', 'date'],\n doi: ['field', 'verbatim'],\n edition: ['field', 'literal'],\n editor: ['list', 'name'],\n editora: ['list', 'name'],\n editorb: ['list', 'name'],\n editorc: ['list', 'name'],\n editortype: ['field', 'key'],\n editoratype: ['field', 'key'],\n editorbtype: ['field', 'key'],\n editorctype: ['field', 'key'],\n eid: ['field', 'literal'],\n entrysubtype: ['field', 'literal'],\n eprint: ['field', 'verbatim'],\n eprintclass: ['field', 'literal'],\n eprinttype: ['field', 'literal'],\n eventdate: ['field', 'date'],\n eventtitle: ['field', 'title'],\n eventtitleaddon: ['field', 'literal'],\n file: ['field', 'verbatim'],\n foreword: ['list', 'name'],\n holder: ['list', 'name'],\n howpublished: ['field', 'literal'],\n indextitle: ['field', 'literal'],\n institution: ['list', 'literal'],\n introduction: ['list', 'name'],\n isan: ['field', 'literal'],\n isbn: ['field', 'literal'],\n ismn: ['field', 'literal'],\n isrn: ['field', 'literal'],\n issn: ['field', 'literal'],\n issue: ['field', 'literal'],\n issuesubtitle: ['field', 'literal'],\n issuetitle: ['field', 'literal'],\n iswc: ['field', 'literal'],\n journalsubtitle: ['field', 'literal'],\n journaltitle: ['field', 'literal'],\n label: ['field', 'literal'],\n language: ['list', 'key'],\n library: ['field', 'literal'],\n location: ['list', 'literal'],\n mainsubtitle: ['field', 'literal'],\n maintitle: ['field', 'title'],\n maintitleaddon: ['field', 'literal'],\n month: ['field', 'literal'],\n nameaddon: ['field', 'literal'],\n note: ['field', 'literal'],\n number: ['field', 'literal'],\n organization: ['list', 'literal'],\n origdate: ['field', 'date'],\n origlanguage: ['list', 'key'],\n origlocation: ['list', 'literal'],\n origpublisher: ['list', 'literal'],\n origtitle: ['field', 'title'],\n pages: ['field', 'range'],\n pagetotal: ['field', 'literal'],\n pagination: ['field', 'key'],\n part: ['field', 'literal'],\n publisher: ['list', 'literal'],\n pubstate: ['field', 'key'],\n reprinttitle: ['field', 'literal'],\n series: ['field', 'title'],\n shortauthor: ['list', 'name'],\n shorteditor: ['list', 'name'],\n shorthand: ['field', 'literal'],\n shorthandintro: ['field', 'literal'],\n shortjournal: ['field', 'literal'],\n shortseries: ['field', 'literal'],\n shorttitle: ['field', 'title'],\n subtitle: ['field', 'literal'],\n title: ['field', 'title'],\n titleaddon: ['field', 'literal'],\n translator: ['list', 'name'],\n type: ['field', 'title'],\n url: ['field', 'uri'],\n urldate: ['field', 'date'],\n venue: ['field', 'literal'],\n version: ['field', 'literal'],\n volume: ['field', 'integer'],\n volumes: ['field', 'integer'],\n year: ['field', 'literal'],\n crossref: ['field', 'entry key'],\n entryset: ['separated', 'literal'],\n execute: ['field', 'code'],\n gender: ['field', 'gender'],\n langid: ['field', 'identifier'],\n langidopts: ['field', 'literal'],\n ids: ['separated', 'entry key'],\n indexsorttitle: ['field', 'literal'],\n keywords: ['separated', 'literal'],\n options: ['separated', 'options'],\n presort: ['field', 'string'],\n related: ['separated', 'literal'],\n relatedoptions: ['separated', 'literal'],\n relatedtype: ['field', 'identifier'],\n relatedstring: ['field', 'literal'],\n sortkey: ['field', 'literal'],\n sortname: ['list', 'name'],\n sortshorthand: ['field', 'literal'],\n sorttitle: ['field', 'literal'],\n sortyear: ['field', 'integer'],\n xdata: ['separated', 'entry key'],\n xref: ['field', 'entry key'],\n namea: ['list', 'name'],\n nameb: ['list', 'name'],\n namec: ['list', 'name'],\n nameatype: ['field', 'key'],\n namebtype: ['field', 'key'],\n namectype: ['field', 'key'],\n lista: ['list', 'literal'],\n listb: ['list', 'literal'],\n listc: ['list', 'literal'],\n listd: ['list', 'literal'],\n liste: ['list', 'literal'],\n listf: ['list', 'literal'],\n usera: ['field', 'literal'],\n userb: ['field', 'literal'],\n userc: ['field', 'literal'],\n userd: ['field', 'literal'],\n usere: ['field', 'literal'],\n userf: ['field', 'literal'],\n verba: ['field', 'literal'],\n verbb: ['field', 'literal'],\n verbc: ['field', 'literal'],\n address: ['list', 'literal'],\n annote: ['field', 'literal'],\n archiveprefix: ['field', 'literal'],\n journal: ['field', 'literal'],\n key: ['field', 'literal'],\n pdf: ['field', 'verbatim'],\n primaryclass: ['field', 'literal'],\n school: ['list', 'literal'],\n numpages: ['field', 'integer'],\n pmid: ['field', 'literal'],\n pmcid: ['field', 'literal'],\n}\n\nexport default fieldTypes\n","const unicode = {\n diacritics: {\n '`': '̀',\n \"'\": '́',\n '^': '̂',\n '~': '̃',\n '=': '̄',\n u: '̆',\n '.': '̇',\n '\"': '̈',\n r: '̊',\n H: '̋',\n v: '̌',\n b: '̲',\n d: '̣',\n c: '̧',\n k: '̨',\n t: '͡',\n textcommabelow: '̦',\n },\n commands: {\n textquotesingle: \"'\",\n textasciigrave: '`',\n textquotedbl: '\"',\n textdollar: '$',\n textless: '<',\n textgreater: '>',\n textbackslash: '\\\\',\n textasciicircum: '^',\n textunderscore: '_',\n textbraceleft: '{',\n textbar: '|',\n textbraceright: '}',\n textasciitilde: '~',\n textexclamdown: '¡',\n textcent: '¢',\n textsterling: '£',\n textcurrency: '¤',\n textyen: '¥',\n textbrokenbar: '¦',\n textsection: '§',\n textasciidieresis: '¨',\n textcopyright: '©',\n textordfeminine: 'ª',\n guillemetleft: '«',\n guillemotleft: '«',\n textlnot: '¬',\n textregistered: '®',\n textasciimacron: '¯',\n textdegree: '°',\n textpm: '±',\n texttwosuperior: '²',\n textthreesuperior: '³',\n textasciiacute: '´',\n textmu: 'µ',\n textparagraph: '¶',\n textperiodcentered: '·',\n textonesuperior: '¹',\n textordmasculine: 'º',\n guillemetright: '»',\n guillemotright: '»',\n textonequarter: '¼',\n textonehalf: '½',\n textthreequarters: '¾',\n textquestiondown: '¿',\n AE: 'Æ',\n DH: 'Ð',\n texttimes: '×',\n O: 'Ø',\n TH: 'Þ',\n ss: 'ß',\n ae: 'æ',\n dh: 'ð',\n textdiv: '÷',\n o: 'ø',\n th: 'þ',\n DJ: 'Đ',\n dj: 'đ',\n i: 'ı',\n IJ: 'IJ',\n ij: 'ij',\n L: 'Ł',\n l: 'ł',\n NG: 'Ŋ',\n ng: 'ŋ',\n OE: 'Œ',\n oe: 'œ',\n textflorin: 'ƒ',\n j: 'ȷ',\n textasciicaron: 'ˇ',\n textasciibreve: '˘',\n textacutedbl: '˝',\n textgravedbl: '˵',\n texttildelow: '˷',\n textbaht: '฿',\n SS: 'ẞ',\n textcompwordmark: '‌',\n textendash: '–',\n textemdash: '—',\n textbardbl: '‖',\n textquoteleft: '‘',\n textquoteright: '’',\n quotesinglbase: '‚',\n textquotedblleft: '“',\n textquotedblright: '”',\n quotedblbase: '„',\n textdagger: '†',\n textdaggerdbl: '‡',\n textbullet: '•',\n textellipsis: '…',\n textperthousand: '‰',\n textpertenthousand: '‱',\n guilsinglleft: '‹',\n guilsinglright: '›',\n textreferencemark: '※',\n textinterrobang: '‽',\n textfractionsolidus: '⁄',\n textlquill: '⁅',\n textrquill: '⁆',\n textdiscount: '⁒',\n textcolonmonetary: '₡',\n textlira: '₤',\n textnaira: '₦',\n textwon: '₩',\n textdong: '₫',\n texteuro: '€',\n textpeso: '₱',\n textcelsius: '℃',\n textnumero: '№',\n textcircledP: '℗',\n textrecipe: '℞',\n textservicemark: '℠',\n texttrademark: '™',\n textohm: 'Ω',\n textmho: '℧',\n textestimated: '℮',\n textleftarrow: '←',\n textuparrow: '↑',\n textrightarrow: '→',\n textdownarrow: '↓',\n textminus: '−',\n Hwithstroke: 'Ħ',\n hwithstroke: 'ħ',\n textasteriskcentered: '∗',\n textsurd: '√',\n textlangle: '〈',\n textrangle: '〉',\n textblank: '␢',\n textvisiblespace: '␣',\n textopenbullet: '◦',\n textbigcircle: '◯',\n textmusicalnote: '♪',\n textmarried: '⚭',\n textdivorced: '⚮',\n textinterrobangdown: '⸘',\n textcommabelow: null,\n copyright: '©',\n },\n mathCommands: {\n Gamma: 'Γ',\n Delta: 'Δ',\n Theta: 'Θ',\n Lambda: 'Λ',\n Xi: 'Ξ',\n Pi: 'Π',\n Sigma: 'Σ',\n Phi: 'Φ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n varepsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n pi: 'π',\n rho: 'ρ',\n varsigma: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n varphi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n vartheta: 'ϑ',\n Upsilon: 'ϒ',\n phi: 'ϕ',\n varpi: 'ϖ',\n varrho: 'ϱ',\n epsilon: 'ϵ',\n },\n}\n\nexport default unicode\n","import biblatex from './mapping/biblatexTypes.js'\nimport bibtex from './mapping/bibtexTypes.js'\nimport * as constants from './input/constants.js'\nexport default {\n constants,\n types: {\n biblatex,\n bibtex,\n },\n parse: {\n biblatex: true,\n strict: false,\n sentenceCase: 'never',\n },\n format: {\n useIdAsLabel: false,\n checkLabel: true,\n asciiOnly: true,\n },\n biber: {\n annotationMarker: '+an',\n namedAnnotationMarker: ':',\n },\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util, logger } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport { defaultStrings } from './constants.js'\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:+-]*/\nconst whitespace = {\n comment: /%.*/,\n whitespace: {\n match: /\\s+/,\n lineBreaks: true,\n },\n}\nconst lexer = moo.states({\n main: {\n junk: {\n match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/,\n lineBreaks: true,\n },\n at: {\n match: '@',\n push: 'entry',\n },\n },\n entry: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n otherEntryType: {\n match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,\n next: 'otherEntryContents',\n },\n dataEntryType: {\n match: identifier,\n next: 'dataEntryContents',\n },\n }\n ),\n otherEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'fields',\n },\n }\n ),\n dataEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'dataEntryContents',\n },\n label: /[^,\\s]+/,\n comma: {\n match: ',',\n next: 'fields',\n },\n }\n ),\n fields: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n identifier,\n number: /-?\\d+/,\n hash: '#',\n equals: '=',\n comma: ',',\n quote: {\n match: '\"',\n push: 'quotedLiteral',\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: /[})]/,\n pop: true,\n },\n }\n ),\n quotedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n quote: {\n match: '\"',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{]|[^{\"])+/,\n lineBreaks: true,\n },\n },\n bracedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: '}',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{}]|[^{}])+/,\n lineBreaks: true,\n },\n },\n})\nconst delimiters = {\n '(': ')',\n '{': '}',\n}\nexport const bibtexGrammar = new util.Grammar(\n {\n Main() {\n const entries = []\n while (true) {\n while (this.matchToken('junk')) {\n this.consumeToken('junk')\n }\n if (this.matchEndOfFile()) {\n break\n }\n entries.push(this.consumeRule('Entry'))\n }\n return entries.filter(Boolean)\n },\n _() {\n let oldToken\n while (oldToken !== this.token) {\n oldToken = this.token\n this.consumeToken('whitespace', true)\n this.consumeToken('comment', true)\n }\n },\n Entry() {\n this.consumeToken('at')\n this.consumeRule('_')\n const type = (\n this.matchToken('otherEntryType')\n ? this.consumeToken('otherEntryType')\n : this.consumeToken('dataEntryType')\n ).value.toLowerCase()\n this.consumeRule('_')\n const openBrace = this.consumeToken('lbrace').value\n this.consumeRule('_')\n let result\n if (type === 'string') {\n const [key, value] = this.consumeRule('Field')\n this.state.strings[key] = value\n } else if (type === 'preamble') {\n this.consumeRule('Expression')\n } else {\n const label = this.consumeToken('label').value\n this.consumeRule('_')\n this.consumeToken('comma')\n this.consumeRule('_')\n const entryBody = this.consumeRule('EntryBody')\n result = _objectSpread(\n {\n type,\n label,\n },\n entryBody\n )\n }\n this.consumeRule('_')\n const closeBrace = this.consumeToken('rbrace').value\n if (closeBrace !== delimiters[openBrace]) {\n logger.warn(\n '[plugin-bibtex]',\n `entry started with \"${openBrace}\", but ends with \"${closeBrace}\"`\n )\n }\n return result\n },\n EntryBody() {\n const output = {\n properties: {},\n }\n while (this.matchToken('identifier')) {\n const [field, value] = this.consumeRule('Field')\n let annotationField\n let annotationName = 'default'\n if (field.endsWith(config.biber.annotationMarker)) {\n annotationField = field.slice(0, -config.biber.annotationMarker.length)\n } else if (\n field.includes(config.biber.annotationMarker + config.biber.namedAnnotationMarker)\n ) {\n ;[annotationField, annotationName] = field.split(\n config.biber.annotationMarker + config.biber.namedAnnotationMarker\n )\n }\n if (annotationField) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[annotationField]) {\n output.annotations[annotationField] = {}\n }\n output.annotations[annotationField][annotationName] = value\n } else {\n output.properties[field] = value\n }\n this.consumeRule('_')\n if (this.consumeToken('comma', true)) {\n this.consumeRule('_')\n } else {\n break\n }\n }\n return output\n },\n Field() {\n const field = this.consumeToken('identifier').value.toLowerCase()\n this.consumeRule('_')\n this.consumeToken('equals')\n this.consumeRule('_')\n const value = this.consumeRule('Expression')\n return [field, value]\n },\n Expression() {\n let output = this.consumeRule('ExpressionPart')\n this.consumeRule('_')\n while (this.matchToken('hash')) {\n this.consumeToken('hash')\n this.consumeRule('_')\n output += this.consumeRule('ExpressionPart').toString()\n this.consumeRule('_')\n }\n return output\n },\n ExpressionPart() {\n if (this.matchToken('identifier')) {\n return this.state.strings[this.consumeToken('identifier').value.toLowerCase()] || ''\n } else if (this.matchToken('number')) {\n return parseInt(this.consumeToken('number'))\n } else if (this.matchToken('quote')) {\n return this.consumeRule('QuoteString')\n } else {\n return this.consumeRule('BracketString')\n }\n },\n QuoteString() {\n let output = ''\n this.consumeToken('quote')\n while (!this.matchToken('quote')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('quote')\n return output\n },\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('rbrace')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return `{${this.consumeRule('BracketString')}}`\n } else {\n return this.consumeToken('text').value\n }\n },\n },\n {\n strings: defaultStrings,\n }\n)\nexport function parse(text) {\n return bibtexGrammar.parse(lexer.reset(text))\n}\n","const bibTxtRegex = {\n splitEntries: /\\n\\s*(?=\\[)/g,\n parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n splitPairs: /((?=.)\\s)*\\n\\s*/g,\n splitPair: /:(.*)/,\n}\nconst parseBibTxtEntry = (entry) => {\n const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n if (!label || !pairs) {\n return {}\n } else {\n const out = {\n type: 'book',\n label,\n properties: {},\n }\n pairs\n .trim()\n .split(bibTxtRegex.splitPairs)\n .filter((v) => v)\n .forEach((pair) => {\n let [key, value] = pair.split(bibTxtRegex.splitPair)\n if (value) {\n key = key.trim()\n value = value.trim()\n if (key === 'type') {\n out.type = value\n } else {\n out.properties[key] = value\n }\n }\n })\n return out\n }\n}\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\n","// @ts-nocheck\nimport { util } from '../../core/index.js'\nimport config from '../config.js'\nconst stopWords = new Set(['the', 'a', 'an'])\nconst unsafeChars = /(?:<\\/?.*?>|[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F])+/g\nconst unicode = /[^\\u0020-\\u007F]+/g\nfunction isLabelSafe(text) {\n return !config.format.checkLabel || !text.match(unsafeChars)\n}\nfunction formatLabelFromId(id) {\n if (id === null) {\n return 'null'\n } else if (id === undefined) {\n return 'undefined'\n } else if (config.format.checkLabel) {\n return id.toString().replace(unsafeChars, '')\n } else {\n return id.toString()\n }\n}\nfunction firstWord(text) {\n if (!text) {\n return ''\n } else {\n return text\n .normalize('NFKD')\n .replace(unicode, '')\n .split(unsafeChars)\n .find((word) => word.length && !stopWords.has(word.toLowerCase()))\n }\n}\nconst name = new util.Translator([\n {\n source: 'given',\n target: 'given',\n },\n {\n source: 'family',\n target: 'family',\n },\n {\n source: 'suffix',\n target: 'suffix',\n },\n {\n source: 'prefix',\n target: 'non-dropping-particle',\n },\n {\n source: 'family',\n target: 'literal',\n when: {\n source: false,\n target: {\n family: false,\n given: false,\n },\n },\n },\n])\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\nexport const TYPE = 'BibTeX type'\nexport const LABEL = 'BibTeX label'\nexport const MONTHS = {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12,\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12,\n}\nexport const TYPE_KEYS = {\n bathesis: \"Bachelor's thesis\",\n mathesis: \"Master's thesis\",\n phdthesis: 'PhD thesis',\n candthesis: 'Candidate thesis',\n techreport: 'technical report',\n resreport: 'research report',\n software: 'computer software',\n datacd: 'data cd',\n audiocd: 'audio cd',\n patent: 'patent',\n patentde: 'German patent',\n patenteu: 'European patent',\n patentfr: 'French patent',\n patentuk: 'British patent',\n patentus: 'U.S. patent',\n patreq: 'patent request',\n patreqde: 'German patent request',\n patreqeu: 'European patent request',\n patreqfr: 'French patent request',\n patrequk: 'British patent request',\n patrequs: 'U.S. patent request',\n}\nexport const STANDARD_NUMBERS_PATTERN =\n /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\\d{9}|(?=[\\d-]{11}$)\\d+-\\d+-\\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\\d{9}-?\\d$)/i\nexport function parseDate(date) {\n const parts = date\n .split('T')[0]\n .replace(/[?~%]$/, '')\n .split('-')\n const year = +parts[0].replace(/^Y(?=-?\\d{4}\\d+)/, '').replace(/X/g, '0')\n const month = +parts[1]\n const day = +parts[2]\n if (!month || month > 20) {\n return [year]\n } else if (!day) {\n return [year, month]\n } else {\n return [year, month, day]\n }\n}\nexport function parseMonth(value) {\n if (value == null) {\n return []\n }\n if (+value) {\n return [parseInt(value, 10)]\n }\n value = value.trim().toLowerCase()\n if (value in MONTHS) {\n return [MONTHS[value]]\n }\n const parts = value.split(/\\s+/)\n let month\n let day\n if (parts[0] in MONTHS) {\n month = MONTHS[parts[0]]\n day = parseInt(parts[1])\n } else if (parts[1] in MONTHS) {\n month = MONTHS[parts[1]]\n day = parseInt(parts[0])\n }\n return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n let label = ''\n if (author && author[0]) {\n label += firstWord(author[0].family || author[0].literal)\n }\n if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n label += issued['date-parts'][0][0]\n }\n if (suffix) {\n label += suffix\n } else if (title) {\n label += firstWord(title)\n }\n return label\n}\nexport const Converters = {\n PICK: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(value) {\n return [value]\n },\n },\n DATE: {\n toTarget(date) {\n const parts = date\n .split('/')\n .map((part) => (part && part !== '..' ? parseDate(part) : undefined))\n return isNaN(parts[0][0])\n ? {\n literal: date,\n }\n : {\n 'date-parts': parts,\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n return date['date-parts']\n .map((datePart) =>\n datePart.map((datePart) => datePart.toString().padStart(2, '0')).join('-')\n )\n .join('/')\n }\n },\n },\n YEAR_MONTH: {\n toTarget(year, month, day) {\n if (isNaN(+year)) {\n return {\n literal: year,\n }\n } else if (!isNaN(+day) && !isNaN(+month)) {\n return {\n 'date-parts': [[+year, +month, +day]],\n }\n } else {\n return {\n 'date-parts': [[+year, ...parseMonth(month)]],\n }\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n const [year, month, day] = date['date-parts'][0]\n return [year.toString(), month ? (day ? `${months[month - 1]} ${day}` : month) : undefined]\n } else {\n return []\n }\n },\n },\n EPRINT: {\n toTarget(id, type) {\n if (type === 'pubmed') {\n return id\n }\n },\n toSource(id) {\n return [id, 'pubmed']\n },\n },\n EVENT_TITLE: {\n toTarget(title, addon) {\n if (addon) {\n title += ' (' + addon + ')'\n }\n return title\n },\n toSource(title) {\n return title.match(/^(.+)(?: \\((.+)\\))?$/).slice(1, 3)\n },\n },\n HOW_PUBLISHED: {\n toTarget(howPublished) {\n if (howPublished.startsWith('http')) {\n return howPublished\n }\n },\n },\n KEYWORDS: {\n toTarget(list) {\n return list.join(',')\n },\n toSource(list) {\n return list.split(',')\n },\n },\n LABEL: {\n toTarget(label) {\n return [label, label]\n },\n toSource(id, label, author, issued, suffix, title) {\n if (label && isLabelSafe(label)) {\n return label\n } else if (config.format.useIdAsLabel) {\n return formatLabelFromId(id)\n } else {\n return formatLabel(author, issued, suffix, title) || formatLabelFromId(id)\n }\n },\n },\n NAMES: {\n toTarget(list) {\n return list.map(name.convertToTarget)\n },\n toSource(list) {\n return list.map(name.convertToSource)\n },\n },\n NAMES_ORCID: {\n toTarget(list, orcid) {\n return list.map((inputName, i) => {\n var _orcid$item\n const outputName = name.convertToTarget(inputName)\n if (\n typeof (orcid === null ||\n orcid === void 0 ||\n (_orcid$item = orcid.item) === null ||\n _orcid$item === void 0\n ? void 0\n : _orcid$item[i]) === 'string'\n ) {\n outputName._orcid = orcid.item[i]\n }\n return outputName\n })\n },\n toSource(list) {\n const names = []\n const orcid = []\n for (let i = 0; i < list.length; i++) {\n names.push(name.convertToSource(list[i]))\n if (list[i]._orcid) {\n orcid[i] = list[i]._orcid\n }\n }\n return [\n names,\n orcid.length\n ? {\n item: orcid,\n }\n : undefined,\n ]\n },\n },\n PAGES: {\n toTarget(pages) {\n return pages.replace(/[–—]/, '-')\n },\n toSource(pages) {\n return pages.replace('-', '--')\n },\n },\n STANDARD_NUMBERS: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(number) {\n const match = number.toString().match(STANDARD_NUMBERS_PATTERN)\n return match ? match.slice(1, 5) : []\n },\n },\n STATUS: {\n toSource(state) {\n if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {\n return state\n }\n },\n },\n TITLE: {\n toTarget(title, subtitle, addon) {\n if (subtitle) {\n title += ': ' + subtitle\n }\n return title\n },\n toSource(title) {\n return [title]\n },\n },\n}\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './biblatexTypes.js'\nimport { TYPE, LABEL, TYPE_KEYS, Converters } from './shared.js'\nconst nonSpec = [\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n addendum: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'numpages',\n target: 'number-of-pages',\n when: {\n source: {\n pagetotal: false,\n },\n target: false,\n },\n },\n {\n source: 'pmid',\n target: 'PMID',\n when: {\n source: {\n eprinttype(type) {\n return type !== 'pmid'\n },\n archiveprefix(type) {\n return type !== 'pmid'\n },\n },\n target: false,\n },\n },\n {\n source: 'pmcid',\n target: 'PMCID',\n when: {\n target: false,\n },\n },\n {\n source: 's2id',\n target: 'custom',\n convert: {\n toTarget(S2ID) {\n return {\n S2ID,\n }\n },\n toSource({ S2ID }) {\n return S2ID\n },\n },\n },\n]\nconst aliases = [\n {\n source: 'annote',\n target: 'annote',\n when: {\n source: {\n annotation: false,\n },\n target: false,\n },\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n when: {\n source: {\n location: false,\n },\n target: false,\n },\n },\n {\n source: ['eprint', 'archiveprefix'],\n target: 'PMID',\n convert: Converters.EPRINT,\n when: {\n source: {\n eprinttype: false,\n },\n target: false,\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n booktitle: false,\n journaltitle: false,\n },\n target: false,\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: false,\n },\n },\n]\nexport default new util.Translator([\n ...aliases,\n ...nonSpec,\n {\n source: 'abstract',\n target: 'abstract',\n },\n {\n source: 'urldate',\n target: 'accessed',\n convert: Converters.DATE,\n },\n {\n source: 'annotation',\n target: 'annote',\n },\n {\n source: ['author', 'author+an:orcid'],\n target: 'author',\n convert: Converters.NAMES_ORCID,\n },\n {\n source: 'library',\n target: 'call-number',\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'bookauthor',\n target: 'container-author',\n convert: Converters.NAMES,\n },\n {\n source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n target: 'container-title',\n when: {\n source: true,\n target: {\n 'number-of-volumes': true,\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n },\n target: {\n 'number-of-volumes': false,\n type(type) {\n return !type || !type.startsWith('article')\n },\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['journaltitle', 'journalsubtitle', 'journaltitleaddon'],\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: 'shortjournal',\n target: 'container-title-short',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'shortjournal',\n target: 'journalAbbreviation',\n when: {\n source: false,\n target: {\n 'container-title-short': false,\n },\n },\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'bookinbook',\n 'suppbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'shortseries',\n target: 'collection-title-short',\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: [TYPE, 'entrysubtype', 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(type, subtype, typeKey) {\n if (!typeKey) {\n if (type === 'mastersthesis') {\n typeKey = 'mathesis'\n }\n if (type === 'phdthesis') {\n typeKey = 'phdthesis'\n }\n if (type === 'techreport') {\n typeKey = 'techreport'\n }\n }\n return [types.source[type] || 'document', typeKey || subtype]\n },\n toSource(type, genre) {\n const sourceType = types.target[type] || 'misc'\n return genre in TYPE_KEYS ? [sourceType, undefined, genre] : [sourceType, genre]\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'eventdate',\n target: 'event-date',\n convert: Converters.DATE,\n },\n {\n source: 'venue',\n target: 'event-place',\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event-title',\n convert: Converters.EVENT_TITLE,\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event',\n convert: Converters.EVENT_TITLE,\n when: {\n source: false,\n target: {\n 'event-title': false,\n },\n },\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'issue',\n target: 'issue',\n when: {\n source: {\n number: false,\n [TYPE]: ['article', 'periodical'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'string' && !issue.match(/\\d+/)\n },\n type: ['article', 'article-journal', 'article-newspaper', 'article-magazine', 'periodical'],\n },\n },\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return issue && (typeof issue === 'number' || issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: 'date',\n target: 'issued',\n convert: Converters.DATE,\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n when: {\n source: {\n date: false,\n },\n target: false,\n },\n },\n {\n source: 'location',\n target: 'jurisdiction',\n when: {\n source: {\n type: 'patent',\n },\n target: {\n type: 'patent',\n },\n },\n },\n {\n source: 'keywords',\n target: 'keyword',\n convert: Converters.KEYWORDS,\n },\n {\n source: 'language',\n target: 'language',\n convert: Converters.PICK,\n },\n {\n source: 'langid',\n target: 'language',\n when: {\n source: {\n language: false,\n },\n target: false,\n },\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'addendum',\n target: 'note',\n when: {\n source: {\n note: false,\n },\n target: false,\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: ['isan', 'ismn', 'isrn', 'iswc'],\n target: 'number',\n convert: Converters.STANDARD_NUMBERS,\n when: {\n source: {\n [TYPE](type) {\n return type !== 'patent'\n },\n },\n target: {\n type(type) {\n return type !== 'patent'\n },\n },\n },\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport', 'legislation'],\n },\n target: {\n type: ['patent', 'report', 'legislation'],\n },\n },\n },\n {\n source: 'origdate',\n target: 'original-date',\n convert: Converters.DATE,\n },\n {\n source: 'origlocation',\n target: 'original-publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'origpublisher',\n target: 'original-publisher',\n convert: Converters.PICK,\n },\n {\n source: 'origtitle',\n target: 'original-title',\n },\n {\n source: 'pages',\n target: 'page',\n when: {\n source: {\n bookpagination: [undefined, 'page'],\n },\n },\n convert: Converters.PAGES,\n },\n {\n source: 'pagetotal',\n target: 'number-of-pages',\n },\n {\n source: 'part',\n target: 'part-number',\n },\n {\n source: ['eprint', 'eprinttype'],\n target: 'PMID',\n convert: Converters.EPRINT,\n },\n {\n source: 'location',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: true,\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'paper-conference',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'webpage',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: ['report', 'thesis'],\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: ['pages', 'bookpagination'],\n target: 'section',\n when: {\n source: {\n bookpagination: 'section',\n },\n target: {\n page: false,\n },\n },\n convert: {\n toTarget(section) {\n return section\n },\n toSource(section) {\n return [section, 'section']\n },\n },\n },\n {\n source: 'pubstate',\n target: 'status',\n convert: Converters.STATUS,\n },\n {\n source: 'shorttitle',\n target: 'title-short',\n },\n {\n source: 'shorttitle',\n target: 'shortTitle',\n when: {\n source: false,\n target: {\n 'title-short': false,\n },\n },\n },\n {\n source: ['title', 'subtitle', 'titleaddon'],\n target: 'title',\n convert: Converters.TITLE,\n },\n {\n source: 'translator',\n target: 'translator',\n convert: Converters.NAMES,\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n source: {\n url: false,\n },\n target: false,\n },\n },\n {\n source: 'version',\n target: 'version',\n },\n {\n source: 'volume',\n target: 'volume',\n },\n {\n source: 'volumes',\n target: 'number-of-volumes',\n },\n {\n source: ['issuetitle', 'issuesubtitle', 'issuetitleaddon'],\n target: 'volume-title',\n convert: Converters.TITLE,\n },\n])\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './bibtexTypes.js'\nimport { TYPE, LABEL, Converters } from './shared.js'\nexport default new util.Translator([\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'annote',\n target: 'annote',\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'booktitle',\n target: 'container-title',\n when: {\n target: {\n type: ['chapter', 'paper-conference'],\n },\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'number' || (typeof issue === 'string' && issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport'],\n },\n target: {\n type: ['patent', 'report'],\n },\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n source: {\n number: false,\n },\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: 'pages',\n target: 'page',\n convert: Converters.PAGES,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'paper-conference',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: 'report',\n },\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: {\n type: 'thesis',\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n school: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: 'title',\n target: 'title',\n },\n {\n source: [TYPE, 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(sourceType, subType) {\n const type = types.source[sourceType] || 'document'\n if (subType) {\n return [type, subType]\n } else if (sourceType === 'mastersthesis') {\n return [type, \"Master's thesis\"]\n } else if (sourceType === 'phdthesis') {\n return [type, 'PhD thesis']\n } else {\n return [type]\n }\n },\n toSource(targetType, genre) {\n const type = types.target[targetType] || 'misc'\n if (/^(master'?s|diploma) thesis$/i.test(genre)) {\n return ['mastersthesis']\n } else if (/^(phd|doctoral) thesis$/i.test(genre)) {\n return ['phdthesis']\n } else {\n return [type, genre]\n }\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n target: {\n publisher: false,\n },\n },\n },\n {\n source: 'volume',\n target: 'volume',\n },\n])\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nconst BOOK = new Set(['book', 'inbook', 'bookinbook', 'suppbook'])\nconst BOOK_PART = new Set(['inbook', 'bookinbook', 'suppbook'])\nconst COLLECTION = new Set([\n 'collection',\n 'reference',\n 'incollection',\n 'inreference',\n 'suppcollection',\n])\nconst COLLECTION_PART = new Set(['incollection', 'inreference', 'suppcollection'])\nconst PROCEEDINGS = new Set(['proceedings', 'inproceedings'])\nconst PROCEEDINGS_PART = new Set(['inproceedings'])\nconst PERIODICAL_PART = new Set(['article', 'suppperiodical'])\nconst TITLE_MAP = {\n mvbook: ['main', BOOK],\n mvcollection: ['main', COLLECTION],\n mvreference: ['main', COLLECTION],\n mvproceedings: ['main', PROCEEDINGS],\n book: ['book', BOOK_PART],\n collection: ['book', COLLECTION_PART],\n reference: ['book', COLLECTION_PART],\n proceedings: ['book', PROCEEDINGS_PART],\n periodical: ['journal', PERIODICAL_PART],\n}\nexport function crossref(target, entry, registry) {\n if (entry.crossref in registry) {\n const parent = registry[entry.crossref]\n if (parent.properties === entry) {\n return entry\n }\n const data = _objectSpread({}, crossref(parent.type, parent.properties, registry))\n delete data.ids\n delete data.crossref\n delete data.xref\n delete data.entryset\n delete data.entrysubtype\n delete data.execute\n delete data.label\n delete data.options\n delete data.presort\n delete data.related\n delete data.relatedoptions\n delete data.relatedstring\n delete data.relatedtype\n delete data.shortand\n delete data.shortandintro\n delete data.sortkey\n if ((parent.type === 'mvbook' || parent.type === 'book') && BOOK_PART.has(target)) {\n data.bookauthor = data.author\n }\n if (parent.type in TITLE_MAP) {\n const [prefix, targets] = TITLE_MAP[parent.type]\n if (targets.has(target)) {\n data[prefix + 'title'] = data.title\n data[prefix + 'subtitle'] = data.subtitle\n if (prefix !== 'journal') {\n data[prefix + 'titleaddon'] = data.titleaddon\n }\n delete data.title\n delete data.subtitle\n delete data.titleaddon\n delete data.shorttitle\n delete data.sorttitle\n delete data.indextitle\n delete data.indexsorttitle\n }\n }\n return Object.assign(data, entry)\n }\n return entry\n}\n","function _objectWithoutProperties(source, excluded) {\n if (source == null) return {}\n var target = _objectWithoutPropertiesLoose(source, excluded)\n var key, i\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source)\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue\n target[key] = source[key]\n }\n }\n return target\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {}\n var target = {}\n var sourceKeys = Object.keys(source)\n var key, i\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n target[key] = source[key]\n }\n return target\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\nimport { crossref } from './crossref.js'\nfunction _parse(input, spec) {\n const registry = {}\n for (const entry of input) {\n registry[entry.label] = entry\n }\n return input.map(({ type, label, properties }) =>\n spec.convertToTarget(\n _objectSpread(\n {\n [TYPE]: type,\n [LABEL]: label,\n },\n crossref(type, properties, registry)\n )\n )\n )\n}\nfunction _format(input, spec) {\n return input.map((entry) => {\n const _spec$convertToSource = spec.convertToSource(entry),\n { [TYPE]: type, [LABEL]: label } = _spec$convertToSource,\n properties = _objectWithoutProperties(\n _spec$convertToSource,\n [TYPE, LABEL].map(_toPropertyKey)\n )\n return {\n type,\n label,\n properties,\n }\n })\n}\nexport function parseBibtex(input) {\n return _parse(input, bibtex)\n}\nexport function formatBibtex(input) {\n return _format(input, bibtex)\n}\nexport function parse(input) {\n return _parse(input, biblatex)\n}\nexport function format(input) {\n return _format(input, biblatex)\n}\n","export function getStringCase(string) {\n const a = string.toUpperCase()\n const b = string.toLowerCase()\n for (let i = 0; i < string.length; i++) {\n if (a[i] !== b[i]) {\n return a[i] === string[i]\n }\n }\n return null\n}\nexport function formatNameParts(parts) {\n if (parts.length === 0) {\n return undefined\n }\n let piece = ''\n while (parts.length > 1) {\n const { value, hyphenated } = parts.shift()\n piece += value + (hyphenated ? '-' : ' ')\n }\n const output = piece + parts[0].value\n return output[0] && output\n}\nexport function orderNameParts(parts, orderGiven = true) {\n const given = []\n const undecided = []\n if (orderGiven) {\n while (parts.length > 1 && parts[0].upperCase !== false) {\n given.push(...undecided)\n undecided.length = 0\n while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n given.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n undecided.push(parts.shift())\n }\n }\n }\n const prefix = []\n const family = []\n while (parts.length > 1) {\n prefix.push(...family)\n family.length = 0\n while (parts.length > 1 && parts[0].upperCase === false) {\n prefix.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false) {\n family.push(parts.shift())\n }\n }\n if (undecided.length) {\n family.unshift(...undecided)\n }\n if (parts.length) {\n family.push(parts[0])\n }\n return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\n}\nexport function orderNamePieces(pieces) {\n if (pieces[0][0].label) {\n const name = {}\n for (const [{ value, label }] of pieces) {\n name[label] = value\n }\n return name\n }\n const name = {}\n const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n if (family) {\n name.family = family\n }\n if (prefix) {\n name.prefix = prefix\n }\n if (pieces.length === 3) {\n name.given = formatNameParts(pieces[2])\n name.suffix = formatNameParts(pieces[1])\n } else if (pieces.length === 2) {\n name.given = formatNameParts(pieces[1])\n } else if (given) {\n name.given = given\n }\n return name\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport * as constants from './constants.js'\nimport { orderNamePieces, formatNameParts, getStringCase } from './name.js'\nconst text = {\n commandBegin: {\n match: '\\\\begin',\n push: 'environment',\n },\n command: {\n match: /\\\\(?:[a-zA-Z]+|.) */,\n value: (s) => s.slice(1).trim(),\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n mathShift: {\n match: '$',\n push: 'mathLiteral',\n },\n whitespace: {\n match: /[\\s]+|~/,\n lineBreaks: true,\n value(token) {\n return token === '~' ? '\\xa0' : ' '\n },\n },\n}\nconst lexer = moo.states({\n stringLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n namesLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+[aA][nN][dD]\\s+/,\n comma: ',',\n hyphen: '-',\n equals: '=',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,=-]+/,\n }\n ),\n listLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+and\\s+/,\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n separatedLiteral: _objectSpread(\n _objectSpread(\n {\n comma: ',',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,]+/,\n }\n ),\n annotation: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n colon: ':',\n equals: '=',\n comma: ',',\n semicolon: ';',\n quote: '\"',\n itemCount: /\\d+/,\n text: /[^{$}\\s~\\\\\":;,=]+/,\n }\n ),\n bracedLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n rbrace: {\n match: '}',\n pop: true,\n },\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n mathLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n mathShift: {\n match: '$',\n pop: true,\n },\n script: /[\\^_]/,\n text: /[^{$}\\s~\\\\^_]+/,\n }\n ),\n environment: _objectSpread(\n _objectSpread(\n {\n commandEnd: {\n match: '\\\\end',\n pop: true,\n },\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n})\nfunction flattenConsString(string) {\n string[0]\n return string\n}\nfunction applyFormatting(text, format) {\n if (format in constants.formatting) {\n return text && constants.formatting[format].join(text)\n } else {\n return text\n }\n}\nexport const valueGrammar = new util.Grammar(\n {\n String() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n StringNames() {\n const list = []\n while (true) {\n this.consumeToken('whitespace', true)\n list.push(this.consumeRule('Name'))\n this.consumeToken('whitespace', true)\n if (this.matchEndOfFile()) {\n return list\n } else {\n this.consumeToken('and')\n }\n }\n },\n Name() {\n const pieces = []\n while (true) {\n pieces.push(this.consumeRule('NamePiece'))\n if (this.matchEndOfFile() || this.matchToken('and')) {\n return orderNamePieces(pieces)\n } else {\n this.consumeToken('comma')\n this.consumeToken('whitespace', true)\n }\n }\n },\n NamePiece() {\n const parts = []\n while (true) {\n const part = this.consumeRule('NameToken')\n if (part.label) {\n part.label = formatNameParts([\n ...parts,\n {\n value: part.label,\n },\n ])\n return [part]\n }\n parts.push(part)\n if (this.matchEndOfFile() || this.matchToken('and') || this.matchToken('comma')) {\n return parts\n } else {\n while (this.matchToken('hyphen') || this.matchToken('whitespace')) {\n this.consumeToken()\n }\n }\n }\n },\n NameToken() {\n let upperCase = null\n let value = ''\n while (true) {\n if (upperCase === null && this.matchToken('text')) {\n const text = this.consumeToken().value\n value += text\n upperCase = getStringCase(text)\n } else if (\n this.matchEndOfFile() ||\n this.matchToken('and') ||\n this.matchToken('comma') ||\n this.matchToken('whitespace')\n ) {\n return {\n value,\n upperCase,\n }\n } else if (this.matchToken('hyphen')) {\n return {\n value,\n upperCase,\n hyphenated: true,\n }\n } else if (this.matchToken('equals')) {\n this.consumeToken('equals')\n const text = this.consumeRule('NamePiece')\n if (text[0].label) {\n value += '=' + text[0].label\n }\n return {\n value: formatNameParts(text),\n label: value,\n }\n } else {\n value += this.consumeRule('Text')\n }\n }\n },\n StringList() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('and')) {\n output += this.consumeRule('Text')\n }\n list.push(flattenConsString(output))\n this.consumeToken('and', true)\n }\n return list.length === 1 ? list[0] : list\n },\n StringSeparated() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('comma')) {\n output += this.consumeRule('Text')\n }\n list.push(output.trim())\n this.consumeToken('comma', true)\n this.consumeToken('whitespace', true)\n }\n return list\n },\n StringVerbatim() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeToken().text\n }\n return flattenConsString(output)\n },\n StringUri() {\n const uri = this.consumeRule('StringVerbatim')\n try {\n if (decodeURI(uri) === uri) {\n return encodeURI(uri)\n } else {\n return uri\n }\n } catch (e) {\n return encodeURI(uri)\n }\n },\n StringTitleCase() {\n this.state.sentenceCase = true\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n Annotations() {\n const annotations = {}\n while (true) {\n const { scope, item, part, value } = this.consumeRule('Annotation')\n if (scope === 'part') {\n if (!annotations.part) {\n annotations.part = []\n }\n if (!annotations.part[item]) {\n annotations.part[item] = {}\n }\n annotations.part[item][part] = value\n } else if (scope === 'item') {\n if (!annotations.item) {\n annotations.item = []\n }\n annotations.item[item] = value\n } else {\n annotations.field = value\n }\n if (this.matchEndOfFile()) {\n break\n } else {\n this.consumeToken('semicolon')\n this.consumeRule('_')\n }\n }\n return annotations\n },\n Annotation() {\n const annotation = {}\n if (this.matchToken('itemCount')) {\n annotation.item = parseInt(this.consumeToken('itemCount')) - 1\n if (this.matchToken('colon')) {\n this.consumeToken('colon')\n annotation.part = this.consumeToken('text')\n annotation.scope = 'part'\n } else {\n annotation.scope = 'item'\n }\n } else {\n annotation.scope = 'field'\n }\n this.consumeToken('equals')\n this.consumeRule('_')\n if (this.matchToken('quote')) {\n this.consumeToken('quote')\n let literal = ''\n while (!this.matchToken('quote')) {\n if (\n this.matchToken('itemCount') ||\n this.matchToken('colon') ||\n this.matchToken('comma') ||\n this.matchToken('semicolon') ||\n this.matchToken('equals')\n ) {\n literal += this.token.value\n this.token = this.lexer.next()\n } else {\n literal += this.consumeRule('Text')\n }\n }\n this.consumeToken('quote')\n annotation.value = flattenConsString(literal)\n this.consumeRule('_')\n } else {\n annotation.value = []\n let output = ''\n while (true) {\n output += this.consumeRule('Text')\n if (this.matchToken('comma')) {\n this.consumeToken('comma')\n this.consumeRule('_')\n annotation.value.push(flattenConsString(output))\n output = ''\n } else if (this.matchEndOfFile() || this.matchToken('semicolon')) {\n annotation.value.push(flattenConsString(output))\n break\n }\n }\n }\n return annotation\n },\n BracketString() {\n var _this$state\n let output = ''\n this.consumeToken('lbrace')\n const sentenceCase = this.state.sentenceCase\n this.state.sentenceCase = sentenceCase && this.matchToken('command')\n ;(_this$state = this.state).partlyLowercase &&\n (_this$state.partlyLowercase = this.state.sentenceCase)\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n const topLevel = sentenceCase && !this.state.sentenceCase\n const protectCase = topLevel && this.state.partlyLowercase\n this.state.sentenceCase = sentenceCase\n this.consumeToken('rbrace')\n return protectCase ? applyFormatting(output, 'nocase') : output\n },\n MathString() {\n let output = ''\n this.consumeToken('mathShift')\n while (!this.matchToken('mathShift')) {\n if (this.matchToken('script')) {\n const script = this.consumeToken('script').value\n const text = this.consumeRule('Text').split('')\n if (text.every((char) => char in constants.mathScripts[script])) {\n output += text.map((char) => constants.mathScripts[script][char]).join('')\n } else {\n const formatName = constants.mathScriptFormatting[script]\n output += constants.formatting[formatName].join(text.join(''))\n }\n continue\n }\n if (this.matchToken('command')) {\n const command = this.token.value\n if (command in constants.mathScriptFormatting) {\n this.consumeToken('command')\n const text = this.consumeRule('BracketString')\n output += applyFormatting(text, constants.mathScriptFormatting[command])\n continue\n }\n }\n output += this.consumeRule('Text')\n }\n this.consumeToken('mathShift')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return this.consumeRule('BracketString')\n } else if (this.matchToken('mathShift')) {\n return this.consumeRule('MathString')\n } else if (this.matchToken('whitespace')) {\n return this.consumeToken('whitespace').value\n } else if (this.matchToken('commandBegin')) {\n return this.consumeRule('EnclosedEnv')\n } else if (this.matchToken('command')) {\n return this.consumeRule('Command')\n }\n const text = this.consumeToken('text').value.replace(\n constants.ligaturePattern,\n (ligature) => constants.ligatures[ligature]\n )\n const afterPunctuation = this.state.afterPunctuation\n this.state.afterPunctuation = /[?!.:]$/.test(text)\n if (!this.state.sentenceCase) {\n var _this$state2\n ;(_this$state2 = this.state).partlyLowercase ||\n (_this$state2.partlyLowercase =\n text === text.toLowerCase() && text !== text.toUpperCase())\n return text\n }\n const [first, ...otherCharacters] = text\n const rest = otherCharacters.join('')\n const restLowerCase = rest.toLowerCase()\n if (rest !== restLowerCase) {\n return text\n }\n if (!afterPunctuation) {\n return text.toLowerCase()\n }\n return first + restLowerCase\n },\n Command() {\n const commandToken = this.consumeToken('command')\n const command = commandToken.value\n if (command in constants.formattingEnvs) {\n const text = this.consumeRule('Env')\n const format = constants.formattingEnvs[command]\n return applyFormatting(text, format)\n } else if (command in constants.formattingCommands) {\n const text = this.consumeRule('BracketString')\n const format = constants.formattingCommands[command]\n return applyFormatting(text, format)\n } else if (command in constants.commands) {\n return constants.commands[command]\n } else if (command in constants.mathCommands) {\n return constants.mathCommands[command]\n } else if (command in constants.diacritics && !this.matchEndOfFile()) {\n const text = this.consumeRule('Text')\n const diacritic = text[0] + constants.diacritics[command]\n return diacritic.normalize('NFC') + text.slice(1)\n } else if (command in constants.argumentCommands) {\n const func = constants.argumentCommands[command]\n const args = []\n let arity = func.length\n while (arity-- > 0) {\n this.consumeToken('whitespace', true)\n args.push(this.consumeRule('BracketString'))\n }\n return func(...args)\n } else if (/^[&%$#_{}]$/.test(command)) {\n return commandToken.text.slice(1)\n } else {\n return commandToken.text\n }\n },\n Env() {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n return output\n },\n EnclosedEnv() {\n this.consumeToken('commandBegin')\n const beginEnv = this.consumeRule('BracketString')\n let output = ''\n while (!this.matchToken('commandEnd')) {\n output += this.consumeRule('Text')\n }\n const end = this.consumeToken('commandEnd')\n const endEnv = this.consumeRule('BracketString')\n if (beginEnv !== endEnv) {\n throw new SyntaxError(\n this.lexer.formatError(\n end,\n `environment started with \"${beginEnv}\", ended with \"${endEnv}\"`\n )\n )\n }\n return applyFormatting(output, constants.formattingEnvs[beginEnv])\n },\n _() {\n while (this.matchToken('whitespace')) {\n this.consumeToken('whitespace')\n }\n },\n },\n {\n sentenceCase: false,\n partlyLowercase: false,\n afterPunctuation: true,\n }\n)\nfunction singleLanguageIsEnglish(language) {\n return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\nfunction isEnglish(languages) {\n if (Array.isArray(languages)) {\n return languages.every(singleLanguageIsEnglish)\n }\n return singleLanguageIsEnglish(languages)\n}\nfunction getMainRule(fieldType, languages) {\n if (fieldType[1] === 'name') {\n return fieldType[0] === 'list' ? 'StringNames' : 'Name'\n }\n if (fieldType[1] === 'title') {\n const option = config.parse.sentenceCase\n if (option === 'always' || (option === 'english' && isEnglish(languages))) {\n return 'StringTitleCase'\n } else {\n return 'String'\n }\n }\n switch (fieldType[0] === 'field' ? fieldType[1] : fieldType[0]) {\n case 'list':\n return 'StringList'\n case 'separated':\n return 'StringSeparated'\n case 'verbatim':\n return 'StringVerbatim'\n case 'uri':\n return 'StringUri'\n case 'title':\n case 'literal':\n default:\n return 'String'\n }\n}\nfunction getLexerState(fieldType) {\n if (fieldType[1] === 'name') {\n return 'namesLiteral'\n }\n switch (fieldType[0]) {\n case 'list':\n return 'listLiteral'\n case 'separated':\n return 'separatedLiteral'\n case 'field':\n default:\n return 'stringLiteral'\n }\n}\nexport function parse(text, field, languages = []) {\n const fieldType = constants.fieldTypes[field] || []\n return valueGrammar.parse(\n lexer.reset(text, {\n state: getLexerState(fieldType),\n line: 0,\n col: 0,\n }),\n getMainRule(fieldType, languages)\n )\n}\nexport function parseAnnotation(text) {\n return valueGrammar.parse(\n lexer.reset(text, {\n state: 'annotation',\n line: 0,\n col: 0,\n }),\n 'Annotations'\n )\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue, parseAnnotation } from './value.js'\nimport { required } from './constants.js'\nfunction validate(entries, requirements) {\n const problems = []\n for (const { type, label, properties } of entries) {\n if (type in requirements) {\n const missing = []\n for (const field of requirements[type]) {\n if (Array.isArray(field) && !field.some((field) => field in properties)) {\n missing.push(field.join('/'))\n } else if (typeof field === 'string' && !(field in properties)) {\n missing.push(field)\n }\n }\n if (missing.length) {\n problems.push([label, `missing fields: ${missing.join(', ')}`])\n }\n } else {\n problems.push([label, `invalid type: \"${type}\"`])\n }\n }\n if (problems.length) {\n throw new RangeError(\n ['Invalid entries:']\n .concat(problems.map(([label, problem]) => ` - ${label} has ${problem}`))\n .join('\\n')\n )\n }\n}\nfunction parseEntryValues(entry) {\n const output = {}\n if ('language' in entry.properties) {\n output.language = parseValue(entry.properties.language, 'language')\n }\n for (const property in entry.properties) {\n const value = entry.properties[property]\n if (value === '') {\n continue\n }\n output[property] = parseValue(value + '', property, output.language)\n }\n for (const property in entry.annotations) {\n for (const annotation in entry.annotations[property]) {\n output[property + '+an:' + annotation] = parseAnnotation(\n entry.annotations[property][annotation]\n )\n }\n }\n return _objectSpread(\n _objectSpread({}, entry),\n {},\n {\n properties: output,\n }\n )\n}\nexport function parse(entries) {\n if (config.parse.strict) {\n validate(entries, required.biblatex)\n }\n return mapBiblatex(entries.map(parseEntryValues))\n}\nexport function parseBibtex(entries) {\n if (config.parse.strict) {\n validate(entries, required.bibtex)\n }\n return mapBibtex(entries.map(parseEntryValues))\n}\n","import { parse as parseFile } from './file.js'\nimport { parse as parseBibtxt } from './bibtxt.js'\nimport { parse as parseEntries, parseBibtex } from './entries.js'\nexport const ref = '@bibtex'\nexport const formats = {\n '@biblatex/text': {\n parse: parseFile,\n parseType: {\n dataType: 'String',\n predicate: /@\\s{0,5}[A-Za-z]{1,13}\\s{0,5}\\{\\s{0,5}[^@{}\"=,\\\\\\s]{0,100}\\s{0,5},[\\s\\S]*\\}/,\n },\n },\n '@biblatex/entry+object': {\n parse(input) {\n return parseEntries([input])\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: ['type', 'label', 'properties'],\n },\n },\n },\n '@biblatex/entries+list': {\n parse: parseEntries,\n parseType: {\n elementConstraint: '@biblatex/entry+object',\n },\n },\n '@bibtex/text': {\n parse: parseFile,\n outputs: '@bibtex/entries+list',\n },\n '@bibtex/entry+object': {\n parse(input) {\n return parseBibtex([input])\n },\n },\n '@bibtex/entries+list': {\n parse: parseBibtex,\n },\n '@bibtxt/text': {\n parse: parseBibtxt,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\[(?!\\s*[{[]).*?\\]\\s*(\\n\\s*[^[]((?!:)\\S)+\\s*:\\s*.+?\\s*)*\\s*)+$/,\n },\n },\n}\n","// @ts-nocheck\nimport config from '../config.js'\nimport { diacritics, commands, mathCommands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\nfor (const command in commands) {\n unicode[commands[command]] = command\n}\nfor (const diacritic in diacritics) {\n unicode[diacritics[diacritic]] = diacritic\n}\nfor (const ligature in ligatures) {\n unicode[ligatures[ligature]] = ligature\n}\nconst mathUnicode = {}\nfor (const command in mathCommands) {\n mathUnicode[mathCommands[command]] = command\n}\nconst UNSAFE_UNICODE =\n /[^a-zA-Z0-9\\s!\"#%&'()*+,\\-./:;=?@[\\]{}\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst DIACRITIC_PATTERN = /.[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]+/g\nconst LONE_DIACRITIC_PATTERN = /[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst listDelimiters = {\n separated: ',',\n list: ' and ',\n}\nconst richTextMappings = {\n i: '\\\\textit{',\n b: '\\\\textbf{',\n sc: '\\\\textsc{',\n sup: '\\\\textsuperscript{',\n sub: '\\\\textsubscript{',\n 'span style=\"font-variant:small-caps;\"': '\\\\textsc{',\n 'span class=\"nocase\"': '{',\n}\nfunction escapeCharacter(char) {\n if (char in unicode) {\n return unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`\n } else if (char in mathUnicode) {\n return `$\\\\${mathUnicode[char]}$`\n } else {\n return ''\n }\n}\nfunction escapeValue(value) {\n if (!config.format.asciiOnly) {\n return value\n }\n return value\n .normalize('NFKD')\n .replace(UNSAFE_UNICODE, (char) => escapeCharacter(char))\n .replace(DIACRITIC_PATTERN, (match) =>\n Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n )\n .replace(LONE_DIACRITIC_PATTERN, '')\n}\nfunction formatRichText(value) {\n const closingTags = []\n let tokens = value.split(/<(\\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g)\n tokens = tokens.map((token, index) => {\n if (index % 2 === 0) {\n return escapeValue(token)\n } else if (token in richTextMappings) {\n closingTags.push('/' + token.split(' ')[0])\n return richTextMappings[token]\n } else if (token === closingTags[closingTags.length - 1]) {\n closingTags.pop()\n return '}'\n } else {\n return ''\n }\n })\n return tokens.join('')\n}\nfunction formatName(name) {\n if (name.family && !name.prefix && !name.given & !name.suffix) {\n return name.family.includes(listDelimiters.list) ? name.family : `{${name.family}}`\n }\n const parts = ['']\n if (name.prefix && name.family) {\n parts[0] += name.prefix + ' '\n }\n if (name.family) {\n parts[0] += name.family\n }\n if (name.suffix) {\n parts.push(name.suffix)\n parts.push(name.given || '')\n } else {\n parts.push(name.given)\n }\n return escapeValue(parts.join(', ').trim())\n}\nfunction formatTitle(title) {\n return formatRichText(title)\n .split(/(:\\s*)/)\n .map((part, i) => (i % 2 ? part : part.replace(/([^\\\\])\\b([a-z]*[A-Z].*?)\\b/g, '$1{$2}')))\n .join('')\n}\nfunction formatSingleValue(value, valueType) {\n switch (valueType) {\n case 'title':\n return formatTitle(value)\n case 'literal':\n return formatRichText(value.toString())\n case 'name':\n return formatName(value)\n case 'verbatim':\n case 'uri':\n return value.toString()\n default:\n return escapeValue(value.toString())\n }\n}\nfunction formatList(values, valueType, listType) {\n const delimiter = listDelimiters[listType]\n return values\n .map((value) => {\n const formatted = formatSingleValue(value, valueType)\n return formatted.includes(delimiter) ? `{${formatted}}` : formatted\n })\n .join(delimiter)\n}\nfunction formatAnnotationValue(values) {\n if (Array.isArray(values)) {\n return values.map((value) => escapeValue(value).replace(/([;,\"])/g, '{$1}')).join(', ')\n } else {\n return '\"' + escapeValue(values).replace(/([\"])/g, '{$1}') + '\"'\n }\n}\nexport function format(field, value) {\n if (!(field in fieldTypes)) {\n return formatSingleValue(value, 'verbatim')\n }\n const [listType, valueType] = fieldTypes[field]\n if (listType in listDelimiters) {\n return formatList(value, valueType, listType)\n } else {\n return formatSingleValue(value, valueType)\n }\n}\nexport function formatAnnotation(value) {\n const annotations = []\n if (value.field) {\n annotations.push('=' + formatAnnotationValue(value.field))\n }\n if (value.item) {\n for (const [itemCount, itemValue] of Object.entries(value.item)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n annotations.push(i + '=' + formatAnnotationValue(itemValue))\n }\n }\n if (value.part) {\n for (const [itemCount, itemValue] of Object.entries(value.part)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n for (const part in itemValue) {\n if (!itemValue[part]) {\n continue\n }\n annotations.push(i + ':' + part + '=' + formatAnnotationValue(itemValue[part]))\n }\n }\n }\n return annotations.join('; ')\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue, formatAnnotation } from './value.js'\nfunction formatEntryValues({ type, label, properties }) {\n const output = {\n type,\n label,\n properties: {},\n }\n for (const property in properties) {\n const value = properties[property]\n const [field, annotation] = property.split('+an:')\n if (annotation) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[field]) {\n output.annotations[field] = {}\n }\n output.annotations[field][annotation] = formatAnnotation(value)\n } else {\n output.properties[property] = formatValue(property, value)\n }\n }\n return output\n}\nexport function format(entries) {\n return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n return mapBibtex(entries).map(formatEntryValues)\n}\n","import config from '../config.js'\nfunction formatField(field, value, dict) {\n return dict.listItem.join(`${field} = {${value}},`)\n}\nfunction formatEntry(entry, dict) {\n const fields = []\n for (const field in entry.properties) {\n fields.push(formatField(field, entry.properties[field], dict))\n if (entry.annotations && entry.annotations[field]) {\n for (const annotation in entry.annotations[field]) {\n let annotationField = field + config.biber.annotationMarker\n if (annotation !== 'default') {\n annotationField += config.biber.namedAnnotationMarker + annotation\n }\n fields.push(formatField(annotationField, entry.annotations[field][annotation], dict))\n }\n }\n }\n return dict.entry.join(`@${entry.type}{${entry.label},${dict.list.join(fields.join(''))}}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../../core/index.js'\nimport { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'\nimport { format } from './bibtex.js'\nimport { format as formatBibtxt } from './bibtxt.js'\nconst factory = function (mapper, formatter) {\n return function (data, opts = {}) {\n const { type, format = type || 'text' } = opts\n data = mapper(data)\n if (format === 'object') {\n return data\n } else if (plugins.dict.has(format)) {\n return formatter(data, plugins.dict.get(format), opts)\n } else {\n throw new RangeError(`Output dictionary \"${format}\" not available`)\n }\n }\n}\nexport default {\n bibtex: factory(mapBibtex, format),\n biblatex: factory(mapBiblatex, format),\n bibtxt: factory(mapBibtex, formatBibtxt),\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties)\n .concat([['type', type]])\n .map(([field, value]) => dict.listItem.join(`${field}: ${value}`))\n return dict.entry.join(`[${label}]${dict.list.join(fields.join(''))}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('\\n')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../core/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport config from './config.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n config,\n})\n","import { util } from '../core/index.js'\n\nconst defaultLocales = {\n 'en-US': `Andrew DunningSebastian KarcherRintze M. ZelleDenis MeierBrenton M. WiernikThis work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License2015-10-10T23:31:02+00:00advance online publicationalbumaudio recordingfilmhenceforthloc. cit.no placen.p.no publishern.p.onop. cit.original work publishedpersonal communicationpodcastpodcast episodepreprintradio broadcastradio seriesradio series episodespecial issuespecial sectiontelevision broadcasttelevision seriestelevision series episodevideoworking paperaccessedandand othersanonymousanon.atavailable atbycircac.citededitioneditionsed.et al.forthcomingfromibid.inin pressinternetinterviewletterno daten.d.onlinepresented at thereferencereferencesref.refs.retrievedscaleversionpreprintjournal articlemagazine articlenewspaper articlebillbookbroadcastbook chapterclassiccollectiondatasetdocumententrydictionary entryencyclopedia entryeventgraphichearinginterviewlegal caselegislationmanuscriptmapvideo recordingmusical scorepamphletconference paperpatentperformanceperiodicalpersonal communicationpostblog postregulationreportreviewbook reviewsoftwareaudio recordingpresentationstandardthesistreatywebpagejournal art.mag. art.newspaper art.bk.bk. chap.doc.graph.interv.MSvideo rec.rep.rev.bk. rev.audio rec.ADBCBCECE:,;thstndrdthththfirstsecondthirdfourthfifthsixthseventheighthninthtenthactactsappendixappendicesarticlearticlescanoncanonslocationlocationsequationequationsrulerulesscenescenestabletablestitletitlesbookbookschapterchapterscolumncolumnsfigurefiguresfoliofoliosnumbernumberslinelinesnotenotesopusoperapagepagespagepagesparagraphparagraphspartpartssectionsectionssub verbosub verbisverseversesvolumevolumesapp.apps.art.arts.loc.locs.eq.eqs.r.rr.sc.scs.tbl.tbls.tit.tits.bk.bks.chap.chaps.col.cols.fig.figs.fol.fols.no.nos.l.ll.n.nn.op.opp.p.pp.p.pp.para.paras.pt.pts.sec.secs.s.v.s.vv.v.vv.vol.vols.¶¶§§§chairchairscompilercompilerscontributorcontributorscuratorcuratorsexecutive producerexecutive producersguestguestshosthostsnarratornarratorsorganizerorganizersperformerperformersproducerproducerswriterwritersseries creatorseries creatorsdirectordirectorseditoreditorseditoreditorsillustratorillustratorstranslatortranslatorseditor & translatoreditors & translatorscomp.comps.contrib.contribs.cur.curs.exec. prod.exec. prods.narr.narrs.org.orgs.perf.perfs.prod.prods.writ.writs.cre.cres.dir.dirs.ed.eds.ed.eds.ill.ills.tran.trans.ed. & tran.eds. & trans.chaired bycompiled bywithcurated byexecutive produced bywith guesthosted bynarrated byorganized byperformed byproduced bywritten bycreated bybydirected byedited byedited byillustrated byinterview bytobytranslated byedited & translated bycomp. byw.cur. byexec. prod. byw. guesthosted bynarr. byorg. byperf. byprod. bywrit. bycre. bydir. byed. byed. byillus. bytrans. byed. & trans. byJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJan.Feb.Mar.Apr.MayJun.Jul.Aug.Sep.Oct.Nov.Dec.SpringSummerAutumnWinter`,\n}\n\nconst locales = new util.Register(defaultLocales)\n\nconst fetchLocale = (lang) => {\n if (locales.has(lang)) {\n return locales.get(lang)\n } else {\n return locales.get('en-US')\n }\n}\n\nexport default fetchLocale\nexport { locales }\n","import { util } from '../core/index.js'\n\nconst defaultTemplates = {\n apa: ``,\n}\nconst templates = new util.Register(defaultTemplates)\n\nconst fetchStyle = (style) => {\n if (templates.has(style)) {\n return templates.get(style)\n } else {\n return templates.get('apa')\n }\n}\n\nexport default fetchStyle\nexport { templates }\n","import CSL from 'citeproc'\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\nconst proxied = Symbol.for('proxied')\nconst getWrapperProxy = function (original) {\n const proxy = function (state, entry) {\n if (state.sys.wrapBibliographyEntry) {\n const [prefix, postfix] = state.sys.wrapBibliographyEntry(this.system_id)\n entry = [prefix, entry, postfix].join('')\n }\n return original.call(this, state, entry)\n }\n proxy[proxied] = true\n return proxy\n}\nfor (const format in CSL.Output.Formats) {\n const original = CSL.Output.Formats[format]['@bibliography/entry']\n if (!original || original[proxied]) {\n continue\n }\n CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\nfunction retrieveLocale(locale) {\n if (locales.has(locale)) {\n return locales.get(locale)\n }\n const unnormalised = locale.replace('-', '_')\n if (locales.has(unnormalised)) {\n return locales.get(unnormalised)\n }\n return {}\n}\nconst engines = {}\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n const engineHash = `${style}|${locale}`\n let engine\n if (engines[engineHash] instanceof CSL.Engine) {\n engine = engines[engineHash]\n engine.sys.retrieveItem = retrieveItem\n engine.sys.wrapBibliographyEntry = undefined\n engine.updateItems([])\n } else {\n engine = engines[engineHash] = new CSL.Engine(\n {\n retrieveLocale,\n retrieveItem,\n },\n styleXml,\n locale,\n true\n )\n }\n return engine\n}\nconst prepareEngine = function (data, style, locale, format) {\n if (!CSL.Output.Formats[format] || !CSL.Output.Formats[format]['@bibliography/entry']) {\n throw new TypeError(`Cannot find format '${format}'`)\n }\n const items = data.reduce((store, entry) => {\n store[entry.id] = entry\n return store\n }, {})\n const template = templates.get(templates.has(style) ? style : 'apa')\n locale = locales.has(locale) ? locale : undefined\n const callback = function (key) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n return items[key]\n } else {\n throw new Error(`Cannot find entry with id '${key}'`)\n }\n }\n const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n engine.setOutputFormat(format)\n engine.opt.development_extensions.wrap_url_and_doi = false\n return engine\n}\nexport default prepareEngine\nexport { fetchEngine }\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\nexport default function bibliography(data, options = {}) {\n const { template = 'apa', lang, format = 'text', nosort = false } = options\n const ids = options.entry ? [].concat(options.entry) : data.map(({ id }) => id)\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const sortedIds = citeproc.updateItems(ids, nosort)\n if (options.append || options.prepend) {\n const items = data.reduce((items, entry) => {\n items[entry.id] = entry\n return items\n }, {})\n citeproc.sys.wrapBibliographyEntry = function (id) {\n const entry = items[id]\n return [getAffix(entry, options.prepend), getAffix(entry, options.append)]\n }\n }\n if (options.hyperlinks) {\n citeproc.opt.development_extensions.wrap_url_and_doi = true\n }\n const bibliography = citeproc.makeBibliography()\n const [{ bibstart, bibend }, bibBody] = bibliography\n const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n if (options.asEntryArray) {\n return entries.map((element, index) => [sortedIds[index], element])\n }\n return bibstart + entries.join('') + bibend\n}\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nfunction prepareCiteItem(citeItem) {\n return typeof citeItem === 'object'\n ? citeItem\n : {\n id: citeItem,\n }\n}\nfunction prepareCitation(citation) {\n if (citation.citationItems) {\n return citation\n }\n return {\n citationItems: [].concat(citation).map(prepareCiteItem),\n properties: {\n noteIndex: 0,\n },\n }\n}\nfunction prepareCitations(context) {\n if (!context) {\n return []\n }\n return context.map(prepareCitation)\n}\nexport default function citation(data, options = {}) {\n const { template = 'apa', lang, format = 'text' } = options\n const ids = data.map(({ id }) => id)\n const entries = options.entry ? options.entry : ids\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const before = prepareCitations(options.citationsPre)\n const citation = prepareCitation(entries)\n const after = prepareCitations(options.citationsPost)\n const output = citeproc.rebuildProcessorState([...before, citation, ...after], format, [])\n return output[before.length][2]\n}\n","import { plugins } from '../core/index.js'\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\nplugins.add('@csl', {\n output: {\n bibliography,\n citation,\n },\n config: {\n engine,\n locales,\n templates,\n },\n})\n","const getAttributedEntry = (string, name, value) =>\n string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\nexport { getAttributedEntry, getPrefixedEntry }\n","import yaml from 'js-yaml'\nimport { plugins } from '../core/index.js'\n\n// See https://github.com/nodeca/js-yaml/issues/569\nconst timestampTag = 'tag:yaml.org,2002:timestamp'\nconst timestamp = yaml.DEFAULT_SCHEMA.compiledTypeMap.scalar[timestampTag]\n\nconst date = new yaml.Type(timestampTag, {\n kind: 'scalar',\n resolve: timestamp.resolve,\n construct: timestamp.construct,\n instanceOf: Date,\n represent(object) {\n return object.toISOString().split('T')[0]\n },\n})\n\nconst CFF_SCHEMA = yaml.DEFAULT_SCHEMA.extend({\n implicit: [date],\n explicit: [],\n})\n\nplugins.add('@else', {\n input: {\n '@else/yaml': {\n parseType: {\n dataType: 'String',\n tokenList: {\n split: /\\n(\\s{2})*(-\\s)?/,\n token: /^[\\w-]*: /,\n every: false,\n },\n },\n parse(file) {\n return yaml.load(file, { json: true })\n },\n },\n },\n output: {\n yaml(data) {\n return yaml.dump(data, { schema: CFF_SCHEMA })\n },\n },\n})\n","import { plugins, util } from '../core/index.js'\nimport { parse as parseDate } from '@citation-js/date'\n\nimport '../plugin-yaml/index.js'\n\n/**\n * Format: Citation File Format (CFF) version 1.2.0\n * Spec: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md\n */\n\nconst TYPES_TO_TARGET = {\n art: 'graphic',\n article: 'article-journal', // more likely\n audiovisual: 'motion_picture',\n bill: 'bill',\n blog: 'post-weblog',\n book: 'book',\n catalogue: 'collection',\n conference: 'event',\n 'conference-paper': 'paper-conference',\n data: 'dataset',\n database: 'dataset',\n dictionary: 'entry-dictionary',\n 'edited-work': 'document', // unmapped\n encyclopedia: 'entry-encyclopedia',\n 'film-broadcast': 'broadcast',\n generic: 'document',\n 'government-document': 'regulation',\n grant: 'document', // unmapped\n hearing: 'hearing',\n 'historical-work': 'classic',\n 'legal-case': 'legal_case',\n 'legal-rule': 'legislation',\n 'magazine-article': 'article-magazine',\n manual: 'report', // substitute presented in the CSL specification\n map: 'map',\n multimedia: 'motion_picture',\n music: 'musical_score',\n 'newspaper-article': 'article-newspaper',\n pamphlet: 'pamphlet',\n patent: 'patent',\n 'personal-communication': 'personal_communication',\n proceedings: 'book', // substitute presented in the CSL specification\n report: 'report',\n serial: 'periodical',\n slides: 'speech',\n software: 'software',\n 'software-code': 'software',\n 'software-container': 'software',\n 'software-executable': 'software',\n 'software-virtual-machine': 'software',\n 'sound-recording': 'song',\n standard: 'standard',\n statute: 'legislation',\n thesis: 'thesis',\n unpublished: 'article',\n video: 'motion_picture',\n website: 'webpage',\n}\n\nconst TYPES_TO_SOURCE = {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'magazine-article',\n 'article-newspaper': 'newspaper-article',\n bill: 'bill',\n book: 'book',\n broadcast: 'film-broadcast',\n chapter: 'generic', // unmapped\n classic: 'historical-work',\n collection: 'catalogue',\n dataset: 'data',\n document: 'generic',\n entry: 'generic', // unmapped\n 'entry-dictionary': 'dictionary',\n 'entry-encyclopedia': 'encyclopedia',\n event: 'conference',\n figure: 'generic', // unmapped\n graphic: 'art',\n hearing: 'hearing',\n interview: 'sound-recording',\n legal_case: 'legal-case',\n legislation: 'statute',\n manuscript: 'historical-work',\n map: 'map',\n motion_picture: 'film-broadcast',\n musical_score: 'music',\n pamphlet: 'pamphlet',\n 'paper-conference': 'conference-paper',\n patent: 'patent',\n performance: 'generic', // unmapped\n periodical: 'serial',\n personal_communication: 'personal-communication',\n post: 'serial',\n 'post-weblog': 'blog',\n regulation: 'government-document',\n report: 'report',\n review: 'generic', // unmapped\n 'review-book': 'generic', // unmapped\n software: 'software',\n song: 'sound-recording',\n speech: 'slides',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'generic',\n webpage: 'website',\n}\n\nconst ENTITY_PROPS = [\n { source: 'family-names', target: 'family' },\n { source: 'given-names', target: 'given' },\n { source: 'name-particle', target: 'non-dropping-particle' },\n { source: 'name-suffix', target: 'suffix' },\n { source: 'name', target: 'literal' },\n { source: 'orcid', target: '_orcid' },\n]\n\nconst entity = new util.Translator(ENTITY_PROPS)\n\nconst PROP_CONVERTERS = {\n names: {\n toTarget(names) {\n return names.map(entity.convertToTarget)\n },\n toSource(names) {\n return names.map(entity.convertToSource)\n },\n },\n publisher: {\n toTarget({ name, city, region, country }) {\n const place = [city, region, country].filter(Boolean).join(', ')\n return [name, place || undefined]\n },\n toSource(name, place) {\n const entity = { name }\n\n if (place) {\n // Parse the following:\n // - Country\n // - City, Country\n // - City, Region, Country\n const parts = place.split(', ')\n entity.country = parts.pop()\n if (parts.length === 2) {\n entity.region = parts.pop()\n }\n if (parts.length === 1) {\n entity.city = parts.pop()\n }\n }\n\n return entity\n },\n },\n date: {\n toTarget(date) {\n if (date instanceof Date) {\n return parseDate(date.toISOString())\n } else {\n return parseDate(new Date(date).toISOString())\n }\n },\n toSource(date) {\n if (date.raw) {\n return date.raw\n }\n const [year, month, day] = date['date-parts'][0]\n if (day) {\n return new Date(Date.UTC(year, month - 1, day))\n } else if (month) {\n return new Date(Date.UTC(year, month - 1))\n } else {\n return new Date(Date.UTC(year))\n }\n },\n },\n}\n\nconst SHARED_PROPS = [\n 'abstract',\n\n { source: 'authors', target: 'author', convert: PROP_CONVERTERS.names },\n\n // TODO cff: commit\n\n // TODO cff: contact\n\n {\n source: 'date-released',\n target: 'issued',\n when: { target: { type: 'software' } },\n convert: PROP_CONVERTERS.date,\n },\n\n { source: 'doi', target: 'DOI' },\n\n {\n source: 'identifiers',\n target: ['DOI', 'ISBN', 'ISSN', 'PMCID', 'PMID', 'URL'],\n convert: {\n toTarget(identifiers) {\n const newIdentifiers = Array(6).fill(undefined)\n for (const { type, value } of identifiers) {\n if (!this.doi && type === 'doi') {\n newIdentifiers[0] = value\n }\n if (!this.url && type === 'url') {\n newIdentifiers[5] = value\n }\n if (type === 'other' && value.startsWith('urn:isbn:')) {\n newIdentifiers[1] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('urn:issn:')) {\n newIdentifiers[2] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('pmcid:')) {\n newIdentifiers[3] = value.slice(6)\n }\n if (type === 'other' && value.startsWith('pmid:')) {\n newIdentifiers[4] = value.slice(5)\n }\n }\n return newIdentifiers\n },\n toSource(doi, isbn, issn, pmcid, pmid, url) {\n return [\n doi && { type: 'doi', value: doi },\n url && { type: 'url', value: url },\n\n isbn && { type: 'other', value: `urn:isbn:${isbn}` },\n issn && { type: 'other', value: `urn:issn:${issn}` },\n pmcid && { type: 'other', value: `pmcid:${pmcid}` },\n pmid && { type: 'other', value: `pmid:${pmid}` },\n ].filter(Boolean)\n },\n },\n },\n\n {\n source: 'keywords',\n target: 'keyword',\n convert: {\n toTarget(keywords) {\n return keywords.join(',')\n },\n toSource(keywords) {\n return keywords.split(/,\\s*/g)\n },\n },\n },\n\n // TODO cff: license\n // TODO cff: license-url\n\n // TODO cff: message *\n\n // TODO cff: repository\n // TODO cff: repository-code\n // TODO cff: repository-artifact\n\n {\n source: 'title',\n target: 'title',\n when: {\n source: { term: false, entry: false },\n target: {\n type(type) {\n return !['entry', 'entry-dictionary', 'entry-encyclopedia'].includes(type)\n },\n },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { entry: true, journal: false },\n target: { type: ['entry'] },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { term: true, journal: false },\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n { source: 'url', target: 'URL' },\n\n 'version',\n]\n\nconst MAIN_PROPS = [\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toSource(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n toTarget(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n },\n },\n\n // Include main mappings\n ...SHARED_PROPS,\n]\n\nconst REF_PROPS = [\n // Include main mappings\n ...SHARED_PROPS,\n\n // ABBREVIATION\n { source: 'abbreviation', target: 'title-short' },\n { source: 'abbreviation', target: 'shortTitle' },\n\n // COLLECTIONS\n // TODO cff: collection-doi\n // TODO cff: collection-type\n 'collection-title',\n\n // COMMUNICATION\n { source: 'recipients', target: 'recipient', convert: PROP_CONVERTERS.names },\n { source: 'senders', target: 'authors', convert: PROP_CONVERTERS.names },\n\n // CONFERENCE\n {\n source: 'conference',\n target: ['event-title', 'event-date', 'event-place', 'event'],\n convert: {\n toSource(name, date, place, nameFallback) {\n const entity = { name: name || nameFallback }\n\n if (place) {\n entity.location = place\n }\n if (date) {\n entity['date-start'] = PROP_CONVERTERS.date.toSource(date)\n\n if (date['date-parts'] && date['date-parts'].length === 2) {\n entity['date-end'] = PROP_CONVERTERS.date.toSource({\n 'date-parts': [date['date-parts'][1]],\n })\n }\n }\n\n return entity\n },\n toTarget(event) {\n return [\n event.name,\n parseDate(event['date-start'].toISOString(), event['date-end'].toISOString()),\n event.location,\n ]\n },\n },\n },\n\n // COPYRIGHT\n // TODO cff: contact\n // TODO cff: copyright\n\n // DATABASE\n { source: 'database', target: 'source' },\n // TODO cff: database-provider NOTE entity\n\n // DATE\n { source: 'date-accessed', target: 'accessed', convert: PROP_CONVERTERS.date },\n\n {\n source: 'date-downloaded',\n target: 'accessed',\n convert: PROP_CONVERTERS.date,\n when: { source: { 'date-accessed': false }, target: false },\n },\n\n {\n source: 'date-published',\n target: 'issued',\n convert: PROP_CONVERTERS.date,\n when: {\n source: { 'date-released': false },\n target() {\n return this.type !== 'book' || !this.version\n },\n },\n },\n\n {\n source: ['year', 'month'],\n target: 'issued',\n when: { source: { 'date-published': false, 'date-released': false, year: true } },\n convert: {\n toTarget(year, month) {\n const date = month ? [year, month] : [year]\n return { 'date-parts': [date] }\n },\n toSource(issued) {\n const [year, month] = issued['date-parts'][0]\n return [year, month]\n },\n },\n },\n\n {\n source: 'year-original',\n target: 'original-date',\n convert: {\n toTarget(year) {\n return { 'date-parts': [[year]] }\n },\n toSource(date) {\n return date['date-parts'][0][0]\n },\n },\n },\n\n // EDITION\n 'edition',\n\n // EDITORS\n { source: 'editors', target: 'editor', convert: PROP_CONVERTERS.names },\n { source: 'editors-series', target: 'collection-editor', convert: PROP_CONVERTERS.names },\n\n // ENTRY\n {\n source: 'entry',\n target: 'title',\n when: {\n source: { term: false },\n target: { type: 'entry' },\n },\n },\n {\n source: 'term',\n target: 'title',\n when: {\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n // FORMAT\n { source: 'format', target: 'dimensions' },\n 'medium',\n\n // GENRE\n {\n source: 'data-type',\n target: 'genre',\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n },\n {\n source: 'thesis-type',\n target: 'genre',\n when: {\n source: { 'data-type': false },\n target: { type: 'thesis' },\n },\n },\n\n // IDENTIFIERS\n { source: 'isbn', target: 'ISBN' },\n { source: 'issn', target: 'ISSN' },\n // TODO cff: nihmsid\n { source: 'pmcid', target: 'PMCID' },\n\n // ISSUE\n 'issue',\n\n // JOURNAL\n { source: 'journal', target: 'container-title' },\n { source: 'volume-title', target: 'volume-title' },\n {\n source: 'issue-title',\n target: 'volume-title',\n when: {\n source: { 'volume-title': false },\n target: false,\n },\n },\n // TODO cff: issue-date\n\n // LANGUAGE\n {\n source: 'languages',\n target: 'language',\n when: {\n target: true,\n // NOTE: possible values not as strict in csl, so test (crudely) if the value is ok first\n source: {\n language(code) {\n return /[a-z]{2,3}/.test(code)\n },\n },\n },\n convert: {\n // NOTE: CSL can only hold one language\n toSource(language) {\n return [language]\n },\n toTarget(languages) {\n return languages[0]\n },\n },\n },\n\n // LOCATION\n {\n source: 'location',\n target: ['archive', 'archive-place'],\n convert: PROP_CONVERTERS.publisher,\n },\n\n // LOCATION (CODE)\n // TODO cff: filename\n // TODO cff: loc-start\n // TODO cff: loc-end\n\n // NOTES\n { source: 'notes', target: 'note', when: { source: { scope: false } } },\n { source: 'scope', target: 'note', when: { target: false } },\n\n // NUMBER\n 'number',\n\n // PATENT\n {\n source: 'patent-states',\n target: 'jurisdiction',\n // NOTE: CSL jurisdiction can contain more than just US states\n when: { target: false },\n convert: {\n toTarget(states) {\n return states.join(', ')\n },\n },\n },\n\n // PUBLISHER\n {\n source: ['institution', 'department'],\n target: ['publisher', 'publisher-place'],\n when: { source: { publisher: false }, target: { type: 'thesis' } },\n convert: {\n toTarget(institution, department) {\n const [name, place] = PROP_CONVERTERS.publisher.toTarget(institution)\n return [department ? `${department}, ${name}` : name, place]\n },\n toSource(name, place) {\n return [PROP_CONVERTERS.publisher.toSource(name, place)]\n },\n },\n },\n {\n source: 'publisher',\n target: ['publisher', 'publisher-place'],\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n convert: PROP_CONVERTERS.publisher,\n },\n\n // SECTION\n 'section',\n\n // STATUS\n {\n source: 'status',\n target: 'status',\n when: {\n source: true,\n // NOTE: possible values not as strict in csl, so test if the value is ok first\n target: {\n status: [\n 'in-preparation',\n 'abstract',\n 'submitted',\n 'in-press',\n 'advance-online',\n 'preprint',\n ],\n },\n },\n },\n\n // PAGES\n { source: 'start', target: 'page-first', when: { target: { page: false } } },\n {\n source: ['start', 'end'],\n target: 'page',\n convert: {\n toTarget(start, end) {\n return end ? `${start}-${end}` : start\n },\n toSource(page) {\n const [start, end] = page.split('-')\n return end ? [start, end] : [start]\n },\n },\n },\n { source: 'pages', target: 'number-of-pages' },\n\n // TRANSLATORS\n { source: 'translators', target: 'translator', convert: PROP_CONVERTERS.names },\n\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toTarget(type) {\n return TYPES_TO_TARGET[type] || 'document'\n },\n toSource(type) {\n if (type === 'book' && this['event-title']) {\n return 'proceedings'\n }\n return TYPES_TO_SOURCE[type] || 'generic'\n },\n },\n },\n\n // VOLUMES\n 'volume',\n { source: 'number-volumes', target: 'number-of-volumes' },\n]\n\nconst mainTranslator = new util.Translator(MAIN_PROPS)\nconst refTranslator = new util.Translator(REF_PROPS)\nconst CFF_VERSION = '1.2.0'\n\n/** Add doi or url as unique id if available to make citation easy */\nfunction addId(entry) {\n if ('DOI' in entry) {\n entry.id = entry.DOI\n } else if ('URL' in entry) {\n entry.id = entry.URL.replace('http://', '').replace('https://', '')\n }\n}\n\nfunction parse(input) {\n const main = mainTranslator.convertToTarget(input)\n if (input['cff-version'] <= '1.1.0') {\n main.type = TYPES_TO_TARGET.software\n }\n main._cff_mainReference = true\n addId(main)\n\n const output = [main]\n if (input['preferred-citation']) {\n const preferredCitation = refTranslator.convertToTarget(input['preferred-citation'])\n addId(preferredCitation)\n output.push(preferredCitation)\n }\n\n if (Array.isArray(input.references)) {\n output.push(...input.references.map(refTranslator.convertToTarget))\n }\n\n return output\n}\n\nfunction format(input, options = {}) {\n input = input.slice()\n const {\n main,\n preferred,\n cffVersion = CFF_VERSION,\n message = 'Please cite the following works when using this software.',\n } = options\n\n let preferredCitation\n const preferredIndex = input.findIndex((entry) => preferred && entry.id === preferred)\n if (cffVersion >= '1.2.0' && preferredIndex > -1) {\n preferredCitation = refTranslator.convertToSource(...input.splice(preferredIndex, 1))\n }\n\n let mainIndex = input.findIndex((entry) => (main ? entry.id === main : entry._cff_mainReference))\n mainIndex = mainIndex > -1 ? mainIndex : 0\n const mainRef = input[mainIndex]\n ? mainTranslator.convertToSource(...input.splice(mainIndex, 1))\n : {}\n if (mainRef && cffVersion < '1.2.0') {\n delete mainRef.type\n }\n\n const cff = { 'cff-version': cffVersion, message, ...mainRef }\n\n if (preferredCitation) {\n cff['preferred-citation'] = preferredCitation\n }\n\n if (input.length) {\n // @ts-ignore\n cff.references = input.map(refTranslator.convertToSource)\n }\n\n return cff\n}\n\nplugins.add('@cff', {\n input: {\n '@cff/object': {\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: 'cff-version',\n },\n },\n parse,\n },\n },\n output: {\n cff(data, options = {}) {\n const output = format(data, options)\n if (options.type === 'object') {\n return output\n } else {\n return plugins.output.format('yaml', output)\n }\n },\n },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n const copy = {}\n for (const key in obj) {\n copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n }\n return copy\n}\n\nfunction Cite(data, opts) {\n if (!(this instanceof Cite)) {\n return new Cite(data, opts)\n }\n\n const self = new CiteCore(data, opts)\n this._options = self._options\n this.log = self.log\n this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n","import rehypeCitationGenerator from './generator.js'\n// @ts-ignore\nimport Cite from './cite.js'\nimport mla from '../styles/mla.js'\nimport chicago from '../styles/chicago.js'\nimport harvard1 from '../styles/harvard1.js'\nimport vancouver from '../styles/vancouver.js'\n\nconst config = Cite.plugins.config.get('@csl')\n\n// Citation.js comes with apa\nconfig.templates.add('vancouver', vancouver)\nconfig.templates.add('harvard1', harvard1)\nconfig.templates.add('mla', mla)\nconfig.templates.add('chicago', chicago)\n\nconst rehypeCitation = rehypeCitationGenerator(Cite)\n\nexport default rehypeCitation\n","export default ``\n","export default ``\n","export default ``\n","export default ``\n"],"names":["citationRE","fullCitationRE","_wrapRegExp","prefix","citekey","explicitLocator","explicitLocatorInSuffix","suffix","locatorRE","locatorLabels","book","chapter","column","figure","folio","issue","line","note","opus","page","paragraph","part","section","verse","volume","parseSuffix","containsLocator","retValue","locator","undefined","label","trim","natural","toLowerCase","startsWith","substr","length","match","exec","readFile","async","isValidHttpUrl","path","response","fetch","text","error","Error","str","url","URL","_","protocol","split","index","slice","isSameAuthor","item","item2","authorList","ref","author","authorList2","i","family","getFrontmatterField","file","fieldName","_file$data$astro","data","sources","matter","frontmatter","astro","source","htmlToHast","html","frag","document","createRange","createContextualFragment","fromDom","children","permittedTags","idRoot","rehypeCitationGenerator","Cite","options","tree","_options$inlineBibCla","bibtexFile","inputCiteformat","csl","noCite","inputLang","lang","config","plugins","get","citeFormat","format","root","Object","keys","templates","includes","cslName","Math","random","toString","cslPath","add","err","loadCSL","locales","localePath","localeName","loadLocale","bibliography","frontmatterBibliography","getBibliography","push","citations","generateGraph","citationIds","map","x","id","citationPre","citationDict","citationId","citeproc","engine","mode","opt","xclass","citationFormat","cslXml","dataObj","find","getCitationFormat","footnoteSection","parsedEntries","visit","node","idx","parent","value","tagName","citeStartIdx","citeEndIdx","newChildren","type","entries","isComposite","regexMatch","fullCitation","inTextSuppressAuthor","inTextCitation","optionalSuffix","citationPart","thisCitation","groups","replace","rawPrefix","endsWith","substring","rawSuffix","suffixToParse","_extends","parseCitation","citeItem","citedText","citedTextNode","genCitation","citationIdRoot","inlineClass","linkCitations","showTooltips","tooltipAttribute","key","citationText","processCitationCluster","citationID","citationItems","properties","noteIndex","ids","join","tooltipMap","forEach","entry","entryText","getBibliographyEntryText","originalItemIds","registry","mylist","updateItems","bibOutput","makeBibliography","console","wrapperTooltipAttr","e","refIds","output","d","refId","tooltipAttr","results","getSortedRelevantRegistryItems","relevantIds","sorted","res","reflist","sort_citations","citeMatch","ambig","indexOf","issued","year","startPos","start","rest","mergedIds","filter","concat","suppressBibliography","inlineBibClass","biblioNode","params","bibBody","_node$properties","className","entry_ids","genBiblioNode","bilioInserted","biblioMap","_options$inlineBibCla2","_node$properties2","citekeys","pop","inlineBibNode","aBibNode","class","dataFootnotes","splice","fnArray","nextNode","href","oldId","newFootnoteSection","genFootnoteSection","footnoteArray","list","oldFootnoteList","n","dataFootnoteBackref","ariaLabel","liNode","newfootnoteSection","log","versnum","this","currentVersion","image","constructor","JSON","parse","retrieveVersion","number","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","style","append","prepend","test","validate","save","assign","typeOf","thing","name","dataTypeOf","Array","isArray","applyGraph","graph","_graph","findIndex","removeGraph","logger","_output","level","scope","msg","_log","_levels","_console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","addTypeParser","extends","extend","debug","parentTypeParser","removeTypeParser","typeLists","typeMatcher","TypeParser","obj","t","r","Symbol","toPrimitive","call","String","_toPrimitive","_toPropertyKey","defineProperty","enumerable","configurable","writable","validateDataType","validDataTypes","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","testTokens","trimInput","parsePropertyConstraint","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","ownKeys","getOwnPropertySymbols","o","getOwnPropertyDescriptor","apply","_objectSpread","arguments","getOwnPropertyDescriptors","defineProperties","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","broadcast","classic","collection","dataset","event","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","dissertation","fieldTypes","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","submitted","categories","custom","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","jurisdiction","keyword","medium","PMCID","PMID","printing","publisher","references","scale","status","supplement","title","version","correctName","bestGuessConversions","literal","given","ORCID","orcid","_ORCID","_orcid","parseName","correctDateParts","dateParts","isNaN","parseInt","correctType","correctField","fieldType","nameList","names","Boolean","correctNameList","date","dp","range","correctDate","parseFloat","parseCsl","clean","field","correction","upgradeCsl","downgradeCsl","deepCopy","seen","Set","has","copy","object","delete","lookup","revLookup","Arr","Uint8Array","code","charCodeAt","encodeChunk","uint8","end","num","buffer","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","s","NaN","Infinity","pow","c","rt","abs","floor","LN2","customInspectSymbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","buf","setPrototypeOf","prototype","arg","encodingOrOffset","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","isBuffer","len","checked","numberIsNaN","fromObject","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","utf16leToBytes","tmp","extraBytes","parts","maxChunkLength","len2","base64","min","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","y","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","b64","lens","validLen","getLens","placeHoldersLen","_byteLength","curByte","base64clean","src","dst","alphabet","table","i16","require$$0","syncFetch","args","request","Request","xhr","XMLHttpRequest","withCredentials","credentials","timeout","INTERNALS","open","method","useBinaryEncoding","responseType","overrideMimeType","header","headers","setRequestHeader","send","body","getAllResponseHeaders","Response","statusText","responseURL","redirected","REQ_UNSUPPORTED","HTTP_STATUS","SyncRequest","resource","init","option","Headers","cache","destination","integrity","priority","redirect","referrer","referrerPolicy","clone","checkBody","SyncResponse","bodyUsed","ok","Body","mixin","getOwnPropertyNames","desc","arrayBuffer","consumeBody","blob","Blob","json","message","pairs","values","iterator","global","module","Promise","globalThis","create","self","support","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","next","shift","done","consumed","reject","fileReaderReady","reader","resolve","onload","result","onerror","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","view","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","then","readAsText","chars","readArrayBufferAsText","formData","decode","oldValue","hasOwnProperty","callback","thisArg","methods","upcased","signal","toUpperCase","reParamSearch","Date","getTime","form","decodeURIComponent","bodyInit","redirectStatuses","location","DOMException","stack","aborted","abortXhr","abort","rawHeaders","responseText","setTimeout","ontimeout","onabort","fixUrl","addEventListener","onreadystatechange","readyState","removeEventListener","polyfill","factory","isBrowser","navigator","fetchId","fetchPolyfill","release","Register","remove","Grammar","rules","state","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","SyntaxError","formatError","rule","createConverter","toSource","Translator","CONVERT_TO_SOURCE","inputProp","outputProp","convert","condition","toTarget","when","createConditionEval","parsePropStatement","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","ChainParser","forceType","maxChainLength","strict","iteration","iterate","typeInfo","getTypeInfo","outputs","reduce","last","count","element","prepareParseGraph","chain","parseData","chainAsync","parseDataAsync","catch","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","formatParser","asyncData","attachNode","parseInput","getIds","parseInputAsync","addAsync","getLabel","getComparisonValue","getName","compareProp","entryA","entryB","flip","sort","getSortCallback","register","formatter","formatData","parsedOptions","defaultOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","innerHTML","firstChild","setAsync","staticMethods","bibliographyContainer","listItem","dict","entryName","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","configs","registers","indices","mainIndex","typeIndex","typePlugins","typePlugin","substituters","empty","regex","subst","jQuery","textContent","HTMLElement","appendCommas","getJsonObject","getJsonValue","util","warn","getJson","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","generalProps","reviewer","keywords","published","parseDate","journal","firstpage","pages","lastpage","link","cid","scraperLinks","authorNameFields","links","authors","records","metadata","moo","hasSticky","sticky","isRegExp","isObject","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","ruleOptions","include","defaultType","lineBreaks","fallback","shouldThrow","toRules","spec","arrayToRules","objectToRules","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","unicode","pat","regexp","fallbackRule","flags","checkStateGroup","g","Lexer","states","startState","reset","info","col","queuedToken","queuedText","queuedThrow","setState","re","popState","pushState","eat","tokenToString","_getGroup","groupCount","queuedGroup","_token","group","charAt","lastIndex","matchNL","nl","LexerIterator","firstDisplayedLine","lastLineDigits","displayedLines","numLines","position","lastNLines","errorLines","lineNo","tokenType","compile","$all","ruleMap","included","newRules","k","newRule","fastKeys","freeze","isMap","Map","reverseMap","biblatexTypes","mvbook","bookinbook","mvcollection","mvproceedings","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","electronic","www","bibtexTypes","required","biblatex","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","address","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","u","H","v","textcommabelow","commands","textquotesingle","textasciigrave","textquotedbl","textdollar","textless","textgreater","textbackslash","textasciicircum","textunderscore","textbraceleft","textbar","textbraceright","textasciitilde","textexclamdown","textcent","textsterling","textcurrency","textyen","textbrokenbar","textsection","textasciidieresis","textcopyright","textordfeminine","guillemetleft","guillemotleft","textlnot","textregistered","textasciimacron","textdegree","textpm","texttwosuperior","textthreesuperior","textasciiacute","textmu","textparagraph","textperiodcentered","textonesuperior","textordmasculine","guillemetright","guillemotright","textonequarter","textonehalf","textthreequarters","textquestiondown","AE","DH","texttimes","O","TH","ss","ae","dh","textdiv","th","DJ","dj","IJ","ij","L","l","NG","ng","OE","oe","textflorin","textasciicaron","textasciibreve","textacutedbl","textgravedbl","texttildelow","textbaht","SS","textcompwordmark","textendash","textemdash","textbardbl","textquoteleft","textquoteright","quotesinglbase","textquotedblleft","textquotedblright","quotedblbase","textdagger","textdaggerdbl","textbullet","textellipsis","textperthousand","textpertenthousand","guilsinglleft","guilsinglright","textreferencemark","textinterrobang","textfractionsolidus","textlquill","textrquill","textdiscount","textcolonmonetary","textlira","textnaira","textwon","textdong","texteuro","textpeso","textcelsius","textnumero","textcircledP","textrecipe","textservicemark","texttrademark","textohm","textmho","textestimated","textleftarrow","textuparrow","textrightarrow","textdownarrow","textminus","Hwithstroke","hwithstroke","textasteriskcentered","textsurd","textlangle","textrangle","textblank","textvisiblespace","textopenbullet","textbigcircle","textmusicalnote","textmarried","textdivorced","textinterrobangdown","copyright","mathCommands","Gamma","Delta","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega","alpha","beta","gamma","delta","varepsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","pi","rho","varsigma","sigma","tau","upsilon","varphi","chi","psi","omega","vartheta","Upsilon","phi","varpi","varrho","epsilon","defaultStrings","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","acmcs","acta","cacm","ibmjrd","ibmsj","ieeese","ieeetc","ieeetcad","ipl","jacm","jcss","scp","sicomp","tocs","tods","tog","toms","toois","toplas","tcs","formattingEnvs","it","itshape","sl","slshape","em","bf","bfseries","sc","scshape","rm","sf","tt","formattingCommands","textit","textsl","emph","mkbibitalic","mkbibemph","textbf","strong","mkbibbold","textsc","textsuperscript","textsubscript","enquote","mkbibquote","textmd","textrm","textsf","texttt","textup","formatting","italics","bold","superscript","subscript","smallcaps","nocase","quotes","argumentCommands","ElsevierGlyph","glyph","ligaturePattern","ligatures","mathScriptFormatting","sp","sb","mathrm","mathScripts","h","p","sentenceCaseLanguages","config$1","constants","sentenceCase","useIdAsLabel","checkLabel","asciiOnly","biber","annotationMarker","namedAnnotationMarker","whitespace","comment","main","junk","at","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","hash","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","closeBrace","EntryBody","annotationField","annotationName","annotations","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","parseBibTxtEntry","pair","stopWords","unsafeChars","formatLabelFromId","firstWord","normalize","word","months","LABEL","MONTHS","january","february","march","april","june","july","august","september","october","november","december","TYPE_KEYS","bathesis","mathesis","candthesis","resreport","datacd","audiocd","patentde","patenteu","patentfr","patentuk","patentus","patreq","patreqde","patreqeu","patreqfr","patrequk","patrequs","STANDARD_NUMBERS_PATTERN","parseMonth","day","Converters","PICK","datePart","padStart","YEAR_MONTH","EPRINT","EVENT_TITLE","addon","HOW_PUBLISHED","howPublished","KEYWORDS","isLabelSafe","formatLabel","NAMES","NAMES_ORCID","inputName","_orcid$item","outputName","PAGES","STANDARD_NUMBERS","STATUS","TITLE","nonSpec","formatDate","S2ID","subtype","typeKey","sourceType","subType","targetType","BOOK","BOOK_PART","COLLECTION","COLLECTION_PART","PROCEEDINGS","PROCEEDINGS_PART","PERIODICAL_PART","TITLE_MAP","shortand","shortandintro","targets","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_parse","_format","_spec$convertToSource","getStringCase","formatNameParts","piece","hyphenated","orderNamePieces","pieces","orderGiven","undecided","upperCase","unshift","orderNameParts","commandBegin","command","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","colon","semicolon","itemCount","mathLiteral","script","environment","commandEnd","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","Annotations","Annotation","_this$state","partlyLowercase","protectCase","MathString","char","ligature","afterPunctuation","_this$state2","first","otherCharacters","restLowerCase","Command","commandToken","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","getLexerState","languages","isEnglish","getMainRule","parseAnnotation","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","parseBibtex","mapBibtex","parseFile","parseEntries","diacritic","mathUnicode","UNSAFE_UNICODE","DIACRITIC_PATTERN","LONE_DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","escapeValue","escapeCharacter","subject","formatRichText","closingTags","tokens","formatSingleValue","valueType","formatName","formatAnnotationValue","listType","delimiter","formatted","formatList","formatAnnotation","itemValue","formatEntryValues","formatValue","formatBibtex","formatField","formatEntry","mapper","opts","bibtxt","apa","proxied","for","getWrapperProxy","original","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","prepareEngine","store","styleXml","retrieveItem","engineHash","Engine","fetchEngine","setOutputFormat","development_extensions","wrap_url_and_doi","getAffix","affix","prepareCiteItem","prepareCitation","citation","prepareCitations","context","nosort","sortedIds","hyperlinks","bibstart","bibend","asEntryArray","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","kind","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","entity","PROP_CONVERTERS","city","region","country","place","raw","UTC","SHARED_PROPS","newIdentifiers","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","CiteCore","_cff_mainReference","preferredCitation","cff","preferred","cffVersion","preferredIndex","mainRef","rehypeCitation"],"mappings":"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"}