Since the citation-js
npm package was first published, version 0.6 is the first major version of Citation.js that did not start out as a pre-release. Version 0.3 itself spent almost 6 months in pre-release, but only received updates for less than half a month. Version 0.4 spent more than a year in pre-release and received updates for about 4 months. Version 0.5 takes the cake with one and a half years in pre-release, receiving updates for a year, also making it the best-maintained version.
Tussilago farfara, March 27th, 2022
Version 0.6 is a major version bump because it introduces a number of breaking changes, including raising the minimal Node.js version to 14. Since April 2022, Node.js 12 is End-Of-Life, which led to a lot of dependencies dropping support. Now, Citation.js does so too. Other changes include the following:
Update data format to CSL v1.0.2
The internal data format is now updated from CSL v1.0.1 to v1.0.2. This introduces the software
type and the generic document
type, as well as some other types, and some new fields. The event
field is also renamed to event-title
. That, and software
replacing book
, makes it so that CSL v1.0.2 is not compatible with CSL v1.0.1 styles, making it a breaking change.
- CSL data is now automatically upgraded to v1.0.2 on input.
Cite#data
((new Cite()).data
) now contains CSL v1.0.2 data.- Output formatters of plugins now receive CSL v1.0.2 data as input.
util
(import { util } from '@citation-js/core'
) now has two functions,downgradeCsl
andupgradeCsl
, to convert data between the two versions.- The
data
formatter (.format('data')
) now takes aversion
option. When set to'1.0.1'
, this downgrades the CSL data before outputting. @citation-js/plugin-csl
already automatically downgrades CSL to v1.0.1 for compatibility with the style files.- Custom fields are now generally put in the
custom
object, instead of prefixing an underscore to the field name.
The mappings are also updated. Especially the RIS and BibLaTeX mappings were made more complete by the increased capabilities of the CSL data schema. Non-core plugins are also being updated, mainly affecting @citation-js/plugin-software-formats
and @citation-js/plugin-zotero-translation-server
.
Test coverage
While updating the plugin mappings, the test suites of the plugins were also expanded. This led to the identification of a number of bugs, that were also fixed in this release:
- BibLaTeX
- handling of CSL entries without a
type
- handling of
bookpagination
- handling of
masterthesis
- handling of CSL entries without a
- RIS
- RegExp pattern for ISSNs
- Name parsing of single-component names
Closing issues
A number of issues were also fixed in this release:
- Adding full support for the Bib(La)TeX
crossref
field - Mapping BibLaTeX
eid
tonumber
instead ofpage
- Adding a mapping for the custom BibLaTeX
s2id
field - In Wikidata, getting issue/volume/page/publication date info from qualifiers as well as top-level properties.
CSL styles
The bundled styles (apa
, vancouver
, and harvard1
) were updated. Note that harvard1
is now an alias for harvard-cite-them-right
. Quoting the documentation:
The original “harvard1.csl” independent CSL style was not based on any style guide, but it nevertheless remained popular because it was included by default in Mendeley Desktop. We have now taken one step to remove this style from the central CSL repository by turning it into a dependent style that uses the Harvard author-date format specified by the popular “Cite Them Right” guide. This dependent style will likely be removed from the CSL repository entirely at some point in the future.
http://www.zotero.org/styles/harvard1, CC-BY-SA-3.0
Looking forward
Some breaking changes are still pending, mainly changes to the plugin API and the removal of some left-over APIs. However, I also want to work on a more comprehensive format for machine-readable mappings, a format for mappings for linked data, and of course implementing more mappings in general!