{"version":3,"file":"option.mjs","sources":["../../../../src/mods/option/option.ts"],"sourcesContent":["import { None, NoneInit } from \"./none.js\";\nimport { Some, SomeInit } from \"./some.js\";\n\nexport type Nullable<T> =\n  T | undefined | null\n\nexport type Optional<T> =\n  T | undefined\n\nexport type NonOptional<T> =\n  Exclude<T, undefined>\n\nexport type Option<T> =\n  | Some<T>\n  | None\n\nexport type OptionInit<T> =\n  | SomeInit<T>\n  | NoneInit\n\nexport namespace Option {\n\n  export function from<T>(init: OptionInit<T>): Option<T> {\n    if (\"inner\" in init)\n      return new Some(init.inner)\n    return new None()\n  }\n\n  /**\n   * Create an Option from a nullable value\n   * @param inner \n   * @returns `Some<T>` if `T`, `None` if `undefined`\n   */\n  export function wrap<T>(inner: Nullable<T>): Option<T> {\n    if (inner == null)\n      return new None()\n    return new Some(inner)\n  }\n\n}"],"names":[],"mappings":";;;AAoBM,IAAW,OAmBhB;AAnBD,CAAA,UAAiB,MAAM,EAAA;IAErB,SAAgB,IAAI,CAAI,IAAmB,EAAA;QACzC,IAAI,OAAO,IAAI,IAAI;AACjB,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,IAAI,IAAI,EAAE,CAAA;KAClB;AAJe,IAAA,MAAA,CAAA,IAAI,OAInB,CAAA;AAED;;;;AAIG;IACH,SAAgB,IAAI,CAAI,KAAkB,EAAA;QACxC,IAAI,KAAK,IAAI,IAAI;YACf,OAAO,IAAI,IAAI,EAAE,CAAA;AACnB,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;KACvB;AAJe,IAAA,MAAA,CAAA,IAAI,OAInB,CAAA;AAEH,CAAC,EAnBgB,MAAM,KAAN,MAAM,GAmBtB,EAAA,CAAA,CAAA;;;;"}