<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://test.zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-QueryContributors.js</id>
	<title>MediaWiki:Gadget-QueryContributors.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://test.zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-QueryContributors.js"/>
	<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-QueryContributors.js&amp;action=history"/>
	<updated>2026-07-18T00:49:31Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-QueryContributors.js&amp;diff=419&amp;oldid=prev</id>
		<title>鹿野耕云：​创建页面，内容为“/**  * SPDX-License-Identifier: CC-BY-SA-4.0  * _addText: &#039;{{Gadget Header|license=CC-BY-SA-4.0|license2=Qiuwen Public Licence}}&#039;  *  * @source {@link https://git.qiuwen.net.cn/InterfaceAdmin/QiuwenGadgets/src/branch/master/src/QueryContributors}  * @author WaitSpring &lt;me@waitspring.com&gt;  * @license CC-BY-SA-4.0 {@link https://www.qiuwenbaike.cn/wiki/H:CC-BY-SA-4.0}  * @license Qiuwen Public License {@link https://www.qiuwenbaike.cn/wiki/QW:QWL}  */  /**  * Cop…”</title>
		<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-QueryContributors.js&amp;diff=419&amp;oldid=prev"/>
		<updated>2026-06-16T15:44:51Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&lt;span class=&quot;autocomment&quot;&gt;*  * SPDX-License-Identifier: CC-BY-SA-4.0  * _addText: &amp;#039;{{Gadget Header|license=CC-BY-SA-4.0|license2=Qiuwen Public Licence}}&amp;#039;  *  * @source {@link https://git.qiuwen.net.cn/InterfaceAdmin/QiuwenGadgets/src/branch/master/src/QueryContributors}  * @author WaitSpring &amp;lt;me@waitspring.com&amp;gt;  * @license CC-BY-SA-4.0 {@link https://www.qiuwenbaike.cn/wiki/H:CC-BY-SA-4.0}  * @license Qiuwen Public License {@link https://www.qiuwenbaike.cn/wiki/QW:QWL}：​&lt;/span&gt;  /**  * Cop…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * SPDX-License-Identifier: CC-BY-SA-4.0&lt;br /&gt;
 * _addText: &amp;#039;{{Gadget Header|license=CC-BY-SA-4.0|license2=Qiuwen Public Licence}}&amp;#039;&lt;br /&gt;
 *&lt;br /&gt;
 * @source {@link https://git.qiuwen.net.cn/InterfaceAdmin/QiuwenGadgets/src/branch/master/src/QueryContributors}&lt;br /&gt;
 * @author WaitSpring &amp;lt;me@waitspring.com&amp;gt;&lt;br /&gt;
 * @license CC-BY-SA-4.0 {@link https://www.qiuwenbaike.cn/wiki/H:CC-BY-SA-4.0}&lt;br /&gt;
 * @license Qiuwen Public License {@link https://www.qiuwenbaike.cn/wiki/QW:QWL}&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Copyright 2024 WaitSpring &amp;lt;me@waitspring.com&amp;gt;&lt;br /&gt;
 * Licensed under the &amp;quot;Qiuwen Public Licence&amp;quot;&lt;br /&gt;
 * (the &amp;quot;License&amp;quot;, formerly the &amp;quot;Qiuwen Licence&amp;quot;),&lt;br /&gt;
 * either version 1.0 of the Licence, or any&lt;br /&gt;
 * later version.&lt;br /&gt;
 * You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 *  http://www.qiuwenbaike.cn/wiki/QW:QWL&lt;br /&gt;
 *&lt;br /&gt;
 * See the License for details.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * +------------------------------------------------------------+&lt;br /&gt;
 * |            === WARNING: GLOBAL GADGET FILE ===             |&lt;br /&gt;
 * +------------------------------------------------------------+&lt;br /&gt;
 * |       All changes should be made in the repository,        |&lt;br /&gt;
 * |                otherwise they will be lost.                |&lt;br /&gt;
 * +------------------------------------------------------------+&lt;br /&gt;
 * |        Changes to this page may affect many users.         |&lt;br /&gt;
 * | Please discuss changes by opening an issue before editing. |&lt;br /&gt;
 * +------------------------------------------------------------+&lt;br /&gt;
 */&lt;br /&gt;
