{"_id":"@gooddata/number-formatter","_rev":"107-1bb721c52f57469888664bff9175a91e","name":"@gooddata/number-formatter","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@gooddata/number-formatter","version":"1.0.0","author":{"name":"GoodData"},"license":"MIT","_id":"@gooddata/number-formatter@1.0.0","maintainers":[{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"khang.nguyen","email":"khang.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"damlenpm","email":"dam.le@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"bugsbunny338","email":"jiri.zajic@mensa.cz"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"tu-ngo","email":"tungo1981@gmail.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"tulean","email":"tuan.le@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"milan.lempera","email":"ext-milan.lempera@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"4e5d2ceac2923ab27c5fa853bebe947311f4e8db","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.0.tgz","fileCount":51,"integrity":"sha512-PUMNaX7crTLvUkb7GIwerwzGQyaj7sZaZVW0ATQut/GiBdOeS3lsDGMylbX31xCVXCqBDy8aay9niHe53Abigg==","signatures":[{"sig":"MEYCIQDgzXDrmTqS0cIkWTLOzE+1pIlPwKGKfpqJWiEahCVc9wIhANcty6K1zEBXwGIjyVUbaesQHI9tAw3mw8I3E+GpyBre","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232016},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"cbdedb66c98a9f2c73437bcdc9514d75696538ed","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"8.19.4","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.5.0","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"0.31.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.0_1692792412306_0.27795174247263077","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@gooddata/number-formatter","version":"1.0.1","author":{"name":"GoodData"},"license":"MIT","_id":"@gooddata/number-formatter@1.0.1","maintainers":[{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"khang.nguyen","email":"khang.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"damlenpm","email":"dam.le@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"bugsbunny338","email":"jiri.zajic@mensa.cz"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"tu-ngo","email":"tungo1981@gmail.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"tulean","email":"tuan.le@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"milan.lempera","email":"ext-milan.lempera@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"6460c604c2049aebc67edb9d4fee0c6b4f894e6d","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.1.tgz","fileCount":51,"integrity":"sha512-TJUfmuevAfpzO2hmMs03RElnu6S1c3q1DOda4Wj7n+zEeeWpKQKIyVQA6Rij/PQubv3h/PnlEF5SOlbGn768LA==","signatures":[{"sig":"MEUCIQCKP4CARrrXFrBpxKycKZIZpJ3B29fELMjtdd95PhEw9gIgXDEMY18kmHsEt/wl0MogYQwdodOXraeK1djxwqMkR7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":233432},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"a158fd821ce7bf292bed76deb278074924d656ef","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"8.19.4","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"0.31.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.1_1693304135686_0.8604870248211973","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@gooddata/number-formatter","version":"1.0.2","author":{"name":"GoodData"},"license":"MIT","_id":"@gooddata/number-formatter@1.0.2","maintainers":[{"name":"amilieta","email":"andrew.milieta@gooddata.com"},{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"khang.nguyen","email":"khang.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"damlenpm","email":"dam.le@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"bugsbunny338","email":"jiri.zajic@mensa.cz"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"tu-ngo","email":"tungo1981@gmail.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"tulean","email":"tuan.le@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"milan.lempera","email":"ext-milan.lempera@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"22fbb6c341cdacb4f4994040cb96bd903d8d85b4","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.2.tgz","fileCount":51,"integrity":"sha512-KQQkkhY/gjgVZYhQlMPDYl4KeUFtGqiIp6PRyUNzlaZZnFNJJxCRxIHeZc+gyJmCQlO2mS8oDeNusQ+LoSgmpQ==","signatures":[{"sig":"MEYCIQDvBUcCCga7OlKqnWNMibceLzU3NfO9LehaixZXKlG64wIhAPxYq2FfVgu4AyPghfxJP7reQeX5mRw3VVunxatkuxjc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":233734},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"3a840ff55b42f9170a2fa0086e1f87d0ca2458d5","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"8.19.4","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"0.31.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.2_1693904567341_0.9128004217597274","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@gooddata/number-formatter","version":"1.0.3","author":{"name":"GoodData"},"license":"MIT","_id":"@gooddata/number-formatter@1.0.3","maintainers":[{"name":"quangpham","email":"quang.pham-hai@gooddata.com"},{"name":"hoaimy","email":"mya.lehoai@gmail.com"},{"name":"amilieta","email":"andrew.milieta@gooddata.com"},{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"khang.nguyen","email":"khang.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"7438c4afd246cb96cdc8eec52a158799e5db1de2","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.3.tgz","fileCount":51,"integrity":"sha512-YVowHDnB8Ifzq/2vqq+3DeVZp3kUVJZ62jIuPMIk9KMNXjG2+ozxsddp4uzCOtX39P0xkUETsVId5Xymy8tgXQ==","signatures":[{"sig":"MEQCICTmw983v02FxNmC6Ez1acmnZzY8diDWGECbMe9T0FPKAiAFBKhvvoXFq/T7hbJs+XSMGEpsP3LwS2FLLF455aATsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":234118},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"e865f7ab236710eb5b4efd85bcbf4cb3a51da5fc","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"8.19.4","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"0.31.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.3_1696840712900_0.4642751627619488","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@gooddata/number-formatter","version":"1.0.4","author":{"name":"GoodData"},"license":"LicenseRef-LICENSE","_id":"@gooddata/number-formatter@1.0.4","maintainers":[{"name":"lienpham95","email":"lien.pham@gooddata.com"},{"name":"quangpham","email":"quang.pham-hai@gooddata.com"},{"name":"hoaimy","email":"mya.lehoai@gmail.com"},{"name":"amilieta","email":"andrew.milieta@gooddata.com"},{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"khang.nguyen","email":"khang.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"05977b9a117b6d69d67b9d711a9f3a7ae0e7db6f","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.4.tgz","fileCount":52,"integrity":"sha512-DvSawIEly4NvWjxQomi3/Vb3vY1XzTvHvdjSbXePYoqbVdOHSIfOUeI8XGVwGzeVFaxdgEfC03CkQ7e4crDFFg==","signatures":[{"sig":"MEUCIACOGZjAk8Sw+i59N0n2FsOtAScP80o45ARX2mvE32ctAiEAtlIxqRuu4IYpn6eBtjRNyjT7IdRs+YNk4ZsrXRjLozk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":348697},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"e09c2c344e2985cc77feccf3aa0af1e115364f59","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"8.19.4","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"0.31.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.4_1696930667929_0.3633176454843947","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@gooddata/number-formatter","version":"1.0.5","author":{"name":"GoodData"},"license":"LicenseRef-LICENSE","_id":"@gooddata/number-formatter@1.0.5","maintainers":[{"name":"minh.thanh","email":"minh.thanh@gooddata.com"},{"name":"lienpham95","email":"lien.pham@gooddata.com"},{"name":"quangpham","email":"quang.pham-hai@gooddata.com"},{"name":"hoaimy","email":"mya.lehoai@gmail.com"},{"name":"amilieta","email":"andrew.milieta@gooddata.com"},{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"phong.nguyen-duy","email":"phong.nguyen-duy@gooddata.com"},{"name":"cermakm","email":"martin.cermak2@gooddata.com"},{"name":"khanh.huynh","email":"khanh.huynh@gooddata.com"},{"name":"nhanle1993","email":"nhan.le@gooddata.com"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"petr.kolencik.gd","email":"petr.kolencik@gooddata.com"},{"name":"petr.masopust","email":"petr.masopust@gooddata.com"},{"name":"tienbien","email":"tien.bien@gooddata.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"hung.le","email":"hung.le@gooddata.com"},{"name":"nghi.lam","email":"nghi.lam@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"duc.le","email":"duc.le@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"oleg.morozov","email":"oleg.morozov@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"dominik.cap","email":"dominik.cap@gooddata.com"},{"name":"annguyengd","email":"an.nguyen@gooddata.com"},{"name":"artsiom.yeliseyenka.gooddata","email":"artsiom.yeliseyenka@gooddata.com"},{"name":"hungnguyenauto","email":"hung.nguyen-xuan@gooddata.com"},{"name":"long.mai","email":"long.mai@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jkittler","email":"honza.kittler@gmail.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"nhan.quach","email":"nhan.quach@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"jakub-sterba","email":"jakub.sterba@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"sitina","email":"jiri.sitina@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"patrikbraborec","email":"patrik.braborec@gooddata.com"},{"name":"brbistas","email":"valentinos.chraniotis@gooddata.com"},{"name":"vu.pham","email":"vu.pham@gooddata.com"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"hung.nguyen.hoang","email":"hung.nguyen@gooddata.com"},{"name":"trung-le-quoc","email":"trung.le@gooddata.com"},{"name":"utdnah","email":"danh.ung@gooddata.com"},{"name":"de.do","email":"de.do@gooddata.com"},{"name":"nis.hua","email":"nis.hua@gooddata.com"},{"name":"tuqt1005","email":"tu.tran@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"mai.nguyen","email":"mai.nguyen@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"van.nguyen","email":"van.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"an.vuong","email":"an.vuong@gooddata.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"ngoc-le","email":"ngoc.le@gooddata.com"},{"name":"thuy.tran","email":"thuy.tran@gooddata.com"},{"name":"son.nguyen182","email":"son.nguyen-hoang@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"21f431eb9bf7280f97705c674efa46fb77c20d84","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.5.tgz","fileCount":52,"integrity":"sha512-2FmOOcpmfm79mJiSPvHUx5Z1qI+NEgA6PER1UrxHOlKuWX21Kp18g2N7Fih3808q2LjXsjWTTmIIwshlqtDB5A==","signatures":[{"sig":"MEUCICqEEtA9PtDgCYZg1tJppAbMfAdymuiQl8NFZXGhps2BAiEA2t36Rra3aKV3NRdTFJQt41TORa2Vb8NPVoRaLD/ffE8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":348565},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"170288246221f26abd9e5ad73bdd298a4bab570e","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"9.6.7","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"1.0.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.5_1702893167602_0.7798431128590539","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@gooddata/number-formatter","version":"1.0.6","author":{"name":"GoodData"},"license":"LicenseRef-LICENSE","_id":"@gooddata/number-formatter@1.0.6","maintainers":[{"name":"lucy.doan","email":"lucy.doan@gooddata.com"},{"name":"khuongnguyen","email":"khuong.nguyen@gooddata.com"},{"name":"ondrejvelisekgd","email":"ondrej.velisek@gooddata.com"},{"name":"ondrej.kvinta","email":"ondrej.kvinta@gooddata.com"},{"name":"hkad98","email":"kadlino98@seznam.cz"},{"name":"vasek.zmrhal","email":"vaclav.zmrhal@gooddata.com"},{"name":"david.zoufaly","email":"davidzoufaly@gmail.com"},{"name":"hoaimy","email":"mya.lehoai@gmail.com"},{"name":"amilieta","email":"andrew.milieta@gooddata.com"},{"name":"kirill.kazakov.gd","email":"kirill.kazakov@gooddata.com"},{"name":"bertold8","email":"ivan.nejezchleb@seznam.cz"},{"name":"mkoldus","email":"Miroslav.Koldus@gmail.com"},{"name":"bich.nguyen","email":"bich.nguyen@gooddata.com"},{"name":"good-andy","email":"andrii.chumak@gooddata.com"},{"name":"pjiranek","email":"jiranek35@gmail.com"},{"name":"phong.nguyen","email":"phong.nguyen@gooddata.com"},{"name":"martin.milicka","email":"martin.milicka@gooddata.com"},{"name":"hung.cao","email":"hung.cao@gooddata.com"},{"name":"rodri360","email":"me@rodri360.com"},{"name":"jaceksan","email":"jan.soubusta@gooddata.com"},{"name":"ivan.mjartan","email":"ivan.mjartan@gooddata.com"},{"name":"lupko","email":"lubomir.slivka@gooddata.com"},{"name":"tomas.kratochvil","email":"tomas.kratochvil@gooddata.com"},{"name":"stanislavhacker","email":"stanislav.hacker@gooddata.com"},{"name":"vojtasii","email":"vojtech.tollar@gmail.com"},{"name":"pbenes","email":"petr.benes@gooddata.com"},{"name":"gooddata-ci","email":"rail@gooddata.com"},{"name":"nikolacech","email":"nikola.cech@gooddata.com"},{"name":"petrjanu","email":"petr.janu@gooddata.com"},{"name":"xmort","email":"petr.dolejsi@gooddata.com"},{"name":"no23reason","email":"dan.homola@hotmail.cz"},{"name":"matyas.kandl","email":"matyas.kandl@gooddata.com"},{"name":"tu.bui","email":"tu.bui@gooddata.com"},{"name":"my.duong","email":"my.duong@gooddata.com"},{"name":"hang.ngo","email":"hang.ngo@gooddata.com"},{"name":"scavnickyj","email":"jakub.scavnicky@gooddata.com"},{"name":"thao-luong","email":"thao.luong@gooddata.com"},{"name":"thuong.nguyen","email":"thuong.nguyen@gooddata.com"},{"name":"huyen.nguyen","email":"huyen.nguyen@gooddata.com"},{"name":"nestor_encinas","email":"xesto05@gmail.com"},{"name":"tmuchka","email":"tomas.muchka@gooddata.com"},{"name":"gdjan","email":"jan.kruza@gooddata.com"},{"name":"tuan.tran_gd","email":"tuan.tran@gooddata.com"}],"homepage":"https://github.com/gooddata/gooddata-formatter#readme","bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"dist":{"shasum":"63b08377e7ea3a7b63789f479a38c6075fdc8ee8","tarball":"https://registry.npmjs.org/@gooddata/number-formatter/-/number-formatter-1.0.6.tgz","fileCount":52,"integrity":"sha512-16+Sqa6SChAR2fHGOe3/aIiXJdBMfB0eU9XzXGCxx93Lbxud1RjddbIo1/t5E1eodf4Ga5QmLMKiKZOWNaLAiQ==","signatures":[{"sig":"MEUCIB8rZydGz+mU3ehGoKptSSA3EsnaUtAoQUUKNGqlj+J4AiEAh0vk3ie77jfOScKYNCgw2MGj/R5GLFYOoJRTQfisqCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":349118},"type":"module","types":"./esm/index.d.ts","browser":"./esm/index.js","exports":"./esm/index.js","gitHead":"cece44327c09ebed85169b2942c31d322f33d15c","scripts":{"dev":"tsc -p tsconfig.dev.json --watch","test":"vitest watch","build":"npm run build-esm && npm run api-extractor","clean":"rm -rf ci dist esm coverage *.log","eslint":"eslint -c .eslintrc.cjs src/","test-ci":"vitest run --reporter=junit --outputFile=./ci/results/test-results.xml","validate":"npm run dep-cruiser && npm run eslint && npm run prettier-check","build-esm":"tsc -p tsconfig.build.json","eslint-ci":"mkdir -p ./ci/results && eslint -f checkstyle -o ci/results/eslint-results.xml -c .eslintrc.cjs src/","test-once":"vitest run","eslint-fix":"eslint -c .eslintrc.cjs src/ --fix","dep-cruiser":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","validate-ci":"npm run dep-cruiser-ci && npm run eslint-ci && npm run prettier-check","api-extractor":"mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)","dep-cruiser-ci":"depcruise --validate .dependency-cruiser.cjs --output-type err-long src/","prepublishOnly":"npm run build-esm","prettier-check":"prettier --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'","prettier-write":"prettier --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'"},"_npmUser":{"name":"gooddata-ci","email":"rail@gooddata.com"},"repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"_npmVersion":"9.6.7","description":"GoodData numbers formatter","directories":{},"sideEffects":false,"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.5.0","lru-cache":"^10.0.1","ts-invariant":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.25.0","vitest":"1.0.4","prettier":"^3.0.2","typescript":"5.0.2","concurrently":"^6.0.2","dependency-cruiser":"^13.0.3","eslint-plugin-jest":"^27.1.1","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-regexp":"^1.9.0","eslint-plugin-sonarjs":"^0.16.0","eslint-plugin-prettier":"^4.0.0","@gooddata/eslint-config":"^4.1.0","@microsoft/api-extractor":"^7.36.0","eslint-plugin-import-esm":"^1.2.1","@microsoft/api-documenter":"^7.17.0","@typescript-eslint/parser":"^5.57.1","eslint-plugin-no-only-tests":"^2.4.0","@typescript-eslint/eslint-plugin":"^5.57.1"},"_npmOperationalInternal":{"tmp":"tmp/number-formatter_1.0.6_1731919403030_0.15734808566442893","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-08-21T13:34:51.375Z","modified":"2026-09-22T08:27:00.295Z","0.1.0-beta.0":"2023-08-21T13:34:51.589Z","1.0.0":"2023-08-23T12:06:52.570Z","1.0.1":"2023-08-29T10:15:35.902Z","1.0.2":"2023-09-05T09:02:47.540Z","1.0.3":"2023-10-09T08:38:33.141Z","1.0.4":"2023-10-10T09:37:48.139Z","1.0.5":"2023-12-18T09:52:47.765Z","1.0.6":"2024-11-18T08:43:23.195Z"},"bugs":{"url":"https://github.com/gooddata/gooddata-formatter/issues"},"author":{"name":"GoodData"},"license":"LicenseRef-LICENSE","homepage":"https://github.com/gooddata/gooddata-formatter#readme","repository":{"url":"git+https://github.com/gooddata/gooddata-formatter.git","type":"git","directory":"typescript"},"description":"GoodData numbers formatter","maintainers":[{"email":"me@rodri360.com","name":"rodri360"},{"email":"ivan.mjartan@gooddata.com","name":"ivan.mjartan"},{"email":"lubomir.slivka@gooddata.com","name":"lupko"},{"email":"tomas.kratochvil@gooddata.com","name":"tomas.kratochvil"},{"email":"rodrigo.balsells@gooddata.com","name":"rodrigo.balsells"},{"email":"stanislav.hacker@gooddata.com","name":"stanislavhacker"},{"email":"vojtech.tollar@gmail.com","name":"vojtasii"},{"email":"petr.benes@gooddata.com","name":"pbenes"},{"email":"rail@gooddata.com","name":"gooddata-ci"},{"email":"nikola.cech@gooddata.com","name":"nikolacech"},{"email":"petr.janu@gooddata.com","name":"petrjanu"},{"email":"hung.cao@gooddata.com","name":"hung.cao"},{"email":"petr.dolejsi@gooddata.com","name":"xmort"},{"email":"bich.nguyen@gooddata.com","name":"bich.nguyen"},{"email":"dan.homola@hotmail.cz","name":"no23reason"},{"email":"matyas.kandl@gooddata.com","name":"matyas.kandl"},{"email":"roman.rakus@gooddata.com","name":"romanrakus"},{"email":"tu.bui@gooddata.com","name":"tu.bui"},{"email":"my.duong@gooddata.com","name":"my.duong"},{"email":"hang.ngo@gooddata.com","name":"hang.ngo"},{"email":"jakub.scavnicky@gooddata.com","name":"scavnickyj"},{"email":"thao.luong@gooddata.com","name":"thao-luong"},{"email":"thuong.nguyen@gooddata.com","name":"thuong.nguyen"},{"email":"huyen.nguyen@gooddata.com","name":"huyen.nguyen"},{"email":"xesto05@gmail.com","name":"nestor_encinas"},{"email":"tomas.muchka@gooddata.com","name":"tmuchka"},{"email":"jan.kruza@gooddata.com","name":"gdjan"},{"email":"phong.nguyen@gooddata.com","name":"phong.nguyen"},{"email":"tuan.tran@gooddata.com","name":"tuan.tran_gd"},{"email":"Miroslav.Koldus@gmail.com","name":"mkoldus"},{"email":"martin.milicka@gooddata.com","name":"martin.milicka"},{"email":"jiranek35@gmail.com","name":"pjiranek"},{"email":"mykhaylo.zelenskyy@gooddata.com","name":"martozar"},{"email":"davidzoufaly@gmail.com","name":"david.zoufaly"},{"email":"arturs.grebnevs@gooddata.com","name":"agrebnevs-gd"},{"email":"vaclav.zmrhal@gooddata.com","name":"vasek.zmrhal"},{"email":"kadlino98@seznam.cz","name":"hkad98"},{"email":"mya.lehoai@gmail.com","name":"hoaimy"},{"email":"lukther@gmail.com","name":"lukas.ther"},{"email":"ondrej.velisek@gooddata.com","name":"ondrejvelisekgd"},{"email":"andrew.milieta@gooddata.com","name":"amilieta"},{"email":"andre.nanninga@gooddata.com","name":"andrenanninga-gooddata"},{"email":"PavelZrk@gmail.com","name":"pavelzrk"},{"email":"ilia.kozachyshyn@gooddata.com","name":"ilianchik"},{"email":"dusan.kovacik@profiq.com","name":"dusan-kovacik-profiq"},{"email":"khuong.nguyen@gooddata.com","name":"khuongnguyen"},{"email":"matej.pavlik@gooddata.com","name":"matej.pavlik"},{"email":"jenny.nguyen@gooddata.com","name":"jenny_gooddata"},{"email":"jakub.svehla@gooddata.com","name":"goodkuba"},{"email":"armana.hajovska@gmail.com","name":"armhaj"},{"email":"ivan.nejezchleb@seznam.cz","name":"bertold8"},{"email":"oanh.nguyen@gooddata.com","name":"jyn.nguyen"},{"email":"stepan.machovsky@gooddata.com","name":"mara3l"},{"email":"ondrej.maca@gooddata.com","name":"ondrej.maca"},{"email":"lukas.hlavacek@gooddata.com","name":"lukashlavacek"},{"email":"petr.veprek@gooddata.com","name":"petr.veprek"},{"email":"jan.tychtl@gooddata.com","name":"jan.tychtl.gooddata"},{"email":"damian.sommer@gooddata.com","name":"sommedamgd"},{"email":"guilherme.santos@gooddata.com","name":"guigooddata"},{"email":"duyquan.bui@gooddata.com","name":"peter-lorn"},{"email":"jakub.schenk@gooddata.com","name":"jakub.schenk"},{"email":"timurmuh@pm.me","name":"timurmuh"},{"email":"daniel.doktor@gooddata.com","name":"danieldoktor"},{"email":"jkb.matuska@gmail.com","name":"jkbm"},{"email":"nguyen.vo@gooddata.com","name":"ellavo"},{"email":"wendy.nguyen@gooddata.com","name":"wendy.nguyen"},{"email":"milan.dufek@gooddata.com","name":"milan.dufek"},{"email":"long.mai+npm@gooddata.com","name":"maitrieuphilong"},{"email":"jakub.matuska@gooddata.com","name":"jkbm_gd"},{"email":"ornstz@me.com","name":"zdenekornst"},{"email":"jiri.staroba@gooddata.com","name":"jiri.staroba"},{"email":"henry.nguyen@gooddata.com","name":"henry.nguyen.gooddata"},{"email":"adam.prchal@gooddata.com","name":"adam.prchal"},{"email":"duy.huynh@gooddata.com","name":"frankhuynh"},{"email":"ondrej.macek@gooddata.com","name":"macekond"},{"email":"martin@najemi.cz","name":"martinnaj"},{"email":"peter.koza@gooddata.com","name":"peter.koza"},{"email":"sandra.suszterova@gooddata.com","name":"sandrasus"},{"email":"piotr.jaroslawski@gooddata.com","name":"pjar"},{"email":"jan.svager@gooddata.com","name":"jan.svager.gooddata"},{"email":"minh.ho@gooddata.com","name":"minh.ho.gooddata"},{"email":"maiphuong.bui@gooddata.com","name":"maiphuong.bui"},{"email":"jakub.zovak@gooddata.com","name":"jakubz_good"},{"email":"pavel.cerny@gooddata.com","name":"pavelcerny"},{"email":"marcel.varhalik@gooddata.com","name":"mvarhalik"}],"readme":"# GoodData Number Formatter in TypeScript\n\n## Overview\nThis is a TypeScript reimplementation of the original gdc-numberjs library. It mirrors the original's logic with some modifications and exceptions.\n\n## Key Features & Differences\n### Core Features\n- Includes all original features, excluding scientific formatting which was removed due to negligible usage.\n- Some noted differences are:\n  - Rounding discrepancies from floating-point precision variances.\n  - Different handling of `\\0` characters.\n  - Bug-fixes from the original version.\n- Allows the option legacyCompatibility=false to switch off certain behaviors.\n\n**Supporting Features**\n- Most additional features have been incorporated with a restructured API for better efficiency.\n- For example, stripColors is now represented as the FormatOptions#includeColors attribute.\n- FormatOptions#includeColors and Formatter#Resolve imitate their counterparts from gdc-numberjs. However, color coding has been altered to provide more information to the user.\n- Specific functions like excelEscape and specific format string translations have not been included on account of their specificity and potential complications.\n\n\n## Format String Syntax\n\nThe format strings bear significant resemblances to [Excel's custom number format strings](https://support.microsoft.com/en-us/office/review-guidelines-for-customizing-a-number-format-c0a1d1fa-d3f4-4018-96b7-9c9354dd99f5). However, there are some key differences and additional features. This section explains the format string syntax without assuming any prior knowledge of Excel's format strings.\n\n### Number Format\n\nA number format is the basic unit of a format string. It's a Unicode string where certain types of placeholders can be applied. For example, \"$ #,###.00\" is a format string that displays the number 1 as \"$ 1.00\" and the number 1000 as \"$ 1,000.00\". \n\nHere, we explore all the supported placeholders:\n\n#### 0 (Zero)\n\nA zero is a **digit placeholder**. It displays insignificant zeroes if a number has fewer digits than there are zeroes in the format. This is applicable to both the integer and fractional parts of the number.\n\nConsider these examples for a better understanding:\n\n| Format | Number | Result   |\n|--------|--------|----------|\n| 00.00  | 4      | `04.00`  |\n| 00.00  | -4     | `-04.00` |\n| 00.00  | 4.1    | `04.10`  |\n| 00.00  | 40     | `40.00`  |\n\n#### # (Hash)\n\nA hash is also a **digit placeholder**. The difference from the `0` placeholder is that it does not display insignificant zeroes. This is applicable to both the integer and fractional parts of the number.\n\nConsider these examples for a better understanding:\n\n| Format | Number | Result  |\n|--------|--------|---------|\n| ##.##  | 4      | `4`     |\n| ##.##  | -4     | `-4`    |\n| ##.##  | 4.1    | `4.1`   |\n| ##.##  | 40     | `40`    |\n| ##.##  | 40.1   | `40.1`  |\n\n#### ? (Question Mark)\n\nThis is a **digit placeholder**. The difference from the `0` placeholder is that insignificant zeros will be formatted as spaces (' '). This can be useful to left-pad the whole part of the number and thus ensure that formatted results (strings) are of the same length and have decimal points aligned.\n\n| Format | Number | Result  |\n|--------|--------|---------|\n| ?#.00  | 4      | ` 4.00` |\n| ?#.00  | 40     | `40.00` |\n| ?#.00  | 40.11  | `40.11` |\n\n**NOTE**: This placeholder is not so useful to format the fraction part of the string. Check out the section about\ndecimal precision and rounding to find out why.\n\n#### , (Comma)\n\n**Displays thousands separators or scales number** by a multiple of 1000. Indeed, the comma has two possible uses, depending on where you place it.\n\nTo format a number with a thousand separator, place a comma between any two digit placeholders. For instance `0,0`, `#,#`, or `#,0`.\n\nOther placements of the comma characters can be used to apply value scaling. The scaling factor will be 1000 to the\npower of the number of consecutive commas. For instance, the format `#,,.#` means scaling by 1000^2 = 1000000.\n\nThere are several subtleties to be aware of when it comes to scaling.\n\n- If the commas are followed by a digit placeholder, then the scaling factor will be 1000 to the power of the number of\n  consecutive commas minus one. For instance, the format `#,,#` means scaling by 1000.\n\n- You can specify scaling on either the whole part or fraction part of the format string, or both. If you specify the\n  scaling on both sides of the format string, the effect is cumulative. For instance, the format `#,.#,` means scaling\n  by 1000^2 = 1000000.\n\n- If you specify scaling multiple times on one side of the format string, then the first-found occurrence will be used;\n  all other occurrences will be ignored.\n\nLet's see a few examples; please note that these are intentionally contrived to demonstrate the 'funny stuff' regarding\nthe scaling specification. See recommendations below this table\n\n| Format    | Number    | Result      | Note                                |\n|-----------|-----------|-------------|-------------------------------------|\n| #,#       | 1234      | `1,234`     | Thousands separators                |\n| #,.000    | 1234      | `1.234`     | Scaling specified on the left side  |\n| #.000,    | 1234      | `1.234`     | Scaling specified on the right side |\n| #,,#      | 1234      | `1`         | Scaling by 1000                     |\n| ,,#       | 1234      | `1`         | Scaling by 1000                     |\n| ,,#.0,    | 1234567   | `1.2`       | Scaling by 1000000                  |\n| #,#,,#.0  | 1234567   | `1,234.6`   | Separators and scaling by 1000      |\n\n**Recommendation**: keep it simple. Try to avoid cases where commas to indicate scaling are followed by a digit placeholder.\nThis unnecessarily complicates thinking about the format string. If possible, keep the scaling commas at the end of\nthe format string, ideally at the end of the whole part of the string.\n\n\n#### . (period)\n\nA **placeholder of the decimal point**. If the format string does not specify decimal point, then all the numbers will be\nrounded and formatted as integers.\n\nThe fraction part of the format string should always start with a sequence of digit placeholder characters which\nindicates the desired precision to use for the fraction part. This may then be followed by any other characters.\n\n**NOTE**: If you specify decimal point but the string after decimal point does not include any digit placeholders, then\nall characters to the right of the decimal point (including the decimal point) will be ignored during formatting.\n\n##### Decimal precision, rounding and trimming zeroes\n\nThe number of **consecutive digit placeholders that follow the decimal point will be used as decimal precision**. For\ninstance both `#.0000` or `#.####` indicate decimal precision 4. The formatter will round the number to the\nindicated precision. If the number is not at the desired precision, it will be expanded and padded with zeroes.\n\nWhen it comes to substitution of digit placeholders, the logic is different when formatting the fraction part of the\nnumber. Most importantly, due to how precision is set and handled, **the `?` placeholder is effectively  treated the same\nas the `0` placeholder**.\n\nThe `#` placeholder is treated the same as when formatting the whole part - the trailing zeroes are trimmed. Furthermore,\nif the format string for the fraction part is composed fully of hashes and the formatted number's fraction part is zero, then\nall trailing zeroes are trimmed and the decimal point will not be printed at all.\n\n| Format    | Number    | Result      |\n|-----------|-----------|-------------|\n| #         | 4.1       | 4           |\n| #         | 4.5       | 5           |\n| 0.0       | 4.1       | 4.1         |\n| 0.0       | 4.15      | 4.2         |\n| 0.##      | 4.1       | 4.1         |\n| 0.##      | 4.01      | 4.01        |\n| 0.##      | 4.001     | 4           |\n| 0.## USD  | 4.001     | 4 USD       |\n\n#### Escaping\n\nThe format string can escape placeholder and thus indicate they should be treated literally. The escaping\nis done using backslash (`\\`) in front of the placeholder.\n\nJust keep in mind that if you are constructing the format string programmatically, you must escape the backslash as\nwell (so `\\\\`).\n\nLet's say you would like to treat comma in your format string literally and not as decimal point. Then you can code\na format string `\\\\. #.#`.\n\n#### Color Coding\n\nThe format strings may include color tags to indicate how the formatted results should be colored in contexts that \nallow this. There are three types of supported color tags:\n\n- named color tags such code as for instance `[red]`; the formatter recognizes several named colors that you can \n  use here: black, blue, cyan, green, magenta, red, white, yellow, none\n\n  The color name is checked case-insensitive. If you specify unknown color, then the tag is not treated as a \n  named color tag but treated literally. It will appear in the formatted value\n\n- custom color code tags, coded as `[color=#FF0000]`\n\n  The color code may or may not include hash and the casing does not matter.\n\n- custom background code tags, coded as `[backgroundColor=#000000]`\n\n  The background code may or may not include hash and the casing does not matter.\n\nSince named color tag and custom color code tag both describe the same thing - color of the formatted value, the \nrenderers prefer value specified on the custom color tag.\n\nThe color tags can appear anywhere in the format string. If you specify multiple custom color or background color \ntags within the same string, the first-found is taken into account and other are discarded.\n\n*RECOMMENDATION*: to keep format strings sane and easier to comprehend, it is best to concentrate color coding tags\nin one place, ideally at the start of the format string.\n\n### Conditional Format\n\nSo far, we have covered the elementary number format strings. The conditional formatting enables you to specify\nalternative format strings for different numbers or ranges of numbers.\n\n**NOTE**: with conditional formatting, the alternative format will always be formatting the absolute value of the\nnumber. This allows you to fully customize representation of negative numbers.\n\n#### Implicit Alternatives \n\nIn a conditional format, the alternative format strings are separated by a semicolon. The conditional format enables\nthe specification of multiple implicit alternatives and/or explicit conditions. \n\nAn implicit conditional format can contain up to 3 alternatives separated by a semicolon (;):\n\n-  The first format string is for values >= 0.\n-  The second format string is for values < 0.\n-  The third format string is for values = 0.\n\nExample: `good ##.##;bad ##.##;okay` would format 1 as `good 1`, -1 as `bad 1`, and 0 as `okay`.\n\n#### Explicit Alternatives \n\nBesides implicit formats, explicit conditions and formats can be specified. The explicit condition specifies operator and right-hand-side value and then the format string. For instance,\n`[=1000]#, grand` would format number 1000 as `1 grand`.\n\nSupported operators are: `=`, `<`, `>`, `<=`, `>=`. The right hand side is a positive or negative\ninteger or `NULL`. A `NULL` right-hand-side only makes sense with an equals operator. If you use it\nwith any other operator, then that particular alternative will be ignored.\n\nThe null conditions are useful to provide special literals to use when the value to format is `NULL` (`NULL` as in\nnot present at all, not null pointer). The format string provided in the null condition is always treated literally.\n\n#### Combining Formats \n\nExplicit and implicit alternatives can be combined. \n\nExample: `[=13]fun;[=666]more fun;[>=1000000]#,,.00M;[>=1000]##,k;##;-##.00;0000`.\n\n#### Condition Evaluation Order\n\nThe evaluation order of conditions is as follows:\n\n1. All equals conditions are evaluated first in a left to right order.\n2. All other conditions are evaluated in a left to right order.\n\n#### Coloring\n\nFormat string for each alternative can include its own color coding.\n\n### Arithmetic Expression Format\n\nArithmetic expressions allow division and modulo operations on the value before formatting\nusing the specified format string. They are useful for formatting values that represent durations. \n\nThe arithmetic expressions are enclosed in triple braces and contain divisor, modulator and the format\nstring separated by pipes: `{{{[division]|[modulo][.]|[format]}}}`.\n\n- `division` can be any positive float number.\n- `modulo` can be any positive integer and will be used to float-point modulo the value to format.\n  `modulo` can be followed by a comma (`.`) character. This indicates whether to floor the fraction part\n  of the value to format or not.\n- `format` can be a number format or conditional format.\n\nAn arithmetic expression `{{{3600|24|#}}}` will first divide the value to format by `3600`, then\nperform modulo `24` on the result and then use the `#` to format the value.\n\nThe format string can contain up to 256 arithmetic expressions.\n\n### Unicode Support\n\nThe format strings work well with Unicode characters. You can express your artistic side and create simple gauges through the use of conditional formats and specialized Unicode characters.\n\nPlease note that the formatter implementation included here utilizes Unicode characters from the private use area, starting from U+E000 and potentially reaching up to U+E2FF. Refrain from including these characters in your format strings to avoid unexpected results.\n\n### Illustrative Format Strings\n\nThe formats displayed in the previous examples demonstrate basic usage. Presented here are a few more complex examples. For the sake of brevity, color coding is not included.\n\n**Conditional Value Scale-Down**\n\n`[=null]0;\n [>=1000000000]#,,,.0 B;\n [>=1000000]$#,,.0 M;\n [=0]0;\n [>0]$#,##0;\n [<=-1000000000]-#,,,.0 B;\n [<=-1000000]-#,,.0 M;\n [<0]-$#,##0`\n\n**Percentage and Small Gauge Formatting for Numbers** \n\n`00.0%[>=.9]██████████;\n 00.0%[>=.8]█████████░;\n 00.0%[>=.7]████████░░;\n 00.0%[>=.6]███████░░░;\n 00.0%[>=.5]██████░░░░;\n 00.0%[>=.4]█████░░░░░;\n 00.0%[>=.3]████░░░░░░;\n 00.0%[>=.2]███░░░░░░░;\n 00.0%[>=.1]██░░░░░░░░;\n #0.0%█░░░░░░░░░`\n\n","readmeFilename":"README.MD"}