diff --git a/content/bootstrap.ts b/content/bootstrap.ts index 9dfd527e83..53b4eaa99f 100644 --- a/content/bootstrap.ts +++ b/content/bootstrap.ts @@ -29,33 +29,6 @@ function log(msg) { } } -// Loads default preferences from prefs.js in Zotero 6 -function setDefaultPrefs(rootURI) { - const branch = Services.prefs.getDefaultBranch('') - const obj = { - pref: (pref, value) => { - switch (typeof value) { - case 'boolean': - branch.setBoolPref(pref, value) - break - case 'string': - branch.setStringPref(pref, value) - break - case 'number': - branch.setIntPref(pref, value) - break - default: - log(`Invalid type '${ typeof (value) }' for pref '${ pref }'`) - } - }, - } - Services.scriptloader.loadSubScriptWithOptions(`${ rootURI }prefs.js`, { - target: obj, - charset: 'utf-8', - // ignoreCache: true - }) -} - export function install(_data: any, _reason: ReasonId) { log('install, nothing to do') } @@ -82,8 +55,6 @@ export async function startup({ resourceURI, rootURI = resourceURI.spec }, reaso if (Zotero.BetterBibTeX) throw new Error('Better BibTeX is already started') - setDefaultPrefs(rootURI) - const $window = Cc['@mozilla.org/appshell/appShellService;1'].getService(Ci.nsIAppShellService).hiddenDOMWindow Services.scriptloader.loadSubScriptWithOptions(`${ rootURI }content/better-bibtex.js`, { charset: 'utf=8', @@ -128,8 +99,8 @@ export async function startup({ resourceURI, rootURI = resourceURI.spec }, reaso onMainWindowLoad({ window: Zotero.getMainWindow() }) } catch (err) { - alert({ title: 'Better BibTeX startup failed', text: `${ err }` }) - log(`${ err }\n${ err.stack }`) + alert({ title: 'Better BibTeX startup failed', text: `${err}\n${err.stack}` }) + log(`${ err }\n${err.stack}`) } } diff --git a/content/key-manager/formatter.ts b/content/key-manager/formatter.ts index 9ea1da0f8c..e6842ef58e 100644 --- a/content/key-manager/formatter.ts +++ b/content/key-manager/formatter.ts @@ -565,11 +565,24 @@ export class PatternFormatter { } } - /** returns the name of the shared group library, or nothing if the item is in your personal library */ + /** Tests whether the item is in the user library */ public $library(): this { - if (this.item.libraryID === Zotero.Libraries.userLibraryID) return this.$text('') - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return this.$text(Zotero.Libraries.get(this.item.libraryID).name) + if (this.item.libraryID !== Zotero.Libraries.userLibraryID) this.next = true + return this.$text('') + } + + /** + * Tests whether the item is in the given group library + * @param name group name + */ + public $group(name: string): this { + if (this.item.libraryID === Zotero.Libraries.userLibraryID) { + this.next = true + } + else if (Zotero.Libraries.get(this.item.libraryID)?.name !== name) { + this.next = true + } + return this.$text('') } /** diff --git a/content/prefs.ts b/content/prefs.ts index 9605e58780..3898c85d6a 100644 --- a/content/prefs.ts +++ b/content/prefs.ts @@ -86,8 +86,8 @@ export const Preference = new class PreferenceManager extends PreferenceManagerB break } } - catch { - error = `could not set default for ${ pref } to ${ typeof value } ${ JSON.stringify(value) }` + catch (err) { + error = `could not set default for ${pref} to ${typeof value} ${JSON.stringify(value)} (${err.message})` } if (error) { const v = Zotero.Prefs.get(`translators.better-bibtex.${ pref }`) diff --git a/content/spreadsheet.pug b/content/spreadsheet.pug new file mode 100644 index 0000000000..13a34861bd --- /dev/null +++ b/content/spreadsheet.pug @@ -0,0 +1,54 @@ +doctype xml +office:document( + office:version="1.3" + office:mimetype="application/vnd.oasis.opendocument.spreadsheet" + xmlns:office='urn:oasis:names:tc:opendocument:xmlns:office:1.0' + xmlns:config='urn:oasis:names:tc:opendocument:xmlns:config:1.0' + xmlns:loext='urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0' + xmlns:table='urn:oasis:names:tc:opendocument:xmlns:table:1.0' + xmlns:fo='urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0' + xmlns:ooo='http://openoffice.org/2004/office' + xmlns:style='urn:oasis:names:tc:opendocument:xmlns:style:1.0' + xmlns:calcext='urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0' + xmlns:text='urn:oasis:names:tc:opendocument:xmlns:text:1.0' + ) + office:settings + config:config-item-set(config:name="ooo:view-settings") + config:config-item-map-indexed(config:name="Views") + config:config-item-map-entry + config:config-item(config:name="ViewId" config:type="string") view1 + config:config-item-map-named(config:name="Tables") + each rows, name in sheets + config:config-item-map-entry(config:name=name) + config:config-item(config:name="HorizontalSplitMode" config:type="short") 0 + config:config-item(config:name="VerticalSplitMode" config:type="short") 2 + config:config-item(config:name="HorizontalSplitPosition" config:type="int") 0 + config:config-item(config:name="VerticalSplitPosition" config:type="int") 1 + config:config-item(config:name="ActiveSplitRange" config:type="short") 0 + config:config-item(config:name="PositionLeft" config:type="int") 0 + config:config-item(config:name="PositionRight" config:type="int") 0 + config:config-item(config:name="PositionTop" config:type="int") 0 + config:config-item(config:name="PositionBottom" config:type="int") 1 + office:styles + loext:theme(loext:name="Office") + loext:theme-colors(loext:name="LibreOffice") + office:automatic-styles + style:style(style:name="ce1" style:family="table-cell" style:parent-style-name="Default") + style:text-properties(fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold") + office:body + office:spreadsheet + each rows, name in sheets + table:table(table:name=name table:style-name="ta1") + - const columns = Object.keys(rows[0]) + table:table-column(table:style-name="co1" table:number-columns-repeated="16384" table:default-cell-style-name="ce1") + table:table-row(table:style-name="ro1") + each column in columns + table:table-cell(office:value-type="string" calcext:value-type="string") + text:p= column + table:table-cell(table:number-columns-repeated="16382") + each row in rows + table:table-row(table:style-name="ro1") + each column in columns + table:table-cell(table:style-name="Default" office:value-type="string" calcext:value-type="string") + text:p= row[column] + table:table-cell(table:style-name="Default" table:number-columns-repeated="16382") diff --git a/package-lock.json b/package-lock.json index ee1c3733d5..2105c6ef9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "zotero-better-bibtex", - "version": "6.7.263", + "version": "7.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "zotero-better-bibtex", - "version": "6.7.263", + "version": "7.0.0", "license": "ISC", "dependencies": { "@artsy/to-title-case": "^1.1.0", - "@ast-grep/napi": "^0.32.2", + "@ast-grep/napi": "^0.33.0", "@caeser1996/titlecase": "^3.0.2", "@henrygd/queue": "^1.0.7", "@idxdb/promised": "^4.0.5", @@ -59,21 +59,22 @@ "string.prototype.matchall": "^4.0.12", "synchronous-promise": "^2.0.17", "text-title-case": "^1.0.2", - "tinybench": "^3.0.7", + "tinybench": "^3.1.0", "title": "^4.0.1", "title-case": "^4.3.2", "transliteration": "^2.3.5", + "ts-morph": "^25.0.0", "uzip": "^0.20201231.0", "words-to-numbers": "^1.5.1", "xregexp": "^5.1.1", - "zotero-plugin": "3.3.0" + "zotero-plugin": "4.0.2" }, "devDependencies": { "@retorquere/bibtex-parser": "^9.0.17", "@retorquere/zotero-sync": "^1.0.27", "@stylistic/eslint-plugin": "^2.12.1", "@types/bluebird": "^3.5.42", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@xmldom/xmldom": "^0.9.6", "ajv-keywords": "^5.1.0", "archiver": "^7.0.1", @@ -113,7 +114,7 @@ "jsesc": "^3.1.0", "kuroshiro": "^1.2.0", "kuroshiro-analyzer-kuromoji": "^1.1.0", - "meriyah": "^6.0.3", + "meriyah": "^6.0.4", "moment": "^2.30.1", "node-eta": "^0.9.0", "npm-run-all": "^4.1.5", @@ -124,7 +125,7 @@ "process": "^0.11.10", "properties-reader": "^2.3.0", "pug": "^3.0.3", - "putout": "^37.6.1", + "putout": "^37.12.0", "recast": "^0.23.9", "regenerate": "^1.4.2", "rimraf": "^6.0.1", @@ -133,7 +134,7 @@ "string-template": "^1.0.0", "ts-node": "^10.9.2", "tslib": "^2.8.1", - "typedoc": "^0.27.5", + "typedoc": "^0.27.6", "typescript": "^5.7.2", "unicode-11.0.0": "^0.7.8", "unicode2latex": "^6.0.6", @@ -155,29 +156,29 @@ } }, "node_modules/@ast-grep/napi": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi/-/napi-0.32.2.tgz", - "integrity": "sha512-VHgEqKBJH1wZH3GHI09Io4TySi8IpEi3s0EOtKAvvyixUxpqMNw+vx6a4sJDQUrLSGPeQ5e0ZokQi2GOGovY1g==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi/-/napi-0.33.0.tgz", + "integrity": "sha512-6heRMmomhSD0dkummRQ+R4xWXXmc41OaDPoPI49mKJXPyvwJPdPZUcQjXdIitOVL4uJV+qM2ZBucDPENDBSixw==", "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@ast-grep/napi-darwin-arm64": "0.32.2", - "@ast-grep/napi-darwin-x64": "0.32.2", - "@ast-grep/napi-linux-arm64-gnu": "0.32.2", - "@ast-grep/napi-linux-arm64-musl": "0.32.2", - "@ast-grep/napi-linux-x64-gnu": "0.32.2", - "@ast-grep/napi-linux-x64-musl": "0.32.2", - "@ast-grep/napi-win32-arm64-msvc": "0.32.2", - "@ast-grep/napi-win32-ia32-msvc": "0.32.2", - "@ast-grep/napi-win32-x64-msvc": "0.32.2" + "@ast-grep/napi-darwin-arm64": "0.33.0", + "@ast-grep/napi-darwin-x64": "0.33.0", + "@ast-grep/napi-linux-arm64-gnu": "0.33.0", + "@ast-grep/napi-linux-arm64-musl": "0.33.0", + "@ast-grep/napi-linux-x64-gnu": "0.33.0", + "@ast-grep/napi-linux-x64-musl": "0.33.0", + "@ast-grep/napi-win32-arm64-msvc": "0.33.0", + "@ast-grep/napi-win32-ia32-msvc": "0.33.0", + "@ast-grep/napi-win32-x64-msvc": "0.33.0" } }, "node_modules/@ast-grep/napi-darwin-arm64": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-arm64/-/napi-darwin-arm64-0.32.2.tgz", - "integrity": "sha512-TPUJEO6irdYeGnalM878B93bqxLBslxhADQwQodtRfoK0Twd2T/U1ZcWVA1ntV1buR0C7ipHVT2737O/Aj31+Q==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-arm64/-/napi-darwin-arm64-0.33.0.tgz", + "integrity": "sha512-FsBQiBNGbqeU6z2sjFgnV6MXuBa0wYUb4PViMnqsKLeWiO7kRii5crmXLCtdTD2hufXTG6Rll8X46AkYOAwGGQ==", "cpu": [ "arm64" ], @@ -191,9 +192,9 @@ } }, "node_modules/@ast-grep/napi-darwin-x64": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-x64/-/napi-darwin-x64-0.32.2.tgz", - "integrity": "sha512-VBouGnUTpV2sSdktjF6pVy/Rw8PkWe0U5TFx0zzQIGmPeoTUfClpuqWdKLlBGyKs0nKQ5+TKw989csKTFTU6wQ==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-x64/-/napi-darwin-x64-0.33.0.tgz", + "integrity": "sha512-rWo1wG7fc7K20z9ExIeN6U4QqjHhoQSpBDDnmxKTR0nIwPfyMq338sS4sWZomutxprcZDtWrekxH1lXjNvfuiA==", "cpu": [ "x64" ], @@ -207,9 +208,9 @@ } }, "node_modules/@ast-grep/napi-linux-arm64-gnu": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-gnu/-/napi-linux-arm64-gnu-0.32.2.tgz", - "integrity": "sha512-mVHbzQPCyG550lDa1t83BtITRmnA9464L2HtLCaRfLf0PUSMe44kyWYJDwt5YhaYWEZzTuVKxAhxZERiAgP6KA==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-gnu/-/napi-linux-arm64-gnu-0.33.0.tgz", + "integrity": "sha512-3ZnA2k57kxfvLg4s9+6rHaCx1FbWt0EF8fumJMf5nwevu7GbVOOhCkzAetZe80FBgZuIOSR4IS2QMj9ZHI0UdQ==", "cpu": [ "arm64" ], @@ -223,9 +224,9 @@ } }, "node_modules/@ast-grep/napi-linux-arm64-musl": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-musl/-/napi-linux-arm64-musl-0.32.2.tgz", - "integrity": "sha512-AWCrr5PgnrJBgm4N604KOJcG3dZpCFsee7v2MKyYTVDZ1ls75iLncTcRPi+Na7O0h9B6XJUpgh8VQ5RhzPEvzQ==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-musl/-/napi-linux-arm64-musl-0.33.0.tgz", + "integrity": "sha512-oUGZgCaVCijFgvC+X52ttgoWUqgrIsSVJZgn+1VBY3n4mpzcoYAghFomSUbRTBUL2ebvZweA33Klqks4okY61w==", "cpu": [ "arm64" ], @@ -239,9 +240,9 @@ } }, "node_modules/@ast-grep/napi-linux-x64-gnu": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-gnu/-/napi-linux-x64-gnu-0.32.2.tgz", - "integrity": "sha512-P51SZCa2V4j79+X8YT1gZaMGNUjiUyf9KrdnAFKpf2w3iSXhWaa/cMAUoEeRFgSHSQ1ReaCOZNaJI4vRUGZQtg==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-gnu/-/napi-linux-x64-gnu-0.33.0.tgz", + "integrity": "sha512-QTAkfxQSsOGRza0hnkeAgJDQqR00iDerRNq42dOGIzgF+Kse491By3UmBEMG4oCbv17yYcBBlknQkzKSKtigjw==", "cpu": [ "x64" ], @@ -255,9 +256,9 @@ } }, "node_modules/@ast-grep/napi-linux-x64-musl": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-musl/-/napi-linux-x64-musl-0.32.2.tgz", - "integrity": "sha512-MlApu44GKdluuTaDE/HK+T/+UfpU4tdR7JZSxEJQGt6jnVpbWEIbq2szsFNTUtu0eYb7mqn64ftC5QHC6RRRag==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-musl/-/napi-linux-x64-musl-0.33.0.tgz", + "integrity": "sha512-PW6bZO7MyQsBNZv0idI/Ah6ak66T8LqZ21wBGjtQp9NDGViOtkLeu+eJJGaZjMqUdidKHKgmMKXksZHl2m8ulQ==", "cpu": [ "x64" ], @@ -271,9 +272,9 @@ } }, "node_modules/@ast-grep/napi-win32-arm64-msvc": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-arm64-msvc/-/napi-win32-arm64-msvc-0.32.2.tgz", - "integrity": "sha512-cs0Pa//3Vm5mBCKQgmVkwy7U9LGxVAD0w8aRwqdzNz2fdxpQ5XX+GhZH4EnvNZAsVTCrgdqIY5pKq6oUDDLeBA==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-arm64-msvc/-/napi-win32-arm64-msvc-0.33.0.tgz", + "integrity": "sha512-ijmFQcFc32JOIQlSfnhDJpb3qFb2RhrRqfeY0EHHN1xRSGwZHfsHTSS66nKR2sREmxTIMgxXOtylKicbyyMVKA==", "cpu": [ "arm64" ], @@ -287,9 +288,9 @@ } }, "node_modules/@ast-grep/napi-win32-ia32-msvc": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-ia32-msvc/-/napi-win32-ia32-msvc-0.32.2.tgz", - "integrity": "sha512-nMv+XTM9t+1gkceSKBmt+A5VKrQvTtnh65TK8NRdD7MxHpYhlZazZx3qBf2s13mb2qkRjLD0Umu33ZmXUvFblA==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-ia32-msvc/-/napi-win32-ia32-msvc-0.33.0.tgz", + "integrity": "sha512-NNIb2VK3Z2BwKp0QJSw8gkhwOUp85SgTsxJ38p+wIUAA/KzAKCJOmyOaZ301qGHt4gL+jTHgTIvJJX+9eT/REg==", "cpu": [ "ia32" ], @@ -303,9 +304,9 @@ } }, "node_modules/@ast-grep/napi-win32-x64-msvc": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-x64-msvc/-/napi-win32-x64-msvc-0.32.2.tgz", - "integrity": "sha512-dEU2/BSahI9GSlibc0HGYldBOhpl8fNv1XsM5rEVLBQ++Eg6QhIXQG1cjPsnGAaSaTDvurBTj/09WiPJt58rZw==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-x64-msvc/-/napi-win32-x64-msvc-0.33.0.tgz", + "integrity": "sha512-gW7viQQjdPA1HoCkpCqoonC81TOwcpP828w/XqZFE/L6uhD8SF2usul8KNBQOiX3O7/fqYEOnbtWMCrwZIqG1Q==", "cpu": [ "x64" ], @@ -599,9 +600,9 @@ } }, "node_modules/@dprint/darwin-arm64": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/darwin-arm64/-/darwin-arm64-0.47.6.tgz", - "integrity": "sha512-DrtKVOH7Ue6QYsqsUfUwBlTkSZNF2j35xqyI6KimUT1ulgUPocLG53JC/Aej9KuSCPmt4M3J40xxPKRgIM4jPA==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/darwin-arm64/-/darwin-arm64-0.48.0.tgz", + "integrity": "sha512-LJ+02WB1PDIUqobfwxBVMz0cUByXsZ6izFTC9tHR+BDt+qWfoZpCn5r/zpAVSkVlA5LzGHKLVNJrwKwaTnAiVA==", "cpu": [ "arm64" ], @@ -612,9 +613,9 @@ ] }, "node_modules/@dprint/darwin-x64": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/darwin-x64/-/darwin-x64-0.47.6.tgz", - "integrity": "sha512-p16a4lMbAo4RngbNTAmtREnIRI/cOcZFy5wHPIzbCDnnHI+4UyHiAypTrpF8U8EYx1tw3hgih2MyAuupa9Gfag==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/darwin-x64/-/darwin-x64-0.48.0.tgz", + "integrity": "sha512-OxfLbitoNvFMVucauJ2DvEaJpnxyyhXWC2M56f2AX8lkZSsHrdMHtklqxHz3cBGVPpcCXjLPRC139ynwmqtjIA==", "cpu": [ "x64" ], @@ -625,9 +626,9 @@ ] }, "node_modules/@dprint/linux-arm64-glibc": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/linux-arm64-glibc/-/linux-arm64-glibc-0.47.6.tgz", - "integrity": "sha512-WHphnk0oXpNzwJ9cjbddOL+hEZkXTvHxcA2pM1h1kWCBa5m+4qh0fg8YCktckMfHx1qdQuZYWRoT4l7yQbzWYA==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/linux-arm64-glibc/-/linux-arm64-glibc-0.48.0.tgz", + "integrity": "sha512-VMeyorjMXE9NrksmyOJ0zJRGxT7r7kDBBxshCxW+U1xgW+FqR8oE25RZaeDZZPDzUHapAly4ILZqjExLzAWVpw==", "cpu": [ "arm64" ], @@ -638,9 +639,9 @@ ] }, "node_modules/@dprint/linux-arm64-musl": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/linux-arm64-musl/-/linux-arm64-musl-0.47.6.tgz", - "integrity": "sha512-/2cSPudajg8J0U69ldNZkJx5QiKZNh+ohNVM9leWZ8v6GXN6sJDHX3T6hzS3ohIb03YOCiLOrJZDy9j3+fSgdQ==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/linux-arm64-musl/-/linux-arm64-musl-0.48.0.tgz", + "integrity": "sha512-1BUHQKEngrZv8F6wq2SVxdokyeUoHFXjz0xbYGwctlFPzXAVNLpDy9FROXsfIKmxZ0NsRqEpatETLmubtvWtcA==", "cpu": [ "arm64" ], @@ -651,9 +652,9 @@ ] }, "node_modules/@dprint/linux-riscv64-glibc": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/linux-riscv64-glibc/-/linux-riscv64-glibc-0.47.6.tgz", - "integrity": "sha512-RMHJ3Zuzpls426upHlAveVwlGMi8oBLzhiCauyC/yWQl3CkGTAYdyhEpGnux0+RxacysfIL2bd8ourx4K0Sx3w==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/linux-riscv64-glibc/-/linux-riscv64-glibc-0.48.0.tgz", + "integrity": "sha512-c8LktisPGbygyFf9wUg0trbAQDApawU017iPQXkZnGcV4QoCeGkFjnY8vltIKyy5DeP5gIp12KjlaT/wogMPkw==", "cpu": [ "riscv64" ], @@ -664,9 +665,9 @@ ] }, "node_modules/@dprint/linux-x64-glibc": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/linux-x64-glibc/-/linux-x64-glibc-0.47.6.tgz", - "integrity": "sha512-4zbVsx/a8lHkRyAjfW0PNlN5IMwOJfFapgXNYJowWNO7X3j3m1jYJWovjmdZls+d6pDeOHoanMWtq95wd7zTeQ==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/linux-x64-glibc/-/linux-x64-glibc-0.48.0.tgz", + "integrity": "sha512-Am8rp4FqmkO4aFdmwxk+82g2csxPLTPIlNq0Fa9AZReU15yta3Pq0Pg4AXFq+KSso5L4WGmt09ciCitK5gmdOg==", "cpu": [ "x64" ], @@ -677,9 +678,9 @@ ] }, "node_modules/@dprint/linux-x64-musl": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/linux-x64-musl/-/linux-x64-musl-0.47.6.tgz", - "integrity": "sha512-0C13t4OVzomgQjvUyD5IrRyjLDhGuOtqMo00uJlwn3QHucfgOBqkjyQ5fq7T6+grBse0m14/EWblvSbYkZpyDw==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/linux-x64-musl/-/linux-x64-musl-0.48.0.tgz", + "integrity": "sha512-0nzrZXOvblM/H4GVffNJ7YZn/Y4F/i+DNDZRT1hQmKuTQurB7a2MBJ91OpooLIWJoSn4q40crwM1Po4xnNXrdg==", "cpu": [ "x64" ], @@ -690,9 +691,9 @@ ] }, "node_modules/@dprint/win32-arm64": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/win32-arm64/-/win32-arm64-0.47.6.tgz", - "integrity": "sha512-UOkeFMBdGIuGNwfkrJdVM9eNiRMdbZRRGVy0Cdo2AXn/FCDVqZ74KJkvYVcoUE27GCytHi4Sp1s4at7659WCOw==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/win32-arm64/-/win32-arm64-0.48.0.tgz", + "integrity": "sha512-bRcGLbhKEXmP7iXDir/vU6DqkA3XaMqBM6P2ACCJMHd+XKWsz3VJzZMn5hFWZ+oZpxUsS3Mg2RcgH5xVjaawgA==", "cpu": [ "arm64" ], @@ -703,9 +704,9 @@ ] }, "node_modules/@dprint/win32-x64": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/@dprint/win32-x64/-/win32-x64-0.47.6.tgz", - "integrity": "sha512-i9xwXR8V8Jk/wU1gsYKx15eb0ypBRbRZFkHsnHfC0ZBimcfEOibGnGcfv+UCUcumXtnV46TnBqaJW7H70J1J+A==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@dprint/win32-x64/-/win32-x64-0.48.0.tgz", + "integrity": "sha512-9JOKWWngo5vPBFxJgFogAS4rfFC2GaB9Yew6JZbRBUik7j5Num2muuw5p1tMYnl2NUBdS2W4EgsSLM3uUDyhBQ==", "cpu": [ "x64" ], @@ -1844,7 +1845,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -1858,7 +1858,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -1868,7 +1867,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -2781,10 +2779,10 @@ "putout": ">=36" } }, - "node_modules/@putout/plugin-add-missing-parens": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-add-missing-parens/-/plugin-add-missing-parens-2.0.0.tgz", - "integrity": "sha512-QLpOF6DDHr/Na36r/bZQd+RFgtvAi1u3JGIHoH80jg9RkpNW2DlAjcs9HdKVdUwwulMFW5tAN9q8rhBcTPuUOg==", + "node_modules/@putout/plugin-apply-arrow": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@putout/plugin-apply-arrow/-/plugin-apply-arrow-1.2.1.tgz", + "integrity": "sha512-CM81sVcVR72GJLQ94Cr9kU2OEUx+5baDLHIsa7J2vDbBH3T+Xwlf1IgDZje26Cw7MhatRtLY/NRw9MuPldMIlw==", "dev": true, "license": "MIT", "engines": { @@ -2925,16 +2923,16 @@ } }, "node_modules/@putout/plugin-conditions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-conditions/-/plugin-conditions-5.0.0.tgz", - "integrity": "sha512-joqYYlN3dskMfxaon5Y/nNiR/H7/v8ZUZZ7groe9GrNCzi/DRVYhBNY2P9eoNJQNqiHY9ub8GIx8oKOo3kObQg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-conditions/-/plugin-conditions-6.0.0.tgz", + "integrity": "sha512-yxoYFgeewabE1tLmZ8mMoUFMxS4agu0iMz9qRDVbUWoaXDW75CeB1cPpo03JD0tyUk4dCe2rNafpZ4A0+JeoqQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=36" + "putout": ">=37" } }, "node_modules/@putout/plugin-convert-apply-to-spread": { @@ -3246,16 +3244,16 @@ } }, "node_modules/@putout/plugin-for-of": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@putout/plugin-for-of/-/plugin-for-of-6.1.1.tgz", - "integrity": "sha512-ms8pJ0et3c2Hka8BuDHcw7cMokUP6z3vDWFlZppy5dYFitRXiJV8Jg1n9nfYNDnQ3wAVQmtxR1i8F1zl1/cgWA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-for-of/-/plugin-for-of-7.1.0.tgz", + "integrity": "sha512-79wwlUmnesRB+p2C5O46J+ZtHWoE0qMmEJm8LWuvjzjo6Hx5u74xW1oWvnVKOqoI00WTdlwT5tdBm1sflWgbyw==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=37" } }, "node_modules/@putout/plugin-generators": { @@ -3343,16 +3341,16 @@ } }, "node_modules/@putout/plugin-math": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-math/-/plugin-math-2.1.0.tgz", - "integrity": "sha512-HWx6Zv8cAr5fglBNqlaQyQ/CZApxSgM36aJFUTPzcTihgvLUBWkh5P+JrKE+tl0fIqFssRu0XtUUuRkOlrbouw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-math/-/plugin-math-3.3.0.tgz", + "integrity": "sha512-lKgY1cIfhEclZx5xW9Y8KzmDsMCNuYmemwiYaN0vzzC5kiIQ+6PyHRcWwMYBiBV8oCKiemD+gyeQpT3Vb+lLCA==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=29" + "putout": ">=37" } }, "node_modules/@putout/plugin-maybe": { @@ -3463,16 +3461,29 @@ } }, "node_modules/@putout/plugin-package-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-package-json/-/plugin-package-json-8.3.0.tgz", - "integrity": "sha512-tnz9vlOdU28YtIbuAhTSh6AgDxhVOLiRDCN2VQtHEJIBtN+dExb9YaUuE7oB5au5wpCXilpdPwYnWDwUjzCbHA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-package-json/-/plugin-package-json-9.0.0.tgz", + "integrity": "sha512-vdVgKSzUg++asyihMK107gaaGPX4FMK3rWupbaYG414M3OdWNUf31h0h3lnY0Kbi31TIv1GcKTAhe2Cjjj4yXA==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=36" + "putout": ">=37" + } + }, + "node_modules/@putout/plugin-parens": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@putout/plugin-parens/-/plugin-parens-1.1.3.tgz", + "integrity": "sha512-LbPTTnPg7ZDNGYXzAQQY4g036C8f21Rfc06ndoyJ8HwM8OUFdN7rTH3fb+6nslNhdqjeTxhafR7qzwfSiFUb+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=37" } }, "node_modules/@putout/plugin-promises": { @@ -3739,16 +3750,16 @@ } }, "node_modules/@putout/plugin-remove-useless-arguments": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-arguments/-/plugin-remove-useless-arguments-9.0.0.tgz", - "integrity": "sha512-+t52suTlLsmDx7p27voVch0MeQEy9himjB7hqgrab1BhSYigu88OQhNy6l7xGnIpkmvw1vu3Npn1aDudz3AEAg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-arguments/-/plugin-remove-useless-arguments-10.0.0.tgz", + "integrity": "sha512-xFAxMcDxLDzHkyPYFzYmzTUY50rahlmG6Go/hgp3Kc9jh1E9f5tRL3osIchud+eKxV/Tuy7Ion6aVRIfDE2/GQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=36" + "putout": ">=37" } }, "node_modules/@putout/plugin-remove-useless-array": { @@ -4093,16 +4104,16 @@ } }, "node_modules/@putout/plugin-types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-types/-/plugin-types-5.1.0.tgz", - "integrity": "sha512-Oy4e2/P2w56TedzIk5rh/u2Yd3EovMhjxnrAjMFI6R/h7MM8kQSwI4RQFCWTgxQcDvLfw0FS7uOw09eNSJNOkQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-types/-/plugin-types-6.0.0.tgz", + "integrity": "sha512-FQS/cEYyqHfyRrhrtWtAux9DqjluAEYMnzjSg5uGsM13ZFj19SiaIzGbjiwnN8V2dinay0te6ADnYwJzaNDNoA==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=36" + "putout": ">=37" } }, "node_modules/@putout/plugin-typescript": { @@ -4937,6 +4948,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@ts-morph/common": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.0.tgz", + "integrity": "sha512-/RmKAtctStXqM5nECMQ46duT74Hoig/DBzhWXGHcodlDNrgRbsbwwHqSKFNbca6z9Xt/CUWMeXOsC9QEN1+rqw==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -5040,9 +5086,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -6007,6 +6053,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", "integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==", + "dev": true, "license": "MIT" }, "node_modules/babel-plugin-macros": { @@ -6833,6 +6880,12 @@ "match-it": "^1.0.0" } }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -7055,9 +7108,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -7115,6 +7168,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/current-git-branch/-/current-git-branch-1.1.0.tgz", "integrity": "sha512-n5mwGZllLsFzxDPtTmadqGe4IIBPfqPbiIRX4xgFR9VK/Bx47U+94KiVkxSKAKN6/s43TlkztS2GZpgMKzwQ8A==", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-add-module-exports": "^0.2.1", @@ -7497,24 +7551,24 @@ "license": "MIT" }, "node_modules/dprint": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/dprint/-/dprint-0.47.6.tgz", - "integrity": "sha512-vCQC+IMHVZbISA5pxEj+yshQbozmQoVFA4lzcLlqJ8rzIAH8U+1DKvesN/2Uv3Bqz6rMW6W4WY7pYJQljmiZ8w==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/dprint/-/dprint-0.48.0.tgz", + "integrity": "sha512-dmCrYTiubcsQklTLUimlO+p8wWgMtZBjpPVsOGiw4kPX7Dn41vwyE1R4qA8Px4xHgQtcX7WP9mJujF4C8vISIw==", "hasInstallScript": true, "license": "MIT", "bin": { "dprint": "bin.js" }, "optionalDependencies": { - "@dprint/darwin-arm64": "0.47.6", - "@dprint/darwin-x64": "0.47.6", - "@dprint/linux-arm64-glibc": "0.47.6", - "@dprint/linux-arm64-musl": "0.47.6", - "@dprint/linux-riscv64-glibc": "0.47.6", - "@dprint/linux-x64-glibc": "0.47.6", - "@dprint/linux-x64-musl": "0.47.6", - "@dprint/win32-arm64": "0.47.6", - "@dprint/win32-x64": "0.47.6" + "@dprint/darwin-arm64": "0.48.0", + "@dprint/darwin-x64": "0.48.0", + "@dprint/linux-arm64-glibc": "0.48.0", + "@dprint/linux-arm64-musl": "0.48.0", + "@dprint/linux-riscv64-glibc": "0.48.0", + "@dprint/linux-x64-glibc": "0.48.0", + "@dprint/linux-x64-musl": "0.48.0", + "@dprint/win32-arm64": "0.48.0", + "@dprint/win32-x64": "0.48.0" } }, "node_modules/drange": { @@ -8354,6 +8408,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/execa/-/execa-0.6.3.tgz", "integrity": "sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^5.0.1", @@ -8372,6 +8427,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", @@ -8383,6 +8439,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8392,6 +8449,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", @@ -8402,6 +8460,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" @@ -8414,6 +8473,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8423,6 +8483,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -8435,6 +8496,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, "license": "ISC" }, "node_modules/expand-brackets": { @@ -8636,7 +8698,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8653,7 +8714,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -8666,7 +8726,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -8679,7 +8738,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -8692,7 +8750,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -8702,7 +8759,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -8716,7 +8772,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -8729,7 +8784,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -8779,7 +8833,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -9315,6 +9368,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -10469,7 +10523,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10518,6 +10571,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-git-repository/-/is-git-repository-1.1.1.tgz", "integrity": "sha512-hxLpJytJnIZ5Og5QsxSkzmb8Qx8rGau9bio1JN/QtXcGEFuSsQYau0IiqlsCwftsfVYjF1mOq6uLdmwNSspgpA==", + "dev": true, "license": "MIT", "dependencies": { "execa": "^0.6.1", @@ -10528,7 +10582,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -11778,16 +11831,15 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/meriyah": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-6.0.3.tgz", - "integrity": "sha512-NqUbuQIjIH8dxUBPTMHS1kwIHd6n6nF3F7oeLXGWqBkpVP2lZxVHdab5JxbFBisIB4axZ9b/lT4HLJfZxmFK7Q==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-6.0.4.tgz", + "integrity": "sha512-Hcas/D1O8qaRTb76L9jOHv0HXs83mJuaFjGcHnfrP2qlU+b/8XohHs2kDBNKejiiUihIFbSAFmLmBPNLUR9VLA==", "dev": true, "license": "ISC", "engines": { @@ -12909,9 +12961,9 @@ "license": "MIT" }, "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "license": "MIT", "dependencies": { @@ -13018,6 +13070,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^2.0.0" @@ -13030,6 +13083,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -15644,6 +15698,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -15779,6 +15834,12 @@ "node": ">=0.10.0" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -16233,6 +16294,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, "license": "ISC" }, "node_modules/pug": { @@ -16389,9 +16451,9 @@ } }, "node_modules/putout": { - "version": "37.6.1", - "resolved": "https://registry.npmjs.org/putout/-/putout-37.6.1.tgz", - "integrity": "sha512-YlCUFzagrN+8FZCXnR7MmFw/3oUdvHVmoTYc6bF9IRJDrUZPMrOssjLWavW3cNlGzgZGmLLt+/qGvpSy1t1FZg==", + "version": "37.12.0", + "resolved": "https://registry.npmjs.org/putout/-/putout-37.12.0.tgz", + "integrity": "sha512-5IDe63pzGt+0wgwVhAnJUj3y+c5mFI2wTC/lOiRTbGNHeBxOmaOTqealEi2DPZI4tDEoF09tfCcP8KDPzuOPpA==", "dev": true, "license": "MIT", "dependencies": { @@ -16429,7 +16491,7 @@ "@putout/operator-match-files": "^5.0.0", "@putout/operator-regexp": "^1.0.0", "@putout/operator-rename-files": "^2.0.0", - "@putout/plugin-add-missing-parens": "^2.0.0", + "@putout/plugin-apply-arrow": "^1.0.0", "@putout/plugin-apply-at": "^2.0.0", "@putout/plugin-apply-destructuring": "^7.0.0", "@putout/plugin-apply-dot-notation": "^2.0.0", @@ -16440,7 +16502,7 @@ "@putout/plugin-apply-starts-with": "^1.0.0", "@putout/plugin-apply-template-literals": "^3.0.0", "@putout/plugin-browserlist": "^2.0.0", - "@putout/plugin-conditions": "^5.0.0", + "@putout/plugin-conditions": "^6.0.0", "@putout/plugin-convert-apply-to-spread": "^4.0.0", "@putout/plugin-convert-arguments-to-rest": "^3.0.0", "@putout/plugin-convert-array-copy-to-slice": "^3.0.0", @@ -16464,14 +16526,14 @@ "@putout/plugin-extract-object-properties": "^9.0.0", "@putout/plugin-extract-sequence-expressions": "^3.0.0", "@putout/plugin-filesystem": "^6.0.0", - "@putout/plugin-for-of": "^6.0.0", + "@putout/plugin-for-of": "^7.0.0", "@putout/plugin-generators": "^1.0.0", "@putout/plugin-github": "^13.0.0", "@putout/plugin-gitignore": "^6.0.0", "@putout/plugin-labels": "^1.0.0", "@putout/plugin-logical-expressions": "^7.0.0", "@putout/plugin-madrun": "^19.0.0", - "@putout/plugin-math": "^2.0.0", + "@putout/plugin-math": "^3.0.0", "@putout/plugin-maybe": "^2.0.0", "@putout/plugin-merge-destructuring-properties": "^10.0.0", "@putout/plugin-merge-duplicate-functions": "^2.0.0", @@ -16480,7 +16542,8 @@ "@putout/plugin-nodejs": "^13.0.0", "@putout/plugin-npmignore": "^5.0.0", "@putout/plugin-optional-chaining": "^1.0.1", - "@putout/plugin-package-json": "^8.0.0", + "@putout/plugin-package-json": "^9.0.0", + "@putout/plugin-parens": "^1.0.0", "@putout/plugin-promises": "^16.0.0", "@putout/plugin-putout": "^22.0.0", "@putout/plugin-putout-config": "^7.0.1", @@ -16500,7 +16563,7 @@ "@putout/plugin-remove-unused-labels": "^1.0.1", "@putout/plugin-remove-unused-private-fields": "^2.0.0", "@putout/plugin-remove-unused-variables": "^10.0.0", - "@putout/plugin-remove-useless-arguments": "^9.0.0", + "@putout/plugin-remove-useless-arguments": "^10.0.0", "@putout/plugin-remove-useless-array": "^1.0.0", "@putout/plugin-remove-useless-array-constructor": "^2.0.0", "@putout/plugin-remove-useless-array-entries": "^1.0.0", @@ -16527,7 +16590,7 @@ "@putout/plugin-split-variable-declarations": "^3.0.0", "@putout/plugin-tape": "^16.0.0", "@putout/plugin-try-catch": "^4.0.0", - "@putout/plugin-types": "^5.0.0", + "@putout/plugin-types": "^6.0.0", "@putout/plugin-typescript": "^9.0.0", "@putout/plugin-webpack": "^3.0.0", "@putout/processor-css": "^9.0.0", @@ -16547,7 +16610,7 @@ "fast-glob": "^3.2.2", "find-up": "^7.0.0", "fullstore": "^3.0.0", - "ignore": "^6.0.2", + "ignore": "^7.0.0", "is-relative": "^1.0.0", "nano-memoize": "^3.0.11", "once": "^1.4.0", @@ -16579,9 +16642,9 @@ } }, "node_modules/putout/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.0.tgz", + "integrity": "sha512-lcX8PNQygAa22u/0BysEY8VhaFRzlOkvdlKczDPnJvrkJD1EuqzEky5VYYKM2iySIuaVIDv9N190DfSreSLw2A==", "dev": true, "license": "MIT", "engines": { @@ -16599,7 +16662,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -17385,7 +17447,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -17520,7 +17581,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -17971,6 +18031,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true, "license": "ISC" }, "node_modules/slash": { @@ -18567,6 +18628,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -19058,9 +19120,9 @@ "license": "MIT" }, "node_modules/tinybench": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-3.0.7.tgz", - "integrity": "sha512-soxV7Dp8eDKvPDv3c4qPJbUjLm1cZxFlsTaIH+FqalsazJzFrLG59dpiIN8OfgVcl11Hfj2b7apD73inCB67Mw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-3.1.0.tgz", + "integrity": "sha512-Km+oMh2xqNCxuyoUsqbRmHgFSd8sATh7v7xreP+kHN6x67w28Pawr83WmBxcaORvxkc0Ex6zgqK951yBnTFaaQ==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -19275,6 +19337,16 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-morph": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.0.tgz", + "integrity": "sha512-ERPTUVO5qF8cEGJgAejGOsCVlbk8d0SDyiJsucKQT5XgqoZslv0Qml+gnui6Yy6o+uQqw5SestyW2HvlVtT/Sg==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.26.0", + "code-block-writer": "^13.0.3" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -19453,9 +19525,9 @@ } }, "node_modules/typedoc": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.5.tgz", - "integrity": "sha512-x+fhKJtTg4ozXwKayh/ek4wxZQI/+2hmZUdO2i2NGDBRUflDble70z+ewHod3d4gRpXSO6fnlnjbDTnJk7HlkQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.6.tgz", + "integrity": "sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -20502,26 +20574,26 @@ } }, "node_modules/zotero-plugin": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/zotero-plugin/-/zotero-plugin-3.3.0.tgz", - "integrity": "sha512-t3MqpY8jFg5SWGp8UFyr1mA1D0vWXa4l69vkX4zbNSJ0TaabfKxWvjIFkgeAohSUYh3ZKWPMX+4dKuOPnw3TYA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zotero-plugin/-/zotero-plugin-4.0.2.tgz", + "integrity": "sha512-xnfWJlmESE6vTQB6+rvhvTAd7oVUQiAx+qcXZ3TM2W0HdozC/HDNU4HQEZdHZerbJdK64kIz86n8Y4u88b7+Xg==", "license": "ISC", "dependencies": { "@octokit/rest": "^21.0.2", "@rgrove/parse-xml": "^4.2.0", - "@types/node": "^22.10.1", - "@xmldom/xmldom": "^0.9.5", + "@types/node": "^22.10.4", + "@xmldom/xmldom": "^0.9.6", "ajv": "^8.17.1", "ajv-keywords": "^5.1.0", "archiver": "^7.0.1", "clp": "^4.0.12", - "current-git-branch": "^1.1.0", + "commander": "^13.0.0", "dotenv": "^16.4.7", - "dprint": "^0.47.6", + "dprint": "^0.48.0", "ejs": "^3.1.10", "fs-extra": "^11.2.0", "glob": "^11.0.0", - "jsesc": "^3.0.2", + "jsesc": "^3.1.0", "lodash": "^4.17.21", "moment": "^2.30.1", "peggy": "^4.2.0", @@ -20716,6 +20788,15 @@ "balanced-match": "^1.0.0" } }, + "node_modules/zotero-plugin/node_modules/commander": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz", + "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/zotero-plugin/node_modules/glob": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", diff --git a/package.json b/package.json index 6ba4812d37..e315410f55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zotero-better-bibtex", - "version": "6.7.263", + "version": "7.0.0", "description": "Make Zotero useful for us LaTeX holdouts.", "homepage": "https://retorque.re/zotero-better-bibtex", "license": "ISC", @@ -14,7 +14,10 @@ "optionsURL": "chrome://zotero/content/preferences/preferences.xul#better-bibtex", "updateLink": "https://github.com/retorquere/zotero-better-bibtex/releases/download/v{version}/zotero-better-bibtex-{version}.xpi", "updateInfoURL": "https://github.com/retorquere/zotero-better-bibtex/releases/latest", - "releaseURL": "https://github.com/retorquere/zotero-better-bibtex/releases/download/release/" + "releaseURL": "https://github.com/retorquere/zotero-better-bibtex/releases/download/release/", + "update": { + "updates.json": true + } }, "scripts": { "changelog": "auto-changelog", @@ -40,7 +43,7 @@ "start": "./test/behave --no-headless --keep --tags=@none", "beta": "./test/behave --beta --no-headless --keep --tags=@none", "legacy": "./test/behave --legacy --no-headless --keep --tags=@none", - "release": "zotero-plugin-release \"$( doc.comment).join("\n"); + console.log(jsDoc) + const comment_ranges = ts.getLeadingCommentRanges(this.ast.getFullText(), method.getFullStart()) if (!comment_ranges) return const comment = this.ast.getFullText().slice(comment_ranges[0].pos, comment_ranges[0].end) diff --git a/site/data/citekeyformatters/functions.json b/site/data/citekeyformatters/functions.json index 393d371a47..1c4dc33a9f 100644 --- a/site/data/citekeyformatters/functions.json +++ b/site/data/citekeyformatters/functions.json @@ -16,6 +16,7 @@ "date": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
formatstring

