{"version":3,"sources":["jsdelivr-header.js","/npm/picgo-plugin-gitee-uploader@1.1.2/dist/index.js"],"names":[],"mappings":"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","file":"/npm/picgo-plugin-gitee-uploader@1.1.2/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/picgo-plugin-gitee-uploader@1.1.2/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\nconst octokit_1 = require(\"./lib/octokit\");\r\nconst helper_1 = require(\"./lib/helper\");\r\nconst PluginName = 'picgo-plugin-gitee-uploader';\r\nconst UploaderName = 'gitee';\r\nfunction initOcto(ctx) {\r\n    const options = ctx.getConfig('picBed.' + UploaderName);\r\n    if (!options) {\r\n        throw new Error(\"Can't find gitee config:\" + ('picBed.' + UploaderName));\r\n    }\r\n    const ins = octokit_1.getIns(options, ctx);\r\n    return ins;\r\n}\r\nfunction notic(showNotification, title, body) {\r\n    showNotification({\r\n        title: 'gitee: ' + title,\r\n        body\r\n    });\r\n}\r\nconst SyncGithubMenu = {\r\n    label: 'Sync gitee',\r\n    async handle(ctx, { showNotification }) {\r\n        const octokit = initOcto(ctx);\r\n        notic(showNotification, 'Sync gitee...');\r\n        const githubDataJson = await octokit.getDataJson().catch(e => {\r\n            ctx.log.error(e);\r\n            notic(showNotification, 'Error at load dataJson', e.message);\r\n            throw e;\r\n        });\r\n        const uploaded = ctx.getConfig('uploaded');\r\n        const localDataJson = {\r\n            data: uploaded.filter(each => each.type === UploaderName).map(helper_1.zip),\r\n            lastSync: (ctx.getConfig(PluginName) || {}).lastSync\r\n        };\r\n        const { sha, lastSync, data } = githubDataJson;\r\n        if (localDataJson.lastSync > lastSync) {\r\n            try {\r\n                if (sha) {\r\n                    await octokit.updateDataJson({\r\n                        data: localDataJson,\r\n                        sha\r\n                    });\r\n                }\r\n                else {\r\n                    await octokit.createDataJson(localDataJson);\r\n                }\r\n            }\r\n            catch (e) {\r\n                ctx.log.error(e);\r\n                notic(showNotification, 'Error at sync github', e.message);\r\n                throw e;\r\n            }\r\n        }\r\n        else {\r\n            const newUploaded = data\r\n                .map(each => {\r\n                const obj = helper_1.unzip(each);\r\n                return Object.assign({}, obj, { type: UploaderName, imgUrl: octokit.parseUrl(obj.fileName) });\r\n            })\r\n                .concat(uploaded.filter(each => each.type !== UploaderName));\r\n            ctx.saveConfig({\r\n                uploaded: newUploaded,\r\n                [PluginName]: {\r\n                    lastSync\r\n                }\r\n            });\r\n        }\r\n        notic(showNotification, 'Sync successful', 'Succeed to sync gitee');\r\n    }\r\n};\r\nconst PullGithubMenu = {\r\n    label: 'Pull gitee',\r\n    handle: async (ctx, { showNotification }) => {\r\n        const octokit = initOcto(ctx);\r\n        notic(showNotification, 'Pull img from gitee...');\r\n        try {\r\n            const { tree } = await octokit.getPathTree();\r\n            const imgList = tree\r\n                .filter(each => /\\.(jpg|png|jpeg|gif)$/.test(each.path))\r\n                .map(each => {\r\n                const unzipImg = helper_1.unzip({\r\n                    f: each.path,\r\n                    s: each.sha\r\n                });\r\n                return Object.assign({}, unzipImg, { type: UploaderName, imgUrl: octokit.parseUrl(each.path) });\r\n            });\r\n            const uploaded = ctx\r\n                .getConfig('uploaded')\r\n                .filter(each => each.type !== UploaderName);\r\n            uploaded.unshift(...imgList);\r\n            ctx.saveConfig({\r\n                uploaded,\r\n                [PluginName]: {\r\n                    lastSync: helper_1.getNow()\r\n                }\r\n            });\r\n            notic(showNotification, 'Pull successful', 'Succeed to pull from gitee');\r\n        }\r\n        catch (e) {\r\n            ctx.log.error(e);\r\n            notic(showNotification, 'Error at pull from gitee', e.message);\r\n        }\r\n    }\r\n};\r\nconst guiMenu = ctx => {\r\n    return [SyncGithubMenu, PullGithubMenu];\r\n};\r\nconst handle = async (ctx) => {\r\n    let output = ctx.output;\r\n    const octokit = initOcto(ctx);\r\n    const ret = [];\r\n    const len = output.length;\r\n    let index = 0;\r\n    async function up() {\r\n        const img = output[index];\r\n        if (index >= len)\r\n            return;\r\n        if (!img) {\r\n            index++;\r\n            return up();\r\n        }\r\n        return octokit\r\n            .upload(img)\r\n            .then(({ imgUrl, sha }) => {\r\n            img.imgUrl = imgUrl;\r\n            img.sha = sha;\r\n            ret.push(img);\r\n            index++;\r\n            return up();\r\n        })\r\n            .catch(e => {\r\n            ctx.log.error(e);\r\n            ctx.emit('notification', {\r\n                title: 'gitee: 上传失败',\r\n                body: e.message,\r\n                text: ''\r\n            });\r\n            index++;\r\n            return up();\r\n        });\r\n    }\r\n    await up();\r\n    ctx.saveConfig({\r\n        [PluginName]: {\r\n            lastSync: helper_1.getNow()\r\n        }\r\n    });\r\n    ctx.output = ret;\r\n    return ctx;\r\n};\r\nasync function onRemove(files, { showNotification }) {\r\n    // console.log('1111 =?', this)\r\n    const rms = files.filter(each => each.type === UploaderName);\r\n    if (rms.length === 0)\r\n        return;\r\n    const self = this;\r\n    const ins = initOcto(self);\r\n    const fail = [];\r\n    for (let i = 0; i < rms.length; i++) {\r\n        const each = rms[i];\r\n        await ins.removeFile(each).catch((e) => {\r\n            self.log.error(e);\r\n            fail.push(each);\r\n        });\r\n    }\r\n    if (fail.length) {\r\n        // 确保主线程已经把文件从data.json删掉\r\n        const uploaded = self.getConfig('uploaded');\r\n        uploaded.unshift(...fail);\r\n        self.saveConfig({\r\n            uploaded,\r\n            [PluginName]: {\r\n                lastSync: helper_1.getNow()\r\n            }\r\n        });\r\n    }\r\n    notic(showNotification, '删除提示', fail.length === 0 ? '成功同步删除' : `删除失败${fail.length}个`);\r\n}\r\nconst config = (ctx) => {\r\n    let userConfig = ctx.getConfig(`picBed.${UploaderName}`);\r\n    if (!userConfig) {\r\n        userConfig = {};\r\n    }\r\n    const conf = [\r\n        {\r\n            name: 'repo',\r\n            type: 'input',\r\n            default: userConfig.repo || '',\r\n            required: true\r\n        },\r\n        {\r\n            name: 'branch',\r\n            type: 'input',\r\n            default: userConfig.branch || 'master',\r\n            required: false\r\n        },\r\n        {\r\n            name: 'token',\r\n            type: 'input',\r\n            default: userConfig.password || '',\r\n            required: true\r\n        },\r\n        {\r\n            name: 'path',\r\n            type: 'input',\r\n            default: userConfig.path || '',\r\n            required: false\r\n        },\r\n        {\r\n            name: 'customPath',\r\n            type: 'list',\r\n            default: userConfig.customPath || '',\r\n            required: false,\r\n            choices: [\r\n                {\r\n                    name: 'default',\r\n                    value: 'default'\r\n                },\r\n                {\r\n                    name: '年',\r\n                    value: 'year'\r\n                },\r\n                {\r\n                    name: '年季',\r\n                    value: 'yearQuarter'\r\n                },\r\n                {\r\n                    name: '年月',\r\n                    value: 'yearMonth'\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            name: 'customUrl',\r\n            type: 'input',\r\n            default: userConfig.customUrl || '',\r\n            required: false\r\n        }\r\n    ];\r\n    return conf;\r\n};\r\nconst syncConfig = (ctx) => {\r\n    let userConfig = ctx.getConfig(PluginName);\r\n    if (!userConfig) {\r\n        userConfig = {};\r\n    }\r\n    const conf = [\r\n        {\r\n            name: 'lastSync',\r\n            type: 'input',\r\n            default: userConfig.lastSync || '',\r\n            required: false\r\n        }\r\n    ];\r\n    return conf;\r\n};\r\nmodule.exports = (ctx) => {\r\n    const register = () => {\r\n        // const { gitee } = ctx.getConfig('picBed')\r\n        // if (!gitee.token) return\r\n        ctx.helper.uploader.register(UploaderName, { handle, config });\r\n        ctx.on('remove', onRemove);\r\n    };\r\n    return {\r\n        register,\r\n        guiMenu,\r\n        uploader: UploaderName,\r\n        config: syncConfig\r\n    };\r\n};\r\n"]}