Pure Javascript OCR for more than 100 Languages 📖🎉🖥
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1 lines
51 KiB

{"version":3,"sources":["webpack://Tesseract/webpack/universalModuleDefinition","webpack://Tesseract/webpack/bootstrap","webpack://Tesseract/./node_modules/check-types/src/check-types.js","webpack://Tesseract/./src/browser/index.js","webpack://Tesseract/./src/index.js","webpack://Tesseract/./node_modules/resolve-url/resolve-url.js","webpack://Tesseract/./src/common/options.js","webpack://Tesseract/./src/common/circularize.js","webpack://Tesseract/./src/common/job.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_RESULT__","globals","strings","messages","predicates","functions","assert","not","maybe","collections","slice","neginf","posinf","isArray","haveSymbols","assigned","data","number","integer","greater","lhs","rhs","less","greaterOrEqual","lessOrEqual","string","nonEmptyString","toString","instanceStrict","error","like","archetype","array","arrayLike","length","isFunction","testArray","result","testObject","mixin","target","source","keys","forEach","assertModifier","predicate","defaultMessage","args","argCount","message","ErrorType","assertImpl","apply","TypeError","assertPredicate","arguments","Error","notModifier","modifiedPredicate","notImpl","ofModifier","type","collection","map","coerceCollection","item","concat","ignore","createModifiedPredicates","modifier","createModifiedFunctions","shift","pop","configurable","writable","createModifiedModifier","modified","createOfModifiers","base","of","v","b","a","al","f","undefined","iterator","iteration","values","next","done","x","y","substring","indexOf","regex","match","constructor","Date","getTime","hasLength","index","mapSimple","mapComplex","all","any","Array","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","exportFunctions","check","resolveURL","defaultOptions","version","workerPath","corePath","WebAssembly","spawnWorker","instance","workerOptions","worker","Blob","URL","blob","Worker","createObjectURL","onmessage","_recv","terminateWorker","terminate","sendPacket","packet","image","fetch","then","resp","arrayBuffer","File","Promise","res","fileReader","FileReader","onload","readAsArrayBuffer","reject","loadImage","payload","buf","Uint8Array","img","postMessage","from","adapter","circularize","TesseractJob","TesseractWorker","[object Object]","this","assign","_currentJob","_queue","options","lang","_delay","job","_send","fn","null","push","_dequeue","id","jobId","_handle","status","action","console","warn","__WEBPACK_AMD_DEFINE_FACTORY__","numUrls","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","langPath","iPage","page","paragraphs","lines","words","symbols","blocks","iBlock","block","iPara","para","iLine","line","paragraph","iWord","word","iSym","sym","jobCounter","Math","random","_instance","_resolve","_reject","_progress","_finally","resolve","catch","runFinallyCbs","log","ret"],"mappings":"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","file":"tesseract.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tesseract\"] = factory();\n\telse\n\t\troot[\"Tesseract\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n","const check = require('check-types');\nconst resolveURL = require('resolve-url');\nconst { defaultOptions } = require('../common/options');\nconst { version } = require('../../package.json');\n\nconst loadImage = (image) => {\n if (check.string(image)) {\n return fetch(resolveURL(image))\n .then(resp => resp.arrayBuffer());\n }\n if (check.instance(image, File)) {\n return new Promise((res) => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n res(fileReader.result);\n };\n fileReader.readAsArrayBuffer(image);\n });\n }\n return Promise.reject();\n};\n\nexports.defaultOptions = {\n ...defaultOptions,\n workerPath: process.env.NODE_ENV === 'development'\n ? resolveURL(`/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`)\n : `https://cdn.jsdelivr.net/gh/naptha/tesseract.js@v${version}/dist/worker.min.js`,\n corePath: `https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${typeof WebAssembly === 'object' ? '' : '.asm'}.js`,\n};\n\nexports.spawnWorker = (instance, workerOptions) => {\n let worker;\n if (window.Blob && window.URL) {\n const blob = new Blob([`importScripts(\"${workerOptions.workerPath}\");`]);\n worker = new Worker(window.URL.createObjectURL(blob));\n } else {\n worker = new Worker(workerOptions.workerPath);\n }\n\n worker.onmessage = ({ data }) => {\n instance._recv(data);\n };\n\n return worker;\n};\n\nexports.terminateWorker = (instance) => {\n instance.worker.terminate();\n};\n\nexports.sendPacket = (instance, packet) => {\n loadImage(packet.payload.image)\n .then(buf => new Uint8Array(buf))\n .then((img) => {\n instance.worker.postMessage({\n ...packet,\n payload: {\n ...packet.payload,\n image: Array.from(img),\n },\n });\n });\n};\n","const check = require('check-types');\nconst adapter = require('./node');\nconst circularize = require('./common/circularize');\nconst TesseractJob = require('./common/job');\n\nclass TesseractWorker {\n constructor(workerOptions = {}) {\n this.worker = null;\n this.workerOptions = Object.assign({}, adapter.defaultOptions, workerOptions);\n this._currentJob = null;\n this._queue = [];\n }\n\n recognize(image, options = { lang: 'eng' }) {\n return this._delay((job) => {\n job._send(\n 'recognize',\n {\n image,\n options: check.string(options)\n ? { lang: options || 'eng' }\n : options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n detect(image, options = {}) {\n return this._delay((job) => {\n job._send(\n 'detect',\n {\n image,\n options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n terminate() {\n if (this.worker) {\n adapter.terminateWorker(this);\n }\n this.worker = null;\n this._currentJob = null;\n this._queue = [];\n }\n\n _delay(fn) {\n if (check.null(this.worker)) {\n this.worker = adapter.spawnWorker(this, this.workerOptions);\n }\n\n const job = new TesseractJob(this);\n this._queue.push(() => {\n this._queue.shift();\n this._currentJob = job;\n fn(job);\n });\n if (check.null(this._currentJob)) {\n this._dequeue();\n }\n return job;\n }\n\n _dequeue() {\n this._currentJob = null;\n if (this._queue.length) {\n this._queue[0]();\n }\n }\n\n _recv(packet) {\n if (this._currentJob.id === packet.jobId) {\n this._currentJob._handle({\n ...packet,\n data: packet.status === 'resolve' && packet.action === 'recognize'\n ? circularize(packet.data)\n : packet.data,\n });\n } else {\n console.warn(`Job ID ${packet.jobId} not known.`);\n }\n }\n}\n\nmodule.exports = {\n TesseractWorker,\n};\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","module.exports = {\n defaultOptions: {\n langPath: 'https://tessdata.projectnaptha.com/4.0.0',\n },\n};\n","// The result of dump.js is a big JSON tree\n// which can be easily serialized (for instance\n// to be sent from a webworker to the main app\n// or through Node's IPC), but we want\n// a (circular) DOM-like interface for walking\n// through the data.\n\nmodule.exports = (iPage) => {\n const page = {\n ...iPage,\n paragraphs: [],\n lines: [],\n words: [],\n symbols: [],\n };\n\n page.blocks.forEach((iBlock) => {\n const block = {\n ...iBlock,\n page,\n lines: [],\n words: [],\n symbols: [],\n };\n\n block.paragraphs.forEach((iPara) => {\n const para = {\n ...iPara,\n block,\n page,\n words: [],\n symbols: [],\n };\n\n para.lines.forEach((iLine) => {\n const line = {\n ...iLine,\n paragraph: para,\n block,\n page,\n symbols: [],\n };\n\n line.words.forEach((iWord) => {\n const word = {\n ...iWord,\n line,\n paragraph: para,\n block,\n page,\n };\n\n word.symbols.forEach((iSym) => {\n const sym = {\n ...iSym,\n word,\n line,\n paragraph: para,\n block,\n page,\n };\n\n sym.line.symbols.push(sym);\n sym.paragraph.symbols.push(sym);\n sym.block.symbols.push(sym);\n sym.page.symbols.push(sym);\n });\n word.paragraph.words.push(word);\n word.block.words.push(word);\n word.page.words.push(word);\n });\n line.block.lines.push(line);\n line.page.lines.push(line);\n });\n para.page.paragraphs.push(para);\n });\n });\n return page;\n};\n","const adapter = require('../node/');\n\nlet jobCounter = 0;\n\nmodule.exports = class TesseractJob {\n constructor(instance) {\n jobCounter += 1;\n this.id = `Job-${jobCounter}-${Math.random().toString(16).slice(3, 8)}`;\n\n this._instance = instance;\n this._resolve = [];\n this._reject = [];\n this._progress = [];\n this._finally = [];\n }\n\n then(resolve, reject) {\n if (this._resolve.push) {\n this._resolve.push(resolve);\n } else {\n resolve(this._resolve);\n }\n\n if (reject) this.catch(reject);\n return this;\n }\n\n catch(reject) {\n if (this._reject.push) {\n this._reject.push(reject);\n } else {\n reject(this._reject);\n }\n return this;\n }\n\n progress(fn) {\n this._progress.push(fn);\n return this;\n }\n\n finally(fn) {\n this._finally.push(fn);\n return this;\n }\n\n _send(action, payload) {\n adapter.sendPacket(this._instance, {\n jobId: this.id,\n action,\n payload,\n });\n }\n\n _handle(packet) {\n const { data } = packet;\n let runFinallyCbs = false;\n\n if (packet.status === 'resolve') {\n if (this._resolve.length === 0) console.log(data);\n this._resolve.forEach((fn) => {\n const ret = fn(data);\n if (ret && typeof ret.then === 'function') {\n console.warn('TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.');\n }\n });\n this._resolve = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'reject') {\n if (this._reject.length === 0) console.error(data);\n this._reject.forEach(fn => fn(data));\n this._reject = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'progress') {\n this._progress.forEach(fn => fn(data));\n } else {\n console.warn('Message type unknown', packet.status);\n }\n\n if (runFinallyCbs) {\n this._finally.forEach(fn => fn(data));\n }\n }\n};\n"],"sourceRoot":""}