{"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\nimport * as jose from 'jose'\nimport * as UZip from 'uzip'\nimport pkg from './package.json'\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(host: string): string {\n    return `${this.key}-${host}${this.#refs ? '.refs' : ''}${this.#pubKey ? '.enc' : ''}`\n  }\n\n  public async send(): Promise<string> {\n    const response = await fetch(`https://filebin.net/${this.key}/${this.name}`, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/zip',\n      },\n      body: new Blob([this.zip], { type: 'application/zip' }),\n    })\n\n    if (response.ok) return this.id('fbin')\n    throw new Error(await response.text())\n  }\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\ntype Plugin = {\n  plugin: string\n  preferences: string[]\n  pubKey?: JsonWebKey\n}\n\nclass DebugLogSender {\n  version = pkg.version\n  #menu: string | false\n  #plugins: Plugin[] = []\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  public register(plugin: string, preferences: string[] = [], pubKey?: JsonWebKey): void {\n    this.#menu ??= Zotero.MenuManager.registerMenu({\n      menuID: 'debug-log-sender',\n      pluginID: 'debug-log-sender',\n      target: 'main/menubar/help',\n      menus: [\n        {\n          menuType: 'submenu',\n          onShowing: (event, context) => {\n            context.setVisible(!!this.#plugins.length)\n            context.menuElem?.setAttribute('label', 'Send plugin debug log')\n          },\n          menus: Array.from({ length: 20 }, (v, i) => ({\n            menuType: 'menuitem',\n            onShowing: (event: Event, context: _ZoteroTypes.MenuManager.MenuContext) => {\n              context.setVisible(this.#plugins.length > i)\n              context.menuElem?.setAttribute('label', this.#plugins[i]?.plugin || '')\n            },\n            onCommand: (event: Event, context: _ZoteroTypes.MenuManager.MenuContext) => {\n              void this.send(this.#plugins[i])\n            },\n          })),\n        },\n      ],\n    })\n\n    this.unregister(plugin)\n    this.#plugins.push({ plugin, preferences, pubKey })\n  }\n\n  public unregister(plugin: string) {\n    this.#plugins = this.#plugins.filter(p => p.plugin !== plugin)\n  }\n\n  private async send({ plugin, preferences, pubKey }: Plugin): Promise<void> {\n    try {\n      await Zotero.Schema.schemaUpdatePromise\n\n      const bundler = new Bundler(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      const logid = await bundler.send()\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    info += `Platform: ${platform}\\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\ndeclare global {\n  interface Zotero {\n    DebugLogSender?: DebugLogSender\n  }\n  namespace Zotero {\n    var DebugLogSender: DebugLogSender | undefined\n  }\n}\n\nfunction upgrade(installed?: string) {\n  if (!installed) return true\n  return installed.localeCompare(pkg.version, undefined, { numeric: true }) < 0\n}\n\nif (upgrade(Zotero.DebugLogSender?.version)) Zotero.DebugLogSender = new DebugLogSender()\nexport const DebugLog = Zotero.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\": \"9.0.1\",\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/logger.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.3.0\",\n    \"@xmldom/xmldom\": \"^0.9.8\",\n    \"ajv\": \"^8.18.0\",\n    \"ajv-keywords\": \"^5.1.0\",\n    \"archiver\": \"^7.0.1\",\n    \"clp\": \"^4.0.13\",\n    \"commander\": \"^14.0.3\",\n    \"dotenv\": \"^17.3.1\",\n    \"ejs\": \"^4.0.1\",\n    \"fs-extra\": \"^11.3.3\",\n    \"glob\": \"^13.0.6\",\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.3\",\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    \"zotero-types\": \"^4.1.1\"\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.3\",\n    \"tsup\": \"^8.5.1\"\n  }\n}\n"],"mappings":"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","names":[]}