sprintf-style format template

\"%Y-%m-%d\"
\n
\n

The date of the publication

", "extra": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
variablestring

extra-field line identifier

\n
\n

A pseudo-field from the extra field. eg if you have Original date: 1970 in your extra field, you can get it as extra(originalDate), or tex.shortauthor: APA which you could get with extra('tex.shortauthor'). Any tex. field will be picked up, the other fields can be selected from this list of key names.

", "firstpage": "

The number of the first page of the publication (Caution: this will return the lowest number found in the pages field, since BibTeX allows 7,41,73--97 or 43+.)

", + "group": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
namestring

group name

\n
\n

Tests whether the item is in the given group library

", "infix": "\n
parameters:\n \n \n \n \n\n \n
parametertypedescriptiondefault
formatstring

sprintf-style format template

\"%(a)s\"
startnumber

start value for postfix

0
\n
\n

a pseudo-function that sets the citekey disambiguation infix using an sprintf-js format spec for when a key is generated that already exists. The infix charachter appears at the place of this function of the formula instead of at the and (as postfix does). You must include exactly one of the placeholders %(n)s (number), %(a)s (alpha, lowercase) or %(A)s (alpha, uppercase). For the rest of the disambiguator you can use things like padding and extra text as sprintf-js allows. With start set to 1 the disambiguator is always included, even if there is no need for it when no duplicates exist. The default format is %(a)s.

