{"version":3,"sources":["jsdelivr-header.js","/npm/nsfwjs@2.4.2/dist/index.js"],"names":[],"mappings":"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","file":"/npm/nsfwjs@2.4.2/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nsfwjs@2.4.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\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n};\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 __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NSFWJS = exports.load = void 0;\r\nvar tf = __importStar(require(\"@tensorflow/tfjs\"));\r\nvar nsfw_classes_1 = require(\"./nsfw_classes\");\r\nvar gif_frames_1 = __importDefault(require(\"@nsfw-filter/gif-frames\"));\r\nvar BASE_PATH = \"https://d1zv2aa70wpiur.cloudfront.net/tfjs_quant_nsfw_mobilenet/\";\r\nvar IMAGE_SIZE = 224;\r\nfunction load(base, options) {\r\n    if (base === void 0) { base = BASE_PATH; }\r\n    if (options === void 0) { options = { size: IMAGE_SIZE }; }\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var nsfwnet;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    if (tf == null) {\r\n                        throw new Error(\"Cannot find TensorFlow.js. If you are using a <script> tag, please \" +\r\n                            \"also include @tensorflow/tfjs on the page before using this model.\");\r\n                    }\r\n                    options.size = options.size || IMAGE_SIZE;\r\n                    nsfwnet = new NSFWJS(base, options);\r\n                    return [4, nsfwnet.load()];\r\n                case 1:\r\n                    _a.sent();\r\n                    return [2, nsfwnet];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.load = load;\r\nvar NSFWJS = (function () {\r\n    function NSFWJS(modelPathBaseOrIOHandler, options) {\r\n        this.intermediateModels = {};\r\n        this.options = options;\r\n        this.normalizationOffset = tf.scalar(255);\r\n        if (typeof modelPathBaseOrIOHandler === \"string\" &&\r\n            !modelPathBaseOrIOHandler.startsWith(\"indexeddb://\") &&\r\n            !modelPathBaseOrIOHandler.startsWith(\"localstorage://\")) {\r\n            if (modelPathBaseOrIOHandler.endsWith(\"model.json\")) {\r\n                this.pathOrIOHandler = modelPathBaseOrIOHandler;\r\n            }\r\n            else {\r\n                this.pathOrIOHandler = modelPathBaseOrIOHandler + \"model.json\";\r\n            }\r\n        }\r\n        else {\r\n            this.pathOrIOHandler = modelPathBaseOrIOHandler;\r\n        }\r\n    }\r\n    NSFWJS.prototype.load = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a, size, type, _b, _c, result;\r\n            var _this = this;\r\n            return __generator(this, function (_d) {\r\n                switch (_d.label) {\r\n                    case 0:\r\n                        _a = this.options, size = _a.size, type = _a.type;\r\n                        if (!(type === \"graph\")) return [3, 2];\r\n                        _b = this;\r\n                        return [4, tf.loadGraphModel(this.pathOrIOHandler)];\r\n                    case 1:\r\n                        _b.model = _d.sent();\r\n                        return [3, 4];\r\n                    case 2:\r\n                        _c = this;\r\n                        return [4, tf.loadLayersModel(this.pathOrIOHandler)];\r\n                    case 3:\r\n                        _c.model = _d.sent();\r\n                        this.endpoints = this.model.layers.map(function (l) { return l.name; });\r\n                        _d.label = 4;\r\n                    case 4:\r\n                        result = tf.tidy(function () {\r\n                            return _this.model.predict(tf.zeros([1, size, size, 3]));\r\n                        });\r\n                        return [4, result.data()];\r\n                    case 5:\r\n                        _d.sent();\r\n                        result.dispose();\r\n                        return [2];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    NSFWJS.prototype.infer = function (img, endpoint) {\r\n        var _this = this;\r\n        if (endpoint != null && this.endpoints.indexOf(endpoint) === -1) {\r\n            throw new Error(\"Unknown endpoint \" + endpoint + \". Available endpoints: \" +\r\n                (this.endpoints + \".\"));\r\n        }\r\n        return tf.tidy(function () {\r\n            if (!(img instanceof tf.Tensor)) {\r\n                img = tf.browser.fromPixels(img);\r\n            }\r\n            var normalized = img\r\n                .toFloat()\r\n                .div(_this.normalizationOffset);\r\n            var resized = normalized;\r\n            var size = _this.options.size;\r\n            if (img.shape[0] !== size || img.shape[1] !== size) {\r\n                var alignCorners = true;\r\n                resized = tf.image.resizeBilinear(normalized, [size, size], alignCorners);\r\n            }\r\n            var batched = resized.reshape([1, size, size, 3]);\r\n            var model;\r\n            if (endpoint == null) {\r\n                model = _this.model;\r\n            }\r\n            else {\r\n                if (_this.model.hasOwnProperty(\"layers\") &&\r\n                    _this.intermediateModels[endpoint] == null) {\r\n                    var layer = _this.model.layers.find(function (l) { return l.name === endpoint; });\r\n                    _this.intermediateModels[endpoint] = tf.model({\r\n                        inputs: _this.model.inputs,\r\n                        outputs: layer.output,\r\n                    });\r\n                }\r\n                model = _this.intermediateModels[endpoint];\r\n            }\r\n            return model.predict(batched);\r\n        });\r\n    };\r\n    NSFWJS.prototype.classify = function (img, topk) {\r\n        if (topk === void 0) { topk = 5; }\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var logits, classes;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        logits = this.infer(img);\r\n                        return [4, getTopKClasses(logits, topk)];\r\n                    case 1:\r\n                        classes = _a.sent();\r\n                        logits.dispose();\r\n                        return [2, classes];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    NSFWJS.prototype.classifyGif = function (gif, config) {\r\n        if (config === void 0) { config = { topk: 5 }; }\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var frameData, acceptedFrames, totalTimeInMs, i, totalFrames, interval, i, arrayOfPredictions, i, image, predictions;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        frameData = [];\r\n                        if (!Buffer.isBuffer(gif)) return [3, 2];\r\n                        return [4, gif_frames_1.default({ url: gif, frames: 'all', outputType: 'jpg' })];\r\n                    case 1:\r\n                        frameData = _a.sent();\r\n                        return [3, 4];\r\n                    case 2: return [4, gif_frames_1.default({ url: gif.src, frames: 'all', outputType: 'canvas' })];\r\n                    case 3:\r\n                        frameData = _a.sent();\r\n                        _a.label = 4;\r\n                    case 4:\r\n                        acceptedFrames = [];\r\n                        if (typeof config.fps !== 'number') {\r\n                            acceptedFrames = frameData.map(function (_element, index) { return index; });\r\n                        }\r\n                        else {\r\n                            totalTimeInMs = 0;\r\n                            for (i = 0; i < frameData.length; i++) {\r\n                                totalTimeInMs = totalTimeInMs + (frameData[i].frameInfo.delay * 10);\r\n                            }\r\n                            totalFrames = Math.floor(totalTimeInMs / 1000 * config.fps);\r\n                            if (totalFrames <= 1) {\r\n                                acceptedFrames = [Math.floor(frameData.length / 2)];\r\n                            }\r\n                            else if (totalFrames >= frameData.length) {\r\n                                acceptedFrames = frameData.map(function (_element, index) { return index; });\r\n                            }\r\n                            else {\r\n                                interval = Math.floor(frameData.length / (totalFrames + 1));\r\n                                for (i = 1; i <= totalFrames; i++) {\r\n                                    acceptedFrames.push(i * interval);\r\n                                }\r\n                            }\r\n                        }\r\n                        arrayOfPredictions = [];\r\n                        i = 0;\r\n                        _a.label = 5;\r\n                    case 5:\r\n                        if (!(i < acceptedFrames.length)) return [3, 8];\r\n                        image = frameData[acceptedFrames[i]].getImage();\r\n                        return [4, this.classify(image, config.topk)];\r\n                    case 6:\r\n                        predictions = _a.sent();\r\n                        if (typeof config.onFrame === 'function') {\r\n                            config.onFrame({\r\n                                index: acceptedFrames[i],\r\n                                totalFrames: frameData.length,\r\n                                predictions: predictions,\r\n                                image: image\r\n                            });\r\n                        }\r\n                        arrayOfPredictions.push(predictions);\r\n                        _a.label = 7;\r\n                    case 7:\r\n                        i++;\r\n                        return [3, 5];\r\n                    case 8: return [2, arrayOfPredictions];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    return NSFWJS;\r\n}());\r\nexports.NSFWJS = NSFWJS;\r\nfunction getTopKClasses(logits, topK) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var values, valuesAndIndices, i, topkValues, topkIndices, i, topClassesAndProbs, i;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0: return [4, logits.data()];\r\n                case 1:\r\n                    values = _a.sent();\r\n                    valuesAndIndices = [];\r\n                    for (i = 0; i < values.length; i++) {\r\n                        valuesAndIndices.push({ value: values[i], index: i });\r\n                    }\r\n                    valuesAndIndices.sort(function (a, b) {\r\n                        return b.value - a.value;\r\n                    });\r\n                    topkValues = new Float32Array(topK);\r\n                    topkIndices = new Int32Array(topK);\r\n                    for (i = 0; i < topK; i++) {\r\n                        topkValues[i] = valuesAndIndices[i].value;\r\n                        topkIndices[i] = valuesAndIndices[i].index;\r\n                    }\r\n                    topClassesAndProbs = [];\r\n                    for (i = 0; i < topkIndices.length; i++) {\r\n                        topClassesAndProbs.push({\r\n                            className: nsfw_classes_1.NSFW_CLASSES[topkIndices[i]],\r\n                            probability: topkValues[i],\r\n                        });\r\n                    }\r\n                    return [2, topClassesAndProbs];\r\n            }\r\n        });\r\n    });\r\n}\r\n"]}