{"version":3,"sources":["jsdelivr-header.js","/npm/null-safety@1.0.0/lib/null-safety.cjs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,SAAS,gBAAgB,EAAU,GACjC,KAAM,aAAoB,GACxB,MAAM,IAAI,UAAU,oCAExB,CAEA,SAAS,kBAAkB,EAAQ,GACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAI,EAAa,EAAM,GACvB,EAAW,WAAa,EAAW,aAAc,EACjD,EAAW,cAAe,EACtB,UAAW,IAAY,EAAW,UAAW,GACjD,OAAO,eAAe,EAAQ,EAAW,IAAK,EAChD,CACF,CAEA,SAAS,aAAa,EAAa,EAAY,GAG7C,OAFI,GAAY,kBAAkB,EAAY,UAAW,GACrD,GAAa,kBAAkB,EAAa,GACzC,CACT,CAaA,IAAI,WAEJ,WACE,SAAS,EAAW,GAClB,gBAAgB,KAAM,GAEtB,KAAK,OAAS,CAChB,CA4EA,OA1EA,aAAa,EAAY,CAAC,CACxB,IAAK,OASL,MAAO,SAAc,EAAQ,GAE3B,IAAI,EAQJ,OALI,OAFJ,OAAyB,IAAhB,KAAK,QAAwC,OAAhB,KAAK,OAAkB,KAAK,OAAS,EAAO,KAAK,eAExB,IAAd,IAC/C,EAAS,GAIJ,IAAI,EAAW,EACxB,GASC,CACD,IAAK,cACL,MAAO,SAAqB,EAAQ,GAElC,IAAI,EAQJ,OALI,OAFJ,EAAS,EAAO,KAAK,eAE0C,IAAd,IAC/C,EAAS,GAIJ,IAAI,EAAW,EACxB,GAKC,CACD,IAAK,SACL,MAAO,WACL,OAAO,KAAK,MACd,GAMC,CACD,IAAK,aACL,MAAO,SAAoB,GACzB,OAAoB,OAAhB,KAAK,aAAmC,IAAhB,KAAK,OACxB,KAAK,OAEL,CAEX,IACE,CAAC,CACH,IAAK,QACL,MAAO,SAAe,GACpB,OAAO,IAAI,EAAW,EACxB,KAGK,CACT,CAlFA,GAoFA,OAAO,QAAU","file":"/npm/null-safety@1.0.0/lib/null-safety.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/null-safety@1.0.0/lib/null-safety.cjs.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';\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\n/**\r\n * プロパティへの`null-safety`かつ`undefined-safety`かつ`type-safety`かつ連続的\r\n * なアクセスをサポートするクラスです。ただし、適切なジェネリック型変数を得るた\r\n * めに、TypeScriptのコンパイラーオプション（`strict`もしくは少なくとも`strictNullChecks`）\r\n * を指定する必要があります。\r\n * @example\r\n * const title = NullSafety.start(new JSDOM(html).window.document)\r\n *   .next(o => o.querySelector('#title'))\r\n *   .next(o => o.textContent, 'title-unfetched')\r\n *   .result();\r\n */\nvar NullSafety =\n/*#__PURE__*/\nfunction () {\n  function NullSafety(source) {\n    _classCallCheck(this, NullSafety);\n\n    this.source = source;\n  }\n\n  _createClass(NullSafety, [{\n    key: \"next\",\n\n    /**\r\n     * 与えられたGetter関数を使って元の値から次の値を取得し、次の`NullSafety`イン\r\n     * スタンスを作成します。ただし、元の値が`undefined`もしくは`null`の場合には\r\n     * 元の値をそのまま次の値とします。また、元の値もしくは次の値が`undefined`も\r\n     * しくは`null`である場合、代替の値`altResult`が指定されていればその値を次の\r\n     * 値とします。\r\n     */\n    value: function next(getter, altResult) {\n      // Getter関数から次の値を取得する\n      var result;\n      result = this.source === undefined || this.source === null ? this.source : getter(this.source); // 場合によっては代替の値を次の値とする\n\n      if ((result === undefined || result === null) && altResult !== undefined) {\n        result = altResult;\n      } // 次の値を`NullSafety`にラップして返す\n\n\n      return new NullSafety(result);\n    }\n    /**\r\n     * 与えられたGetter関数を使って元の値から次の値を取得し、次の`NullSafety`イン\r\n     * スタンスを作成します。`nextWithAny`においては、元の値が`undefined`もしくは\r\n     * `null`である場合でも、それらを元の値としてGetter関数から次の値を取得としま\r\n     * す。また、元の値もしくは次の値が`undefined`もしくは`null`である場合、代替\r\n     * の値`altResult`が指定されていればその値を次の値とします。\r\n     */\n\n  }, {\n    key: \"nextWithAny\",\n    value: function nextWithAny(getter, altResult) {\n      // Getter関数から次の値を取得する\n      var result;\n      result = getter(this.source); // 場合によっては代替の値を次の値とする\n\n      if ((result === undefined || result === null) && altResult !== undefined) {\n        result = altResult;\n      } // 次の値を`NullSafety`にラップして返す\n\n\n      return new NullSafety(result);\n    }\n    /**\r\n     * 保持している値を返します\r\n     */\n\n  }, {\n    key: \"result\",\n    value: function result() {\n      return this.source;\n    }\n    /**\r\n     * 保持している値を返します。ただし、値が`null`または`undefined`の場合には、\r\n     * 与えられた代替の値`altResult`を返します。\r\n     */\n\n  }, {\n    key: \"resultAlty\",\n    value: function resultAlty(altResult) {\n      if (this.source !== null && this.source !== undefined) {\n        return this.source;\n      } else {\n        return altResult;\n      }\n    }\n  }], [{\n    key: \"start\",\n    value: function start(source) {\n      return new NullSafety(source);\n    }\n  }]);\n\n  return NullSafety;\n}();\n\nmodule.exports = NullSafety;\n"]}