feat(extraField)!: support duplicate keys, unify parser option, move save to options, avoid empty __nonStandard__
#96
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✅ Changes
Support multiple values for the same key
getExtraFields(item, "custom")now returnsMap<string, string[]>to allow multiple identical keys (e.g. multipleoriginal-authorentries).getExtraFields(item, "default")overload remains compatible with Zotero's api and returnsMap<string, string>.Move save to options: Both
setExtraFieldandreplaceExtraFieldsnow use anoptionsobject instead of a standalonesaveargument (introduced in feat(extra-field-tool): allow disable save #95) for cleaner and extensible API design.Parser option:
parser: "enhanced" | "classical"replaces the previous backend parameter.enhanced: enhanced custom parser (multi-value support), originalcustomclassical: Zotero built-in parser (single value per key), originaldefaultFixed
__nonStandard__handling__nonStandard__: [""]when no non-standard lines exist in theextrafield.💥 BREAKING CHANGES
getExtraFields(item, "custom")now returnsMap<string, string[]>instead ofMap<string, string>. Code that previously expected a string value must now handle arrays.saveargument insetExtraFieldandreplaceExtraFieldshas been replaced by anoptionsobject ({ save?: boolean }).