/* &amp;lt;nowiki&amp;gt; */&lt;br /&gt;
&lt;br /&gt;
(() =&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// dist/QueryContributors/QueryContributors.js&lt;br /&gt;
function asyncGeneratorStep(n, t, e, r, o, a, c) {&lt;br /&gt;
  try {&lt;br /&gt;
    var i = n[a](c), u = i.value;&lt;br /&gt;
  } catch (n2) {&lt;br /&gt;
    return void e(n2);&lt;br /&gt;
  }&lt;br /&gt;
  i.done ? t(u) : Promise.resolve(u).then(r, o);&lt;br /&gt;
}&lt;br /&gt;
function _asyncToGenerator(n) {&lt;br /&gt;
  return function() {&lt;br /&gt;
    var t = this, e = arguments;&lt;br /&gt;
    return new Promise(function(r, o) {&lt;br /&gt;
      var a = n.apply(t, e);&lt;br /&gt;
      function _next(n2) {&lt;br /&gt;
        asyncGeneratorStep(a, r, o, _next, _throw, &amp;quot;next&amp;quot;, n2);&lt;br /&gt;
      }&lt;br /&gt;
      function _throw(n2) {&lt;br /&gt;
        asyncGeneratorStep(a, r, o, _next, _throw, &amp;quot;throw&amp;quot;, n2);&lt;br /&gt;
      }&lt;br /&gt;
      _next(void 0);&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
function _createForOfIteratorHelper(r, e) {&lt;br /&gt;
  var t = &amp;quot;undefined&amp;quot; != typeof Symbol &amp;amp;&amp;amp; r[Symbol.iterator] || r[&amp;quot;@@iterator&amp;quot;];&lt;br /&gt;
  if (!t) {&lt;br /&gt;
    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e &amp;amp;&amp;amp; r &amp;amp;&amp;amp; &amp;quot;number&amp;quot; == typeof r.length) {&lt;br /&gt;
      t &amp;amp;&amp;amp; (r = t);&lt;br /&gt;
      var n = 0, F = function() {&lt;br /&gt;
      };&lt;br /&gt;
      return { s: F, n: function() {&lt;br /&gt;
        return n &amp;gt;= r.length ? { done: true } : { done: false, value: r[n++] };&lt;br /&gt;
      }, e: function(r2) {&lt;br /&gt;
        throw r2;&lt;br /&gt;
      }, f: F };&lt;br /&gt;
    }&lt;br /&gt;
    throw new TypeError(&amp;quot;Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  var o, a = true, u = false;&lt;br /&gt;
  return { s: function() {&lt;br /&gt;
    t = t.call(r);&lt;br /&gt;
  }, n: function() {&lt;br /&gt;
    var r2 = t.next();&lt;br /&gt;
    return a = r2.done, r2;&lt;br /&gt;
  }, e: function(r2) {&lt;br /&gt;
    u = true, o = r2;&lt;br /&gt;
  }, f: function() {&lt;br /&gt;
    try {&lt;br /&gt;
      a || null == t.return || t.return();&lt;br /&gt;
    } finally {&lt;br /&gt;
      if (u) throw o;&lt;br /&gt;
    }&lt;br /&gt;
  } };&lt;br /&gt;
}&lt;br /&gt;
function _unsupportedIterableToArray(r, a) {&lt;br /&gt;
  if (r) {&lt;br /&gt;
    if (&amp;quot;string&amp;quot; == typeof r) return _arrayLikeToArray(r, a);&lt;br /&gt;
    var t = {}.toString.call(r).slice(8, -1);&lt;br /&gt;
    return &amp;quot;Object&amp;quot; === t &amp;amp;&amp;amp; r.constructor &amp;amp;&amp;amp; (t = r.constructor.name), &amp;quot;Map&amp;quot; === t || &amp;quot;Set&amp;quot; === t ? Array.from(r) : &amp;quot;Arguments&amp;quot; === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
function _arrayLikeToArray(r, a) {&lt;br /&gt;
  (null == a || a &amp;gt; r.length) &amp;amp;&amp;amp; (a = r.length);&lt;br /&gt;
  for (var e = 0, n = Array(a); e &amp;lt; a; e++) n[e] = r[e];&lt;br /&gt;
  return n;&lt;br /&gt;
}&lt;br /&gt;
var __create = Object.create;&lt;br /&gt;
var __defProp = Object.defineProperty;&lt;br /&gt;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;&lt;br /&gt;
var __getOwnPropNames = Object.getOwnPropertyNames;&lt;br /&gt;
var __getProtoOf = Object.getPrototypeOf;&lt;br /&gt;
var __hasOwnProp = Object.prototype.hasOwnProperty;&lt;br /&gt;
var __copyProps = (to, from, except, desc) =&amp;gt; {&lt;br /&gt;
  if (from &amp;amp;&amp;amp; typeof from === &amp;quot;object&amp;quot; || typeof from === &amp;quot;function&amp;quot;) {&lt;br /&gt;
    var _iterator = _createForOfIteratorHelper(__getOwnPropNames(from)), _step;&lt;br /&gt;
    try {&lt;br /&gt;
      for (_iterator.s(); !(_step = _iterator.n()).done; ) {&lt;br /&gt;
        let key = _step.value;&lt;br /&gt;
        if (!__hasOwnProp.call(to, key) &amp;amp;&amp;amp; key !== except) __defProp(to, key, {&lt;br /&gt;
          get: () =&amp;gt; from[key],&lt;br /&gt;
          enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
    } catch (err) {&lt;br /&gt;
      _iterator.e(err);&lt;br /&gt;
    } finally {&lt;br /&gt;
      _iterator.f();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return to;&lt;br /&gt;
};&lt;br /&gt;
var __toESM = (mod, isNodeMode, target) =&amp;gt; (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(&lt;br /&gt;
  // If the importer is in node compatibility mode or this is not an ESM&lt;br /&gt;
  // file that has been converted to a CommonJS file using a Babel-&lt;br /&gt;
  // compatible transform (i.e. &amp;quot;__esModule&amp;quot; has not been set), then set&lt;br /&gt;
  // &amp;quot;default&amp;quot; to the CommonJS &amp;quot;module.exports&amp;quot; for node compatibility.&lt;br /&gt;
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, &amp;quot;default&amp;quot;, {&lt;br /&gt;
    value: mod,&lt;br /&gt;
    enumerable: true&lt;br /&gt;
  }) : target,&lt;br /&gt;
  mod&lt;br /&gt;
));&lt;br /&gt;
//! src/QueryContributors/options.json&lt;br /&gt;
var elementId = &amp;quot;gadget-query_contributors&amp;quot;;&lt;br /&gt;
var mountPointSelector = &amp;quot;#footer-info,.page-info&amp;quot;;&lt;br /&gt;
var version = &amp;quot;1.0&amp;quot;;&lt;br /&gt;
//! src/QueryContributors/modules/components/react.tsx&lt;br /&gt;
var import_ext_gadget2 = __toESM(require(&amp;quot;ext.gadget.JSX&amp;quot;), 1);&lt;br /&gt;
//! src/QueryContributors/modules/i18n.ts&lt;br /&gt;
var import_ext_gadget = require(&amp;quot;ext.gadget.i18n&amp;quot;);&lt;br /&gt;
var getI18nMessages = () =&amp;gt; {&lt;br /&gt;
  return {&lt;br /&gt;
    &amp;quot;Based on contributions of&amp;quot;: (0, import_ext_gadget.localize)({&lt;br /&gt;
      en: &amp;quot;Based on contributions of &amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hans&amp;quot;: &amp;quot;基于下列用户的贡献：&amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hant&amp;quot;: &amp;quot;基于下列使用者的貢獻：&amp;quot;&lt;br /&gt;
    }),&lt;br /&gt;
    Seperator: (0, import_ext_gadget.localize)({&lt;br /&gt;
      en: &amp;quot;, &amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hans&amp;quot;: &amp;quot;、&amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hant&amp;quot;: &amp;quot;、&amp;quot;&lt;br /&gt;
    }),&lt;br /&gt;
    Period: (0, import_ext_gadget.localize)({&lt;br /&gt;
      en: &amp;quot;.&amp;quot;,&lt;br /&gt;
      zh: &amp;quot;。&amp;quot;&lt;br /&gt;
    }),&lt;br /&gt;
    &amp;quot;Other $1 anonymous contributors&amp;quot;: (0, import_ext_gadget.localize)({&lt;br /&gt;
      en: &amp;quot;other $1 anonymous contributor(s)&amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hans&amp;quot;: &amp;quot;其他$1位匿名贡献者&amp;quot;,&lt;br /&gt;
      &amp;quot;zh-hant&amp;quot;: &amp;quot;其他$1位匿名貢獻者&amp;quot;&lt;br /&gt;
    })&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
var i18nMessages = getI18nMessages();&lt;br /&gt;
var getMessage = (key) =&amp;gt; {&lt;br /&gt;
  return i18nMessages[key] || key;&lt;br /&gt;
};&lt;br /&gt;
//! src/QueryContributors/modules/util/sanitize.ts&lt;br /&gt;
var sanitize = (string) =&amp;gt; {&lt;br /&gt;
  return string.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;#039;/g, &amp;quot;&amp;amp;apos;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
//! src/QueryContributors/modules/components/react.tsx&lt;br /&gt;
var FooterNotice = ({&lt;br /&gt;
  children = /* @__PURE__ */ import_ext_gadget2.default.createElement(import_ext_gadget2.default.Fragment, null)&lt;br /&gt;
}) =&amp;gt; {&lt;br /&gt;
  const {&lt;br /&gt;
    skin&lt;br /&gt;
  } = mw.config.get();&lt;br /&gt;
  const id = elementId;&lt;br /&gt;
  const className = elementId;&lt;br /&gt;
  if (skin === &amp;quot;citizen&amp;quot;) {&lt;br /&gt;
    return /* @__PURE__ */ import_ext_gadget2.default.createElement(&amp;quot;section&amp;quot;, {&lt;br /&gt;
      id,&lt;br /&gt;
      className: [className, &amp;quot;page-info__item&amp;quot;, &amp;quot;citizen-footer__pageinfo-item&amp;quot;, &amp;quot;noprint&amp;quot;]&lt;br /&gt;
    }, children);&lt;br /&gt;
  } else if ([&amp;quot;gongbi&amp;quot;, &amp;quot;vector&amp;quot;, &amp;quot;vector-2022&amp;quot;].includes(skin) || document.querySelector(&amp;quot;ul#footer-info&amp;quot;)) {&lt;br /&gt;
    return /* @__PURE__ */ import_ext_gadget2.default.createElement(&amp;quot;li&amp;quot;, {&lt;br /&gt;
      id,&lt;br /&gt;
      className: [className, &amp;quot;noprint&amp;quot;]&lt;br /&gt;
    }, children);&lt;br /&gt;
  }&lt;br /&gt;
  return /* @__PURE__ */ import_ext_gadget2.default.createElement(&amp;quot;div&amp;quot;, {&lt;br /&gt;
    id,&lt;br /&gt;
    className: [className, &amp;quot;noprint&amp;quot;]&lt;br /&gt;
  }, children);&lt;br /&gt;
};&lt;br /&gt;
var UserList = ({&lt;br /&gt;
  userNames&lt;br /&gt;
}) =&amp;gt; /* @__PURE__ */ import_ext_gadget2.default.createElement(import_ext_gadget2.default.Fragment, null, /* @__PURE__ */ import_ext_gadget2.default.createElement(import_ext_gadget2.default.Fragment, null, getMessage(&amp;quot;Based on contributions of&amp;quot;)), userNames.map((userName, index) =&amp;gt; /* @__PURE__ */ import_ext_gadget2.default.createElement(import_ext_gadget2.default.Fragment, null, typeof userName === &amp;quot;number&amp;quot; ? /* @__PURE__ */ import_ext_gadget2.default.createElement(&amp;quot;span&amp;quot;, {&lt;br /&gt;
  key: &amp;quot;&amp;quot;.concat(userName)&lt;br /&gt;
}, getMessage(&amp;quot;Other $1 anonymous contributors&amp;quot;).replace(&amp;quot;$1&amp;quot;, &amp;quot;&amp;quot;.concat(userName))) : /* @__PURE__ */ import_ext_gadget2.default.createElement(&amp;quot;a&amp;quot;, {&lt;br /&gt;
  href: /(&amp;gt;|&amp;amp;gt;)/.test(userName) ? mw.util.getUrl(&amp;quot;Special:GoToInterWiki/&amp;quot;.concat(sanitize(userName.replace(/(&amp;gt;|&amp;amp;gt;)/, &amp;quot;:User:&amp;quot;).replace(/(&amp;gt;|&amp;amp;gt;)/g, &amp;quot;&amp;amp;gt;&amp;quot;)))) : mw.util.getUrl(&amp;quot;User:&amp;quot;.concat(sanitize(userName))),&lt;br /&gt;
  rel: &amp;quot;noopener noreferrer&amp;quot;,&lt;br /&gt;
  target: &amp;quot;_blank&amp;quot;,&lt;br /&gt;
  key: userName&lt;br /&gt;
}, userName), /* @__PURE__ */ import_ext_gadget2.default.createElement(import_ext_gadget2.default.Fragment, null, index &amp;lt; userNames.length - 1 ? getMessage(&amp;quot;Seperator&amp;quot;) : getMessage(&amp;quot;Period&amp;quot;)))));&lt;br /&gt;
var FooterUserList = ({&lt;br /&gt;
  userNames&lt;br /&gt;
}) =&amp;gt; /* @__PURE__ */ import_ext_gadget2.default.createElement(FooterNotice, null, /* @__PURE__ */ import_ext_gadget2.default.createElement(UserList, {&lt;br /&gt;
  userNames&lt;br /&gt;
}));&lt;br /&gt;
//! src/QueryContributors/modules/appendElement.tsx&lt;br /&gt;
var import_ext_gadget3 = __toESM(require(&amp;quot;ext.gadget.JSX&amp;quot;), 1);&lt;br /&gt;
var appendElement = (userNames) =&amp;gt; {&lt;br /&gt;
  if (!userNames || !userNames.length) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  const mountPoint = document.querySelector(mountPointSelector);&lt;br /&gt;
  if (!mountPoint) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  mountPoint.prepend(/* @__PURE__ */ import_ext_gadget3.default.createElement(FooterUserList, {&lt;br /&gt;
    userNames&lt;br /&gt;
  }));&lt;br /&gt;
};&lt;br /&gt;
//! src/QueryContributors/modules/api.ts&lt;br /&gt;
var import_ext_gadget4 = require(&amp;quot;ext.gadget.Util&amp;quot;);&lt;br /&gt;
var api = (0, import_ext_gadget4.initMwApi)(&amp;quot;QueryContributors/&amp;quot;.concat(version));&lt;br /&gt;
//! src/QueryContributors/modules/queryContributors.ts&lt;br /&gt;
var queryContributors = /* @__PURE__ */ (function() {&lt;br /&gt;
  var _ref = _asyncToGenerator(function* (titles, pccontinue) {&lt;br /&gt;
    const params = {&lt;br /&gt;
      action: &amp;quot;query&amp;quot;,&lt;br /&gt;
      format: &amp;quot;json&amp;quot;,&lt;br /&gt;
      formatversion: &amp;quot;2&amp;quot;,&lt;br /&gt;
      prop: &amp;quot;contributors&amp;quot;,&lt;br /&gt;
      pcexcludegroup: [&amp;quot;bot&amp;quot;],&lt;br /&gt;
      pclimit: 5e3,&lt;br /&gt;
      titles,&lt;br /&gt;
      smaxage: 600,&lt;br /&gt;
      maxage: 600&lt;br /&gt;
    };&lt;br /&gt;
    if (pccontinue) {&lt;br /&gt;
      params.pccontinue = pccontinue;&lt;br /&gt;
    }&lt;br /&gt;
    const response = yield api.get(params);&lt;br /&gt;
    return response;&lt;br /&gt;
  });&lt;br /&gt;
  return function queryContributors2(_x, _x2) {&lt;br /&gt;
    return _ref.apply(this, arguments);&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
//! src/QueryContributors/modules/util/getContributors.ts&lt;br /&gt;
var import_ext_gadget5 = require(&amp;quot;ext.gadget.Util&amp;quot;);&lt;br /&gt;
var getContributors = /* @__PURE__ */ (function() {&lt;br /&gt;
  var _ref2 = _asyncToGenerator(function* (title) {&lt;br /&gt;
    let pclist = [];&lt;br /&gt;
    let pccontinue;&lt;br /&gt;
    const CACHE_KEY_PREFIX = &amp;quot;ext.gadget.QueryContributors_getContributors-&amp;quot;;&lt;br /&gt;
    if (mw.storage.getObject(CACHE_KEY_PREFIX + title)) {&lt;br /&gt;
      pclist = mw.storage.getObject(CACHE_KEY_PREFIX + title);&lt;br /&gt;
      return (0, import_ext_gadget5.uniqueArray)(pclist);&lt;br /&gt;
    }&lt;br /&gt;
    while (true) {&lt;br /&gt;
      const data = yield queryContributors(title, pccontinue);&lt;br /&gt;
      try {&lt;br /&gt;
        var _data$query, _data$continue;&lt;br /&gt;
        if ((_data$query = data[&amp;quot;query&amp;quot;]) !== null &amp;amp;&amp;amp; _data$query !== void 0 &amp;amp;&amp;amp; _data$query.pages) {&lt;br /&gt;
          var _iterator2 = _createForOfIteratorHelper(data[&amp;quot;query&amp;quot;].pages), _step2;&lt;br /&gt;
          try {&lt;br /&gt;
            for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {&lt;br /&gt;
              const page = _step2.value;&lt;br /&gt;
              if (page !== null &amp;amp;&amp;amp; page !== void 0 &amp;amp;&amp;amp; page.contributors) {&lt;br /&gt;
                var _iterator3 = _createForOfIteratorHelper(page.contributors), _step3;&lt;br /&gt;
                try {&lt;br /&gt;
                  for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) {&lt;br /&gt;
                    const contributor = _step3.value;&lt;br /&gt;
                    if (contributor !== null &amp;amp;&amp;amp; contributor !== void 0 &amp;amp;&amp;amp; contributor.name) {&lt;br /&gt;
                      pclist[pclist.length] = contributor.name;&lt;br /&gt;
                    }&lt;br /&gt;
                  }&lt;br /&gt;
                } catch (err) {&lt;br /&gt;
                  _iterator3.e(err);&lt;br /&gt;
                } finally {&lt;br /&gt;
                  _iterator3.f();&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
              if (page !== null &amp;amp;&amp;amp; page !== void 0 &amp;amp;&amp;amp; page.anoncontributors) {&lt;br /&gt;
                pclist[pclist.length] = page.anoncontributors;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          } catch (err) {&lt;br /&gt;
            _iterator2.e(err);&lt;br /&gt;
          } finally {&lt;br /&gt;
            _iterator2.f();&lt;br /&gt;
          }&lt;br /&gt;
        } else {&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
        if ((_data$continue = data[&amp;quot;continue&amp;quot;]) !== null &amp;amp;&amp;amp; _data$continue !== void 0 &amp;amp;&amp;amp; _data$continue.pccontinue) {&lt;br /&gt;
          ({&lt;br /&gt;
            pccontinue&lt;br /&gt;
          } = data[&amp;quot;continue&amp;quot;]);&lt;br /&gt;
        } else {&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      } catch {&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    mw.storage.setObject(CACHE_KEY_PREFIX + title, pclist, 10 * 60);&lt;br /&gt;
    return (0, import_ext_gadget5.uniqueArray)(pclist);&lt;br /&gt;
  });&lt;br /&gt;
  return function getContributors2(_x3) {&lt;br /&gt;
    return _ref2.apply(this, arguments);&lt;br /&gt;
  };&lt;br /&gt;
})();&lt;br /&gt;
//! src/QueryContributors/QueryContributors.ts&lt;br /&gt;
(function() {&lt;br /&gt;
  var _queryContributos = _asyncToGenerator(function* () {&lt;br /&gt;
    const {&lt;br /&gt;
      wgAction,&lt;br /&gt;
      wgArticleId,&lt;br /&gt;
      wgCurRevisionId,&lt;br /&gt;
      wgPageName,&lt;br /&gt;
      wgRevisionId&lt;br /&gt;
    } = mw.config.get();&lt;br /&gt;
    if (wgAction !== &amp;quot;view&amp;quot; || !wgArticleId || !wgPageName) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if (wgCurRevisionId &amp;gt; wgRevisionId) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    const contributors = yield getContributors(wgPageName);&lt;br /&gt;
    appendElement(contributors);&lt;br /&gt;
  });&lt;br /&gt;
  function queryContributos() {&lt;br /&gt;
    return _queryContributos.apply(this, arguments);&lt;br /&gt;
  }&lt;br /&gt;
  return queryContributos;&lt;br /&gt;
})()();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;/nowiki&amp;gt; */&lt;/div&gt;</summary>
		<author><name>鹿野耕云</name></author>
	</entry>
</feed>