", "inspireHep": "

Fetches the key from inspire-hep based on DOI or arXiv ID

", "item": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
idid / key

'id': return itemID; 'key': return the item key

\"key\"
\n
\n

returns the internal item ID/key

", @@ -23,7 +24,7 @@ "keyword": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
nnumber

position of tag to get

\n
\n

Tag number n. Mostly for legacy compatibility

", "language": "\n
parameters:\n \n \n \n \n \n
parametertypedescriptiondefault
nameame / american / american english / americanenglish / ar / ar-ar / ar-dz / ar-eg / ar-iq / ar-jo / ar-lb / ar-ma / ar-ps / ar-sa / ar-sy / ar-tn / ara / arabic / arabic-algeria / arabic-dz / arabic-eg / arabic-egypt / arabic-iq / arabic-iraq / arabic-jo / arabic-jordan / arabic-lb / arabic-lebanon / arabic-ma / arabic-morocco / arabic-palestinianterritories / arabic-ps / arabic-sa / arabic-saudiarabia / arabic-sy / arabic-syria / arabic-tn / arabic-tunisia / australian / australian english / australianenglish / austrian / austrian german / austrian-traditional / austriangerman / austriangerman-traditional / bri / british / british english / britishenglish / canadian / canadian english / canadianenglish / chinese / chinese-hans / chinese-hans-hk / chinese-hans-mo / chinese-hans-sg / chinese-hant / chinese-hant-hk / chinese-hant-mo / chinese-simplified / chinese-simplified-hongkongsarchina / chinese-simplified-macausarchina / chinese-simplified-singapore / chinese-traditional / chinese-traditional-hongkongsarchina / chinese-traditional-macausarchina / de / de-1901 / de-1996 / de-at / de-at-1901 / de-at-1996 / de-ch / de-ch-1901 / de-ch-1996 / de-de / deutsch / en / en-au / en-ca / en-en / en-gb / en-nz / en-us / eng / english / english-au / english-australia / english-ca / english-canada / english-gb / english-newzealand / english-nz / english-unitedkingdom / english-unitedstates / english-us / ger / german / german-at / german-at-traditional / german-austria / german-austria-traditional / german-ch / german-ch-traditional / german-switzerland / german-switzerland-traditional / german-traditional / ja / ja-ja / jap / japanese / nau / naustrian / newzealand / nge / ngerman / nsw / nswissgerman / schweizer hochdeutsch / simplified chinese / swiss high german / swisshighgerman / swisshighgerman-traditional / traditional chinese / tw / ukenglish / usenglish / zh / zh-hans / zh-hans-hk / zh-hans-mo / zh-hans-sg / zh-hant / zh-hant-hk / zh-hant-mo / zh-tw / zh-zh / österreichisches deutsch / العربية / 中文 / 中文-中文 / 日本語 / 简体中文 / 繁體中文

