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