zotero-plugin 8.0.4 → 8.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/debug-log.cjs +10 -10
- package/dist/cjs/debug-log.cjs.map +1 -1
- package/dist/cjs/tsup.config.cjs +24 -24
- package/dist/cjs/tsup.config.cjs.map +1 -1
- package/dist/esm/debug-log.js +10 -10
- package/dist/esm/debug-log.js.map +1 -1
- package/dist/esm/tsup.config.js +24 -24
- package/dist/esm/tsup.config.js.map +1 -1
- package/package.json +10 -10
package/dist/cjs/debug-log.cjs
CHANGED
|
@@ -46,7 +46,7 @@ var UZip = __toESM(require("uzip"), 1);
|
|
|
46
46
|
// package.json
|
|
47
47
|
var package_default = {
|
|
48
48
|
"name": "zotero-plugin",
|
|
49
|
-
"version": "8.0.
|
|
49
|
+
"version": "8.0.6",
|
|
50
50
|
"description": "Zotero plugin builder",
|
|
51
51
|
"homepage": "https://github.com/retorquere/zotero-plugin/wiki",
|
|
52
52
|
"type": "module",
|
|
@@ -118,7 +118,7 @@ var package_default = {
|
|
|
118
118
|
"@napi-rs/keyring": "^1.2.0",
|
|
119
119
|
"@octokit/rest": "^22.0.1",
|
|
120
120
|
"@rgrove/parse-xml": "^4.2.0",
|
|
121
|
-
"@types/node": "^
|
|
121
|
+
"@types/node": "^25.0.10",
|
|
122
122
|
"@xmldom/xmldom": "^0.9.8",
|
|
123
123
|
"ajv": "^8.17.1",
|
|
124
124
|
"ajv-keywords": "^5.1.0",
|
|
@@ -126,17 +126,17 @@ var package_default = {
|
|
|
126
126
|
"clp": "^4.0.13",
|
|
127
127
|
"commander": "^14.0.2",
|
|
128
128
|
"dotenv": "^17.2.3",
|
|
129
|
-
"ejs": "^
|
|
130
|
-
"fs-extra": "^11.3.
|
|
129
|
+
"ejs": "^4.0.1",
|
|
130
|
+
"fs-extra": "^11.3.3",
|
|
131
131
|
"glob": "^13.0.0",
|
|
132
132
|
"ini": "^6.0.0",
|
|
133
|
-
"jose": "^6.1.
|
|
133
|
+
"jose": "^6.1.3",
|
|
134
134
|
"jsesc": "^3.1.0",
|
|
135
|
-
"lodash": "^4.17.
|
|
135
|
+
"lodash": "^4.17.23",
|
|
136
136
|
"moment": "^2.30.1",
|
|
137
|
-
"node-forge": "^1.3.
|
|
137
|
+
"node-forge": "^1.3.3",
|
|
138
138
|
"node-stream-zip": "^1.15.0",
|
|
139
|
-
"openpgp": "^6.
|
|
139
|
+
"openpgp": "^6.3.0",
|
|
140
140
|
"peggy": "^5.0.6",
|
|
141
141
|
"prompts": "^2.4.2",
|
|
142
142
|
"pug": "^3.0.3",
|
|
@@ -182,8 +182,8 @@ var package_default = {
|
|
|
182
182
|
"devDependencies": {
|
|
183
183
|
"@openpgp/web-stream-tools": "^0.3.0",
|
|
184
184
|
"concurrently": "^9.2.1",
|
|
185
|
-
"dprint": "^0.
|
|
186
|
-
"esbuild": "^0.27.
|
|
185
|
+
"dprint": "^0.51.1",
|
|
186
|
+
"esbuild": "^0.27.2",
|
|
187
187
|
"tsup": "^8.5.1"
|
|
188
188
|
}
|
|
189
189
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../debug-log.ts","../../crypto.ts","../../package.json"],"sourcesContent":["/* eslint-disable no-magic-numbers */\n\nComponents.utils.importGlobalProperties(['FormData'])\nimport { CONTENT_ENCRYPTION_ALG, KEY_WRAPPING_ALG, KEYTYPE } from './crypto'\n\ntype ZoteroPane = {\n getSelectedItems: () => any[]\n}\n\nimport * as jose from 'jose'\nimport * as UZip from 'uzip'\nimport pkg from './package.json'\n\n/*\nconst path = new class {\n #home = ''\n\n get home(): string {\n return this.#home = (this.#home || FileUtils.getDir('Home', []).path)\n }\n}\n*/\n\nexport class Bundler {\n public key: string\n\n #refs = false\n\n #pk?: JsonWebKey\n #pubKey?: CryptoKey\n\n #files: Record<string, Uint8Array> = {}\n #encoder = new TextEncoder()\n\n constructor(pk?: JsonWebKey) {\n this.key = Zotero.Utilities.generateObjectKey()\n\n if (pk && pk.kty === KEYTYPE) this.#pk = pk\n }\n\n async add(path: string, data: string, refs = false): Promise<void> {\n this.#refs = this.#refs || refs\n\n const encoded = this.#encoder.encode(data)\n\n if (this.#pk) {\n if (!this.#pubKey) this.#pubKey = (await jose.importJWK(this.#pk, KEY_WRAPPING_ALG)) as CryptoKey\n const jwe = await (new jose.CompactEncrypt(encoded))\n .setProtectedHeader({\n alg: KEY_WRAPPING_ALG,\n enc: CONTENT_ENCRYPTION_ALG,\n })\n .encrypt(this.#pubKey)\n\n this.#files[`${this.key}/${path}.jwe`] = this.#encoder.encode(jwe)\n }\n else {\n this.#files[`${this.key}/${path}`] = encoded\n }\n }\n\n public get zip(): ArrayBuffer {\n return UZip.encode(this.#files) as ArrayBuffer\n }\n\n public get name(): string {\n return `${this.key}.zip`\n }\n\n public id(remote: string): string {\n return `${this.key}-${remote}${this.#refs ? '.refs' : ''}${this.#pubKey ? '.enc' : ''}`\n }\n\n public formData(expire = 30): FormData {\n const blob = new Blob([this.zip], { type: 'application/zip' })\n const formData = new FormData()\n formData.append('file', blob, this.name)\n formData.append('expire', `${expire * 24}`)\n return formData\n }\n\n public async send(useragent, expire = 30): Promise<string> {\n const response = await fetch('https://0x0.st', {\n method: 'POST',\n body: this.formData(expire),\n headers: {\n 'User-Agent': useragent,\n },\n })\n const body = await response.text()\n const id = body.match(/https:\\/\\/0x0.st\\/([A-Z0-9]+)\\.zip/i)\n if (!id) throw new Error(body)\n return this.id(`0x0-${id[1]}`)\n }\n}\n\ndeclare var Zotero: { // eslint-disable-line no-var\n platformMajorVersion: number\n debug: (msg: string) => void\n DebugLogSender: {\n plugins: Record<string, string[]>\n }\n Translate: any\n Prefs: {\n get: (name: string, global?: boolean) => string | number | boolean\n }\n getInstalledExtensions: () => Promise<string[]>\n platform: string\n oscpu: string\n arch: string\n locale: string\n Utilities: {\n generateObjectKey: () => string\n }\n Debug: {\n enabled: boolean\n getConsoleViewerOutput: () => string[]\n }\n getErrors: (something: boolean) => string[]\n Schema: {\n schemaUpdatePromise: Promise<void>\n }\n getActiveZoteroPane: () => ZoteroPane\n getMainWindow(): Window\n}\n\ndeclare var Services: any // eslint-disable-line no-var\ndeclare const Components: any\ndeclare const ChromeUtils: any\n\ntype ExportTranslator = {\n setHandler: (phase: string, handler: (obj: { string: string }, success: boolean) => void) => void // eslint-disable-line id-blacklist\n setTranslator: (id: string) => void\n setItems: (items: any[]) => void\n translate: () => void\n}\n\nconst zotero_prefs_root = 'extensions.zotero.'\n\nclass DebugLogSender {\n public id = {\n menu: 'debug-log-sender-menu',\n menupopup: 'debug-log-sender-menupopup',\n menuitem: 'debug-log-sender',\n }\n\n public debugEnabledAtStart: boolean = typeof Zotero !== 'undefined'\n ? (Zotero.Prefs.get('debug.store') || Zotero.Debug.enabled) as unknown as boolean\n : null\n\n private element(name: string, attrs: Record<string, string> = {}): HTMLElement {\n const doc = Zotero.getMainWindow().document\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const elt: HTMLElement = doc[Zotero.platformMajorVersion >= 102 ? 'createXULElement' : 'createElement'](name)\n for (const [k, v] of Object.entries(attrs)) {\n elt.setAttribute(k, v)\n }\n return elt\n }\n\n public register(plugin: string, preferences: string[] = [], pubKey?: JsonWebKey): void {\n const menuLabel = 'Send plugin debug log'\n\n const doc = Zotero.getMainWindow()?.document\n if (doc) {\n let menupopup = doc.querySelector(`#${this.id.menupopup}`)\n if (menupopup) {\n menupopup.setAttribute('label', menuLabel)\n }\n else {\n menupopup = doc.querySelector('menupopup#menu_HelpPopup')\n .appendChild(this.element('menu', { id: this.id.menu, label: menuLabel }))\n .appendChild(this.element('menupopup', { id: this.id.menupopup }))\n }\n\n doc.querySelector(`.${this.id.menuitem}[label=${JSON.stringify(plugin)}]`)?.remove()\n const menuitem = menupopup.appendChild(this.element('menuitem', {\n label: plugin,\n class: this.id.menuitem,\n 'data-preferences': JSON.stringify(preferences || []),\n 'data-pubkey': JSON.stringify(pubKey),\n }))\n menuitem.addEventListener('command', event => this.send(event.currentTarget))\n }\n }\n\n public unregister(plugin: string): void {\n const doc = Zotero.getMainWindow()?.document\n if (doc) {\n doc.querySelector(`.debug-log-sender[label=${JSON.stringify(plugin)}]`)?.remove()\n const menupopup = doc.querySelector('#debug-log-sender-menupopup')\n if (menupopup && !menupopup.children.length) doc.querySelector('#debug-log-sender-menu')?.remove()\n }\n }\n\n public send(target: EventTarget): void {\n const elt: HTMLElement = target as unknown as HTMLElement\n const plugin: string = elt.getAttribute('label')\n const preferences: string[] = JSON.parse(elt.getAttribute('data-preferences')) as string[]\n const pubkey: string = elt.getAttribute('data-pubkey')\n\n this.sendAsync(plugin, preferences, pubkey).catch((err: Error) => {\n Services.prompt.alert(null, 'Debug log submission error', `${err}`) // eslint-disable-line @typescript-eslint/restrict-template-expressions\n })\n }\n\n private async sendAsync(plugin: string, preferences: string[], pubkey = '') {\n await Zotero.Schema.schemaUpdatePromise\n\n const bundler = new Bundler(pubkey ? JSON.parse(pubkey) : undefined)\n\n let log = [\n await this.info(preferences),\n Zotero.getErrors(true).join('\\n\\n'),\n Zotero.Debug.getConsoleViewerOutput().slice(-250000).join('\\n'), // eslint-disable-line no-magic-numbers\n ].filter((txt: string) => txt).join('\\n\\n').trim()\n await bundler.add('debug.txt', log)\n\n let rdf = await this.rdf()\n if (rdf) await bundler.add('items.rdf', rdf, true)\n\n try {\n const logid = await bundler.send(`Zotero-plugin/${pkg.version}`)\n Services.prompt.alert(null, `Debug log ID for ${plugin}`, logid)\n }\n catch (err) {\n Services.prompt.alert(null, `Could not post debug log for ${plugin}`, err.message)\n }\n }\n\n private preferences(preferences: string[]): Record<string, string | number | boolean> {\n const prefs: Record<string, string | number | boolean> = {}\n\n const names: string[] = []\n for (let pref of preferences) {\n if (pref[0] === ':') {\n pref = pref.substring(1)\n }\n else if (!pref.startsWith(zotero_prefs_root)) {\n pref = zotero_prefs_root + pref\n }\n if (pref.endsWith('.')) {\n const childkeys: string[] = Services.prefs.getBranch(pref).getChildList('', {})\n for (const key of childkeys) {\n names.push(pref + key)\n }\n }\n else {\n names.push(pref)\n }\n }\n\n for (const pref of names.sort()) {\n prefs[pref] = Zotero.Prefs.get(pref, true)\n }\n\n return prefs\n }\n\n // general state of Zotero\n private async info(preferences: string[]): Promise<string> {\n let info = ''\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const appInfo: { name: string; version: string } = Components.classes['@mozilla.org/xre/app-info;1'].getService(Components.interfaces.nsIXULAppInfo)\n info += `Application: ${appInfo.name} ${appInfo.version} ${Zotero.locale}\\n`\n\n const platform = ['Win', 'Mac', 'Linux'].find(p => Zotero[`is${p}`]) || 'Unknown'\n const arch = Zotero.oscpu || Zotero.arch\n info += `Platform: ${platform} ${arch}\\n`\n\n const addons: string[] = await Zotero.getInstalledExtensions()\n if (addons.length) {\n info += 'Addons:\\n' + addons.map((addon: string) => ` ${addon}\\n`).join('') // eslint-disable-line prefer-template\n }\n info += `Debug logging on at Zotero start: ${this.debugEnabledAtStart}\\n`\n info += `Debug logging on at log submit: ${Zotero.Prefs.get('debug.store') || Zotero.Debug.enabled}\\n`\n\n for (const [pref, value] of Object.entries(this.preferences(preferences))) {\n info += `${pref} = ${JSON.stringify(value)}\\n`\n }\n\n return info\n }\n\n private rdf(): Promise<string> {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const items: any[] = Zotero.getActiveZoteroPane().getSelectedItems()\n if (items.length === 0) return resolve('')\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const translation: ExportTranslator = new Zotero.Translate.Export() as ExportTranslator\n translation.setItems(items)\n translation.setTranslator('14763d24-8ba0-45df-8f52-b8d1108e7ac9') // rdf\n\n translation.setHandler('done', (obj, success) => {\n if (success) {\n resolve(obj ? obj.string : undefined)\n }\n else {\n reject(new Error('translation failed'))\n }\n })\n\n translation.translate() // eslint-disable-line @typescript-eslint/no-unsafe-call\n })\n }\n\n /*\n private arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = new Uint8Array(buffer)\n const len = bytes.byteLength\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n }\n\n private base64ToArrayBuffer(base64) {\n const binaryString = atob(base64)\n const len = binaryString.length\n const bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n return bytes.buffer\n }\n */\n}\n\nexport const DebugLog = new DebugLogSender()\n","export const KEYTYPE = 'RSA'\nexport const KEY_WRAPPING_ALG = 'RSA-OAEP-256'\nexport const CONTENT_ENCRYPTION_ALG = 'A256GCM'\nexport const RSA_HASH = 'SHA-256'\nexport const RSA_ALGORITHM = 'RSA-OAEP'\nexport const CIPHER_ALGORITHM = 'aes256'\nexport const AES_KEY_LENGTH = 256\n// export const AES_KEY_BYTES = 32\n\n// export const AES_ALGORITHM = 'AES-GCM'\n// export const IV_LENGTH = 12\n","export default {\n \"name\": \"zotero-plugin\",\n \"version\": \"8.0.4\",\n \"description\": \"Zotero plugin builder\",\n \"homepage\": \"https://github.com/retorquere/zotero-plugin/wiki\",\n \"type\": \"module\",\n \"main\": \"./dist/cjs/index.js\",\n \"module\": \"./dist/esm/index.js\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/esm/index.js\",\n \"require\": \"./dist/cjs/index.cjs\"\n },\n \"./debug-log\": {\n \"import\": \"./dist/esm/debug-log.js\",\n \"require\": \"./dist/cjs/debug-log.cjs\"\n },\n \"./logger\": {\n \"import\": \"./dist/esm/ulogger.js\",\n \"require\": \"./dist/cjs/logger.cjs\"\n },\n \".loader/json\": {\n \"import\": \"./dist/esm/loader/json.js\",\n \"require\": \"./dist/cjs/loader/json.cjs\"\n },\n \".loader/peggy\": {\n \"import\": \"./dist/esm/loader/peggy.js\",\n \"require\": \"./dist/cjs/loader/peggy.cjs\"\n },\n \".loader/pem\": {\n \"import\": \"./dist/esm/loader/pem.js\",\n \"require\": \"./dist/cjs/loader/pem.cjs\"\n },\n \"./copy-assets\": {\n \"import\": \"./dist/esm/bin/copy-assets.js\",\n \"require\": \"./dist/cjs/bin/copy-assets.cjs\"\n },\n \"./make-dirs\": {\n \"import\": \"./dist/esm/bin/make-dirs.js\",\n \"require\": \"./dist/cjs/bin/make-dirs.cjs\"\n },\n \"./make-manifest\": {\n \"import\": \"./dist/esm/bin/make-manifest.js\",\n \"require\": \"./dist/cjs/bin/make-manifest.cjs\"\n },\n \"./make-version\": {\n \"import\": \"./dist/esm/bin/version.js\",\n \"require\": \"./dist/cjs/bin/version.cjs\"\n }\n },\n \"author\": {\n \"name\": \"Emiliano Heyns\",\n \"email\": \"Emiliano.Heyns@iris-advies.com\"\n },\n \"scripts\": {\n \"preversion\": \"npm test\",\n \"postversion\": \"git push --follow-tags\",\n \"test\": \"dprint fmt *.ts */*.ts && dprint check *.ts */*.ts && npm run build\",\n \"prebuild\": \"rm -rf dist\",\n \"build\": \"tsup\",\n \"check\": \"tsc --noEmit\",\n \"start\": \"concurrently --raw --group 'npm run check' 'npm run build'\",\n \"pack\": \"npm test && npm pack\",\n \"prepublishOnly\": \"npm install && npm run build\",\n \"ncu\": \"ncu -u && npm i && git add package.json package-lock.json && git commit -m ncu\"\n },\n \"directories\": {\n \"test\": \"test\"\n },\n \"dependencies\": {\n \"@fluent/syntax\": \"^0.19.0\",\n \"@napi-rs/keyring\": \"^1.2.0\",\n \"@octokit/rest\": \"^22.0.1\",\n \"@rgrove/parse-xml\": \"^4.2.0\",\n \"@types/node\": \"^24.10.1\",\n \"@xmldom/xmldom\": \"^0.9.8\",\n \"ajv\": \"^8.17.1\",\n \"ajv-keywords\": \"^5.1.0\",\n \"archiver\": \"^7.0.1\",\n \"clp\": \"^4.0.13\",\n \"commander\": \"^14.0.2\",\n \"dotenv\": \"^17.2.3\",\n \"ejs\": \"^3.1.10\",\n \"fs-extra\": \"^11.3.2\",\n \"glob\": \"^13.0.0\",\n \"ini\": \"^6.0.0\",\n \"jose\": \"^6.1.2\",\n \"jsesc\": \"^3.1.0\",\n \"lodash\": \"^4.17.21\",\n \"moment\": \"^2.30.1\",\n \"node-forge\": \"^1.3.1\",\n \"node-stream-zip\": \"^1.15.0\",\n \"openpgp\": \"^6.2.2\",\n \"peggy\": \"^5.0.6\",\n \"prompts\": \"^2.4.2\",\n \"pug\": \"^3.0.3\",\n \"rimraf\": \"^6.1.2\",\n \"shell-quote\": \"^1.8.3\",\n \"shelljs\": \"^0.10.0\",\n \"string-to-arraybuffer\": \"^1.0.2\",\n \"ts-node\": \"^10.9.2\",\n \"tslib\": \"^2.8.1\",\n \"typescript\": \"^5.9.3\",\n \"uri-templates\": \"^0.2.0\",\n \"url-template\": \"^3.1.1\",\n \"uzip\": \"^0.20201231.0\",\n \"xml-parser\": \"^1.2.1\",\n \"xpath\": \"^0.0.34\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/retorquere/zotero-plugin.git\"\n },\n \"license\": \"ISC\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"dist\"\n ],\n \"bin\": {\n \"zp-release\": \"dist/cjs/bin/release.cjs\",\n \"zp-zipup\": \"dist/cjs/bin/zipup.cjs\",\n \"zp-link\": \"dist/cjs/bin/link.cjs\",\n \"issue-branches\": \"dist/cjs/bin/branches.cjs\",\n \"zotero-start\": \"dist/cjs/bin/start.cjs\",\n \"zp-fetch-log\": \"dist/cjs/bin/fetch-log.cjs\",\n \"zp-keypair\": \"dist/cjs/bin/keypair.cjs\",\n \"zp-copy-assets\": \"dist/cjs/copy-assets.cjs\",\n \"zp-make-dirs\": \"dist/cjs/make-dirs.cjs\",\n \"zp-manifest\": \"dist/cjs/make-manifest.cjs\",\n \"zp-version\": \"dist/cjs/version.cjs\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/retorquere/zotero-plugin/issues\"\n },\n \"devDependencies\": {\n \"@openpgp/web-stream-tools\": \"^0.3.0\",\n \"concurrently\": \"^9.2.1\",\n \"dprint\": \"^0.50.2\",\n \"esbuild\": \"^0.27.0\",\n \"tsup\": \"^8.5.1\"\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../debug-log.ts","../../crypto.ts","../../package.json"],"sourcesContent":["/* eslint-disable no-magic-numbers */\n\nComponents.utils.importGlobalProperties(['FormData'])\nimport { CONTENT_ENCRYPTION_ALG, KEY_WRAPPING_ALG, KEYTYPE } from './crypto'\n\ntype ZoteroPane = {\n getSelectedItems: () => any[]\n}\n\nimport * as jose from 'jose'\nimport * as UZip from 'uzip'\nimport pkg from './package.json'\n\n/*\nconst path = new class {\n #home = ''\n\n get home(): string {\n return this.#home = (this.#home || FileUtils.getDir('Home', []).path)\n }\n}\n*/\n\nexport class Bundler {\n public key: string\n\n #refs = false\n\n #pk?: JsonWebKey\n #pubKey?: CryptoKey\n\n #files: Record<string, Uint8Array> = {}\n #encoder = new TextEncoder()\n\n constructor(pk?: JsonWebKey) {\n this.key = Zotero.Utilities.generateObjectKey()\n\n if (pk && pk.kty === KEYTYPE) this.#pk = pk\n }\n\n async add(path: string, data: string, refs = false): Promise<void> {\n this.#refs = this.#refs || refs\n\n const encoded = this.#encoder.encode(data)\n\n if (this.#pk) {\n if (!this.#pubKey) this.#pubKey = (await jose.importJWK(this.#pk, KEY_WRAPPING_ALG)) as CryptoKey\n const jwe = await (new jose.CompactEncrypt(encoded))\n .setProtectedHeader({\n alg: KEY_WRAPPING_ALG,\n enc: CONTENT_ENCRYPTION_ALG,\n })\n .encrypt(this.#pubKey)\n\n this.#files[`${this.key}/${path}.jwe`] = this.#encoder.encode(jwe)\n }\n else {\n this.#files[`${this.key}/${path}`] = encoded\n }\n }\n\n public get zip(): ArrayBuffer {\n return UZip.encode(this.#files) as ArrayBuffer\n }\n\n public get name(): string {\n return `${this.key}.zip`\n }\n\n public id(remote: string): string {\n return `${this.key}-${remote}${this.#refs ? '.refs' : ''}${this.#pubKey ? '.enc' : ''}`\n }\n\n public formData(expire = 30): FormData {\n const blob = new Blob([this.zip], { type: 'application/zip' })\n const formData = new FormData()\n formData.append('file', blob, this.name)\n formData.append('expire', `${expire * 24}`)\n return formData\n }\n\n public async send(useragent, expire = 30): Promise<string> {\n const response = await fetch('https://0x0.st', {\n method: 'POST',\n body: this.formData(expire),\n headers: {\n 'User-Agent': useragent,\n },\n })\n const body = await response.text()\n const id = body.match(/https:\\/\\/0x0.st\\/([A-Z0-9]+)\\.zip/i)\n if (!id) throw new Error(body)\n return this.id(`0x0-${id[1]}`)\n }\n}\n\ndeclare var Zotero: { // eslint-disable-line no-var\n platformMajorVersion: number\n debug: (msg: string) => void\n DebugLogSender: {\n plugins: Record<string, string[]>\n }\n Translate: any\n Prefs: {\n get: (name: string, global?: boolean) => string | number | boolean\n }\n getInstalledExtensions: () => Promise<string[]>\n platform: string\n oscpu: string\n arch: string\n locale: string\n Utilities: {\n generateObjectKey: () => string\n }\n Debug: {\n enabled: boolean\n getConsoleViewerOutput: () => string[]\n }\n getErrors: (something: boolean) => string[]\n Schema: {\n schemaUpdatePromise: Promise<void>\n }\n getActiveZoteroPane: () => ZoteroPane\n getMainWindow(): Window\n}\n\ndeclare var Services: any // eslint-disable-line no-var\ndeclare const Components: any\ndeclare const ChromeUtils: any\n\ntype ExportTranslator = {\n setHandler: (phase: string, handler: (obj: { string: string }, success: boolean) => void) => void // eslint-disable-line id-blacklist\n setTranslator: (id: string) => void\n setItems: (items: any[]) => void\n translate: () => void\n}\n\nconst zotero_prefs_root = 'extensions.zotero.'\n\nclass DebugLogSender {\n public id = {\n menu: 'debug-log-sender-menu',\n menupopup: 'debug-log-sender-menupopup',\n menuitem: 'debug-log-sender',\n }\n\n public debugEnabledAtStart: boolean = typeof Zotero !== 'undefined'\n ? (Zotero.Prefs.get('debug.store') || Zotero.Debug.enabled) as unknown as boolean\n : null\n\n private element(name: string, attrs: Record<string, string> = {}): HTMLElement {\n const doc = Zotero.getMainWindow().document\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const elt: HTMLElement = doc[Zotero.platformMajorVersion >= 102 ? 'createXULElement' : 'createElement'](name)\n for (const [k, v] of Object.entries(attrs)) {\n elt.setAttribute(k, v)\n }\n return elt\n }\n\n public register(plugin: string, preferences: string[] = [], pubKey?: JsonWebKey): void {\n const menuLabel = 'Send plugin debug log'\n\n const doc = Zotero.getMainWindow()?.document\n if (doc) {\n let menupopup = doc.querySelector(`#${this.id.menupopup}`)\n if (menupopup) {\n menupopup.setAttribute('label', menuLabel)\n }\n else {\n menupopup = doc.querySelector('menupopup#menu_HelpPopup')\n .appendChild(this.element('menu', { id: this.id.menu, label: menuLabel }))\n .appendChild(this.element('menupopup', { id: this.id.menupopup }))\n }\n\n doc.querySelector(`.${this.id.menuitem}[label=${JSON.stringify(plugin)}]`)?.remove()\n const menuitem = menupopup.appendChild(this.element('menuitem', {\n label: plugin,\n class: this.id.menuitem,\n 'data-preferences': JSON.stringify(preferences || []),\n 'data-pubkey': JSON.stringify(pubKey),\n }))\n menuitem.addEventListener('command', event => this.send(event.currentTarget))\n }\n }\n\n public unregister(plugin: string): void {\n const doc = Zotero.getMainWindow()?.document\n if (doc) {\n doc.querySelector(`.debug-log-sender[label=${JSON.stringify(plugin)}]`)?.remove()\n const menupopup = doc.querySelector('#debug-log-sender-menupopup')\n if (menupopup && !menupopup.children.length) doc.querySelector('#debug-log-sender-menu')?.remove()\n }\n }\n\n public send(target: EventTarget): void {\n const elt: HTMLElement = target as unknown as HTMLElement\n const plugin: string = elt.getAttribute('label')\n const preferences: string[] = JSON.parse(elt.getAttribute('data-preferences')) as string[]\n const pubkey: string = elt.getAttribute('data-pubkey')\n\n this.sendAsync(plugin, preferences, pubkey).catch((err: Error) => {\n Services.prompt.alert(null, 'Debug log submission error', `${err}`) // eslint-disable-line @typescript-eslint/restrict-template-expressions\n })\n }\n\n private async sendAsync(plugin: string, preferences: string[], pubkey = '') {\n await Zotero.Schema.schemaUpdatePromise\n\n const bundler = new Bundler(pubkey ? JSON.parse(pubkey) : undefined)\n\n let log = [\n await this.info(preferences),\n Zotero.getErrors(true).join('\\n\\n'),\n Zotero.Debug.getConsoleViewerOutput().slice(-250000).join('\\n'), // eslint-disable-line no-magic-numbers\n ].filter((txt: string) => txt).join('\\n\\n').trim()\n await bundler.add('debug.txt', log)\n\n let rdf = await this.rdf()\n if (rdf) await bundler.add('items.rdf', rdf, true)\n\n try {\n const logid = await bundler.send(`Zotero-plugin/${pkg.version}`)\n Services.prompt.alert(null, `Debug log ID for ${plugin}`, logid)\n }\n catch (err) {\n Services.prompt.alert(null, `Could not post debug log for ${plugin}`, err.message)\n }\n }\n\n private preferences(preferences: string[]): Record<string, string | number | boolean> {\n const prefs: Record<string, string | number | boolean> = {}\n\n const names: string[] = []\n for (let pref of preferences) {\n if (pref[0] === ':') {\n pref = pref.substring(1)\n }\n else if (!pref.startsWith(zotero_prefs_root)) {\n pref = zotero_prefs_root + pref\n }\n if (pref.endsWith('.')) {\n const childkeys: string[] = Services.prefs.getBranch(pref).getChildList('', {})\n for (const key of childkeys) {\n names.push(pref + key)\n }\n }\n else {\n names.push(pref)\n }\n }\n\n for (const pref of names.sort()) {\n prefs[pref] = Zotero.Prefs.get(pref, true)\n }\n\n return prefs\n }\n\n // general state of Zotero\n private async info(preferences: string[]): Promise<string> {\n let info = ''\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const appInfo: { name: string; version: string } = Components.classes['@mozilla.org/xre/app-info;1'].getService(Components.interfaces.nsIXULAppInfo)\n info += `Application: ${appInfo.name} ${appInfo.version} ${Zotero.locale}\\n`\n\n const platform = ['Win', 'Mac', 'Linux'].find(p => Zotero[`is${p}`]) || 'Unknown'\n const arch = Zotero.oscpu || Zotero.arch\n info += `Platform: ${platform} ${arch}\\n`\n\n const addons: string[] = await Zotero.getInstalledExtensions()\n if (addons.length) {\n info += 'Addons:\\n' + addons.map((addon: string) => ` ${addon}\\n`).join('') // eslint-disable-line prefer-template\n }\n info += `Debug logging on at Zotero start: ${this.debugEnabledAtStart}\\n`\n info += `Debug logging on at log submit: ${Zotero.Prefs.get('debug.store') || Zotero.Debug.enabled}\\n`\n\n for (const [pref, value] of Object.entries(this.preferences(preferences))) {\n info += `${pref} = ${JSON.stringify(value)}\\n`\n }\n\n return info\n }\n\n private rdf(): Promise<string> {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const items: any[] = Zotero.getActiveZoteroPane().getSelectedItems()\n if (items.length === 0) return resolve('')\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const translation: ExportTranslator = new Zotero.Translate.Export() as ExportTranslator\n translation.setItems(items)\n translation.setTranslator('14763d24-8ba0-45df-8f52-b8d1108e7ac9') // rdf\n\n translation.setHandler('done', (obj, success) => {\n if (success) {\n resolve(obj ? obj.string : undefined)\n }\n else {\n reject(new Error('translation failed'))\n }\n })\n\n translation.translate() // eslint-disable-line @typescript-eslint/no-unsafe-call\n })\n }\n\n /*\n private arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = new Uint8Array(buffer)\n const len = bytes.byteLength\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n }\n\n private base64ToArrayBuffer(base64) {\n const binaryString = atob(base64)\n const len = binaryString.length\n const bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n return bytes.buffer\n }\n */\n}\n\nexport const DebugLog = new DebugLogSender()\n","export const KEYTYPE = 'RSA'\nexport const KEY_WRAPPING_ALG = 'RSA-OAEP-256'\nexport const CONTENT_ENCRYPTION_ALG = 'A256GCM'\nexport const RSA_HASH = 'SHA-256'\nexport const RSA_ALGORITHM = 'RSA-OAEP'\nexport const CIPHER_ALGORITHM = 'aes256'\nexport const AES_KEY_LENGTH = 256\n// export const AES_KEY_BYTES = 32\n\n// export const AES_ALGORITHM = 'AES-GCM'\n// export const IV_LENGTH = 12\n","export default {\n \"name\": \"zotero-plugin\",\n \"version\": \"8.0.6\",\n \"description\": \"Zotero plugin builder\",\n \"homepage\": \"https://github.com/retorquere/zotero-plugin/wiki\",\n \"type\": \"module\",\n \"main\": \"./dist/cjs/index.js\",\n \"module\": \"./dist/esm/index.js\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/esm/index.js\",\n \"require\": \"./dist/cjs/index.cjs\"\n },\n \"./debug-log\": {\n \"import\": \"./dist/esm/debug-log.js\",\n \"require\": \"./dist/cjs/debug-log.cjs\"\n },\n \"./logger\": {\n \"import\": \"./dist/esm/ulogger.js\",\n \"require\": \"./dist/cjs/logger.cjs\"\n },\n \".loader/json\": {\n \"import\": \"./dist/esm/loader/json.js\",\n \"require\": \"./dist/cjs/loader/json.cjs\"\n },\n \".loader/peggy\": {\n \"import\": \"./dist/esm/loader/peggy.js\",\n \"require\": \"./dist/cjs/loader/peggy.cjs\"\n },\n \".loader/pem\": {\n \"import\": \"./dist/esm/loader/pem.js\",\n \"require\": \"./dist/cjs/loader/pem.cjs\"\n },\n \"./copy-assets\": {\n \"import\": \"./dist/esm/bin/copy-assets.js\",\n \"require\": \"./dist/cjs/bin/copy-assets.cjs\"\n },\n \"./make-dirs\": {\n \"import\": \"./dist/esm/bin/make-dirs.js\",\n \"require\": \"./dist/cjs/bin/make-dirs.cjs\"\n },\n \"./make-manifest\": {\n \"import\": \"./dist/esm/bin/make-manifest.js\",\n \"require\": \"./dist/cjs/bin/make-manifest.cjs\"\n },\n \"./make-version\": {\n \"import\": \"./dist/esm/bin/version.js\",\n \"require\": \"./dist/cjs/bin/version.cjs\"\n }\n },\n \"author\": {\n \"name\": \"Emiliano Heyns\",\n \"email\": \"Emiliano.Heyns@iris-advies.com\"\n },\n \"scripts\": {\n \"preversion\": \"npm test\",\n \"postversion\": \"git push --follow-tags\",\n \"test\": \"dprint fmt *.ts */*.ts && dprint check *.ts */*.ts && npm run build\",\n \"prebuild\": \"rm -rf dist\",\n \"build\": \"tsup\",\n \"check\": \"tsc --noEmit\",\n \"start\": \"concurrently --raw --group 'npm run check' 'npm run build'\",\n \"pack\": \"npm test && npm pack\",\n \"prepublishOnly\": \"npm install && npm run build\",\n \"ncu\": \"ncu -u && npm i && git add package.json package-lock.json && git commit -m ncu\"\n },\n \"directories\": {\n \"test\": \"test\"\n },\n \"dependencies\": {\n \"@fluent/syntax\": \"^0.19.0\",\n \"@napi-rs/keyring\": \"^1.2.0\",\n \"@octokit/rest\": \"^22.0.1\",\n \"@rgrove/parse-xml\": \"^4.2.0\",\n \"@types/node\": \"^25.0.10\",\n \"@xmldom/xmldom\": \"^0.9.8\",\n \"ajv\": \"^8.17.1\",\n \"ajv-keywords\": \"^5.1.0\",\n \"archiver\": \"^7.0.1\",\n \"clp\": \"^4.0.13\",\n \"commander\": \"^14.0.2\",\n \"dotenv\": \"^17.2.3\",\n \"ejs\": \"^4.0.1\",\n \"fs-extra\": \"^11.3.3\",\n \"glob\": \"^13.0.0\",\n \"ini\": \"^6.0.0\",\n \"jose\": \"^6.1.3\",\n \"jsesc\": \"^3.1.0\",\n \"lodash\": \"^4.17.23\",\n \"moment\": \"^2.30.1\",\n \"node-forge\": \"^1.3.3\",\n \"node-stream-zip\": \"^1.15.0\",\n \"openpgp\": \"^6.3.0\",\n \"peggy\": \"^5.0.6\",\n \"prompts\": \"^2.4.2\",\n \"pug\": \"^3.0.3\",\n \"rimraf\": \"^6.1.2\",\n \"shell-quote\": \"^1.8.3\",\n \"shelljs\": \"^0.10.0\",\n \"string-to-arraybuffer\": \"^1.0.2\",\n \"ts-node\": \"^10.9.2\",\n \"tslib\": \"^2.8.1\",\n \"typescript\": \"^5.9.3\",\n \"uri-templates\": \"^0.2.0\",\n \"url-template\": \"^3.1.1\",\n \"uzip\": \"^0.20201231.0\",\n \"xml-parser\": \"^1.2.1\",\n \"xpath\": \"^0.0.34\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/retorquere/zotero-plugin.git\"\n },\n \"license\": \"ISC\",\n \"files\": [\n \"package.json\",\n \"README.md\",\n \"dist\"\n ],\n \"bin\": {\n \"zp-release\": \"dist/cjs/bin/release.cjs\",\n \"zp-zipup\": \"dist/cjs/bin/zipup.cjs\",\n \"zp-link\": \"dist/cjs/bin/link.cjs\",\n \"issue-branches\": \"dist/cjs/bin/branches.cjs\",\n \"zotero-start\": \"dist/cjs/bin/start.cjs\",\n \"zp-fetch-log\": \"dist/cjs/bin/fetch-log.cjs\",\n \"zp-keypair\": \"dist/cjs/bin/keypair.cjs\",\n \"zp-copy-assets\": \"dist/cjs/copy-assets.cjs\",\n \"zp-make-dirs\": \"dist/cjs/make-dirs.cjs\",\n \"zp-manifest\": \"dist/cjs/make-manifest.cjs\",\n \"zp-version\": \"dist/cjs/version.cjs\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/retorquere/zotero-plugin/issues\"\n },\n \"devDependencies\": {\n \"@openpgp/web-stream-tools\": \"^0.3.0\",\n \"concurrently\": \"^9.2.1\",\n \"dprint\": \"^0.51.1\",\n \"esbuild\": \"^0.27.2\",\n \"tsup\": \"^8.5.1\"\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/cjs/tsup.config.cjs
CHANGED
|
@@ -2525,8 +2525,8 @@ var require_chunk_TWFEYLU4 = __commonJS({
|
|
|
2525
2525
|
var _path2 = _interopRequireDefault(_path);
|
|
2526
2526
|
var _resolvefrom = require_resolve_from();
|
|
2527
2527
|
var _resolvefrom2 = _interopRequireDefault(_resolvefrom);
|
|
2528
|
-
var singleComment = Symbol("singleComment");
|
|
2529
|
-
var multiComment = Symbol("multiComment");
|
|
2528
|
+
var singleComment = /* @__PURE__ */ Symbol("singleComment");
|
|
2529
|
+
var multiComment = /* @__PURE__ */ Symbol("multiComment");
|
|
2530
2530
|
var stripWithoutWhitespace = () => "";
|
|
2531
2531
|
var stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/\S/g, " ");
|
|
2532
2532
|
var isEscaped = (jsonString, quotePosition) => {
|
|
@@ -3108,8 +3108,8 @@ var require_dist3 = __commonJS({
|
|
|
3108
3108
|
module2.exports = __toCommonJS2(src_exports);
|
|
3109
3109
|
var import_path = __toESM2(require("path"), 1);
|
|
3110
3110
|
var import_fs = __toESM2(require("fs"), 1);
|
|
3111
|
-
var singleComment = Symbol("singleComment");
|
|
3112
|
-
var multiComment = Symbol("multiComment");
|
|
3111
|
+
var singleComment = /* @__PURE__ */ Symbol("singleComment");
|
|
3112
|
+
var multiComment = /* @__PURE__ */ Symbol("multiComment");
|
|
3113
3113
|
var stripWithoutWhitespace = () => "";
|
|
3114
3114
|
var stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/\S/g, " ");
|
|
3115
3115
|
var isEscaped = (jsonString, quotePosition) => {
|
|
@@ -5822,7 +5822,7 @@ var require_prompt = __commonJS({
|
|
|
5822
5822
|
return s;
|
|
5823
5823
|
}
|
|
5824
5824
|
globalThis.process.platform.startsWith("win");
|
|
5825
|
-
var S = Symbol("clack:cancel");
|
|
5825
|
+
var S = /* @__PURE__ */ Symbol("clack:cancel");
|
|
5826
5826
|
function d$1(t2, u2) {
|
|
5827
5827
|
const F2 = t2;
|
|
5828
5828
|
F2.isTTY && F2.setRawMode(u2);
|
|
@@ -6166,7 +6166,7 @@ ${e.cyan(d)}
|
|
|
6166
6166
|
} }).prompt();
|
|
6167
6167
|
};
|
|
6168
6168
|
`${e.gray(o)} `;
|
|
6169
|
-
var kCancel = Symbol.for("cancel");
|
|
6169
|
+
var kCancel = /* @__PURE__ */ Symbol.for("cancel");
|
|
6170
6170
|
async function prompt(message, opts = {}) {
|
|
6171
6171
|
const handleCancel = (value) => {
|
|
6172
6172
|
if (typeof value !== "symbol" || value.toString() !== "Symbol(clack:cancel)") {
|
|
@@ -29389,7 +29389,7 @@ var require_source_map_consumer = __commonJS({
|
|
|
29389
29389
|
var base64VLQ = require_base64_vlq();
|
|
29390
29390
|
var readWasm = require_read_wasm();
|
|
29391
29391
|
var wasm = require_wasm();
|
|
29392
|
-
var INTERNAL = Symbol("smcInternal");
|
|
29392
|
+
var INTERNAL = /* @__PURE__ */ Symbol("smcInternal");
|
|
29393
29393
|
var SourceMapConsumer = class _SourceMapConsumer {
|
|
29394
29394
|
constructor(aSourceMap, aSourceMapURL) {
|
|
29395
29395
|
if (aSourceMap == INTERNAL) {
|
|
@@ -30893,7 +30893,7 @@ ${indicator}`;
|
|
|
30893
30893
|
properties.frame = getCodeFrame(source, line, column);
|
|
30894
30894
|
}
|
|
30895
30895
|
}
|
|
30896
|
-
var symbolAugmented = Symbol("augmented");
|
|
30896
|
+
var symbolAugmented = /* @__PURE__ */ Symbol("augmented");
|
|
30897
30897
|
function augmentLogMessage(log) {
|
|
30898
30898
|
if (!(log.plugin || log.loc) || log[symbolAugmented]) {
|
|
30899
30899
|
return;
|
|
@@ -33091,7 +33091,7 @@ var require_rollup = __commonJS({
|
|
|
33091
33091
|
});
|
|
33092
33092
|
return { containedPlaceholders, transformedCode };
|
|
33093
33093
|
};
|
|
33094
|
-
var lowercaseBundleKeys = Symbol("bundleKeys");
|
|
33094
|
+
var lowercaseBundleKeys = /* @__PURE__ */ Symbol("bundleKeys");
|
|
33095
33095
|
var FILE_PLACEHOLDER = {
|
|
33096
33096
|
type: "placeholder"
|
|
33097
33097
|
};
|
|
@@ -37610,15 +37610,15 @@ var require_rollup = __commonJS({
|
|
|
37610
37610
|
code.appendLeft(expressionEnd, ")");
|
|
37611
37611
|
}
|
|
37612
37612
|
}
|
|
37613
|
-
var UnknownKey = Symbol("Unknown Key");
|
|
37614
|
-
var UnknownNonAccessorKey = Symbol("Unknown Non-Accessor Key");
|
|
37615
|
-
var UnknownInteger = Symbol("Unknown Integer");
|
|
37616
|
-
var SymbolToStringTag = Symbol("Symbol.toStringTag");
|
|
37613
|
+
var UnknownKey = /* @__PURE__ */ Symbol("Unknown Key");
|
|
37614
|
+
var UnknownNonAccessorKey = /* @__PURE__ */ Symbol("Unknown Non-Accessor Key");
|
|
37615
|
+
var UnknownInteger = /* @__PURE__ */ Symbol("Unknown Integer");
|
|
37616
|
+
var SymbolToStringTag = /* @__PURE__ */ Symbol("Symbol.toStringTag");
|
|
37617
37617
|
var EMPTY_PATH = [];
|
|
37618
37618
|
var UNKNOWN_PATH = [UnknownKey];
|
|
37619
37619
|
var UNKNOWN_NON_ACCESSOR_PATH = [UnknownNonAccessorKey];
|
|
37620
37620
|
var UNKNOWN_INTEGER_PATH = [UnknownInteger];
|
|
37621
|
-
var EntitiesKey = Symbol("Entities");
|
|
37621
|
+
var EntitiesKey = /* @__PURE__ */ Symbol("Entities");
|
|
37622
37622
|
var EntityPathTracker = class {
|
|
37623
37623
|
constructor() {
|
|
37624
37624
|
this.entityPaths = Object.create(null, {
|
|
@@ -37819,9 +37819,9 @@ var require_rollup = __commonJS({
|
|
|
37819
37819
|
function setFlag(flags, flag, value) {
|
|
37820
37820
|
return flags & ~flag | -value & flag;
|
|
37821
37821
|
}
|
|
37822
|
-
var UnknownValue = Symbol("Unknown Value");
|
|
37823
|
-
var UnknownTruthyValue = Symbol("Unknown Truthy Value");
|
|
37824
|
-
var UnknownFalsyValue = Symbol("Unknown Falsy Value");
|
|
37822
|
+
var UnknownValue = /* @__PURE__ */ Symbol("Unknown Value");
|
|
37823
|
+
var UnknownTruthyValue = /* @__PURE__ */ Symbol("Unknown Truthy Value");
|
|
37824
|
+
var UnknownFalsyValue = /* @__PURE__ */ Symbol("Unknown Falsy Value");
|
|
37825
37825
|
var ExpressionEntity = class {
|
|
37826
37826
|
constructor() {
|
|
37827
37827
|
this.flags = 0;
|
|
@@ -37917,7 +37917,7 @@ var require_rollup = __commonJS({
|
|
|
37917
37917
|
type: INTERACTION_CALLED,
|
|
37918
37918
|
withNew: false
|
|
37919
37919
|
};
|
|
37920
|
-
var PureFunctionKey = Symbol("PureFunction");
|
|
37920
|
+
var PureFunctionKey = /* @__PURE__ */ Symbol("PureFunction");
|
|
37921
37921
|
var getPureFunctions = ({ treeshake }) => {
|
|
37922
37922
|
const pureFunctions = /* @__PURE__ */ Object.create(null);
|
|
37923
37923
|
for (const functionName of treeshake ? treeshake.manualPureFunctions : []) {
|
|
@@ -38320,7 +38320,7 @@ var require_rollup = __commonJS({
|
|
|
38320
38320
|
YieldExpression: ["argument"]
|
|
38321
38321
|
};
|
|
38322
38322
|
var INCLUDE_PARAMETERS = "variables";
|
|
38323
|
-
var IS_SKIPPED_CHAIN = Symbol("IS_SKIPPED_CHAIN");
|
|
38323
|
+
var IS_SKIPPED_CHAIN = /* @__PURE__ */ Symbol("IS_SKIPPED_CHAIN");
|
|
38324
38324
|
var NodeBase = class extends ExpressionEntity {
|
|
38325
38325
|
/**
|
|
38326
38326
|
* Nodes can apply custom deoptimizations once they become part of the
|
|
@@ -39459,7 +39459,7 @@ var require_rollup = __commonJS({
|
|
|
39459
39459
|
return this.objectEntity = new ObjectEntity(properties, ARRAY_PROTOTYPE);
|
|
39460
39460
|
}
|
|
39461
39461
|
};
|
|
39462
|
-
var ValueProperties = Symbol("Value Properties");
|
|
39462
|
+
var ValueProperties = /* @__PURE__ */ Symbol("Value Properties");
|
|
39463
39463
|
var getUnknownValue = () => UnknownValue;
|
|
39464
39464
|
var returnFalse = () => false;
|
|
39465
39465
|
var returnTrue = () => true;
|
|
@@ -44585,7 +44585,7 @@ var require_rollup = __commonJS({
|
|
|
44585
44585
|
// in: () => UnknownValue,
|
|
44586
44586
|
// instanceof: () => UnknownValue,
|
|
44587
44587
|
};
|
|
44588
|
-
var UNASSIGNED$1 = Symbol("Unassigned");
|
|
44588
|
+
var UNASSIGNED$1 = /* @__PURE__ */ Symbol("Unassigned");
|
|
44589
44589
|
var BinaryExpression = class extends NodeBase {
|
|
44590
44590
|
constructor() {
|
|
44591
44591
|
super(...arguments);
|
|
@@ -45507,7 +45507,7 @@ var require_rollup = __commonJS({
|
|
|
45507
45507
|
return super.addDeclaration(identifier, context, init, destructuredInitPath, kind);
|
|
45508
45508
|
}
|
|
45509
45509
|
};
|
|
45510
|
-
var unset = Symbol("unset");
|
|
45510
|
+
var unset = /* @__PURE__ */ Symbol("unset");
|
|
45511
45511
|
var IfStatement = class _IfStatement extends NodeBase {
|
|
45512
45512
|
constructor() {
|
|
45513
45513
|
super(...arguments);
|
|
@@ -47708,7 +47708,7 @@ var require_rollup = __commonJS({
|
|
|
47708
47708
|
void: () => void 0,
|
|
47709
47709
|
"~": (value) => ~value
|
|
47710
47710
|
};
|
|
47711
|
-
var UNASSIGNED = Symbol("Unassigned");
|
|
47711
|
+
var UNASSIGNED = /* @__PURE__ */ Symbol("Unassigned");
|
|
47712
47712
|
var UnaryExpression = class extends NodeBase {
|
|
47713
47713
|
constructor() {
|
|
47714
47714
|
super(...arguments);
|
|
@@ -53764,7 +53764,7 @@ ${outro}`;
|
|
|
53764
53764
|
return parseAst_js.error(parseAst_js.logInvalidOption("output.sourcemapBaseUrl", parseAst_js.URL_OUTPUT_SOURCEMAPBASEURL, `must be a valid URL, received ${JSON.stringify(sourcemapBaseUrl)}`));
|
|
53765
53765
|
}
|
|
53766
53766
|
};
|
|
53767
|
-
Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
|
|
53767
|
+
Symbol.asyncDispose ??= /* @__PURE__ */ Symbol("Symbol.asyncDispose");
|
|
53768
53768
|
function rollup(rawInputOptions) {
|
|
53769
53769
|
return rollupInternal(rawInputOptions, null);
|
|
53770
53770
|
}
|