{"_id":"upath","_rev":"4539331","name":"upath","description":"A drop-in replacement / proxy to Node.js path, replacing \\\\ with / for all results & adding file extension functions.","dist-tags":{"latest":"3.0.6"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"time":{"modified":"2026-04-09T15:33:17.000Z","created":"2014-10-29T02:29:05.388Z","3.0.6":"2026-04-09T23:51:33.447Z","3.0.5":"2026-04-06T01:40:15.323Z","3.0.0":"2026-04-05T22:35:31.271Z","2.0.1":"2020-11-07T17:01:34.154Z","2.0.0":"2020-10-06T18:15:14.685Z","1.2.0":"2019-09-02T20:42:24.075Z","1.1.2":"2019-03-11T12:58:39.143Z","1.1.1":"2019-03-07T10:46:12.624Z","1.1.0":"2018-05-15T21:26:45.945Z","1.0.5":"2018-04-27T17:59:11.364Z","1.0.4":"2018-02-26T00:13:26.634Z","1.0.3":"2018-02-25T23:14:20.642Z","1.0.2":"2017-11-13T23:14:39.343Z","1.0.0":"2017-02-07T15:47:42.333Z","0.2.0":"2016-07-03T00:53:34.833Z","0.1.7":"2016-02-22T00:44:17.009Z","0.1.6":"2015-08-20T22:41:00.942Z","0.1.5":"2014-11-17T22:52:30.607Z","0.1.4":"2014-11-08T18:39:33.427Z","0.1.3":"2014-10-29T23:38:16.925Z","0.1.2":"2014-10-29T20:35:51.915Z","0.1.1":"2014-10-29T03:16:42.083Z","0.1.0":"2014-10-29T02:29:05.388Z"},"users":{"thoroc":true,"kserks":true,"n03024735":true,"vonthar":true,"sbruchmann":true,"anodynos":true,"rochejul":true,"zand3rs":true},"author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/anodynos/upath.git"},"versions":{"3.0.6":{"name":"upath","description":"A drop-in replacement / proxy to Node.js path, replacing \\\\ with / for all results & adding file extension functions.","version":"3.0.6","homepage":"https://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/anodynos"},{"type":"polar","url":"https://polar.sh/anodynos"},{"type":"tidelift","url":"https://tidelift.com/subscription/pkg/npm-upath"}],"keywords":["path","unix","windows","cross-platform","extension","file extension","replace extension","change extension","trim extension","add extension","default extension","UNC paths","typescript","esm","forward-slash"],"repository":{"type":"git","url":"git+https://github.com/anodynos/upath.git"},"bugs":{"url":"https://github.com/anodynos/upath/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=20"},"scripts":{"dev":"npx tsup --watch","build":"npx tsup","test":"npx jest","test:coverage":"npx jest --coverage","lint":"npx tsc --noEmit","prepublishOnly":"npm run build","test:integration":"npm run build && node test/integration/cjs-test.cjs && node test/integration/esm-test.mjs","prepare":"husky"},"lint-staged":{"*.{ts,tsx,js,jsx,mjs,cjs,json,md,mdx,css,scss,yaml,yml,html}":"prettier --write"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","husky":"^9.1.7","jest":"^29.7.0","lint-staged":"^16.4.0","prettier":"^3.8.1","ts-jest":"^29.2.0","ts-node":"^10.9.2","tsup":"^8.0.0","typescript":"^5.5.0"},"gitHead":"96c2efbf888e9eed43bb8ddc9377870530e2dd5a","_id":"upath@3.0.6","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"e4d3d992cd533a548ad8cc213b049ce69f05ca1e","size":14026,"noattachment":false,"key":"/upath/-/upath-3.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-3.0.6.tgz"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:273ea1f6-7559-4a1d-8213-4c3194a726fa"}},"directories":{},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upath_3.0.6_1775778693309_0.7804735914290228"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-09T23:51:33.447Z","publish_time":1775778693447,"_source_registry_name":"default","_cnpm_publish_time":1775778693447},"3.0.5":{"name":"upath","description":"A drop-in replacement / proxy to Node.js path, replacing \\\\ with / for all results & adding file extension functions.","version":"3.0.5","homepage":"https://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/anodynos"},{"type":"tidelift","url":"https://tidelift.com/subscription/pkg/npm-upath"}],"keywords":["path","unix","windows","cross-platform","extension","file extension","replace extension","change extension","trim extension","add extension","default extension","UNC paths","typescript","esm","forward-slash"],"repository":{"type":"git","url":"git+https://github.com/anodynos/upath.git"},"bugs":{"url":"https://github.com/anodynos/upath/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=20"},"scripts":{"dev":"npx tsup --watch","build":"npx tsup","test":"npx jest","test:coverage":"npx jest --coverage","lint":"npx tsc --noEmit","prepublishOnly":"npm run build","test:integration":"npm run build && node test/integration/cjs-test.cjs && node test/integration/esm-test.mjs","sync:public":"bash scripts/sync-public.sh","prepare":"husky"},"lint-staged":{"*.{ts,tsx,js,jsx,mjs,cjs,json,md,mdx,css,scss,yaml,yml,html}":"prettier --write"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","husky":"^9.1.7","jest":"^29.7.0","lint-staged":"^16.4.0","prettier":"^3.8.1","ts-jest":"^29.2.0","ts-node":"^10.9.2","tsup":"^8.0.0","typescript":"^5.5.0"},"gitHead":"322c20e308792372e8a6ae1cb115202738cdf9ab","_id":"upath@3.0.5","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"dac0fb4ae9eac67d9229a3263ba865fc9960c6e3","size":11529,"noattachment":false,"key":"/upath/-/upath-3.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-3.0.5.tgz"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:273ea1f6-7559-4a1d-8213-4c3194a726fa"}},"directories":{},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upath_3.0.5_1775439615121_0.9808144821924498"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-06T01:40:15.323Z","publish_time":1775439615323,"_source_registry_name":"default","_cnpm_publish_time":1775439615323},"3.0.0":{"name":"upath","description":"A drop-in replacement / proxy to Node.js path, replacing \\\\ with / for all results & adding file extension functions.","version":"3.0.0","homepage":"https://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","cross-platform","extension","file extension","replace extension","change extension","trim extension","add extension","default extension","UNC paths","typescript","esm","forward-slash"],"repository":{"type":"git","url":"git+https://github.com/anodynos/upath.git"},"bugs":{"url":"https://github.com/anodynos/upath/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=20"},"scripts":{"dev":"npx tsup --watch","build":"npx tsup","test":"npx jest","test:coverage":"npx jest --coverage","lint":"npx tsc --noEmit","prepublishOnly":"npm run build","test:integration":"npm run build && node test/integration/cjs-test.cjs && node test/integration/esm-test.mjs","sync:public":"bash scripts/sync-public.sh","prepare":"husky"},"lint-staged":{"*.{ts,tsx,js,jsx,mjs,cjs,json,md,mdx,css,scss,yaml,yml,html}":"prettier --write"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","husky":"^9.1.7","jest":"^29.7.0","lint-staged":"^16.4.0","prettier":"^3.8.1","ts-jest":"^29.2.0","ts-node":"^10.9.2","tsup":"^8.0.0","typescript":"^5.5.0"},"gitHead":"a973d668e762ed84916a67d3da3d2a2294b316d2","_id":"upath@3.0.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"f33a5fd1c5bc634298f71f63032838e30fee8dc1","size":11604,"noattachment":false,"key":"/upath/-/upath-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-3.0.0.tgz"},"_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"directories":{},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upath_3.0.0_1775428531116_0.8236723552522371"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-05T22:35:31.271Z","publish_time":1775428531271,"_source_registry_name":"default","_cnpm_publish_time":1775428531271},"2.0.1":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results (supports UNC paths) & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"2.0.1","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension","UNC paths"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"npx grunt","build":"npx grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4","yarn":"*"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"^1.1.0","grunt-urequire":"0.7.x","lodash":"^4.17.20","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"^3.3.5","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"04a89182fd2029365876e44896f828182369618f","_id":"upath@2.0.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.5","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"50c73dea68d6f6b990f51d279ce6081665d61a8b","size":8330,"noattachment":false,"key":"/upath/-/upath-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-2.0.1.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_2.0.1_1604768493989_0.6257685547230398"},"_hasShrinkwrap":false,"publish_time":1604768494154,"_cnpm_publish_time":1604768494154},"2.0.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results (supports UNC paths) & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"2.0.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension","UNC paths"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"npx grunt","build":"npx grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4","yarn":"*"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"^1.1.0","grunt-urequire":"0.7.x","lodash":"^4.17.20","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"^3.3.5","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"6d71bca2b3dc1a9972158906cfe22477531a4776","_id":"upath@2.0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.5","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"7234f3c1e7fd2bcb4f6aaba3e5565ee13ce6d287","size":8338,"noattachment":false,"key":"/upath/-/upath-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-2.0.0.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_2.0.0_1602008114576_0.49612663397823287"},"_hasShrinkwrap":false,"publish_time":1602008114685,"_cnpm_publish_time":1602008114685},"1.2.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.2.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4","yarn":"*"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"^1.1.0","grunt-urequire":"0.7.x","lodash":"^4.17.15","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"^3.3.5","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"48138967b05a828abcb626f83fcf6795fa0bf405","_id":"upath@1.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"8f66dbcd55a883acdae4408af8b035a5044c1894","size":7985,"noattachment":false,"key":"/upath/-/upath-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.2.0.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.2.0_1567456943891_0.766137715814621"},"_hasShrinkwrap":false,"publish_time":1567456944075,"_cnpm_publish_time":1567456944075},"1.1.2":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.1.2","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4","yarn":"*"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"611e9861a4f5411e28123e43bcdc4c8cbd264819","_id":"upath@1.1.2","_npmVersion":"6.5.0","_nodeVersion":"11.8.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"3db658600edaeeccbe6db5e684d67ee8c2acd068","size":7896,"noattachment":false,"key":"/upath/-/upath-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.1.2.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.1.2_1552309119040_0.3862582480498318"},"_hasShrinkwrap":false,"publish_time":1552309119143,"_cnpm_publish_time":1552309119143},"1.1.1":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.1.1","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4","yarn":">=1"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"8cbc8538e2e127eede7c891ff350a4d42bd8f4a8","_id":"upath@1.1.1","_npmVersion":"6.5.0","_nodeVersion":"11.8.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"497f7c1090b0818f310bbfb06783586a68d28014","size":7890,"noattachment":false,"key":"/upath/-/upath-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.1.1.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.1.1_1551955572495_0.18914717102935752"},"_hasShrinkwrap":false,"publish_time":1551955572624,"_cnpm_publish_time":1551955572624},"1.1.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.1.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"34fe330e405caacacf201a9abbb91e81b114518e","_id":"upath@1.1.0","_npmVersion":"5.8.0","_nodeVersion":"9.9.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"dist":{"shasum":"35256597e46a581db4793d0ce47fa9aebfc9fabd","size":7897,"noattachment":false,"key":"/upath/-/upath-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.1.0.tgz"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.1.0_1526419605863_0.9798545761860444"},"_hasShrinkwrap":false,"publish_time":1526419605945,"_cnpm_publish_time":1526419605945},"1.0.5":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.0.5","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"2b181f4f1a19f2c919e452e5b837d4719d93118c","_id":"upath@1.0.5","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"dist":{"shasum":"02cab9ecebe95bbec6d5fc2566325725ab6d1a73","size":7871,"noattachment":false,"key":"/upath/-/upath-1.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.0.5.tgz"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.0.5_1524851951300_0.5330775232308282"},"_hasShrinkwrap":false,"publish_time":1524851951364,"_cnpm_publish_time":1524851951364},"1.0.4":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.0.4","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4 <=9"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"3bdcd474017e7635ecbc7509ea03c6b036df3b8d","_id":"upath@1.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"dist":{"shasum":"ee2321ba0a786c50973db043a50b7bcba822361d","size":7863,"noattachment":false,"key":"/upath/-/upath-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.0.4.tgz"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.0.4_1519604006586_0.1287124338797132"},"_hasShrinkwrap":false,"publish_time":1519604006634,"_cnpm_publish_time":1519604006634},"1.0.3":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.0.3","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4 <=9"},"dependencies":{"lodash.endswith":"^4.2.1","lodash.startswith":"^4.2.1","lodash.isfunction":"^3.0.8","lodash.isstring":"^4.0.1"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","lodash":"^4.17.4","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"f2a64fc55e984324083d61cd9938c312df7e53b6","_id":"upath@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"dist":{"shasum":"18a4822d3f668cc69876245d3c2ca74a498eba9b","size":7858,"noattachment":false,"key":"/upath/-/upath-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.0.3.tgz"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath_1.0.3_1519600460285_0.9068103125432261"},"_hasShrinkwrap":false,"publish_time":1519600460642,"_cnpm_publish_time":1519600460642},"1.0.2":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.0.2","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=4 <=9"},"dependencies":{"lodash.endswith":"^4.2.1","lodash.startswith":"^4.2.1","lodash.isfunction":"^3.0.8","lodash.isstring":"^4.0.1"},"devDependencies":{"chai":"~4.0.2","coffee-script":"1.12.6","grunt":"0.4.5","grunt-contrib-watch":"~1.0.0","grunt-urequire":"0.7.x","mocha":"~3.4.2","uberscore":"0.0.19","underscore.string":"~3.3.4","urequire":"0.7.0-beta.33","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"a28b9a893684a51f94e8454a1a99e1200b8b962b","_id":"upath@1.0.2","_npmVersion":"5.5.1","_nodeVersion":"9.1.0","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"80aaae5395abc5fd402933ae2f58694f0860204c","size":7848,"noattachment":false,"key":"/upath/-/upath-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.0.2.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/upath-1.0.2.tgz_1510614878269_0.19207502622157335"},"publish_time":1510614879343,"_hasShrinkwrap":false,"_cnpm_publish_time":1510614879343},"1.0.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"1.0.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","types":"./upath.d.ts","preferGlobal":false,"scripts":{"test":"grunt","build":"grunt lib"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=0.10 <=7"},"dependencies":{"lodash":"3.x","underscore.string":"2.3.x"},"devDependencies":{"chai":"3.5.x","grunt":"0.4.5","grunt-contrib-watch":"0.6.x","grunt-urequire":"0.7.x","mocha":"2.4.x","uberscore":"0.0.19","urequire":"0.7.0-beta.29","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"dd3b692bdfbcc327f07e62a73de6a1d27ea90dee","_id":"upath@1.0.0","_shasum":"b4706b9461ca8473adf89133d235689ca17f3656","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"b4706b9461ca8473adf89133d235689ca17f3656","size":8175,"noattachment":false,"key":"/upath/-/upath-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-1.0.0.tgz"},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/upath-1.0.0.tgz_1486482461557_0.5026046861894429"},"publish_time":1486482462333,"_cnpm_publish_time":1486482462333,"_hasShrinkwrap":false},"0.2.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"0.2.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=0.10 <=5"},"typescript":{"definition":"upath.d.ts"},"dependencies":{"lodash":"3.x","underscore.string":"2.3.x"},"devDependencies":{"chai":"3.5.x","grunt":"0.4.5","grunt-contrib-watch":"0.6.x","grunt-urequire":"0.7.x","mocha":"2.4.x","uberscore":"0.0.19","urequire":"0.7.0-beta.29","urequire-ab-specrunner":"^0.2.5","urequire-rc-inject-version":"^0.1.6"},"gitHead":"037431d3b8217397045055364029deddbba4194d","_id":"upath@0.2.0","_shasum":"bdbad0f2c60afea165f8127dbb1b5bdee500ad81","_from":".","_npmVersion":"2.15.0","_nodeVersion":"0.10.44","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"bdbad0f2c60afea165f8127dbb1b5bdee500ad81","size":8192,"noattachment":false,"key":"/upath/-/upath-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.2.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/upath-0.2.0.tgz_1467507212666_0.4532309107016772"},"publish_time":1467507214833,"_cnpm_publish_time":1467507214833,"_hasShrinkwrap":false},"0.1.7":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"0.1.7","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=0.10 <=5"},"typescript":{"definition":"upath.d.ts"},"dependencies":{"lodash":"3.x","underscore.string":"2.3.x"},"devDependencies":{"chai":"3.5.x","mocha":"2.4.x","grunt":"0.4.5","grunt-contrib-watch":"0.6.x","grunt-urequire":"0.7.x","urequire":"0.7.0-beta.25","uberscore":"0.0.16","urequire-ab-specrunner":"^0.2.2","urequire-rc-inject-version":"^0.1.6"},"gitHead":"512f6605511c66ca79600dc8c3594476705b2320","_id":"upath@0.1.7","_shasum":"7c5bbfe9a4e074ff0b83131ad0c13c2d8601383b","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.3.1","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"7c5bbfe9a4e074ff0b83131ad0c13c2d8601383b","size":7962,"noattachment":false,"key":"/upath/-/upath-0.1.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.7.tgz"},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/upath-0.1.7.tgz_1456101854015_0.8668476182501763"},"publish_time":1456101857009,"_cnpm_publish_time":1456101857009,"_hasShrinkwrap":false},"0.1.6":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & new methods to normalize & join keeping leading `./` and add, change, default, trim file extensions.","version":"0.1.6","homepage":"http://github.com/anodynos/upath/","author":{"name":"Angelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"license":"MIT","keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath.git"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":">=0.10.x <=0.12.x"},"dependencies":{"lodash":">=2.x","underscore.string":"2.3.x"},"devDependencies":{"chai":"1.9.x","mocha":"2.0.x","grunt":"0.4.5","grunt-contrib-watch":"0.5.x","grunt-urequire":"0.7.x","urequire":"0.7.0-beta.20","uberscore":"0.0.16","urequire-ab-specrunner":"0.2.x","urequire-rc-inject-version":"0.1.x"},"gitHead":"aebcd89d227675b473c870aa2dbd3302d98dfc36","_id":"upath@0.1.6","_shasum":"4809de430e55c5845b1cec6319f0fe6c877aa958","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"4809de430e55c5845b1cec6319f0fe6c877aa958","size":6243,"noattachment":false,"key":"/upath/-/upath-0.1.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.6.tgz"},"publish_time":1440110460942,"_cnpm_publish_time":1440110460942,"_hasShrinkwrap":false},"0.1.5":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.5","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","mocha":"^2.0.0","grunt":"0.4.5","grunt-contrib-watch":"~0.5.x","grunt-urequire":"0.7.x","urequire":"0.7.x","uberscore":"0.0.16","urequire-ab-specrunner":"^0.1.10","urequire-rc-inject-version":"^0.1.2"},"gitHead":"0ba92813c422b6137b5cda10538a745fbf20227e","_id":"upath@0.1.5","_shasum":"04eb8709ce6ee7f5067ea112a2b60c6eba544485","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"04eb8709ce6ee7f5067ea112a2b60c6eba544485","size":6074,"noattachment":false,"key":"/upath/-/upath-0.1.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.5.tgz"},"publish_time":1416264750607,"_cnpm_publish_time":1416264750607,"_hasShrinkwrap":false},"0.1.4":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.4","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","coffee-script":"^1.8.0","mocha":"^2.0.0","grunt":"0.4.x","grunt-contrib-clean":"0.4.x","grunt-contrib-concat":"0.1.x","grunt-shell":"~0.3.x","grunt-contrib-watch":"~0.5.x","uberscore":"0.0.16"},"gitHead":"c0f7cdd53721872c88b3101dfacac3d735c1079f","_id":"upath@0.1.4","_shasum":"7008becb374e3b75063235848e4bacd6d3c4d9b3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"7008becb374e3b75063235848e4bacd6d3c4d9b3","size":6374,"noattachment":false,"key":"/upath/-/upath-0.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.4.tgz"},"publish_time":1415471973427,"_cnpm_publish_time":1415471973427,"_hasShrinkwrap":false},"0.1.3":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.3","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","coffee-script":"^1.8.0","mocha":"^2.0.0","grunt":"0.4.x","grunt-contrib-clean":"0.4.x","grunt-contrib-concat":"0.1.x","grunt-shell":"~0.3.x","grunt-contrib-watch":"~0.5.x","uberscore":"0.0.16"},"gitHead":"4e6006015baa7f00ecf7c64868fe82728422819a","_id":"upath@0.1.3","_shasum":"7b195b998f469dd1a021fd1c48fb6046dd9064dc","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"7b195b998f469dd1a021fd1c48fb6046dd9064dc","size":6089,"noattachment":false,"key":"/upath/-/upath-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.3.tgz"},"publish_time":1414625896925,"_cnpm_publish_time":1414625896925,"_hasShrinkwrap":false},"0.1.2":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.2","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","coffee-script":"^1.8.0","mocha":"^2.0.0","grunt":"0.4.x","grunt-contrib-clean":"0.4.x","grunt-contrib-concat":"0.1.x","grunt-shell":"~0.3.x","grunt-contrib-watch":"~0.5.x","uberscore":"0.0.16"},"gitHead":"4cc6ced23237872d66a38087c28d740d3b6d98b3","_id":"upath@0.1.2","_shasum":"2306202c6b65cfa5d150b1b76388e81427a4f221","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"2306202c6b65cfa5d150b1b76388e81427a4f221","size":5733,"noattachment":false,"key":"/upath/-/upath-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.2.tgz"},"publish_time":1414614951915,"_cnpm_publish_time":1414614951915,"_hasShrinkwrap":false},"0.1.1":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.1","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","coffee-script":"^1.8.0","mocha":"^2.0.0","grunt":"0.4.x","grunt-contrib-clean":"0.4.x","grunt-contrib-concat":"0.1.x","grunt-shell":"~0.3.x","grunt-contrib-watch":"~0.5.x","uberscore":"0.0.16"},"gitHead":"a85237754056be321492164043485e7cf56a529a","_id":"upath@0.1.1","_shasum":"203a77784555e133c5bde9c8698693defaf3e9e7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"203a77784555e133c5bde9c8698693defaf3e9e7","size":4886,"noattachment":false,"key":"/upath/-/upath-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.1.tgz"},"publish_time":1414552602083,"_cnpm_publish_time":1414552602083,"_hasShrinkwrap":false},"0.1.0":{"name":"upath","description":"A proxy to `path`, replacing `\\` with `/` for all results & methods to add, change, default, trim file extensions.","version":"0.1.0","homepage":"http://github.com/anodynos/upath/","author":{"name":"Agelos Pikoulas","email":"agelos.pikoulas@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"keywords":["path","unix","windows","extension","file extension","replace extension","change extension","trim extension","add extension","default extension"],"repository":{"type":"git","url":"git://github.com/anodynos/upath"},"bugs":{"url":"http://github.com/anodynos/upath/issues","email":"agelos.pikoulas@gmail.com"},"main":"./build/code/upath.js","preferGlobal":false,"scripts":{"test":"grunt"},"directories":{"doc":"./doc","dist":"./build"},"engines":{"node":"0.10.x"},"dependencies":{"lodash":"*","underscore.string":"^2.3.0"},"devDependencies":{"chai":"^1.9.0","coffee-script":"^1.8.0","mocha":"^2.0.0","grunt":"0.4.x","grunt-contrib-clean":"0.4.x","grunt-contrib-concat":"0.1.x","grunt-shell":"~0.3.x","grunt-contrib-watch":"~0.5.x","uberscore":"0.0.16"},"gitHead":"75f8bb50dc920a4f68f4a930e7b0946d3a413f0c","_id":"upath@0.1.0","_shasum":"823665902b2c9b37a5efcfb79a9b53b91738aa9b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"anodynos","email":"agelos.pikoulas@gmail.com"},"maintainers":[{"name":"anodynos","email":"agelos.pikoulas@gmail.com"}],"dist":{"shasum":"823665902b2c9b37a5efcfb79a9b53b91738aa9b","size":4902,"noattachment":false,"key":"/upath/-/upath-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/upath/download/upath-0.1.0.tgz"},"publish_time":1414549745388,"_cnpm_publish_time":1414549745388,"_hasShrinkwrap":false}},"readme":"# upath v3\n\n**The battle-tested path library that just works -- everywhere.**\n\n[![npm version](https://img.shields.io/npm/v/upath.svg)](https://www.npmjs.com/package/upath)\n[![npm downloads](https://img.shields.io/npm/dw/upath.svg)](https://www.npmjs.com/package/upath)\n[![CI](https://img.shields.io/github/actions/workflow/status/anodynos/upath/ci.yml?branch=master&label=CI)](https://github.com/anodynos/upath/actions/workflows/ci.yml)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.5+-blue.svg)](https://www.typescriptlang.org/)\n[![Node.js](https://img.shields.io/node/v/upath.svg)](https://nodejs.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n[![Zero Dependencies](https://img.shields.io/badge/dependencies-0-brightgreen.svg)](https://www.npmjs.com/package/upath)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/upath)](https://bundlephobia.com/package/upath)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/anodynos?label=Sponsors)](https://github.com/sponsors/anodynos)\n\nTrusted for over a decade. **20 million downloads per week.** Zero runtime dependencies. One import and every path in your project is consistent -- no more `\\` vs `/` headaches across Windows, Linux, and macOS.\n\n```typescript\nimport upath from 'upath' // use exactly like path — but it always works\n```\n\n## The Problem\n\nNode.js `path` is platform-dependent. Run the same code on Windows and you get `\\` separators that break everything:\n\n```typescript\n// On Windows, path gives you this:\npath.normalize('c:\\\\windows\\\\..\\\\nodejs\\\\path') // 'c:\\\\nodejs\\\\path'    ← backslashes everywhere\npath.join('some/nodejs\\\\windows', '../path') // 'some/path'           ← WRONG result\npath.parse('c:\\\\Windows\\\\dir\\\\file.ext') // { dir: '', base: 'c:\\\\Windows\\\\dir\\\\file.ext' } ← BROKEN\n\n// upath gives you this — on ALL platforms:\nupath.normalize('c:\\\\windows\\\\..\\\\nodejs\\\\path') // 'c:/nodejs/path'      ✓\nupath.join('some/nodejs\\\\windows', '../path') // 'some/nodejs/path'    ✓\nupath.parse('c:\\\\Windows\\\\dir\\\\file.ext') // { dir: 'c:/Windows/dir', base: 'file.ext' }  ✓\n```\n\nThe irony? Windows works perfectly fine with forward slashes inside Node.js. The `\\` convention is purely cosmetic -- and it breaks everything downstream: path comparisons, URLs, template literals, config files, CI pipelines, globs.\n\n**upath fixes this.** It wraps every `path` function to normalize `\\` to `/` in all results. Same API, same behavior, zero surprises.\n\n## How It Works\n\nupath is a **thin dynamic proxy** over Node's built-in `path` module. Zero runtime dependencies -- its only import is `node:path` itself.\n\n1. At load time, iterates over every export of `path` via `Object.entries()`\n2. Functions get wrapped: string arguments are normalized on the way in, string results on the way out\n3. Non-function properties are copied as-is (except `sep`, which is forced to `'/'`)\n4. New `path` functions added in future Node versions are **automatically wrapped** -- no code changes needed\n\nThis means upath is always in sync with your Node.js version. It adds nothing, removes nothing -- just normalizes. Its test suite includes 421 tests, with test vectors extracted directly from [Node.js's own `path` test suite](https://github.com/nodejs/node/tree/main/test/parallel/) to verify identical behavior.\n\n## Installation\n\n```bash\nnpm install upath\n```\n\n## Usage\n\n```typescript\n// ESM\nimport upath from 'upath'\n// or import specific functions\nimport { normalize, joinSafe, addExt } from 'upath'\n\n// CJS\nconst upath = require('upath')\n```\n\n## API\n\nupath proxies **all** functions and properties from Node.js `path` (`basename`, `dirname`, `extname`, `format`, `isAbsolute`, `join`, `normalize`, `parse`, `relative`, `resolve`, `toNamespacedPath`, `matchesGlob`), converting any `\\` in results to `/`.\n\nAdditionally, `upath.sep` is always `'/'` and `upath.VERSION` provides the package version string.\n\n### Proxied functions -- `path` vs `upath`\n\nEvery `path` function works the same, but with `\\` → `/` normalization. Here's where it matters:\n\n#### `upath.normalize(path)`\n\n```\nupath.normalize('c:\\\\windows\\\\nodejs\\\\path')     ✓ 'c:/windows/nodejs/path'\n                                 path.normalize → 'c:\\\\windows\\\\nodejs\\\\path'\n\nupath.normalize('/windows\\\\unix/mixed')          ✓ '/windows/unix/mixed'\n                                 path.normalize → '/windows\\\\unix/mixed'\n\nupath.normalize('\\\\windows\\\\..\\\\unix/mixed/')    ✓ '/unix/mixed/'\n                                 path.normalize → '\\\\windows\\\\..\\\\unix/mixed/'\n```\n\n#### `upath.join(paths...)`\n\n```\nupath.join('some/nodejs\\\\windows', '../path')    ✓ 'some/nodejs/path'\n                                     path.join → 'some/path'              ← WRONG\n\nupath.join('some\\\\windows\\\\only', '..\\\\path')    ✓ 'some/windows/path'\n                                     path.join → 'some\\\\windows\\\\only/..\\\\path'  ← BROKEN\n```\n\n#### `upath.parse(path)`\n\n```\nupath.parse('c:\\\\Windows\\\\dir\\\\file.ext')\n  ✓ { root: '', dir: 'c:/Windows/dir', base: 'file.ext', ext: '.ext', name: 'file' }\n\npath.parse('c:\\\\Windows\\\\dir\\\\file.ext')\n  ✗ { root: '', dir: '', base: 'c:\\\\Windows\\\\dir\\\\file.ext', ext: '.ext', name: 'c:\\\\Windows\\\\dir\\\\file' }\n```\n\n### Extra functions\n\nThese solve real pain points that `path` ignores entirely. See [`docs/API.md`](docs/API.md) for full input/output tables.\n\n#### `upath.toUnix(path)`\n\nConverts all `\\` to `/` and consolidates duplicate slashes, without performing any normalization.\n\n```typescript\nupath.toUnix('.//windows\\\\//unix//mixed////') // './windows/unix/mixed/'\nupath.toUnix('\\\\\\\\server\\\\share') // '//server/share'\nupath.toUnix('C:\\\\Users\\\\test') // 'C:/Users/test'\n```\n\n#### `upath.normalizeSafe(path)`\n\n**The pain:** `path.normalize()` silently strips leading `./` from relative paths and `//` from UNC paths. Your `./src/index.ts` becomes `src/index.ts`, breaking ESM imports, webpack configs, and anything that depends on the explicit relative prefix.\n\n`normalizeSafe` normalizes the path but **preserves meaningful leading `./` and `//`**:\n\n```\nupath.normalizeSafe('./dep')                 ✓ './dep'\n                             path.normalize → 'dep'                      ← lost ./\n\nupath.normalizeSafe('./path/../dep')         ✓ './dep'\n                             path.normalize → 'dep'                      ← lost ./\n\nupath.normalizeSafe('//server/share/file')   ✓ '//server/share/file'\n                             path.normalize → '/server/share/file'       ← lost / (broken UNC)\n\nupath.normalizeSafe('//./c:/temp/file')      ✓ '//./c:/temp/file'\n                             path.normalize → '/c:/temp/file'            ← lost //. (broken UNC)\n```\n\n#### `upath.normalizeTrim(path)`\n\n**The pain:** Normalized paths often end with `/` -- which breaks string comparisons and some file-system APIs. `'./src/' !== './src'` even though they're the same directory.\n\nLike `normalizeSafe()`, but also trims any trailing `/`:\n\n```typescript\nupath.normalizeTrim('./../dep/') // '../dep'\nupath.normalizeTrim('.//windows\\\\unix/mixed/') // './windows/unix/mixed'\n```\n\n#### `upath.joinSafe([path1][, path2][, ...])`\n\n**The pain:** `path.join()` has the same `./` and `//` stripping problem as `path.normalize()`. Your `'./config'` becomes `'config'` after joining, silently breaking the relative import semantics you needed.\n\n`joinSafe` works like `path.join()` but preserves leading `./` and `//`:\n\n```\nupath.joinSafe('./some/local/unix/', '../path')   ✓ './some/local/path'\n                                      path.join → 'some/local/path'      ← lost ./\n\nupath.joinSafe('//server/share/file', '../path')  ✓ '//server/share/path'\n                                      path.join → '/server/share/path'   ← lost / (broken UNC)\n```\n\n#### `upath.addExt(filename, [ext])`\n\n**The pain:** `if (!file.endsWith('.js')) file += '.js'` scattered across your codebase -- and it still has the bug where `file.json` doesn't get `.js` appended but `file.cjs` does.\n\nAdds `.ext` to `filename`, but only if it doesn't already have the exact extension:\n\n```typescript\nupath.addExt('myfile', '.js') // 'myfile.js'\nupath.addExt('myfile.js', '.js') // 'myfile.js' (unchanged — already has it)\nupath.addExt('myfile.txt', '.js') // 'myfile.txt.js'\n```\n\n#### `upath.trimExt(filename, [ignoreExts], [maxSize=7])`\n\n**The pain:** `path` has no function to strip an extension while keeping the directory. `path.basename(f, ext)` loses the directory. And what counts as an \"extension\" when your file is `app.config.local.js`?\n\nTrims the extension from a filename. Extensions longer than `maxSize` chars (including the dot) are not considered valid. Extensions in `ignoreExts` are not trimmed:\n\n```typescript\nupath.trimExt('my/file.min.js') // 'my/file.min'\nupath.trimExt('my/file.min', ['min'], 8) // 'my/file.min' (.min ignored)\nupath.trimExt('../my/file.longExt') // '../my/file.longExt' (too long, not an ext)\n```\n\n#### `upath.removeExt(filename, ext)`\n\n**The pain:** `path.basename('file.json', '.js')` turns `'file.json'` into `'file.json'`? Actually no -- it turns `'file.js'` into `'file'` but it also corrupts `'file.json'` into... wait, it depends on the platform. Just use `removeExt`.\n\nRemoves the specific `ext` from `filename`, if present -- and _only_ that exact extension:\n\n```typescript\nupath.removeExt('file.js', '.js') // 'file'\nupath.removeExt('file.txt', '.js') // 'file.txt' (unchanged — different ext)\n```\n\n#### `upath.changeExt(filename, [ext], [ignoreExts], [maxSize=7])`\n\n**The pain:** Changing `.coffee` to `.js` means trimming the old extension and adding the new one -- with edge cases around dotfiles, multi-segment extensions, and files with no extension at all. Every hand-rolled version of this has bugs.\n\nChanges a filename's extension to `ext`. If it has no valid extension, the new extension is added. Extensions in `ignoreExts` are not replaced:\n\n```typescript\nupath.changeExt('module.coffee', '.js') // 'module.js'\nupath.changeExt('my/module', '.js') // 'my/module.js'  (had no ext, adds it)\nupath.changeExt('file.min', '.js', ['min'], 8) // 'file.min.js'   (.min ignored)\n```\n\n#### `upath.defaultExt(filename, [ext], [ignoreExts], [maxSize=7])`\n\n**The pain:** You want to ensure a file has an extension, but only if it doesn't already have one. And you need control over what counts as \"already having one\" -- is `.min` an extension or part of the name?\n\nAdds `.ext` only if the filename doesn't already have any valid extension. Extensions in `ignoreExts` are treated as if absent:\n\n```typescript\nupath.defaultExt('file', '.js') // 'file.js'\nupath.defaultExt('file.ts', '.js') // 'file.ts' (already has extension)\nupath.defaultExt('file.min', '.js', ['min'], 8) // 'file.min.js' (.min ignored)\n```\n\n**Note:** In all extension functions, you can use both `.ext` and `ext` -- the leading dot is always handled correctly.\n\n## Who Uses upath\n\nupath is a foundational dependency in the Node.js ecosystem, trusted by **1,300+ packages** on npm including:\n\n- [**Chokidar**](https://github.com/paulmillr/chokidar) -- the file watcher behind Webpack, Vite, Rollup, and most dev servers\n- [**Nuxt**](https://github.com/nuxt/nuxt) -- the Vue.js framework (v2)\n- [**ansi-colors**](https://github.com/doowb/ansi-colors) -- terminal color styling\n- Countless Webpack plugins, build tools, and CLI frameworks\n\nIf you run `npm ls upath` in a non-trivial Node.js project, there's a good chance it's already there.\n\n## What's New in v3\n\n- **TypeScript rewrite** -- full type safety, source-of-truth types shipped with the package.\n- **Dual CJS/ESM** -- works with `import` and `require()` out of the box via package.json `exports`.\n- **Node >= 20** -- drops legacy Node support.\n- **Auto-generated API docs** -- see [`docs/API.md`](docs/API.md) for complete input/output tables generated from the test suite.\n- **UNC path support** -- carried forward from v2, with comprehensive test coverage.\n\n## Migrating from v2\n\n- **Node >= 20 required** -- v2 supported Node >= 4. Update your CI matrix.\n- **CJS usage unchanged** -- `const upath = require('upath')` works as before. All functions are available directly on the module (no `.default` needed).\n- **TypeScript: stricter params** -- `join()`, `resolve()`, and `joinSafe()` params narrowed from `any[]` to `string[]`. Add explicit casts if you pass non-string args: `join(myVar as string)`.\n- **`_makeLong` removed** -- use `toNamespacedPath` instead (available since Node 8.3).\n- **Named ESM imports now available** -- `import { normalize, join, toUnix } from 'upath'` works in addition to the default import.\n- **Boxed `String` objects rejected** -- `new String('foo')` no longer accepted; use plain string primitives.\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full list of changes.\n\n## Contributing\n\nContributions are welcome! Please open an issue or pull request on [GitHub](https://github.com/anodynos/upath).\n\n```bash\ngit clone https://github.com/anodynos/upath.git\ncd upath\nnpm install\nnpm test               # 421 tests\nnpm run test:integration  # CJS/ESM integration tests\n```\n\n## Sponsor\n\nupath has been free and MIT-licensed for over a decade. If it saves you time or your company depends on it, please consider sponsoring its continued maintenance:\n\n- [GitHub Sponsors](https://github.com/sponsors/anodynos) -- recurring or one-time\n- [Polar](https://polar.sh/anodynos) -- commercial-friendly, issue bounties\n- [Tidelift](https://tidelift.com/subscription/pkg/npm-upath) -- enterprise supply-chain support\n\nRunning `npm fund` in your project will also show you if upath is in your tree.\n\n## License\n\n[MIT](LICENSE) -- Copyright (c) 2014-2026 [Angelos Pikoulas](https://github.com/anodynos)\n","_attachments":{},"homepage":"https://github.com/anodynos/upath/","bugs":{"url":"https://github.com/anodynos/upath/issues"},"license":"MIT"}