{"version":3,"file":"index.esm.mjs","sources":["../src/path-env.ts","../src/types.ts","../src/index.ts"],"sourcesContent":["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 { 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 { 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":["_delimiter","_pathDelimiter","_split","str","delim","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","EnumPathDelimiter","pathString","pathEnv","envObject"],"mappings":";;;;SAIgBA;EAEf,OAAOC;AACP;;SAEeC,OAAOC,GAAkBC,IAAQH;EAEhD,OAAOE,EAAIE,MAAMD;AACjB;;SAEeE,MAAMC,GAAmBH,IAAQH;EAEhD,OAAOM,EAAMC,KAAKJ;AAClB;;AAEe,SAAAK,YAAYN,GAAkBC;EAE7C,OAAOM,WAAWR,OAAOC,GAAKC,IAAQA;AACtC;;SAEeM,WAAWH,GAAmBH,IAAQH;EAcrD,OAAO;IACNU,KAAK;MACJJ,OAAO,MAAMA;MACbK,QAAQ,MAAMN,MAAMC,GAAOH;MAC3BA,OAAO,MAAMA;;IAEdS,KAAK;MACJN,OAAQO,KAAkBJ,WAAWI,GAAGV;MACxCQ,QAASE,KAAmBL,YAAYK,GAAGV;MAC3CA,OAAQU,KAAsBJ,WAAWH,GAAOO;;IAEjDC,QAvBeC,KACfN,WAAWH,EAAMU,UAAUD,IAASZ;IAuBpCc,SArBgBF,KAChBN,WAAWM,EAAOC,UAAUV,IAAQH;IAqBpCe,UAnBiBH,KACjBN,WAAWM,EAAOC,UAAUV,GAAOU,UAAUD,IAASZ;IAmBtDgB,aAjBmB,MACnBV,WAAWW,MAAMC,KAAK,IAAIC,IAAIhB,KAASH;;AAkBxC;;AAEK,SAAUoB,SAASC,GAAWC,IAAO,QAAQtB,IAAQH;EAE1D,OAAQyB,CAACA,IAAOvB,IAAM,OAAOwB,KAAYF;EAqDzC,OAlDA,SAASG,KACRC,GACAH,GACAtB;IAGA,MAAM0B,iBAAkBhB,KAAoBc,KAAKd,GAAGY,GAAMZ,EAAEH,IAAIP;IAEhE,OAAO;MACNO,KAAK;QACJoB,MAAM;UACLL,MAAM,MAAMA;UACZG,SAAS,MAAMA;;QAEhBJ,KAAK,OAAO;UACXC,CAACA,IAAOG,EAAQlB,IAAIC;aACjBe;;QAEJK,MAAM,MAAML;;MAEbd,KAAK;QACJgB,SAASC;QACTJ,MAAOZ,KAAcc,KAAKC,GAASf;QACnCV,OAAQU,KAAsBc,KAAKC,GAASH;;MAE7CK,MAAM;QACLpB,KAAK;aACDkB,EAAQlB;UACXkB,SAAS,MAAMA;UACfH,MAAM,MAAMA;;QAEbb,KAAK;UACJgB,SAASC;UACTlB,QAASE,KAAmBc,KAAKC,EAAQhB,IAAID,OAAOE,IAAIY;UACxDnB,OAAQO,KAAkBc,KAAKC,EAAQhB,IAAIN,MAAMO,IAAIY;UACrDtB,OAAQU,KAAsBc,KAAKC,EAAQhB,IAAIT,MAAMU,IAAIY;UACzDA,MAAOZ,KAAcc,KAAKC,GAASf;;QAEpCC,QAASC,KACRc,eAAeD,EAAQd,OAAOC;QAC/BE,SAAUF,KACTc,eAAeD,EAAQX,QAAQF;QAChCG,UAAWH,KACVc,eAAeD,EAAQV,SAASH;QACjCI,aAAa,MACZU,eAAeD,EAAQT;;;AAG1B,GAEMQ,CApDSnB,YAAYN,GAAKC,IAoDZsB;AACrB;;IC9GiBO;;ACIF,SAAAC,WAAW/B,IAAMsB,EAAG,QAAY,IAAIrB;EACnD,OAAOK,YAAYN,GAAKC;AACxB;;AAEK,SAAU+B,QAAQC,IAAkBX,GACzCC,GACAtB;EAGA,OAAOoB,SAASY,GAAWV,GAAMtB;AACjC;;CDdD,SAAkB6B;EAEhBA,EAAA,QAAA,KACAA,EAAA,QAAA;AAHF,CAAA,CAAkBA,MAAAA,IAIjB,CAAA;;"}