one or more language codes

\n
\n

Tests whether the item has the given language set, and skips to the next pattern if not

", "lastpage": "

The number of the last page of the publication (See the remark on firstpage)

", - "library": "

returns the name of the shared group library, or nothing if the item is in your personal library

", + "library": "

Tests whether the item is in the user library

", "month": "

the month of the publication

", "origdate": "

the original date of the publication

", "origyear": "

the original year of the publication

", diff --git a/site/themes/relearn b/site/themes/relearn index ec88e24f46..80e448e5bd 160000 --- a/site/themes/relearn +++ b/site/themes/relearn @@ -1 +1 @@ -Subproject commit ec88e24f46955bcf1aa3f38ac143982eff08d8a6 +Subproject commit 80e448e5bdaa92c87ee0d0d86f1125c8606ebf5f diff --git a/submodules/babel b/submodules/babel index bfd9d15659..02a0a862d6 160000 --- a/submodules/babel +++ b/submodules/babel @@ -1 +1 @@ -Subproject commit bfd9d156590775062323e2c2848c80f83feebe5f +Subproject commit 02a0a862d60a30f99541adf147a90ed2330aeac7 diff --git a/submodules/biber b/submodules/biber index 6c79060740..5a08af0029 160000 --- a/submodules/biber +++ b/submodules/biber @@ -1 +1 @@ -Subproject commit 6c79060740fdca6d87cb0bcd2deb96a11a990d42 +Subproject commit 5a08af00293def408a373b25fcc3a0d8e7c2b441 diff --git a/submodules/translators b/submodules/translators index 368d01bb94..c84ee621e3 160000 --- a/submodules/translators +++ b/submodules/translators @@ -1 +1 @@ -Subproject commit 368d01bb94ba9ba0c8c8fea6cb2457db938a2f56 +Subproject commit c84ee621e38ff3a9c9706be6852b1102773b6288 diff --git a/submodules/zotero b/submodules/zotero index 7b7a0b9e46..5fd94e22df 160000 --- a/submodules/zotero +++ b/submodules/zotero @@ -1 +1 @@ -Subproject commit 7b7a0b9e4692a0ca32984b763f67b7b10edf96fd +Subproject commit 5fd94e22dff87318aa3a84e735e1fdece488f5e3 diff --git a/test/features/export.feature b/test/features/export.feature index e5b74d3582..51460b6909 100644 --- a/test/features/export.feature +++ b/test/features/export.feature @@ -13,6 +13,7 @@ Feature: Export Examples: | file | references | + | Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118 | 1 | | Add option to translate ii to mkbibemph instead of emph #3096 | 1 | | Better BibLatex copied year column as string if character is found #3067 | 1 | | Cannot change citation key formula #3058 | 1 | diff --git a/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.biblatex b/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.biblatex new file mode 100644 index 0000000000..2cd993da90 --- /dev/null +++ b/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.biblatex @@ -0,0 +1,11 @@ +@article{greene2011, + title = {Space for thought: designing for knowledge workers}, + shorttitle = {Space for thought}, + author = {Greene, C. and Myerson, J.}, + date = {2011-01-01}, + journaltitle = {Facilities}, + volume = {29}, + number = {1--2}, + pages = {19--30}, + doi = {10.1108/02632771111101304} +} diff --git a/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.json b/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.json new file mode 100644 index 0000000000..9e324409e3 --- /dev/null +++ b/test/fixtures/export/Ensure en-dash is used for volumeissue ranges in exported BibTeXBiBibTeX #3118.json @@ -0,0 +1,73 @@ +{ + "config": { + "id": "36a3b0b5-bad0-4a04-b79b-441c7cef77db", + "label": "BetterBibTeX JSON", + "preferences": { + "DOIandURL": "doi", + "ascii": "–", + "asciiBibLaTeX": true, + "asciiBibTeX": false, + "autoExport": "idle", + "autoPinDelay": 1, + "automaticTags": false, + "biblatexExtractEprint": false, + "cacheRetain": true, + "charmap": "{\"·\":{\"text\":\"·\",\"math\":\"\"},\"ș\":{\"text\":\"ș\",\"math\":\"\"}}", + "citekeyFormat": "auth.transliterate.lower+year", + "exportSort": "off", + "exportTitleCase": false, + "extraMergeCSL": true, + "keyConflictPolicy": "change", + "keyScope": "global", + "postscript": "if (Translator.BetterBibLaTeX) {\n if (\n [\n \"book\",\n \"bookSection\",\n \"journalArticle\",\n \"newspaperArticle\",\n \"thesis\",\n \"report\",\n ].includes(item.itemType)\n ) {\n delete this.has.url;\n delete this.has.urldate;\n\n if ([\"book\", \"bookSection\"].includes(item.itemType)) {\n delete this.has.number;\n }\n\n if (item.itemType == \"newspaperArticle\") {\n delete this.has.location;\n }\n }\n\n // Remove number and pubstate for arXiv preprints\n if (item.DOI && item.DOI.includes(\"arXiv\")) {\n delete this.has.number;\n delete this.has.pubstate;\n }\n\n // Check if more than 10% of the title is CJK\n // https://github.com/retorquere/zotero-better-bibtex/issues/2810\n for (const field of [\"title\", \"shorttitle\"]) {\n const value = tex.has[field]?.value;\n if (\n value &&\n value.replace(/[^\\u4E00-\\u9FFF]/g, \"\").length / value.length > 0.1\n ) {\n tex.add({ name: field, value, enc: \"minimal\" });\n }\n }\n}\n\nif (Translator.BetterCSLJSON) {\n delete csl.ISBN;\n delete csl.ISSN;\n\n if (\n [\n \"book\",\n \"bookSection\",\n \"journalArticle\",\n \"newspaperArticle\",\n \"thesis\",\n \"report\",\n ].includes(item.itemType)\n ) {\n delete csl.URL;\n delete csl[\"accessed\"];\n delete csl.PMID;\n delete csl.PMCID;\n }\n\n if (csl.DOI && csl.URL) {\n delete csl.URL;\n delete csl[\"accessed\"];\n }\n}", + "quickCopyMode": "selectlink", + "skipFields": "language, langid, annotation, shortjournal, eprint, pmcid, eprinttype, editortype, issn, isbn, series, editora, editorb, editoratype, editorbtype, pagetotal, origtitle, original-title, collection-title, source, container-title-short, title-short, number-of-pages, event-place, license, citation-key, call-number, collection-number, collection-editor, journalsubtitle, keywords, abstract, note, file" + } + }, + "items": [ + { + "DOI": "10.1108/02632771111101304", + "ISSN": "0263-2772", + "abstractNote": "Purpose – Generic use of the term “knowledge worker” has resulted in a generic approach to designing office environments for this group. The purpose of this paper is to probe the mobility patterns and motivations of knowledge workers in order to provide a classification of different types of knowledge worker. Design/methodology/approach – The study was undertaken using a range of qualitative research methods including semi‐structured interviews with 20 knowledge workers representing different levels of mobility and experience, ethnographic studies in a media company, real estate business and a public relations firm, and a user workshop. A novel drawing exercise was introduced to elicit responses during the interview process. Findings – Four knowledge worker “character types” emerged from the research: the Anchor and the Connector, who are mainly office‐based, and the Gatherer and the Navigator, who work more widely afield. Research limitations/implications – This is a small study revealing characteristics particular to the participating individuals and organisations. However, it has wider implications in that the more complex set of requirements revealed by the project requires a more responsive and service‐led approach to office design for knowledge workers and the development of new protocols of use within office space. Originality/value – The originality/value lies in giving designers and facilities managers an insight into the different needs of knowledge workers, who are commonly treated as a homogeneous group. The typologies are an active tool for better brief‐making in design for creative facilities.", + "accessDate": "2021-10-08T10:35:16Z", + "citationKey": "greene2011", + "creators": [ + { + "creatorType": "author", + "firstName": "C.", + "lastName": "Greene" + }, + { + "creatorType": "author", + "firstName": "J.", + "lastName": "Myerson" + } + ], + "date": "2011-01-01", + "extra": [ + "Citation Key: greene2011" + ], + "issue": "1-2", + "itemID": 1, + "itemType": "journalArticle", + "language": "en", + "libraryCatalog": "Emerald Insight", + "pages": "19-30", + "publicationTitle": "Facilities", + "shortTitle": "Space for thought", + "tags": [ + { + "tag": "Design", + "type": 1 + }, + { + "tag": "Productivity rate", + "type": 1 + } + ], + "title": "Space for thought: designing for knowledge workers", + "url": "https://www.emerald.com/insight/content/doi/10.1108/02632771111101304/full/html", + "volume": "29" + } + ] +} \ No newline at end of file diff --git a/test/fixtures/export/Length filter double-counting characters #2525.biblatex b/test/fixtures/export/Length filter double-counting characters #2525.biblatex index c3a13f7dae..f565198c82 100644 --- a/test/fixtures/export/Length filter double-counting characters #2525.biblatex +++ b/test/fixtures/export/Length filter double-counting characters #2525.biblatex @@ -6,7 +6,7 @@ journaltitle = {Journal of Low Temperature Physics}, shortjournal = {J Low Temp Phys}, volume = {209}, - number = {5-6}, + number = {5--6}, eprint = {2112.02029}, eprinttype = {arXiv}, eprintclass = {hep-ex, physics:nucl-ex, physics:physics, physics:quant-ph}, diff --git a/translators/bibtex/biblatex.ts b/translators/bibtex/biblatex.ts index 288aecd7a8..28a0d5a477 100644 --- a/translators/bibtex/biblatex.ts +++ b/translators/bibtex/biblatex.ts @@ -389,9 +389,9 @@ export function generateBibLaTeX(collected: Collected): Translation { let number_added = '' if (!item.number?.match(/arxiv/i) || !entry.has.eprint) { - number_added = entry.add({ name: 'number', value: patent.number(item) || item.number || item.seriesNumber }) + number_added = entry.add({ name: 'number', value: patent.number(item) || entry.normalizeDashes(item.number || item.seriesNumber) }) } - entry.add({ name: !number_added && looks_like_number_field(item.issue) ? 'number' : 'issue', value: item.issue }) + entry.add({ name: !number_added && looks_like_number_field(item.issue) ? 'number' : 'issue', value: entry.normalizeDashes(item.issue) }) const journalAbbreviation = item.journalAbbreviation || item.autoJournalAbbreviation switch (entry.entrytype) { diff --git a/translators/bibtex/entry.ts b/translators/bibtex/entry.ts index 3ead041a8e..ff32e1cacf 100644 --- a/translators/bibtex/entry.ts +++ b/translators/bibtex/entry.ts @@ -404,7 +404,9 @@ export class Entry { } /** normalize dashes, mainly for use in `pages` */ - public normalizeDashes(ranges: string): string { + public normalizeDashes(ranges: string | number): string { + if (typeof ranges === 'number') return `${ranges}` + ranges = (ranges || '').trim() if (this.item.raw) return ranges diff --git a/util/balance.py b/util/balance.py index adfbc49129..1fdb832209 100755 --- a/util/balance.py +++ b/util/balance.py @@ -84,5 +84,5 @@ def balance(self): publish('bin_ids', json.dumps(list(range(max(len(Tests.bins), 1))))) publish('bins', args.bins) -clients = [ 'zotero', 'zotero6', 'zotero-beta' ] +clients = [ 'zotero', 'zotero-beta' ] publish('clients', json.dumps(clients))