{"_id":"@charlesritchea/unitz-ts","name":"@charlesritchea/unitz-ts","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@charlesritchea/unitz-ts","version":"1.0.2","description":"A unit parser, converter, & calculator for TypeScript and JS","main":"umd/unitz.js","module":"lib/index.js","es2015":"lib-esm/index.js","typings":"typings/index.d.ts","repository":{"type":"git","url":"git+https://github.com/ClickerMonkey/unitz-ts.git"},"authors":["Philip Diffenderfer <pdiffenderfer@gmail.com>"],"license":"MIT","engines":{"node":">=6.9"},"scripts":{"cleanup":"shx rm -rf umd lib lib-esm lib-fesm typings coverage ../unitz-ts-pages/docs","prebuild":"npm run cleanup && npm run verify","build":"tsc && tsc -p tsconfig.esm.json && webpack && webpack --env.prod","build:fesm:min":"uglifyjs lib-fesm/index.js --compress --mangle --source-map --output lib-fesm/index.min.js","docs":"typedoc -p . --readme README.md --theme minimal --mode file --target 'es5' --excludeNotExported --excludePrivate --ignoreCompilerErrors --exclude \"**/src/**/__tests__/*.*\" --out ../unitz-ts-pages/docs src/ && cp tester.html ../unitz-ts-pages/tester.html && cp -R umd ../unitz-ts-pages/","test":"jest","test:watch":"npm test -- --watch","test:coverage":"npm test -- --coverage","test:only-changed":"npm test -- --bail --onlyChanged","verify":"npm test","cz":"git-cz","release:npm":"npm publish","release:preflight":"irish-pub","release:preflight:package":"npm pack","size":"shx echo \"Gzipped Size:\" && cross-var strip-json-comments --no-whitespace $npm_package_main | gzip-size"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"validate-commit-msg":{"types":"conventional-commit-types","maxSubjectLength":120}},"lint-staged":{"src/**/*.{ts,tsx}":["npm run prettier:ts -- --write","ts:lint:fix","git add"]},"jest":{"roots":["<rootDir>/src"],"transform":{"^.+\\.tsx?$":"<rootDir>/node_modules/ts-jest/preprocessor.js"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"mapCoverage":true,"coveragePathIgnorePatterns":["<rootDir>/node_modules/","<rootDir>/lib/","<rootDir>/lib-esm/","<rootDir>/umd/","<rootDir>/src/.*(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":85}}},"devDependencies":{"@types/jest":"20.0.2","@types/node":"7.0.31","awesome-typescript-loader":"3.2.1","commitizen":"2.9.6","cross-var":"1.0.3","cz-conventional-changelog":"2.0.0","gzip-size-cli":"2.0.0","irish-pub":"0.2.0","jest":"20.0.4","lint-staged":"4.0.0","prettier":"1.5.2","shx":"0.2.2","standard-version":"8.0.1","strip-json-comments-cli":"1.0.1","ts-jest":"20.0.6","tslint":"5.4.3","tslint-config-prettier":"1.1.0","tslint-config-standard":"6.0.1","tslint-react":"3.0.0","typedoc":"0.7.1","typescript":"2.4.1","uglify-js":"git://github.com/mishoo/UglifyJS2.git#harmony-v2.8.22","uglifyjs-webpack-plugin":"0.4.5","validate-commit-msg":"2.12.2","webpack":"3.0.0","webpack-config-utils":"2.3.0"},"_id":"@charlesritchea/unitz-ts@1.0.2","gitHead":"4bc145d043c8e9956f9e04514a91326cfba72782","bugs":{"url":"https://github.com/ClickerMonkey/unitz-ts/issues"},"homepage":"https://github.com/ClickerMonkey/unitz-ts#readme","_nodeVersion":"18.20.1","_npmVersion":"10.5.0","dist":{"integrity":"sha512-I6vChtvOHfrdXTGd3jDdQZGR5q2Pll82f2k6uFYe5ehosTjrvZzPlg96EFoYyzknq/KumRDLC4iatb4ds4IrEA==","shasum":"ae7adc210b7ef9ccc7c71b7ea3c1ee804ffd9288","tarball":"https://registry.npmjs.org/@charlesritchea/unitz-ts/-/unitz-ts-1.0.2.tgz","fileCount":143,"unpackedSize":2660966,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDi4EkLR0ZLQBPokF4N4YHhGRkq5Td0SnVGIQ/pWxL9NQIhAJrA7q9y41GfySuJaD/3ME3Kyv/zZcleznOnQmq2LPuJ"}]},"_npmUser":{"name":"charlesritchea","email":"charles@pointivo.com"},"directories":{},"maintainers":[{"name":"charlesritchea","email":"charles@pointivo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/unitz-ts_1.0.2_1712804974400_0.24231844357448584"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-11T03:09:34.255Z","1.0.2":"2024-04-11T03:09:34.642Z","modified":"2024-04-11T03:09:34.903Z"},"maintainers":[{"name":"charlesritchea","email":"charles@pointivo.com"}],"description":"A unit parser, converter, & calculator for TypeScript and JS","homepage":"https://github.com/ClickerMonkey/unitz-ts#readme","repository":{"type":"git","url":"git+https://github.com/ClickerMonkey/unitz-ts.git"},"bugs":{"url":"https://github.com/ClickerMonkey/unitz-ts/issues"},"license":"MIT","readme":"# Unitz\n\nA unit parser, converter, & calculator for TypeScript and JS.\n\n- [Documentation](https://clickermonkey.github.io/unitz-ts/docs/)\n- [Online Tool](https://clickermonkey.github.io/unitz-ts/tester.html)\n- Installation `npm install unitz-ts`, `bower install unitz-ts`, [download](https://github.com/ClickerMonkey/unitz-ts/tree/master/umd)\n\n```javascript\n// TypeScript\nimport { uz, Classes } from 'unitz-ts';\n\n// Add built-in units\nClasses.addDefaults(); \n\n// Javascript\nvar uz = Unitz.uz;\n\nUnitz.Classes.addDefaults(); // Add built-in units\n\n// Parsing\nuz('2.5 cups'); // parses numbers\nuz('1/2 in'); // parses fractions\nuz('3 1/4'); // mixed fractions and unitless values\nuz('mile'); // implicit values (1)\nuz('4-5 seconds'); // parses ranges\nuz('4s - 3min'); // parses ranges with mixed units\nuz('2c, 4s, 23mi'); // mixed unit classes\nuz('23 m/s, 60 mph, 2 1/2 liters per second'); // rates\n\n// Transformations\nuz('1.5 pints').normalize(); // = 3 cups: convert to unit in same class which is more human friendly\nuz('1c, 1pt').compact(); // = 1.5 pt: join values in the same unit class together\nuz('43in').expand(); // = 3 ft, 7 in: pull unit values of the same class apart to be more human friendly\n\n// Operations\nuz('1 pt').add('1 cup').normalize(); // = 3 cups\nuz('1 pt').sub('1 cup').normalize(); // = 1 cup\nuz('1 pt, 3 in').scale(2); // = 2 pt, 6 in\nuz('1 pt, 3 in').scaleTo('6 c'); // = 3 pt, 9 in\n\n// Convert\nuz('1 - 2 gal').convert('c'); // = 16 - 32 c\nuz('3 cup').conversions(); // = 3/16 gal, 3/4 qt, 1 1/2 pt, 3 c, 24 floz, 48 tbsp, 144 tsp\n\n// Mutations\nuz('3 cups').preferred(); // = 3 c: convert units to preferred\nuz('-2 in, 4 mi, -2 - 2').positive(); // = 4 mi, 0 - 2: we only want positive\nuz('-2 in, 4 mi, -2 - 2').negative(); // = -2 in, -2 - 0: we only want negative\nuz('-2 in, 4 mi, 0 tacos').nonzero(); // = -2 in, 4 mi: we only want non-zero\nuz('-2 in, 4 mi, -2 - 2').min(); // = -2 in, -2: we only the minimum values of a range\nuz('-2 in, 4 mi, -2 - 2').max(); // = -2 in, 2: we only the maximum values of a range\nuz('0.5 tsp').fractions(); // = 1/2 tsp: convert to fractions\nuz('1/2 tsp').numbers(); // = 0.5 tsp: convert to numbers\n\n// Sorting\nuz('1 tsp, 1 pt, 4 gal').sort(); // = 4 gal, 1 pt, 1 tsp: sort values\n\n// Dynamic unit groups\nuz('1 loaf').add('4 loaves').normalize(); // = 5 loaves\n\n// Output\nuz('1 cup').output( options ); // the above functions return objects, to get a string you must call output which can take options to override the global output options.\n\n// Alternative Input Formats\nuz({ value: 34, unit: 'ms' }); // a single number value\nuz({ num: 4, den: 12, unit: 'c' }); // a single fraction value\nuz({ min: '4c', max: '8c' }); // a range with value strings\nuz({ min:{value:1}, max:{value:2, unit:'m'} }); // range with value objects\nuz([ '4c', '1-2m' ]); // range list of range/value strings\nuz([ {value: 34, unit: 'ms'}, {min:'1m', max:'2m' ]); // range list of range/value objects\n\n// Translations\nUnitz.Translations.addDefaults();\n\nuz('one pound'); // = 1 pound\nuz('dozen tacos'); // = 12 tacos\nuz('an eleven meters'); // = 11 meters\nuz('a third of an acre'); // = 1/3acre\nuz('half a dozen eggs'); // = 6eggs\nuz('a seventh of a mile'); // = 1/7mile\nuz('23 and a half eggs'); // = 23 1/2eggs\nuz('one and a half acres'); // = 1 1/2acres\nuz('23 and a third'); // = 23 1/3\nuz('12 and one fourth cups'); // = 12 1/4cups\nuz('(one and a half) acre'); // = 1 1/2acre\nuz('(12) tacos'); // = 12 tacos\nuz('1 (6 ounce)'); // = 6ounce\nuz('5 (3 liter)'); // = 15liter\n\n// Rates (aliases)\nUnitz.Rates.addDefaults();\n\nuz('60 mph');; // 60 miles/hour\nuz('23 knots');; // 23 nautical miles/hour\n```\n\n### Customization\n\nYou can customize exactly how Unitz behaves.\n\n```javascript\n// The \"distance\" used to determine if a value is close enough to 0, 1, or if a calculated fraction is close enough to the real value.\nUnitz.Functions.EPSILON = 0.001;\n\n// The default settings for outputting values\nUnitz.Core.globalOutput;\n\n// The default settings for transforms\nUnitz.Core.globalTransform;\n\n// The default settings for sorting\nUnitz.Core.globalSort;\n\n// When preferred() is ran, use this unit\nUnitz.Core.setPreferred( 'cup' );\n\n// Set this unit group as common or uncommon\nUnitz.Core.setCommon( 'cup', false ); // we don't use cups round these parts\n\n// Set the denominators available for a unit group\nUnitz.Core.setDenominators( 'cup', [2, 3, 4, 5, 6] );\n\n// Add some units to an existing group\nUnitz.Core.getGroup('cup').addUnits({\n  'cupz': Unitz.Plurality.PLURAL\n});\n\n// Remove some units from an existing group\nUnitz.Core.getGroup('c').removeUnits(['cup', 'cups']);\n\n// Add my own rate\nUnitz.Rates.add('feet', 'second', ['fps']);\n\n// Add my own class\nUnitz.Core.addClass(new Class('Loaf', [\n  {\n    system: Unitz.System.ANY,\n    common: true,\n    unit: 'loaf',\n    baseUnit: 'loaf',\n    denominators: [2, 3, 4, 5, 6, 7, 8, 9, 10],\n    units: {\n      'loaf': Unitz.Plurality.SINGULAR,\n      'loaf of bread': Unitz.Plurality.SINGULAR,\n      'loafs': Unitz.Plurality.PLURAL,\n      'loaves': Unitz.Plurality.PLURAL,\n      'loaves of bread': Unitz.Plurality.PLURAL\n    }\n  }\n]));\n\n// To create dynamic groups Unitz looks at the first 3 characters to determine if two units are matches. You can override this by figuring out a value which can be used as a key.\nUnitz.Core.getDynamicMatch = function(unit) {\n  // use soundex instead of the first three characters. cup and kup are equal now!\n  return soundex( unit );\n};\n\n// To override the logic for determining what value is \"normal\" (most user friendly)\nUnitz.Core.isMoreNormal = function(fromValue, toValue, transform, forOutput) {\n  return true;\n};\n```\n\n### Supported Units\n\n**Angle**:\n- deg, °, degree, degrees\n- rad, radian, radians\n\n**Area**:\n- sqin, sq. in, sq in, in2, in^2, in&sup2;, inch2, inch^2, inch&sup2;, inches2, inches^2, inches&sup2;, square in, square inch, square inches\n- sqft, sq. ft, sq ft, ft2, ft^2, ft&sup2;, foot2, foot^2, foot&sup2;, feet2, feet^2, feet&sup2;, square ft, square foot, square feet\n- sqyd, sq. yd, sq yd, yd2, yd^2, yd&sup2;, yard2, yard^2, yard&sup2;, yards2, yards^2, yards&sup2;, square yd, square yard, square yards\n- acre, acres\n- sqmi, sq. mi, sq mi, mi2, mi^2, mi&sup2;, mile2, mile^2, mile&sup2;, miles2, miles^2, miles&sup2;, square mi, square mile, square miles\n- sqmm, sq. mm, sq mm, mm2, mm^2, mm&sup2;, millimeter2, millimeter^2, millimeter&sup2;, millimeters2, millimeters^2, millimeters&sup2;, square mm, square millimeter, square millimeters\n- sqcm, sq. cm, sq cm, cm2, cm^2, cm&sup2;, centimeter2, centimeter^2, centimeter&sup2;, centimeters2, centimeters^2, centimeters&sup2;, square cm, square centimeter, square centimeters\n- sqm, sq. m, sq m, m2, m^2, m&sup2;, meter2, meter^2, meter&sup2;, meters2, meters^2, meters&sup2;, square m, square meter, square meters\n- sqkm, sq. km, sq km, km2, km^2, km&sup2;, kilometer2, kilometer^2, kilometer&sup2;, kilometers2, kilometers^2, kilometers&sup2;, square km, square kilometer, square kilometers\n\n**Digital**:\n- b, bit, bits\n- nibble, nibbles, nybble, nyble, half-byte, half byte, tetrade, semi-octent, quadbit, quartet\n- B, byte, bytes\n- kB, kilobyte, kilobytes\n- mB, megabyte, megabytes\n- gB, gigabyte, gigabytes\n- tB, terabyte, terabytes\n- pB, petabyte, petabytes\n- eB, exabyte, exabytes\n- zB, zettabyte, zettabytes\n- yB, yottabyte, yottabytes\n- KB, kibibyte, kibibytes\n- MB, mebibyte, mebibytes\n- GB, gibibyte, gibibytes\n- TB, tebibyte, tebibytes\n- PB, pebibyte, pebibytes\n- EB, exbibyte, exbibytes\n- ZB, zebibyte, zebibytes\n- YB, yobibyte, yobibytes\n- kb, kilobit, kilobits\n- mb, megabit, megabits\n- gb, gigabit, gigabits\n- tb, terabit, terabits\n- pb, petabit, petabits\n- eb, exabit, exabits\n- zb, zettabit, zettabits\n- yb, yottabit, yottabits\n- kibit, kibibit, kibibits\n- mibit, mebibit, mebibits\n- gibit, gibibit, gibibits\n- tibit, tebibit, tebibits\n- pibit, pebibit, pebibits\n- eibit, exbibit, exbibits\n- zibit, zebibit, zebibits\n- yibit, yobibit, yobibits\n\n**Length**:\n- in, inch, inches, \"\n- ft, foot, feet, '\n- yd, yard, yards, yds\n- mi, mile, miles\n- league, leagues\n- mm, millimeter, millimeters, millimetre, millimetres\n- cm, centimeter, centimeters, centimetre, centimetres\n- dc, decimeter, decimeters, decimetre, decimetres\n- m, meter, meters, metre, metres\n- km, kms, kilometer, kilometers, kilometre, kilometres\n- nm, nmi, nautical mi, nautical mile, nautical miles\n\n**Temperature**:\n- F, °F, Fahrenheit\n- °C, Celsius\n- K, kelvin, kelvins\n\n**Time**:\n- ns, nano, nanos, nanosecond, nanoseconds\n- us, micro, micros, microsecond, microseconds\n- ms, milli, millis, millisecond, milliseconds\n- s, sec, secs, second, seconds\n- min, mins, minute, minutes\n- hr, hrs, hour, hours\n- day, days\n- wk, wks, week, weeks,\n- yr, yrs, year, years\n- score\n- decade, decades\n- biennium, bienniums\n- triennium, trienniums\n- quadrennium, quadrenniums\n- lustrum, lustrums\n- decade, decades\n- century, centurys, centuries\n- millennium, millenniums, millennia, millennias\n\n**Volume**:\n- ts, tsp, tsps, teaspoon, teaspoons\n- tbsp, tbsp, tablespoon, tablespoons\n- floz, fl-oz, fl oz, fluid ounce, fluid ounces, fl. oz, oz. fl, oz fl\n- c, cup, cups\n- pt, pint, pints,\n- qt, quart, quarts\n- gal gals, gallon, gallons\n- ml, millilitre, millilitres, milliliter, milliliters\n- cl, centilitre, centilitre, centiliter, centiliters\n- l, litre, litres, liter, liters\n- dl, decalitre, decalitres, decaliter, decaliters\n- kl, kilolitre, kiloletres, kiloliter, kiloliters\n- mm3, mm^3, mm&sup3;, millimeter3, millimeter^3, millimeter&sup3;, millimeters3, millimeters^3, millimeters&sup3;, cubic mm, cubic millimeter, cubic millimeters\n- cm3, cm^3, cm&sup3;, centimeter3, centimeter^3, centimeter&sup3;, centimeters3, centimeters^3, centimeters&sup3;, cubic cm, cubic centimeter, cubic centimeters\n- m3, m^3, m&sup3;, meter3, meter^3, meter&sup3;, meters3, meters^3, meters&sup3;, cubic m, cubic meter, cubic meters\n- km3, km^3, km&sup3;, kilometer3, kilometer^3, kilometer&sup3;, kilometers3, kilometers^3, kilometers&sup3;, cubic km, cubic kilometer, cubic kilometers\n- in3, in^3, in&sup3;, inch3, inch^3, inch&sup3;, inches3, inches^3, inches&sup3;, cubic in, cubic inch, cubic inches\n- ft3, ft^3, ft&sup3;, foot3, foot^3, foot&sup3;, feet3, feet^3, feet&sup3;, cubic ft, cubic foot, cubic feet\n- yd3, yd^3, yd&sup3;, yard3, yard^3, yard&sup3;, yards3, yards^3, yards&sup3;, cubic yd, cubic yard, cubic yards\n\n**Weight**:\n- mg, milligram, milligrams\n- g, gram, grams\n- kg, kilo, kilos, kilogram, kilograms\n- oz, ounce, ounces\n- lb, lbs, pound, pounds\n- ton, tons, tonne, tonnes\n","readmeFilename":"README.md"}