{"version":3,"sources":["jsdelivr-header.js","/npm/ins-saver@0.5.0/dist/index.js"],"names":[],"mappings":"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","file":"/npm/ins-saver@0.5.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ins-saver@0.5.0/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\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nconst request_1 = __importDefault(require(\"request\"));\r\nconst fs_1 = __importDefault(require(\"fs\"));\r\nconst events_1 = __importDefault(require(\"events\"));\r\nconst url_1 = require(\"./utils/url\");\r\nconst Looper_1 = __importDefault(require(\"./helper/Looper\"));\r\nconst Parser_1 = __importDefault(require(\"./helper/Parser\"));\r\nconst enum_handler_1 = require(\"./enum/enum.handler\");\r\nconst msg_1 = require(\"./utils/msg\");\r\nconst path_1 = __importDefault(require(\"path\"));\r\nconst instagram_id_to_url_segment_1 = require(\"instagram-id-to-url-segment\");\r\nclass InsSaver {\r\n    constructor(config) {\r\n        this.init(config);\r\n    }\r\n    init(config) {\r\n        return __awaiter(this, void 0, void 0, function* () {\r\n            config.switchCookieInterval = config.switchCookieInterval || (1000 * 60 * 10);\r\n            config.useCookieMaxNum = config.useCookieMaxNum || 24;\r\n            config.outCookie = config.outCookie || ((cookie) => __awaiter(this, void 0, void 0, function* () { throw new Error(`cookie error ${JSON.stringify(cookie)}`); }));\r\n            config.noneCookie = config.noneCookie || (() => __awaiter(this, void 0, void 0, function* () { throw new Error(\"none cookie\"); }));\r\n            config.updateClaim = config.updateClaim || ((cookie) => __awaiter(this, void 0, void 0, function* () { console.info(`update x-ig-www-claim: ${cookie}`); }));\r\n            this.ready = false;\r\n            this.event = new events_1.default.EventEmitter();\r\n            this.queue = [];\r\n            this.regiteEvent();\r\n            this.config = config;\r\n            this.config.cookies = (config.cookies && config.cookies.length > 0) ? config.cookies :\r\n                (yield config.getCookie());\r\n            this.loop = new Looper_1.default(this.config, this.event);\r\n            this.parser = new Parser_1.default(this.loop);\r\n            this.event.addListener(\"error\", function (e) { console.error(\"ins-saver Error:\", e); });\r\n            this.config.cookies.length > 0 ? (this.ready = true, this.event.emit(enum_handler_1.EventHandlerType.HANDLE_QUEUE)) : ((0, msg_1.warn)(\"getCookie 获取到0个cookie, 请编写能正确返回cookie的异步函数！\"),\r\n                this.event.emit(enum_handler_1.EventHandlerType.HANDLE_NONE_COOKIE),\r\n                this.event.emit(\"error\", new Error(\"无可用cookie\")));\r\n        });\r\n    }\r\n    regiteEvent() {\r\n        const this_ = this;\r\n        this_.event.on(enum_handler_1.EventHandlerType.HANDLE_QUEUE, () => __awaiter(this, void 0, void 0, function* () {\r\n            while (this_.queue.length > 0 && this_.ready) {\r\n                const task = this_.queue.shift();\r\n                const callback = task.callback || ((json) => __awaiter(this, void 0, void 0, function* () { }));\r\n                let json;\r\n                try {\r\n                    switch (task.type) {\r\n                        case enum_handler_1.InsLinkType.POST:\r\n                            json = yield this_.parser.parsePost(task);\r\n                            break;\r\n                        case enum_handler_1.InsLinkType.IG:\r\n                            json = yield this_.parser.parseIg(task);\r\n                            break;\r\n                        case enum_handler_1.InsLinkType.STORT:\r\n                            json = yield this_.parser.parseStory(task);\r\n                            break;\r\n                        case enum_handler_1.InsLinkType.HIGHLIGHT:\r\n                            json = yield this_.parser.parseHighLight(task);\r\n                        default:\r\n                            break;\r\n                    }\r\n                    callback(json);\r\n                }\r\n                catch (e) {\r\n                    console.error(e);\r\n                    this.event.emit(\"error\", e.error);\r\n                }\r\n            }\r\n        }));\r\n        this_.event.on(enum_handler_1.EventHandlerType.HANDLE_OUT_COOKIE, (cookie, status) => __awaiter(this, void 0, void 0, function* () { this_.config.outCookie(cookie, status); }));\r\n        this_.event.on(enum_handler_1.EventHandlerType.HANDLE_NONE_COOKIE, () => __awaiter(this, void 0, void 0, function* () { this_.config.noneCookie(); }));\r\n        this_.event.on(enum_handler_1.EventHandlerType.UPDATE_CLAIM, (cookie) => __awaiter(this, void 0, void 0, function* () { this_.config.updateClaim(cookie); }));\r\n    }\r\n    onError(fn) {\r\n        this.event.removeAllListeners(\"error\");\r\n        this.event.addListener(\"error\", (e) => { fn(e); });\r\n        return this;\r\n    }\r\n    analysis(urlOrCode, type, handleDataCallback) {\r\n        const task = {\r\n            type,\r\n            code: (0, url_1.getShortCode)(urlOrCode),\r\n            url: type === enum_handler_1.InsLinkType.POST ? (0, url_1.createUrl)(urlOrCode) :\r\n                type === enum_handler_1.InsLinkType.IG ? (0, url_1.createTvUrl)(urlOrCode) : urlOrCode,\r\n            callback: handleDataCallback\r\n        };\r\n        this.queue.push(task);\r\n        return this.ready ? (this.event.emit(enum_handler_1.EventHandlerType.HANDLE_QUEUE) && this) : this;\r\n    }\r\n    analysisPost(urlOrCode, handleDataCallback) {\r\n        return this.analysis(urlOrCode, enum_handler_1.InsLinkType.POST, handleDataCallback);\r\n    }\r\n    analysisIg(urlOrCode, handleDataCallback) {\r\n        return this.analysis(urlOrCode, enum_handler_1.InsLinkType.IG, handleDataCallback);\r\n    }\r\n    analysisStory(url, handleDataCallback) {\r\n        const parseResult = (0, url_1.parseStoryLink)(url);\r\n        const task = {\r\n            type: enum_handler_1.InsLinkType.STORT,\r\n            url,\r\n            username: parseResult.username,\r\n            mediaId: parseResult.mediaId,\r\n            code: parseResult.code,\r\n            callback: handleDataCallback,\r\n        };\r\n        this.queue.push(task);\r\n        return this.ready ? (this.event.emit(enum_handler_1.EventHandlerType.HANDLE_QUEUE) && this) : this;\r\n    }\r\n    analysisHighLight(url, handleDataCallback) {\r\n        const parseResult = (0, url_1.parseHighLightLink)(url);\r\n        const task = {\r\n            type: enum_handler_1.InsLinkType.HIGHLIGHT,\r\n            url,\r\n            mediaId: parseResult.mediaId,\r\n            code: parseResult.code,\r\n            highlightId: parseResult.highlightId,\r\n            callback: handleDataCallback\r\n        };\r\n        this.queue.push(task);\r\n        return this.ready ? (this.event.emit(enum_handler_1.EventHandlerType.HANDLE_QUEUE) && this) : this;\r\n    }\r\n    download(url, filename, prefix, fext) {\r\n        const this_ = this;\r\n        return new Promise(r => {\r\n            if (!url) {\r\n                let r_ = {\r\n                    status: \"error\",\r\n                    statusCode: -1,\r\n                    createtime: new Date(),\r\n                    error: new Error(`url : ${url} is required!`),\r\n                };\r\n                return r(r_);\r\n            }\r\n            const ext = fext ? fext :\r\n                /.jpg|.jpeg|.png/g.test(url) ? '.jpg' :\r\n                    /.mp4/g.test(url) ? '.mp4' : '.unknown';\r\n            filename = filename || new Date().getTime().toString();\r\n            let fullpath = path_1.default.join(this_.config.downloadPath, prefix ? prefix : \"\");\r\n            if (!fs_1.default.existsSync(fullpath)) {\r\n                fs_1.default.mkdirSync(fullpath, { recursive: true });\r\n            }\r\n            fullpath = path_1.default.join(fullpath, `${filename}${ext}`);\r\n            let isExpiredUrl = false;\r\n            (0, request_1.default)({\r\n                url,\r\n                proxy: this_.config.proxy,\r\n            }, (err, res, body) => {\r\n                if (err)\r\n                    return r({\r\n                        status: \"error\",\r\n                        statusCode: 500,\r\n                        createtime: new Date(),\r\n                        error: new Error(err)\r\n                    });\r\n                //CHECK IF URL signature expired\r\n                if (res.statusCode === 403 && body === \"URL signature expired\") {\r\n                    isExpiredUrl = true;\r\n                    r({\r\n                        status: \"error\",\r\n                        statusCode: 403,\r\n                        createtime: new Date(),\r\n                        error: new Error(body)\r\n                    });\r\n                }\r\n            })\r\n                .pipe(fs_1.default.createWriteStream(fullpath))\r\n                .on('close', () => {\r\n                if (!isExpiredUrl && fs_1.default.existsSync(fullpath) && fs_1.default.statSync(fullpath).size > 21) {\r\n                    const resolved = {\r\n                        status: \"ok\",\r\n                        statusCode: 200,\r\n                        createtime: new Date(),\r\n                        filename: `${filename}`,\r\n                        filepath: this_.config.downloadPath,\r\n                        fullpath,\r\n                        size: fs_1.default.statSync(fullpath).size\r\n                    };\r\n                    r(resolved);\r\n                    (0, msg_1.log)(resolved, \"InsSaver Download Sucess!\", \"yellow\");\r\n                }\r\n            })\r\n                .on('err', err => {\r\n                const erred = {\r\n                    status: \"error\",\r\n                    statusCode: -1,\r\n                    createtime: new Date(),\r\n                    error: new Error(err)\r\n                };\r\n                r(erred);\r\n                (0, msg_1.warn)(`insSaver downloadFile failed! errInfo : ${erred}`);\r\n            });\r\n        });\r\n    }\r\n}\r\nInsSaver.warn = msg_1.warn;\r\nInsSaver.info = msg_1.info;\r\nInsSaver.title = msg_1.title;\r\nInsSaver.log = msg_1.log;\r\nInsSaver.createUrl = url_1.createUrl;\r\nInsSaver.createTvUrl = url_1.createTvUrl;\r\nInsSaver.getShortCode = url_1.getShortCode;\r\nInsSaver.urlSegmentToInstagramId = instagram_id_to_url_segment_1.urlSegmentToInstagramId;\r\nInsSaver.instagramIdToUrlSegment = instagram_id_to_url_segment_1.instagramIdToUrlSegment;\r\nInsSaver.InsLinkTypes = {\r\n    POST: enum_handler_1.InsLinkType.POST,\r\n    IG: enum_handler_1.InsLinkType.IG,\r\n    STORT: enum_handler_1.InsLinkType.STORT,\r\n    HIGHLIGHT: enum_handler_1.InsLinkType.HIGHLIGHT\r\n};\r\nInsSaver.parseHighLightLink = url_1.parseHighLightLink;\r\nInsSaver.parseStoryLink = url_1.parseStoryLink;\r\nInsSaver.parsePostAndIgLink = url_1.parsePostAndIgLink;\r\nmodule.exports = InsSaver;\r\n"]}