mirror of
https://github.com/flarum/framework.git
synced 2024-12-12 22:53:37 +08:00
bc4356a7f5
Includes transpiled JS/TS, and Typescript declaration files (typings). [skip ci]
1 line
120 KiB
Plaintext
Executable File
Generated
1 line
120 KiB
Plaintext
Executable File
Generated
{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/extension-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/extension-manager/webpack/bootstrap","webpack://@flarum/extension-manager/webpack/runtime/compat get default export","webpack://@flarum/extension-manager/webpack/runtime/define property getters","webpack://@flarum/extension-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/extension-manager/webpack/runtime/make namespace object","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/app')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/ExtensionPage')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/components/LoadingModal')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'admin/utils/isExtensionEnabled')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Model')\"","webpack://@flarum/extension-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/extension-manager/./src/admin/models/Task.ts","webpack://@flarum/extension-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/extension-manager/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/extension-manager/./src/admin/states/QueueState.ts","webpack://@flarum/extension-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/extension-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/extension-manager/./src/admin/states/ExtensionManagerState.ts","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/Component')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/LoadingIndicator')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Tooltip')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Icon')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/ItemList')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Link')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/extension-manager/./src/admin/components/Label.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Modal')\"","webpack://@flarum/extension-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/extension-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/extension-manager/./src/admin/components/Pagination.tsx","webpack://@flarum/extension-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Alert')\"","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/utils/Stream')\"","webpack://@flarum/extension-manager/./src/admin/components/Installer.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/humanTime')\"","webpack://@flarum/extension-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/extension-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/extension-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/extension-manager/./src/admin/components/Updater.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Form')\"","webpack://@flarum/extension-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/FormGroup')\"","webpack://@flarum/extension-manager/./src/admin/components/ConfigureJson.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/components/Select')\"","webpack://@flarum/extension-manager/./src/admin/components/RepositoryModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureComposer.tsx","webpack://@flarum/extension-manager/external root \"flarum.reg.get('core', 'common/helpers/listItems')\"","webpack://@flarum/extension-manager/./src/admin/components/AuthMethodModal.tsx","webpack://@flarum/extension-manager/./src/admin/components/ConfigureAuth.tsx","webpack://@flarum/extension-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/extension-manager/./src/admin/extend.tsx","webpack://@flarum/extension-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/ExtensionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/components/LoadingModal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'admin/utils/isExtensionEnabled');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'kiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + ' ' + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + ' ' + unit;\n}\n","import Model from 'flarum/common/Model';\nimport prettyBytes from 'pretty-bytes';\nexport default class Task extends Model {\n status() {\n return Model.attribute('status').call(this);\n }\n operation() {\n return Model.attribute('operation').call(this);\n }\n command() {\n return Model.attribute('command').call(this);\n }\n package() {\n return Model.attribute('package').call(this);\n }\n output() {\n return Model.attribute('output').call(this);\n }\n guessedCause() {\n return Model.attribute('guessedCause').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/models/Task', Task);","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\nexport default function jumpToQueue() {\n app.modal.close();\n m.route.set(app.route('extension', {\n id: 'flarum-extension-manager'\n }));\n app.extensionManager.queue.load({}, true);\n setTimeout(() => {\n var _document$getElementB;\n (_document$getElementB = document.getElementById('ExtensionManager-queueSection')) == null ? void 0 : _document$getElementB.scrollIntoView({\n block: 'nearest'\n });\n }, 200);\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/jumpToQueue', jumpToQueue);","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nexport default class QueueState {\n constructor() {\n _defineProperty(this, \"polling\", null);\n _defineProperty(this, \"tasks\", null);\n _defineProperty(this, \"limit\", 20);\n _defineProperty(this, \"offset\", 0);\n _defineProperty(this, \"total\", 0);\n }\n load(params, actionTaken) {\n var _params;\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n this.tasks = null;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...((_params = params) == null ? void 0 : _params.page)\n },\n ...params\n };\n return app.store.find('extension-manager-tasks', params || {}).then(data => {\n var _data$payload$meta;\n this.tasks = data;\n this.total = ((_data$payload$meta = data.payload.meta) == null ? void 0 : _data$payload$meta.total) || 0;\n m.redraw();\n\n // Check if there is a pending or running task\n const pendingTask = data == null ? void 0 : data.find(task => task.status() === 'pending' || task.status() === 'running');\n if (pendingTask) {\n this.pollQueue(actionTaken);\n } else if (actionTaken) {\n app.extensionManager.control.setLoading(null);\n\n // Refresh the page\n window.location.reload();\n } else if (app.extensionManager.control.isLoading()) {\n app.extensionManager.control.setLoading(null);\n }\n return data;\n });\n }\n getItems() {\n return this.tasks;\n }\n getTotalPages() {\n return Math.ceil(this.total / this.limit);\n }\n pageNumber() {\n return Math.ceil(this.offset / this.limit);\n }\n hasPrev() {\n return this.pageNumber() !== 0;\n }\n hasNext() {\n return this.offset + this.limit < this.total;\n }\n prev() {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n next() {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n pollQueue(actionTaken) {\n if (actionTaken === void 0) {\n actionTaken = false;\n }\n if (this.polling) {\n clearTimeout(this.polling);\n }\n this.polling = setTimeout(() => {\n this.load({}, actionTaken);\n }, 6000);\n }\n hasPending() {\n var _this$tasks;\n return !!((_this$tasks = this.tasks) != null && _this$tasks.find(task => task.status() === 'pending' || task.status() === 'running'));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/QueueState', QueueState);","import app from 'flarum/admin/app';\nexport default function (e) {\n app.extensionManager.control.setLoading(null);\n const error = e.response.errors[0];\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n app.alerts.clear();\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans(\"flarum-extension-manager.admin.exceptions.guessed_cause.\".concat(error.guessed_cause)));\n app.modal.close();\n } else {\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n case 'extension_already_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n case 'extension_not_installed':\n app.alerts.show({\n type: 'error'\n }, app.translator.trans('flarum-extension-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/extractText');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ControlSectionState {\n get lastUpdateRun() {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-extension-manager.last_update_run']);\n lastUpdateRun.limitedPackages = () => [...lastUpdateRun.major.limitedPackages, ...lastUpdateRun.minor.limitedPackages, ...lastUpdateRun.global.limitedPackages];\n return lastUpdateRun;\n }\n constructor() {\n _defineProperty(this, \"loading\", null);\n _defineProperty(this, \"packageUpdates\", {});\n _defineProperty(this, \"lastUpdateCheck\", void 0);\n _defineProperty(this, \"extensionUpdates\", void 0);\n _defineProperty(this, \"coreUpdate\", null);\n this.lastUpdateCheck = JSON.parse(app.data.settings['flarum-extension-manager.last_update_check']);\n this.extensionUpdates = this.formatExtensionUpdates(this.lastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(this.lastUpdateCheck);\n }\n isLoading(name) {\n if (name === void 0) {\n name = null;\n }\n return name && this.loading === name || !name && this.loading !== null;\n }\n hasOperationRunning() {\n return this.isLoading() || app.extensionManager.queue.hasPending();\n }\n setLoading(name) {\n this.loading = name;\n }\n requirePackage(data) {\n app.extensionManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions\"),\n body: {\n data\n }\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n const extensionId = response.id;\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_install', {\n extension: extensionId\n }));\n window.location.href = \"\".concat(app.forum.attribute('adminUrl'), \"#/extension/\").concat(extensionId);\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n checkForUpdates() {\n this.setLoading('check');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/check-for-updates\")\n }).then(response => {\n if (response.processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response;\n this.extensionUpdates = this.formatExtensionUpdates(response);\n this.coreUpdate = this.formatCoreUpdate(response);\n this.setLoading(null);\n m.redraw();\n }\n }).catch(errorHandler).finally(() => {\n m.redraw();\n });\n }\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.minor_update_confirmation.content')))) {\n app.modal.show(LoadingModal);\n this.setLoading('minor-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/minor-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n }\n updateExtension(extension, updateMode) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n app.request({\n method: 'PATCH',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(extension.id),\n body: {\n data: {\n updateMode\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title\n }));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.setLoading('global-update');\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/global-update\")\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).finally(() => {\n app.modal.close();\n m.redraw();\n });\n }\n formatExtensionUpdates(lastUpdateCheck) {\n var _lastUpdateCheck$upda, _lastUpdateCheck$upda2;\n this.packageUpdates = {};\n lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda2 = _lastUpdateCheck$upda.installed) == null ? void 0 : _lastUpdateCheck$upda2.filter(composerPackage => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n return extension && safeToUpdate;\n });\n return Object.values(app.data.extensions).filter(extension => this.packageUpdates[extension.id]);\n }\n formatCoreUpdate(lastUpdateCheck) {\n var _lastUpdateCheck$upda3, _lastUpdateCheck$upda4;\n const core = lastUpdateCheck == null ? void 0 : (_lastUpdateCheck$upda3 = lastUpdateCheck.updates) == null ? void 0 : (_lastUpdateCheck$upda4 = _lastUpdateCheck$upda3.installed) == null ? void 0 : _lastUpdateCheck$upda4.filter(composerPackage => composerPackage.name === 'flarum/core').pop();\n if (!core) return null;\n return {\n package: core,\n extension: {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n // @ts-ignore\n backgroundImage: \"url(\".concat(app.data.resources[0]['attributes']['baseUrl'], \"/assets/extensions/flarum-extension-manager/flarum.svg\")\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-extension-manager.admin.updater.flarum'))\n }\n }\n }\n };\n }\n majorUpdate(_ref) {\n let {\n dryRun\n } = _ref;\n app.extensionManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n const updateState = this.lastUpdateRun.major;\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/major-update\"),\n body: {\n data: {\n dryRun\n }\n }\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.update_successful'));\n window.location.reload();\n }\n }).catch(errorHandler).catch(e => {\n var _e$response, _e$response$errors, _e$response$errors$po;\n app.modal.close();\n updateState.status = 'failure';\n updateState.incompatibleExtensions = (_e$response = e.response) == null ? void 0 : (_e$response$errors = _e$response.errors) == null ? void 0 : (_e$response$errors$po = _e$response$errors.pop()) == null ? void 0 : _e$response$errors$po.incompatible_extensions;\n }).finally(() => {\n m.redraw();\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ControlSectionState', ControlSectionState);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\nexport default class ExtensionManagerState {\n constructor() {\n _defineProperty(this, \"queue\", new QueueState());\n _defineProperty(this, \"control\", new ControlSectionState());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/states/ExtensionManagerState', ExtensionManagerState);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Component');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LoadingIndicator');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Tooltip');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Icon');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/ItemList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Link');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/classList');","import Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nexport default class Label extends Component {\n view(vnode) {\n const {\n className,\n type,\n ...attrs\n } = this.attrs;\n return m(\"span\", Object.assign({\n className: classList(['Label', \"Label--\".concat(this.attrs.type), className])\n }, attrs), vnode.children);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Label', Label);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Modal');","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n title() {\n return app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(this.attrs.task.operation()));\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(\"div\", {\n className: \"TaskOutputModal-data\"\n }, this.attrs.task.status() === 'failure' && m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.guessed_cause')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-guessed-cause\"\n }, this.attrs.task.guessedCause() && app.translator.trans('flarum-extension-manager.admin.exceptions.guessed_cause.' + this.attrs.task.guessedCause()) || app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.cause_unknown'))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.command')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-command\"\n }, m(\"code\", null, \"$ composer \", this.attrs.task.command()))), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.sections.queue.output_modal.output')), m(\"div\", {\n className: \"FormControl TaskOutputModal-data-output\"\n }, m(\"code\", null, m(\"pre\", null, this.attrs.task.output()))))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/TaskOutputModal', TaskOutputModal);","import duration from 'dayjs/plugin/duration';\nexport default function humanDuration(start, end) {\n dayjs.extend(duration);\n const durationTime = dayjs(end).diff(start);\n return dayjs.duration(durationTime).humanize();\n}\nflarum.reg.add('flarum-extension-manager', 'admin/utils/humanDuration', humanDuration);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return m(\"nav\", {\n className: \"Pagination UserListPage-gridPagination\"\n }, m(Button, {\n disabled: !this.attrs.list.hasPrev() || app.extensionManager.control.isLoading(),\n title: app.translator.trans('core.admin.users.pagination.back_button'),\n onclick: () => this.attrs.list.prev(),\n icon: \"fas fa-chevron-left\",\n className: \"Button Button--icon UserListPage-backBtn\"\n }), m(\"span\", {\n className: \"UserListPage-pageNumber\"\n }, app.translator.trans('core.admin.users.pagination.page_counter', {\n current: this.attrs.list.pageNumber() + 1,\n total: this.attrs.list.getTotalPages()\n })), m(Button, {\n disabled: !this.attrs.list.hasNext() || app.extensionManager.control.isLoading(),\n title: app.translator.trans('core.admin.users.pagination.next_button'),\n onclick: () => this.attrs.list.next(),\n icon: \"fas fa-chevron-right\",\n className: \"Button Button--icon UserListPage-nextBtn\"\n }));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Pagination', Pagination);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Icon from 'flarum/common/components/Icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\nimport Link from 'flarum/common/components/Link';\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Pagination from './Pagination';\nexport default class QueueSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n app.extensionManager.queue.load();\n }\n view() {\n return m(\"section\", {\n id: \"ExtensionManager-queueSection\",\n className: \"ExtensionPage-permissions ExtensionManager-queueSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header ExtensionManager-queueSection-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.title')), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.queue.load(),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.refresh'),\n disabled: app.extensionManager.control.isLoading()\n }))), m(\"div\", {\n className: \"container\"\n }, this.queueTable()));\n }\n columns() {\n const items = new ItemList();\n items.add('operation', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.operation')),\n content: task => m(\"div\", {\n className: \"ExtensionManager-queueTable-operation\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-icon\"\n }, this.operationIcon(task.operation())), m(\"span\", {\n className: \"ExtensionManager-queueTable-operation-name\"\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.operations.\".concat(task.operation()))))\n }, 80);\n items.add('package', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.package')),\n content: task => {\n var _task$package;\n const extension = app.data.extensions[(_task$package = task.package()) == null ? void 0 : _task$package.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n return extension ? m(Link, {\n className: \"ExtensionManager-queueTable-package\",\n href: app.route('extension', {\n id: extension.id\n })\n }, m(\"div\", {\n className: \"ExtensionManager-queueTable-package-icon ExtensionIcon\",\n style: extension.icon\n }, !!extension.icon && m(Icon, {\n name: extension.icon.name\n })), m(\"div\", {\n className: \"ExtensionManager-queueTable-package-details\"\n }, m(\"span\", {\n className: \"ExtensionManager-queueTable-package-title\"\n }, extension.extra['flarum-extension'].title), m(\"span\", {\n className: \"ExtensionManager-queueTable-package-name\"\n }, task.package()))) : task.package();\n }\n }, 75);\n items.add('status', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.status')),\n content: task => m('[', null, m(Label, {\n className: \"ExtensionManager-queueTable-status\",\n type: {\n running: 'neutral',\n failure: 'error',\n pending: 'warning',\n success: 'success'\n }[task.status()]\n }, app.translator.trans(\"flarum-extension-manager.admin.sections.queue.statuses.\".concat(task.status()))), ['pending', 'running'].includes(task.status()) && m(LoadingIndicator, {\n size: \"small\",\n display: \"inline\"\n }))\n }, 70);\n items.add('elapsedTime', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.elapsed_time')),\n content: task => !task.startedAt() || !task.finishedAt() ? app.translator.trans('flarum-extension-manager.admin.sections.queue.task_just_started') : m(Tooltip, {\n text: \"\".concat(dayjs(task.startedAt()).format('LL LTS'), \" \").concat(dayjs(task.finishedAt()).format('LL LTS'))\n }, m(\"span\", null, humanDuration(task.startedAt(), task.finishedAt())))\n }, 65);\n items.add('memoryUsed', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.peak_memory_used')),\n content: task => m(\"span\", null, task.peakMemoryUsed())\n }, 60);\n items.add('details', {\n label: extractText(app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')),\n content: task => m(Button, {\n className: \"Button Button--icon Table-controls-item\",\n icon: \"fas fa-file-alt\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.sections.queue.columns.details')\n // @todo fix in core\n // @ts-ignore\n ,\n onclick: () => app.modal.show(TaskOutputModal, {\n task\n }),\n disabled: ['pending', 'running'].includes(task.status())\n }),\n className: 'Table-controls'\n }, 55);\n return items;\n }\n queueTable() {\n const tasks = app.extensionManager.queue.getItems();\n if (!tasks) {\n return m(LoadingIndicator, null);\n }\n if (tasks && !tasks.length) {\n return m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.queue.none'));\n }\n const columns = this.columns();\n return m('[', null, m(\"table\", {\n className: \"Table ExtensionManager-queueTable\"\n }, m(\"thead\", null, m(\"tr\", null, columns.toArray().map((item, index) => m(\"th\", {\n key: index\n }, item.label)))), m(\"tbody\", null, tasks.map((task, index) => m(\"tr\", {\n key: index\n }, columns.toArray().map((item, index) => {\n const {\n label,\n content,\n ...attrs\n } = item;\n return m(\"td\", Object.assign({\n key: index\n }, attrs), content(task));\n }))))), m(Pagination, {\n list: app.extensionManager.queue\n }));\n }\n operationIcon(operation) {\n return m(Icon, {\n name: {\n update_check: 'fas fa-sync-alt',\n update_major: 'fas fa-play',\n update_minor: 'fas fa-play',\n update_global: 'fas fa-play',\n extension_install: 'fas fa-download',\n extension_remove: 'fas fa-times',\n extension_update: 'fas fa-arrow-alt-circle-up',\n why_not: 'fas fa-exclamation-circle'\n }[operation]\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/QueueSection', QueueSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Alert');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nexport default class Installer extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"packageName\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.packageName = Stream('');\n }\n view() {\n return m(\"div\", {\n className: \"Form-group ExtensionManager-installer\"\n }, m(\"label\", {\n htmlFor: \"install-extension\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.extensions.install_help', {\n extiverse: m(\"a\", {\n href: \"https://extiverse.com\"\n }, \"extiverse.com\"),\n semantic_link: m(\"a\", {\n href: \"https://devhints.io/semver\"\n }),\n code: m(\"code\", null)\n })), m(\"div\", {\n className: \"FormControl-container\"\n }, m(\"input\", {\n className: \"FormControl\",\n id: \"install-extension\",\n placeholder: \"vendor/package-name\",\n bidi: this.packageName\n }), m(Button, {\n className: \"Button\",\n icon: \"fas fa-download\",\n onclick: this.onsubmit.bind(this),\n loading: app.extensionManager.control.isLoading('extension-install'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.extensions.proceed'))));\n }\n data() {\n return {\n package: this.packageName()\n };\n }\n onsubmit() {\n app.extensionManager.control.requirePackage(this.data());\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Installer', Installer);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/humanTime');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport errorHandler from '../utils/errorHandler';\nexport default class WhyNotModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"loading\", true);\n _defineProperty(this, \"whyNot\", null);\n }\n className() {\n return 'Modal--large WhyNotModal';\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.why_not_modal.title');\n }\n oncreate(vnode) {\n super.oncreate(vnode);\n this.requestWhyNot();\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, this.loading ? m(LoadingIndicator, null) : m(\"pre\", {\n className: \"WhyNotModal-contents\"\n }, this.whyNot));\n }\n requestWhyNot() {\n app.request({\n method: 'POST',\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/why-not\"),\n body: {\n data: {\n package: this.attrs.package\n }\n }\n }).then(response => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n }).catch(errorHandler);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/WhyNotModal', WhyNotModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Dropdown');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport Icon from 'flarum/common/components/Icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\nimport Dropdown from 'flarum/common/components/Dropdown';\nexport default class ExtensionItem extends Component {\n view(vnode) {\n var _updates$latestMinor;\n const {\n extension,\n updates,\n onClickUpdate,\n whyNotWarning,\n isCore,\n isDanger\n } = this.attrs;\n const latestVersion = (_updates$latestMinor = updates['latest-minor']) != null ? _updates$latestMinor : updates['latest-major'] && !isCore ? updates['latest-major'] : null;\n return m(\"div\", {\n className: classList({\n 'ExtensionManager-extension': true,\n 'ExtensionManager-extension--core': isCore,\n 'ExtensionManager-extension--danger': isDanger\n })\n }, m(\"div\", {\n className: \"ExtensionManager-extension-icon ExtensionIcon\",\n style: extension.icon\n }, extension.icon ? m(Icon, {\n name: extension.icon.name\n }) : ''), m(\"div\", {\n className: \"ExtensionManager-extension-info\"\n }, m(\"div\", {\n className: \"ExtensionManager-extension-name\"\n }, extension.extra['flarum-extension'].title), m(\"div\", {\n className: \"ExtensionManager-extension-version\"\n }, m(\"span\", {\n className: \"ExtensionManager-extension-version-current\"\n }, this.version(updates['version'])), latestVersion ? m(Label, {\n className: \"ExtensionManager-extension-version-latest\",\n type: updates['latest-minor'] ? 'success' : 'warning'\n }, this.version(latestVersion)) : null)), m(\"div\", {\n className: \"ExtensionManager-extension-controls\"\n }, onClickUpdate && typeof onClickUpdate === 'function' ? m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button Button--icon Button--flat\",\n onclick: onClickUpdate,\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.update')\n })) : onClickUpdate ? m(Dropdown, {\n buttonClassName: \"Button Button--icon Button--flat\",\n icon: \"fas fa-arrow-alt-circle-up\",\n label: app.translator.trans('flarum-extension-manager.admin.extensions.update')\n }, m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button\",\n onclick: onClickUpdate.soft\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_soft_label')), m(Button, {\n icon: \"fas fa-arrow-alt-circle-up\",\n className: \"Button\",\n onclick: onClickUpdate.hard,\n disabled: !updates['direct-dependency']\n }, app.translator.trans('flarum-extension-manager.admin.extensions.update_hard_label'))) : null, whyNotWarning ? m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n }, m(Button, {\n icon: \"fas fa-exclamation-circle\",\n className: \"Button Button--icon Button--flat Button--danger\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: extension.name\n }),\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.extensions.check_why_it_failed_updating')\n })) : null));\n }\n version(v) {\n return v.charAt(0) === 'v' ? v.substring(1) : v;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ExtensionItem', ExtensionItem);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Alert from 'flarum/common/components/Alert';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport classList from 'flarum/common/utils/classList';\nexport default class MajorUpdater extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"updateState\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.updateState = this.attrs.updateState;\n }\n view() {\n // @todo move Form-group--danger class to core for reuse\n return m(\"div\", {\n className: classList('Form-group Form-group--danger ExtensionManager-majorUpdate', {\n 'ExtensionManager-majorUpdate--failed': this.updateState.status === 'failure',\n 'ExtensionManager-majorUpdate--incompatibleExtensions': this.updateState.incompatibleExtensions.length\n })\n }, m(\"img\", {\n alt: \"flarum logo\",\n src: app.forum.attribute('baseUrl') + '/assets/extensions/flarum-extension-manager/flarum.svg'\n }), m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.major_updater.title', {\n version: this.attrs.coreUpdate['latest-major']\n })), m(\"p\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.description')), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, m(Tooltip, {\n text: app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run_help')\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-vial\",\n onclick: this.update.bind(this, true),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.dry_run'))), m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-play\",\n onclick: this.update.bind(this, false),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m(\"div\", {\n className: \"ExtensionManager-majorUpdate-incompatibleExtensions ExtensionManager-extensions-grid\"\n }, this.updateState.incompatibleExtensions.map(extension => m(ExtensionItem, {\n extension: app.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')],\n updates: {},\n onClickUpdate: null,\n isDanger: true\n }))) : null, this.updateState.status === 'failure' ? m(Alert, {\n type: \"error\",\n className: \"ExtensionManager-majorUpdate-failure\",\n dismissible: false,\n controls: [m(Button, {\n className: \"Button Button--text ExtensionManager-majorUpdate-failure-details\",\n icon: \"fas fa-question-circle\",\n onclick: () => app.modal.show(WhyNotModal, {\n package: 'flarum/core'\n })\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.why'))]\n }, m(\"p\", {\n className: \"ExtensionManager-majorUpdate-failure-desc\"\n }, app.translator.trans('flarum-extension-manager.admin.major_updater.failure.desc'))) : null);\n }\n update(dryRun) {\n app.extensionManager.control.majorUpdate({\n dryRun\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/MajorUpdater', MajorUpdater);","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport ItemList from 'flarum/common/utils/ItemList';\nexport default class Updater extends Component {\n view() {\n const core = app.extensionManager.control.coreUpdate;\n return [m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.updater.updater_title')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.updater_help')), this.lastUpdateCheckView(), m(\"div\", {\n className: \"ExtensionManager-updaterControls\"\n }, this.controlItems().toArray()), this.availableUpdatesView()), core && core.package['latest-major'] ? m(MajorUpdater, {\n coreUpdate: core.package,\n updateState: app.extensionManager.control.lastUpdateRun.major\n }) : null];\n }\n lastUpdateCheckView() {\n var _app$extensionManager;\n return ((_app$extensionManager = app.extensionManager.control.lastUpdateCheck) == null ? void 0 : _app$extensionManager.checkedAt) && m(\"p\", {\n className: \"ExtensionManager-lastUpdatedAt\"\n }, m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-label\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.last_update_checked_at')), m(\"span\", {\n className: \"ExtensionManager-lastUpdatedAt-value\"\n }, humanTime(app.extensionManager.control.lastUpdateCheck.checkedAt))) || null;\n }\n availableUpdatesView() {\n const state = app.extensionManager.control;\n if (app.extensionManager.control.isLoading('check') || app.extensionManager.control.isLoading('global-update')) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(LoadingIndicator, null));\n }\n const hasMinorCoreUpdate = state.coreUpdate && state.coreUpdate.package['latest-minor'];\n if (!(state.extensionUpdates.length || hasMinorCoreUpdate)) {\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(\"span\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.updater.up_to_date')));\n }\n return m(\"div\", {\n className: \"ExtensionManager-extensions\"\n }, m(\"div\", {\n className: \"ExtensionManager-extensions-grid\"\n }, hasMinorCoreUpdate ? m(ExtensionItem, {\n extension: state.coreUpdate.extension,\n updates: state.coreUpdate.package,\n isCore: true,\n onClickUpdate: () => state.updateCoreMinor(),\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes('flarum/core')\n }) : null, state.extensionUpdates.map(extension => m(ExtensionItem, {\n extension: extension,\n updates: state.packageUpdates[extension.id],\n onClickUpdate: {\n soft: () => state.updateExtension(extension, 'soft'),\n hard: () => state.updateExtension(extension, 'hard')\n },\n whyNotWarning: state.lastUpdateRun.limitedPackages().includes(extension.name)\n }))));\n }\n controlItems() {\n const items = new ItemList();\n items.add('updateCheck', m(Button, {\n className: \"Button\",\n icon: \"fas fa-sync-alt\",\n onclick: () => app.extensionManager.control.checkForUpdates(),\n loading: app.extensionManager.control.isLoading('check'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.check_for_updates')), 100);\n items.add('globalUpdate', m(Button, {\n className: \"Button\",\n icon: \"fas fa-play\",\n onclick: () => app.extensionManager.control.updateGlobally(),\n loading: app.extensionManager.control.isLoading('global-update'),\n disabled: app.extensionManager.control.hasOperationRunning()\n }, app.translator.trans('flarum-extension-manager.admin.updater.run_global_update')));\n return items;\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/Updater', Updater);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Form');","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Form from 'flarum/common/components/Form';\nexport default class ControlSection extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n view() {\n return m(\"div\", {\n className: \"ExtensionPage-permissions ExtensionManager-controlSection\"\n }, m(\"div\", {\n className: \"ExtensionPage-permissions-header\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"h2\", {\n className: \"ExtensionTitle\"\n }, app.translator.trans('flarum-extension-manager.admin.sections.control.title')))), m(\"div\", {\n className: \"container\"\n }, app.data['flarum-extension-manager.writable_dirs'] ? m(Form, null, m(Installer, null), m(Updater, null)) : m(\"div\", {\n className: \"Form-group\"\n }, m(Alert, {\n type: \"warning\",\n dismissible: false\n }, app.translator.trans('flarum-extension-manager.admin.file_permissions')))));\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ControlSection', ControlSection);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FormGroup');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport FormGroup from 'flarum/common/components/FormGroup';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nexport default class ConfigureJson extends Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"settings\", {});\n _defineProperty(this, \"initialSettings\", null);\n _defineProperty(this, \"loading\", false);\n _defineProperty(this, \"type\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.submit(true);\n }\n className() {\n return '';\n }\n view() {\n return m(\"div\", {\n className: classList('FormSection', this.className())\n }, m(\"label\", null, this.title()), this.content(), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, this.submitButton()));\n }\n submitButton() {\n return [m(Button, {\n className: \"Button Button--primary\",\n loading: this.loading,\n onclick: () => this.submit(false),\n disabled: !this.isDirty()\n }, app.translator.trans('core.admin.settings.submit_button'))];\n }\n customSettingComponents() {\n return FormGroup.prototype.customFieldComponents();\n }\n setting(key) {\n var _this$settings$key;\n return (_this$settings$key = this.settings[key]) != null ? _this$settings$key : this.settings[key] = Stream();\n }\n submit(readOnly) {\n this.loading = true;\n const configuration = {};\n Object.keys(this.settings).forEach(key => {\n configuration[key] = this.settings[key]();\n });\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/extension-manager/composer',\n body: {\n type: this.type,\n data: readOnly ? null : configuration\n }\n }).then(_ref => {\n let {\n data\n } = _ref;\n Object.keys(data).forEach(key => {\n this.settings[key] = Stream(data[key]);\n });\n this.initialSettings = Array.isArray(data) ? {} : data;\n }).finally(() => {\n this.loading = false;\n m.redraw();\n });\n }\n isDirty() {\n return JSON.stringify(this.initialSettings) !== JSON.stringify(this.settings);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureJson', ConfigureJson);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Select');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nexport default class RepositoryModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"repository\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.name = Stream(this.attrs.name || '');\n this.repository = Stream(this.attrs.repository || {\n type: 'composer',\n url: ''\n });\n }\n className() {\n return 'RepositoryModal Modal--small';\n }\n title() {\n const context = this.attrs.repository ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.composer.\".concat(context, \"_repository_label\"));\n }\n content() {\n const types = {\n composer: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.composer'),\n vcs: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.vcs'),\n path: app.translator.trans('flarum-extension-manager.admin.composer.repositories.types.path')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.name_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.name\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.type_label')), m(Select, {\n options: types,\n value: this.repository().type,\n onchange: value => this.repository({\n ...this.repository(),\n type: value\n })\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.url')), m(\"input\", {\n className: \"FormControl\",\n onchange: e => this.repository({\n ...this.repository(),\n url: e.target.value\n }),\n value: this.repository().url\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.add_modal.submit_button'))));\n }\n submit() {\n this.attrs.onsubmit(this.repository(), this.name());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/RepositoryModal', RepositoryModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport RepositoryModal from './RepositoryModal';\nexport default class ConfigureComposer extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'composer');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.composer.title');\n }\n className() {\n return 'ConfigureComposer';\n }\n content() {\n return m(\"div\", {\n className: \"Form ExtensionManager-SettingsGroups-content\"\n }, this.attrs.buildSettingComponent.call(this, {\n setting: 'minimum-stability',\n label: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.label'),\n help: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.help'),\n type: 'select',\n options: {\n stable: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.stable'),\n RC: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.rc'),\n beta: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.beta'),\n alpha: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.alpha'),\n dev: app.translator.trans('flarum-extension-manager.admin.composer.minimum_stability.options.dev')\n }\n }), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.composer.repositories.label')), m(\"div\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.composer.repositories.help')), m(\"div\", {\n className: \"ConfigureComposer-repositories\"\n }, Object.keys(this.setting('repositories')() || {}).map(name => {\n const repository = this.setting('repositories')()[name];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: {\n composer: 'fas fa-cubes',\n vcs: 'fas fa-code-branch',\n path: 'fas fa-folder'\n }[repository.type],\n onclick: () => app.modal.show(RepositoryModal, {\n name,\n repository,\n onsubmit: (repository, newName) => {\n const repositories = this.setting('repositories')();\n delete repositories[name];\n this.setting('repositories')(repositories);\n this.onchange(repository, newName);\n }\n })\n }, name, \" (\", repository.type, \")\"), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.composer.delete_repository_confirmation')))) {\n const repositories = {\n ...this.setting('repositories')()\n };\n delete repositories[name];\n this.setting('repositories')(repositories);\n }\n }\n }));\n }))));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n onclick: () => app.modal.show(RepositoryModal, {\n onsubmit: this.onchange.bind(this)\n })\n }, app.translator.trans('flarum-extension-manager.admin.composer.add_repository_label')));\n return items;\n }\n onchange(repository, name) {\n this.setting('repositories')({\n ...this.setting('repositories')(),\n [name]: repository\n });\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureComposer', ConfigureComposer);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/listItems');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Modal from 'flarum/common/components/Modal';\nimport app from 'flarum/admin/app';\nimport Select from 'flarum/common/components/Select';\nimport Stream from 'flarum/common/utils/Stream';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class AuthMethodModal extends Modal {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"host\", void 0);\n _defineProperty(this, \"token\", void 0);\n }\n oninit(vnode) {\n super.oninit(vnode);\n this.type = Stream(this.attrs.type || 'bearer');\n this.host = Stream(this.attrs.host || '');\n this.token = Stream(this.attrs.token || '');\n }\n className() {\n return 'AuthMethodModal Modal--small';\n }\n title() {\n const context = this.attrs.host ? 'edit' : 'add';\n return app.translator.trans(\"flarum-extension-manager.admin.auth_config.\".concat(context, \"_label\"));\n }\n content() {\n const types = {\n 'github-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.github-oauth'),\n 'gitlab-oauth': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-oauth'),\n 'gitlab-token': app.translator.trans('flarum-extension-manager.admin.auth_config.types.gitlab-token'),\n bearer: app.translator.trans('flarum-extension-manager.admin.auth_config.types.bearer')\n };\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.type_label')), m(Select, {\n options: types,\n value: this.type(),\n onchange: this.type\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_label')), m(\"input\", {\n className: \"FormControl\",\n bidi: this.host,\n placeholder: app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.host_placeholder')\n })), m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.token_label')), m(\"textarea\", {\n className: \"FormControl\",\n oninput: e => this.token(e.target.value),\n rows: \"6\",\n placeholder: this.token().startsWith('unchanged:') ? extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.unchanged_token_placeholder')) : ''\n }, this.token().startsWith('unchanged:') ? '' : this.token())), m(\"div\", {\n className: \"Form-group\"\n }, m(Button, {\n className: \"Button Button--primary\",\n onclick: this.submit.bind(this)\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_modal.submit_button'))));\n }\n submit() {\n this.attrs.onsubmit(this.type(), this.host(), this.token());\n this.hide();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/AuthMethodModal', AuthMethodModal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/admin/app';\nimport ConfigureJson from './ConfigureJson';\nimport Button from 'flarum/common/components/Button';\nimport AuthMethodModal from './AuthMethodModal';\nimport extractText from 'flarum/common/utils/extractText';\nexport default class ConfigureAuth extends ConfigureJson {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"type\", 'auth');\n }\n title() {\n return app.translator.trans('flarum-extension-manager.admin.auth_config.title');\n }\n className() {\n return 'ConfigureAuth';\n }\n content() {\n const authSettings = Object.keys(this.settings);\n const hasAuthSettings = authSettings.length && authSettings.every(type => {\n const data = this.settings[type]();\n return Array.isArray(data) ? data.length : Object.keys(data).length;\n });\n return m(\"div\", {\n className: \"ExtensionManager-SettingsGroups-content\"\n }, hasAuthSettings ? authSettings.map(type => {\n const hosts = this.settings[type]();\n return m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans(\"flarum-extension-manager.admin.auth_config.types.\".concat(type))), m(\"div\", {\n className: \"ConfigureAuth-hosts\"\n }, Object.keys(hosts).map(host => {\n const data = hosts[host];\n return m(\"div\", {\n className: \"ButtonGroup ButtonGroup--full\"\n }, m(Button, {\n className: \"Button\",\n icon: \"fas fa-key\",\n onclick: () => app.modal.show(AuthMethodModal, {\n type,\n host,\n token: data,\n onsubmit: this.onchange.bind(this, host)\n })\n }, host), m(Button, {\n className: \"Button Button--icon\",\n icon: \"fas fa-trash\",\n \"aria-label\": app.translator.trans('flarum-extension-manager.admin.auth_config.delete_label'),\n onclick: () => {\n if (confirm(extractText(app.translator.trans('flarum-extension-manager.admin.auth_config.delete_confirmation')))) {\n const newType = {\n ...this.setting(type)()\n };\n delete newType[host];\n if (Object.keys(newType).length) {\n this.setting(type)(newType);\n } else {\n delete this.settings[type];\n }\n }\n }\n }));\n })));\n }) : m(\"span\", {\n className: \"helpText\"\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.no_auth_methods_configured')));\n }\n submitButton() {\n const items = super.submitButton();\n items.push(m(Button, {\n className: \"Button\",\n loading: this.loading,\n onclick: () => app.modal.show(AuthMethodModal, {\n onsubmit: this.onchange.bind(this, null)\n })\n }, app.translator.trans('flarum-extension-manager.admin.auth_config.add_label')));\n return items;\n }\n onchange(oldHost, type, host, token) {\n const data = {\n ...this.setting(type)()\n };\n if (oldHost) {\n delete data[oldHost];\n }\n data[host] = token;\n this.setting(type)(data);\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/ConfigureAuth', ConfigureAuth);","import app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\nimport ConfigureComposer from './ConfigureComposer';\nimport Alert from 'flarum/common/components/Alert';\nimport listItems from 'flarum/common/helpers/listItems';\nimport ConfigureAuth from './ConfigureAuth';\nexport default class SettingsPage extends ExtensionPage {\n content() {\n const settings = app.registry.getSettings(this.extension.id);\n const warnings = [app.translator.trans('flarum-extension-manager.admin.settings.access_warning')];\n if (app.data.debugEnabled) warnings.push(app.translator.trans('flarum-extension-manager.admin.settings.debug_mode_warning'));\n return m(\"div\", {\n className: \"ExtensionPage-settings\"\n }, m(\"div\", {\n className: \"container\"\n }, m(\"div\", {\n className: \"ExtensionManager-warnings Form-group\"\n }, m(Alert, {\n className: \"ExtensionManager-primaryWarning\",\n type: \"warning\",\n dismissible: false\n }, m(\"ul\", null, listItems(warnings)))), settings ? m(\"div\", {\n className: \"FormSectionGroup ExtensionManager-SettingsGroups\"\n }, m(\"div\", {\n className: \"FormSection\"\n }, m(\"label\", null, app.translator.trans('flarum-extension-manager.admin.settings.title')), m(\"div\", {\n className: \"Form\"\n }, settings.map(this.buildSettingComponent.bind(this))), m(\"div\", {\n className: \"Form-group Form--controls\"\n }, this.submitButton())), m(ConfigureComposer, {\n buildSettingComponent: this.buildSettingComponent\n }), m(ConfigureAuth, {\n buildSettingComponent: this.buildSettingComponent\n })) : m(\"h3\", {\n className: \"ExtensionPage-subHeader\"\n }, app.translator.trans('core.admin.extension.no_settings'))));\n }\n sections(vnode) {\n const items = super.sections(vnode);\n items.setPriority('content', 10);\n items.add('control', m(ControlSection, null), 8);\n if (app.data.settings['flarum-extension-manager.queue_jobs'] !== '0' && app.data.settings['flarum-extension-manager.queue_jobs']) {\n items.add('queue', m(QueueSection, null), 5);\n }\n items.remove('permissions');\n return items;\n }\n onsaved() {\n super.onsaved();\n m.redraw();\n }\n}\nflarum.reg.add('flarum-extension-manager', 'admin/components/SettingsPage', SettingsPage);","import Extend from 'flarum/common/extenders';\nimport app from 'flarum/admin/app';\nimport extractText from 'flarum/common/utils/extractText';\nimport SettingsPage from './components/SettingsPage';\nexport default [new Extend.Admin().setting(() => ({\n setting: 'flarum-extension-manager.queue_jobs',\n label: app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs'),\n help: m.trust(extractText(app.translator.trans('flarum-extension-manager.admin.settings.queue_jobs_help', {\n basic_impl_link: 'https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting',\n adv_impl_link: 'https://discuss.flarum.org/d/21873-redis-sessions-cache-queues',\n php_version: \"<strong>\".concat(app.data.phpVersion, \"</strong>\"),\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership'\n }))),\n type: 'boolean',\n disabled: app.data['flarum-extension-manager.using_sync_queue']\n})).setting(() => ({\n setting: 'flarum-extension-manager.task_retention_days',\n label: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days'),\n help: app.translator.trans('flarum-extension-manager.admin.settings.task_retention_days_help'),\n type: 'number'\n})).page(SettingsPage)];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport ExtensionManagerState from './states/ExtensionManagerState';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-extension-manager', app => {\n app.store.models['extension-manager-tasks'] = Task;\n app.extensionManager = new ExtensionManagerState();\n if (app.data['flarum-extension-manager.using_sync_queue']) {\n app.data.settings['flarum-extension-manager.queue_jobs'] = '0';\n }\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-extension-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n items.add('remove', m(Button, {\n className: \"Button Button--danger\",\n icon: \"fas fa-times\",\n onclick: () => {\n app.modal.show(LoadingModal);\n app.request({\n url: \"\".concat(app.forum.attribute('apiUrl'), \"/extension-manager/extensions/\").concat(this.extension.id),\n method: 'DELETE'\n }).then(response => {\n if (response != null && response.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({\n type: 'success'\n }, app.translator.trans('flarum-extension-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n }).finally(() => {\n app.modal.close();\n });\n }\n }, app.translator.trans('flarum-extension-manager.admin.extensions.remove')));\n });\n});"],"names":["module","exports","t","s","n","i","e","r","o","u","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","p","f","$l","m","l","$","Math","ceil","floor","y","abs","g","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","flarum","reg","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","options","result","Array","isArray","Task","status","operation","command","package","output","guessedCause","createdAt","startedAt","finishedAt","peakMemoryUsed","isFinite","TypeError","concat","UNITS","bits","binary","signed","isNegative","prefix","localeOptions","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","length","toPrecision","prettyBytes","jumpToQueue","route","set","id","setTimeout","_document$getElementB","document","getElementById","scrollIntoView","block","_typeof","iterator","constructor","_defineProperty","arg","input","hint","prim","toPrimitive","res","toPropertyKey","configurable","writable","window","QueueState","load","params","actionTaken","_params","tasks","page","limit","offset","then","data","_data$payload$meta","total","payload","meta","redraw","find","task","pollQueue","location","reload","getItems","getTotalPages","pageNumber","hasPrev","hasNext","prev","next","polling","clearTimeout","hasPending","_this$tasks","error","response","errors","includes","code","guessed_cause","type","ControlSectionState","lastUpdateRun","JSON","parse","limitedPackages","major","minor","global","lastUpdateCheck","extensionUpdates","formatExtensionUpdates","coreUpdate","formatCoreUpdate","isLoading","name","loading","hasOperationRunning","setLoading","requirePackage","method","url","body","processing","extensionId","extension","href","catch","errorHandler","finally","checkForUpdates","updateCoreMinor","confirm","updateExtension","updateMode","extra","title","updateGlobally","_lastUpdateCheck$upda","_lastUpdateCheck$upda2","packageUpdates","updates","installed","filter","composerPackage","safeToUpdate","values","_lastUpdateCheck$upda3","_lastUpdateCheck$upda4","core","pop","version","icon","backgroundImage","majorUpdate","_ref","dryRun","updateState","_e$response","_e$response$errors","_e$response$errors$po","incompatibleExtensions","incompatible_extensions","ExtensionManagerState","Label","view","vnode","className","attrs","assign","children","TaskOutputModal","content","humanDuration","start","end","dayjs","extend","durationTime","diff","Pagination","disabled","list","onclick","current","QueueSection","oninit","super","queueTable","columns","items","label","operationIcon","_task$package","style","running","failure","pending","success","size","display","text","toArray","item","index","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","Installer","arguments","packageName","htmlFor","extiverse","semantic_link","placeholder","bidi","onsubmit","WhyNotModal","oncreate","requestWhyNot","whyNot","reason","ExtensionItem","_updates$latestMinor","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","buttonClassName","soft","hard","v","charAt","substring","MajorUpdater","alt","src","update","dismissible","controls","Updater","lastUpdateCheckView","controlItems","availableUpdatesView","_app$extensionManager","checkedAt","state","hasMinorCoreUpdate","ControlSection","ConfigureJson","submit","submitButton","isDirty","customSettingComponents","setting","_this$settings$key","settings","readOnly","configuration","initialSettings","stringify","RepositoryModal","repository","context","types","composer","vcs","path","onchange","target","hide","ConfigureComposer","buildSettingComponent","help","stable","RC","beta","alpha","dev","newName","repositories","push","AuthMethodModal","host","token","bearer","oninput","rows","startsWith","ConfigureAuth","authSettings","hasAuthSettings","every","hosts","newType","oldHost","SettingsPage","warnings","sections","setPriority","remove","onsaved","trust","basic_impl_link","adv_impl_link","php_version","folder_perms_link","app","store","models","extensionManager","modal","show","request","forum","attribute","alerts","translator","trans","close"],"sourceRoot":""} |