{"version":3,"file":"index.cjs.production.min.cjs","sources":["../src/types.ts","../src/path-env.ts","../src/index.ts"],"sourcesContent":["import { ITSTypeAndStringLiteral } from 'ts-type/lib/helper/string';\n\nexport const enum EnumPathDelimiter\n{\n  poxix = ':',\n  win32 = ';',\n}\n\nexport type IPathDelimiter = ITSTypeAndStringLiteral<EnumPathDelimiter>\nexport type IPathElement = string\nexport type IPathArray = ReadonlyArray<IPathElement>\nexport type IPathString = IPathElement\n\nexport interface IEnv\n{\n  readonly [name: string]: string | undefined\n}\n\nexport interface IPathFactory\n{\n  get: {\n    array(): IPathArray,\n    string(): IPathString,\n    delim(): IPathDelimiter\n  },\n  set: {\n    array(x: IPathArray): IPathFactory,\n    string(x: IPathString): IPathFactory,\n    delim(x: IPathDelimiter): IPathFactory\n  },\n\n  append(x: IPathArray): IPathFactory,\n\n  prepend(x: IPathArray): IPathFactory,\n\n  surround(x: IPathArray): IPathFactory,\n\n  deduplicate(): IPathFactory\n}\n\nexport interface IEnvFactory\n{\n  get: {\n    path: {\n      name(): string,\n      factory(): IPathFactory\n    },\n    env(): IEnv,\n    rest(): IEnv\n  },\n  set: {\n    factory(x: IPathFactory): IEnvFactory,\n    name(x: string): IEnvFactory,\n    delim(x: IPathDelimiter): IEnvFactory\n  },\n  path: {\n    get: {\n      factory(): IPathFactory,\n      string(): IPathString,\n      array(): IPathArray,\n      delim(): IPathDelimiter,\n      name(): string\n    },\n    set: {\n      factory(x: IPathFactory): IEnvFactory,\n      string(x: IPathString): IEnvFactory,\n      array(x: IPathArray): IEnvFactory,\n      delim(x: IPathDelimiter): IEnvFactory,\n      name(x: string): IEnvFactory\n    },\n    append(addend: IPathArray): IEnvFactory,\n    prepend(addend: IPathArray): IEnvFactory,\n    surround(addend: IPathArray): IEnvFactory,\n    deduplicate(): IEnvFactory\n  }\n}\n","import { delimiter as _pathDelimiter } from 'path'\n\nimport { IEnvFactory, IEnv, IPathArray, IPathDelimiter, IPathFactory, IPathString } from './types'\n\nexport function _delimiter()\n{\n\treturn _pathDelimiter as IPathDelimiter;\n}\n\nexport function _split(str: IPathString, delim = _pathDelimiter as IPathDelimiter): IPathArray\n{\n\treturn str.split(delim);\n}\n\nexport function _join(array: IPathArray, delim = _pathDelimiter as IPathDelimiter): IPathString\n{\n\treturn array.join(delim);\n}\n\nexport function _pathString(str: IPathString, delim?: IPathDelimiter)\n{\n\treturn _pathArray(_split(str, delim), delim)\n}\n\nexport function _pathArray(array: IPathArray, delim = _pathDelimiter as IPathDelimiter): IPathFactory\n{\n\tconst append = (addend: IPathArray) =>\n\t\t_pathArray(array.concat(...addend), delim)\n\n\tconst prepend = (addend: IPathArray) =>\n\t\t_pathArray(addend.concat(...array), delim)\n\n\tconst surround = (addend: IPathArray) =>\n\t\t_pathArray(addend.concat(...array).concat(...addend), delim)\n\n\tconst deduplicate = () =>\n\t\t_pathArray(Array.from(new Set(array)), delim)\n\n\treturn {\n\t\tget: {\n\t\t\tarray: () => array,\n\t\t\tstring: () => _join(array, delim),\n\t\t\tdelim: () => delim,\n\t\t},\n\t\tset: {\n\t\t\tarray: (x: IPathArray) => _pathArray(x, delim),\n\t\t\tstring: (x: IPathString) => _pathString(x, delim),\n\t\t\tdelim: (x: IPathDelimiter) => _pathArray(array, x),\n\t\t},\n\t\tappend,\n\t\tprepend,\n\t\tsurround,\n\t\tdeduplicate,\n\t}\n}\n\nexport function _pathEnv(env: IEnv, name = 'PATH', delim = _pathDelimiter as IPathDelimiter): IEnvFactory\n{\n\tconst { [name]: str = '', ...restEnv } = env\n\tconst factory = _pathString(str, delim)\n\n\tfunction main(\n\t\tfactory: IPathFactory,\n\t\tname: string,\n\t\tdelim: IPathDelimiter,\n\t): IEnvFactory\n\t{\n\t\tconst replaceFactory = (x: IPathFactory) => main(x, name, x.get.delim())\n\n\t\treturn {\n\t\t\tget: {\n\t\t\t\tpath: {\n\t\t\t\t\tname: () => name,\n\t\t\t\t\tfactory: () => factory,\n\t\t\t\t},\n\t\t\t\tenv: () => ({\n\t\t\t\t\t[name]: factory.get.string(),\n\t\t\t\t\t...restEnv,\n\t\t\t\t}),\n\t\t\t\trest: () => restEnv,\n\t\t\t},\n\t\t\tset: {\n\t\t\t\tfactory: replaceFactory,\n\t\t\t\tname: (x: string) => main(factory, x, delim),\n\t\t\t\tdelim: (x: IPathDelimiter) => main(factory, name, x),\n\t\t\t},\n\t\t\tpath: {\n\t\t\t\tget: {\n\t\t\t\t\t...factory.get,\n\t\t\t\t\tfactory: () => factory,\n\t\t\t\t\tname: () => name,\n\t\t\t\t},\n\t\t\t\tset: {\n\t\t\t\t\tfactory: replaceFactory,\n\t\t\t\t\tstring: (x: IPathString) => main(factory.set.string(x), name, delim),\n\t\t\t\t\tarray: (x: IPathArray) => main(factory.set.array(x), name, delim),\n\t\t\t\t\tdelim: (x: IPathDelimiter) => main(factory.set.delim(x), name, x),\n\t\t\t\t\tname: (x: string) => main(factory, x, delim),\n\t\t\t\t},\n\t\t\t\tappend: (addend: IPathArray) =>\n\t\t\t\t\treplaceFactory(factory.append(addend)),\n\t\t\t\tprepend: (addend: IPathArray) =>\n\t\t\t\t\treplaceFactory(factory.prepend(addend)),\n\t\t\t\tsurround: (addend: IPathArray) =>\n\t\t\t\t\treplaceFactory(factory.surround(addend)),\n\t\t\t\tdeduplicate: () =>\n\t\t\t\t\treplaceFactory(factory.deduplicate()),\n\t\t\t},\n\t\t}\n\t}\n\n\treturn main(factory, name, delim)\n}\n","import { env } from 'process'\nexport * from './path-env'\nexport * from './types'\nimport { IEnv, IPathDelimiter } from './types';\nimport { _pathEnv, _pathString } from './path-env';\n\nexport function pathString(str = env['PATH'] || '', delim?: IPathDelimiter) {\n\treturn _pathString(str, delim);\n}\n\nexport function pathEnv(envObject: IEnv = env,\n\tname?: string,\n\tdelim?: IPathDelimiter,\n)\n{\n\treturn _pathEnv(envObject, name, delim);\n}\n\nexport default pathEnv\n"],"names":["EnumPathDelimiter","_split","str","delim","_pathDelimiter","split","_join","array","join","_pathString","_pathArray","get","string","set","x","append","addend","concat","prepend","surround","deduplicate","Array","from","Set","_pathEnv","env","name","restEnv","main","factory","replaceFactory","path","rest","pathEnv","envObject","_delimiter","pathString"],"mappings":"wEAEkBA,kDCOFC,OAAOC,EAAkBC,EAAQC,aAEhD,OAAOF,EAAIG,MAAMF,EACjB,UAEeG,MAAMC,EAAmBJ,EAAQC,aAEhD,OAAOG,EAAMC,KAAKL,EAClB,CAEe,SAAAM,YAAYP,EAAkBC,GAE7C,OAAOO,WAAWT,OAAOC,EAAKC,GAAQA,EACtC,UAEeO,WAAWH,EAAmBJ,EAAQC,aAcrD,MAAO,CACNO,IAAK,CACJJ,MAAO,IAAMA,EACbK,OAAQ,IAAMN,MAAMC,EAAOJ,GAC3BA,MAAO,IAAMA,GAEdU,IAAK,CACJN,MAAQO,GAAkBJ,WAAWI,EAAGX,GACxCS,OAASE,GAAmBL,YAAYK,EAAGX,GAC3CA,MAAQW,GAAsBJ,WAAWH,EAAOO,IAEjDC,OAvBeC,GACfN,WAAWH,EAAMU,UAAUD,GAASb,GAuBpCe,QArBgBF,GAChBN,WAAWM,EAAOC,UAAUV,GAAQJ,GAqBpCgB,SAnBiBH,GACjBN,WAAWM,EAAOC,UAAUV,GAAOU,UAAUD,GAASb,GAmBtDiB,YAjBmB,IACnBV,WAAWW,MAAMC,KAAK,IAAIC,IAAIhB,IAASJ,GAkBxC,CAEK,SAAUqB,SAASC,EAAWC,EAAO,OAAQvB,EAAQC,EAAAA,WAE1D,MAAQsB,CAACA,GAAOxB,EAAM,MAAOyB,GAAYF,EAqDzC,OAlDA,SAASG,KACRC,EACAH,EACAvB,GAGA,MAAM2B,eAAkBhB,GAAoBc,KAAKd,EAAGY,EAAMZ,EAAEH,IAAIR,SAEhE,MAAO,CACNQ,IAAK,CACJoB,KAAM,CACLL,KAAM,IAAMA,EACZG,QAAS,IAAMA,GAEhBJ,IAAK,KAAO,CACXC,CAACA,GAAOG,EAAQlB,IAAIC,YACjBe,IAEJK,KAAM,IAAML,GAEbd,IAAK,CACJgB,QAASC,eACTJ,KAAOZ,GAAcc,KAAKC,EAASf,GACnCX,MAAQW,GAAsBc,KAAKC,EAASH,IAE7CK,KAAM,CACLpB,IAAK,IACDkB,EAAQlB,IACXkB,QAAS,IAAMA,EACfH,KAAM,IAAMA,GAEbb,IAAK,CACJgB,QAASC,eACTlB,OAASE,GAAmBc,KAAKC,EAAQhB,IAAID,OAAOE,GAAIY,GACxDnB,MAAQO,GAAkBc,KAAKC,EAAQhB,IAAIN,MAAMO,GAAIY,GACrDvB,MAAQW,GAAsBc,KAAKC,EAAQhB,IAAIV,MAAMW,GAAIY,GACzDA,KAAOZ,GAAcc,KAAKC,EAASf,IAEpCC,OAASC,GACRc,eAAeD,EAAQd,OAAOC,IAC/BE,QAAUF,GACTc,eAAeD,EAAQX,QAAQF,IAChCG,SAAWH,GACVc,eAAeD,EAAQV,SAASH,IACjCI,YAAa,IACZU,eAAeD,EAAQT,gBAG1B,CAEMQ,CApDSnB,YAAYP,EAAKC,GAoDZuB,EACrB,CCtGK,SAAUO,QAAQC,EAAkBT,MACzCC,EACAvB,GAGA,OAAOqB,SAASU,EAAWR,EAAMvB,EACjC,CFdiBH,QAAlBA,uBAAA,GAAkBA,EAAAA,QAAiBA,oBAAjBA,0BAIjB,CAAA,IAFC,MAAA,IACAA,EAAA,MAAA,gCCDcmC,aAEf,OAAO/B,WACP,uMCDe,SAAAgC,WAAWlC,EAAMuB,EAAGA,IAAA,MAAY,GAAItB,GACnD,OAAOM,YAAYP,EAAKC,EACxB"}