{
  "version": 3,
  "sources": ["../node_modules/jongseong/dist/index.js", "../node_modules/josa/dist/josaPicker.js", "../node_modules/josa/dist/fillInJosa.js", "../node_modules/josa/dist/util.js", "../node_modules/josa/dist/index.js", "../src/index.ts", "../src/cn/index.ts", "../src/sha256/index.ts", "../src/josa/index.ts"],
  "sourcesContent": ["'use strict';\n\n// A JongseongCode is an integer[0...27].\n//   - Each code represents a tail consonants.\n//     code  |  e.g.\n//    -------+------\n//       0   |   \uAC00\n//       1   |   \uAC01\n//       2   |   \uAC02\n//       3   |   \uAC03\n//       4   |   \uAC04\n//       5   |   \uAC05\n//       6   |   \uAC06\n//       7   |   \uAC07\n//       8   |   \uAC08\n//       9   |   \uAC09\n//      10   |   \uAC0A\n//      11   |   \uAC0B\n//      12   |   \uAC0C\n//      13   |   \uAC0D\n//      14   |   \uAC0E\n//      15   |   \uAC0F\n//      16   |   \uAC10\n//      17   |   \uAC11\n//      18   |   \uAC12\n//      19   |   \uAC13\n//      20   |   \uAC14\n//      21   |   \uAC15\n//      22   |   \uAC16\n//      23   |   \uAC17\n//      24   |   \uAC18\n//      25   |   \uAC19\n//      26   |   \uAC1A\n//      27   |   \uAC1B\n\n// _codeForHangul :: string -> JongseongCode\n// Given a Hangul letter, computes its jongseong code.\n// Assume h is a single letter Hangul string (\uAC00-\uD7A3).\n//   - 44032 (AC00) is the code point of \uAC00, which is the first Hangul letter.\n//   - 28 = the number of the jongseongs + 1\nvar _codeForHangul = function _codeForHangul(h) {\n  return (h.charCodeAt(0) - 44032) % 28;\n};\n\n// code :: string -> JongseongCode\n// Given a string of zeros, returns its jongseong code.\n// e.g. _codeForZeros('00') === 1    (100 = \uBC31)\n//   the number |\n//   of zeros   |\n//   -----------+-------\n//       1      |  \uC2ED\n//       2      |  \uBC31\n//       3      |  \uCC9C\n//     4 ~ 7    |  \uB9CC\n//     8 ~ 11   |  \uC5B5\n//    12 ~ 15   |  \uC870\n//    16 ~ 19   |  \uACBD\n//    20 ~ 23   |  \uD574\nvar _codeForZeros = function _codeForZeros(zs) {\n  var n = zs.length;\n\n  if (n === 1) {\n    return 17;\n  }\n  if (n === 2 || n >= 8 && n <= 11) {\n    return 1;\n  }\n  if (n >= 3 && n <= 7) {\n    return 4;\n  }\n  if (n >= 12 && n <= 15 || n >= 20 && n <= 23) {\n    return 0;\n  }\n  if (n >= 16 && n <= 19) {\n    return 21;\n  }\n\n  throw new Error(\"It's too large.\");\n};\n\n// _codeForDigit :: string -> JongseongCode\n// Given a digit, returns its jongseong code.\n// Assume d is one of: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'\nvar _codeForDigit = function _codeForDigit(d) {\n  return [21, 8, 0, 16, 0, 0, 1, 8, 8, 0][d];\n};\n\n// _codeForEnglish :: string -> JongseongCode\n// Given a two-letter English string, returns its jongseong code.\n// Assume e is a two-letter English string.\nvar _codeForEnglish = function _codeForEnglish(e) {\n  return (/ck/i.test(e) ? 1 : /.n/i.test(e) ? 4 : /ne/i.test(e) ? 4 : /.l/i.test(e) ? 8 : /le/i.test(e) ? 8 : /.m/i.test(e) ? 16 : /ob/i.test(e) ? 17 : /.p/i.test(e) ? 17 : /et/i.test(e) ? 19 : /ng/i.test(e) ? 21 : /* else      */0\n  );\n};\n\n// _codeForEnglishInitial :: string -> JongseongCode\n// Given an English letter, returns its jongseong code.\n// Assume e is a single-letter English string.\nvar _codeForEnglishInitial = function _codeForEnglishInitial(e) {\n  switch (e.toLowerCase()) {\n    case 'l':\n    case 'r':\n      return 8;\n    case 'm':\n      return 16;\n    case 'n':\n      return 4;\n    default:\n      return 0;\n  }\n};\n\n// code :: string -> JongseongCode\n// Computes the jongseong code of a given string.\n// If there isn't any recognizable letter in word, returns 0 (no jongseong).\nvar code = function code(word) {\n  if (!word) {\n    return 0;\n  }\n\n  // !!! Ignore letters inside parentheses.\n  var w = word.replace(/\\([^)]*\\)$/, '');\n  var last = w[w.length - 1];\n\n  if (/[\uAC00-\uD7A3]/.test(last)) {\n    return _codeForHangul(last);\n  }\n\n  if (/[1-9]0+$/.test(w)) {\n    var zerosMatch = /0+$/.exec(w);\n\n    return _codeForZeros(zerosMatch[0]);\n  }\n\n  if (/\\d/.test(last)) {\n    return _codeForDigit(last);\n  }\n\n  if (/[a-z]{2}$/i.test(w)) {\n    return _codeForEnglish(w.slice(w.length - 2, w.length));\n  }\n\n  if (/(?:^|[^a-z])[a-z]$/i.test(w)) {\n    return _codeForEnglishInitial(last);\n  }\n\n  if (/(^|[^a-z])[a-z][^a-z]?$/i.test(w)) {\n    return _codeForEnglishInitial(w[w.length - 2]);\n  }\n\n  return code(w.slice(0, w.length - 1));\n};\n\n// hasJongseong :: string -> boolean\n// Does the last letter of a given word have a jongseong?\nvar hasJongseong = function hasJongseong(w) {\n  return code(w) !== 0;\n};\n\nmodule.exports = {\n  _codeForHangul: _codeForHangul,\n  _codeForZeros: _codeForZeros,\n  _codeForDigit: _codeForDigit,\n  _codeForEnglish: _codeForEnglish,\n  _codeForEnglishInitial: _codeForEnglishInitial,\n  code: code,\n  hasJongseong: hasJongseong\n};", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.get = exports.makeJosaPicker = undefined;\n\nvar _jongseong = require('jongseong');\n\n// A Josa is one of:\n//   - '\uC740'  - '\uB294'\n//   - '\uC774'  - '\uAC00'\n//   - '\uC744'  - '\uB97C'\n//   - '\uACFC'  - '\uC640'\n//   - '\uC774\uC5C8'  - '\uC600'\n//   - '\uC774\uC5B4'  - '\uC5EC'\n//   - '\uC774\uC5D0\uC694'  - '\uC608\uC694'\n//   - '\uC544'  - '\uC57C'\n//   - '\uC774'?\n//   - '\uC73C\uB85C'  - '\uB85C'\n\n// A JosaPicker is a fuction: string -> Josa\n//   - Determines josa for a given word.\n\n// table : object\n// State. Manages the josa-pickers.\nvar table = {};\n\n// put : Josa * Josa * JosaPicker -> void\n// Effect. Puts f into table with two given names.\nvar put = function put(j1, j2, f) {\n  table[j1] = f;\n\n  if (j2) {\n    table[j2] = f;\n  }\n};\n\n// get : Josa -> JosaPicker\n// Given a josa, returns a josa-picker (if possible).\n// Effect. Searches table for a josa-picker with name josa.\nvar get = function get(j) {\n  var f = table[j];\n\n  if (!f) {\n    throw new Error('Cannot handle this josa: ' + j);\n  }\n\n  return f;\n};\n\n// makeJosaPicker : Josa * Josa -> JosaPicker\n// Given two josa options, produces a josa-picker.\nvar makeJosaPicker = function makeJosaPicker(j1, j2) {\n  return function (w) {\n    return (0, _jongseong.hasJongseong)(w) ? j1.replace(/\\?$/, '') : j2;\n  };\n};\n\n// install : Josa * Josa * JosaPicker? -> void\n//   - j1 is for a word with a tail consonant.\n//   - j2 is for a word with no tail consonant.\n//   - f is an optional josa-picker for exceptional cases: '\uC73C\uB85C'\n// Effect. Sets up a josa-picker that chooses between j1 and j2.\nvar install = function install(j1, j2, f) {\n  put(j1, j2, f || makeJosaPicker(j1, j2));\n};\n\ninstall('\uC740', '\uB294');\ninstall('\uC774', '\uAC00');\ninstall('\uC744', '\uB97C');\ninstall('\uACFC', '\uC640');\ninstall('\uC774\uC5C8', '\uC600');\ninstall('\uC774\uC5B4', '\uC5EC');\ninstall('\uC774\uC5D0\uC694', '\uC608\uC694');\ninstall('\uC544', '\uC57C');\ninstall('\uC774?', '');\ninstall('\uC73C\uB85C', '\uB85C', function (w) {\n  return (0, _jongseong.code)(w) === 8 ? '\uB85C' : makeJosaPicker('\uC73C\uB85C', '\uB85C')(w);\n});\n\nexports.makeJosaPicker = makeJosaPicker;\nexports.get = get;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _josaPicker = require('./josaPicker');\n\n// fillInJosa : string -> string\n// Fills in the josa placeholders: \uCE5C\uAD6C#{\uC774} \uD559\uAD50#{\uC73C\uB85C} -> \uCE5C\uAD6C\uAC00 \uD559\uAD50\uB85C\nvar fillInJosa = function fillInJosa(str) {\n  return str.replace(\n  /* +++(___ ____ ____)#{---------} */\n  /(\\S+(?:\\([^)]*\\))?)#\\{([^}]+)\\}/g, function (_, noun, josa) {\n    return noun + (0, _josaPicker.get)(josa.trim())(noun);\n  });\n};\n\nexports.default = fillInJosa;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.makeJosaify = exports.getJosaPicker = undefined;\n\nvar _josaPicker = require('./josaPicker');\n\n// A Josaify is a function: string -> string\n//   - Produces a given word with a josa appended.\n\n// makeJosaify : Josa -> Josaify\n// Given a josa, produces a josaify.\nvar makeJosaify = function makeJosaify(josa) {\n  return function (word) {\n    return word + (0, _josaPicker.get)(josa)(word);\n  };\n};\n\n// getJosaPicker : Josa -> JosaPicker\nvar getJosaPicker = _josaPicker.get;\n\nexports.getJosaPicker = getJosaPicker;\nexports.makeJosaify = makeJosaify;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.makeJosaify = exports.getJosaPicker = exports.josa = undefined;\n\nvar _fillInJosa = require('./fillInJosa');\n\nvar _fillInJosa2 = _interopRequireDefault(_fillInJosa);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.josa = _fillInJosa2.default;\nexports.getJosaPicker = _util.getJosaPicker;\nexports.makeJosaify = _util.makeJosaify;", "export * from './cn';\nexport * from './sha256'\nexport * from './josa';", "interface Classname {\n  [key: string]: boolean;\n}\n\n/** \uC5EC\uB7EC \uAC1C\uC758 className\uC744 \uD569\uCE58\uB294 \uD568\uC218 */\nexport function cn(classes: Classname) {\n  return Object.entries(classes)\n    .filter(([, value]) => value)\n    .map(([key]) => key)\n    .join(' ');\n}\n", "/** sha256 \uC554\uD638\uD654\uB97C \uAC70\uCCD0 \uD574\uC2F1\uB41C \uAC12\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4. */\nexport async function sha256(message: string) {\n  // encode as UTF-8\n  const msgBuffer = new TextEncoder().encode(message);\n\n  // hash the message\n  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n  // convert ArrayBuffer to Array\n  const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n  // convert bytes to hex string\n  const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n  return hashHex;\n}\n", "import {josa, makeJosaify, getJosaPicker} from 'josa';\n\nexport {josa, makeJosaify, getJosaPicker}"],
  "mappings": "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",
  "names": ["module", "_codeForHangul", "_codeForZeros", "_codeForDigit", "_codeForEnglish", "_codeForEnglishInitial", "code", "hasJongseong", "put", "get", "makeJosaPicker", "install", "fillInJosa", "josa", "makeJosaify", "josa", "getJosaPicker", "require_dist"]
}
