{"version":3,"sources":["unit_codes.ts"],"sourcesContent":["\n// units -----------------------------------------------------------------------------------------\n\n\n// 255 bytes for base units\nexport enum Unit {\n\n\t// SI base units 0x00 - 0x0f\n\tSECOND  = 0x00,\n\tMETRE   = 0x01,\n\tGRAM    = 0x02,\n\tAMPERE  = 0x03,\n\tKELVIN  = 0x04,\n\tMOLE    = 0x05,\n\tCANDELA = 0x06,\n\n\t// Currency units with ISO codes 0xa0 - 0xdf\n\tEUR    = 0xa0,\n\tUSD    = 0xa1,\n\tGBP    = 0xa2,\n\tRUB    = 0xa3,\n\tCNY    = 0xa4,\n\tJPY    = 0xa5,\n\n\tCMO    = 0xc0, // calendar month\n\n\tUNYT   = 0xd0,\n\n\tDIMENSIONLESS = 0xff,\n\n}\n\n\nexport const UnitSymbol = {\n\n\t[Unit.SECOND]: 's',\n\t[Unit.METRE]: 'm',\n\t[Unit.GRAM]: 'g',\n\t[Unit.AMPERE]: 'A',\n\t[Unit.KELVIN]: 'K',\n\t[Unit.MOLE]: 'mol',\n\t[Unit.CANDELA]: 'cd',\n\n\t[Unit.EUR]: 'EUR',\n\t[Unit.USD]: 'USD',\n\t[Unit.GBP]: 'GBP',\n\t[Unit.RUB]: 'RUB',\n\t[Unit.CNY]: 'CNY',\n\t[Unit.JPY]: 'JPY',\n\n\t[Unit.UNYT]: 'UNYT',\n\n\t[Unit.DIMENSIONLESS]: 'x',\n\n\t[Unit.CMO]: 'Cmo',\n\n\n} as const;\n\nexport const UnitCodeBySymbol =  {\n\n\t's': \tUnit.SECOND,\n\t'm': \tUnit.METRE,\n\t'g': \tUnit.GRAM,\n\t'A': \tUnit.AMPERE,\n\t'K': \tUnit.KELVIN,\n\t'mol': \tUnit.MOLE,\n\t'cd':\tUnit.CANDELA,\n\n\t'EUR': \tUnit.EUR,\n\t'USD': \tUnit.USD,\n\t'GBP': \tUnit.GBP,\n\t'RUB': \tUnit.RUB,\n\t'CNY': \tUnit.CNY,\n\t'JPY': \tUnit.JPY,\n\n\t'UNYT': \tUnit.UNYT,\n\n\t'x': \tUnit.DIMENSIONLESS,\n\t'1': \tUnit.DIMENSIONLESS,\n\n\t'Cmo': Unit.CMO\n\n} as const;\n\n\nexport const UnitCodeBySymbolShortForms =  {\n\t'€': \tUnit.EUR,\n\t'$': \tUnit.USD,\n\t'£':    Unit.GBP,\n\t'₽':    Unit.RUB,\n\t'¥':    Unit.CNY,\n} as const;\n\nexport const UnitSymbolShortFormsByCode =  {\n\t[Unit.EUR]: '€',\n\t[Unit.USD]: '$',\n\t[Unit.GBP]: '£',\n\t[Unit.RUB]: '₽',\n\t[Unit.CNY]: '¥',\n} as const;\n\n\n// complex units derived from SI units\nconst ONE_KG                  =\t[1000, 1, Unit.GRAM];\nconst ONE_PER_KG              = [1000, 1, Unit.GRAM, -1];\nconst ONE_SQUARE_METRE        = [1, 1, Unit.METRE, 2];\nconst ONE_PER_SQUARE_METRE    = [1, 1, Unit.METRE, -2];\nconst ONE_PER_SECOND          = [1, 1, Unit.SECOND, -1];\nconst ONE_PER_SQUARE_SECOND   = [1, 1, Unit.SECOND, -2];\nconst ONE_PER_CUBE_SECOND     = [1, 1, Unit.SECOND, -3];\n\nconst JOULE                   = [ONE_KG, ONE_SQUARE_METRE, ONE_PER_SQUARE_SECOND]\n\nexport const DerivedUnits = {\n\n\t// [numerator, denominator, base unit][]\n\n\t'rad':  [[1, 1, Unit.DIMENSIONLESS]],\n\t'sr':   [[1, 1, Unit.DIMENSIONLESS]],\n\n\t'N':    [ONE_KG, [1, 1, Unit.METRE], ONE_PER_SQUARE_SECOND],\n\t'Hz':   [ONE_PER_SECOND],\n\t'Pa':   [ONE_KG, [1, 1, Unit.METRE, -1], ONE_PER_SQUARE_SECOND],\n\t'J':    JOULE,\n\t'W':    [ONE_KG, ONE_SQUARE_METRE, ONE_PER_CUBE_SECOND],\n\t'C':    [[1, 1, Unit.SECOND], [1, 1, Unit.AMPERE]],\n\t'V':    [ONE_KG, ONE_SQUARE_METRE, ONE_PER_CUBE_SECOND, [1, 1, Unit.AMPERE, -1]],\n\t'F':    [ONE_PER_KG, ONE_PER_SQUARE_METRE, [1, 1, Unit.SECOND, 4], [1, 1, Unit.AMPERE, 2]],\n\n\t// Ohm - two versions\n\t'O':    [ONE_KG, ONE_SQUARE_METRE, ONE_PER_CUBE_SECOND, [1, 1, Unit.AMPERE, -2]],\n\t'Ω':    [ONE_KG, ONE_SQUARE_METRE, ONE_PER_CUBE_SECOND, [1, 1, Unit.AMPERE, -2]],\n\n\t'S':    [ONE_PER_KG, ONE_PER_SQUARE_METRE, [1, 1, Unit.SECOND, 3], [1, 1, Unit.AMPERE, 2]],\n\t'Wb':   [ONE_KG, ONE_SQUARE_METRE, ONE_PER_SQUARE_SECOND, [1, 1, Unit.AMPERE, -1]],\n\t'T':    [ONE_KG, ONE_PER_SQUARE_SECOND, [1, 1, Unit.AMPERE, -1]],\n\t'H':    [ONE_KG, ONE_SQUARE_METRE, ONE_PER_SQUARE_SECOND, [1, 1, Unit.AMPERE, -2]],\n\t// TODO °C?\n\t'lm':   [[1, 1, Unit.CANDELA]],\n\t'lx':   [[1, 1, Unit.CANDELA], ONE_PER_SQUARE_METRE],\n\t'Bq':   [ONE_PER_SECOND],\n\t'Gy':   [ONE_SQUARE_METRE, ONE_PER_SQUARE_SECOND],\n\t'kat':  [[1, 1, Unit.MOLE], ONE_PER_SECOND],\n\n\t// Non-SI\n\t'l'  :  [[1, 1000, Unit.METRE, 3]],\n\t'eV':   [[1, 160_217_700_000_000_000, Unit.DIMENSIONLESS], ...JOULE], // electron volt\n\n\n} as const;\n\n\n// aliases with a simple prefactor\nexport const UnitAliases = {\n\n\t// [numerator, denominator, base unit]\n\n\t'min': [60, \t\t1, Unit.SECOND],\n\t'h':   [60*60, \t\t1, Unit.SECOND],\n\t'd':   [60*60*24, \t1, Unit.SECOND],\n\t'a':   [31_557_600, 1, Unit.SECOND], // year definition (Julian calendar) from https://www.iau.org/publications/proceedings_rules/units/\n\t'yr':   [31_557_600, 1, Unit.SECOND], // year definition (Julian calendar) from https://www.iau.org/publications/proceedings_rules/units/\n\n\t't':   [1000*1000,  1, Unit.GRAM],\n\t'u':   [1, 1_660_540_000_000_000_052_570_466_811_904n, Unit.GRAM], // atomic mass\n\n\t'au':  [149_598_000_000, \t\t1, Unit.METRE], // astronomical unit\n\t'pc':  [30_857_000_000_000_000n, 1, Unit.METRE], // parsec\n\n\t'Cyr':  [12, 1, Unit.CMO], // 1 calendar year = 12 calendar months\n\t'Ca':   [12, 1, Unit.CMO],\n\n} as const;\n\n\nexport type UnitAliasUnits = {\n\t[k in keyof typeof UnitAliases]: typeof UnitAliases[k][2]\n}\n\n// reverse mapping for all aliases of a unit e.g. Unit.SECOND -> \"min\" | \"h\" | \"d\" | \"a\" | \"yr\"\nexport type UnitAliasesMap = {\n\t[key in UnitAliasUnits[keyof UnitAliasUnits]]: {\n\t\t[k in keyof UnitAliasUnits]: UnitAliasUnits[k] extends key ? k : never\n\t}[keyof UnitAliasUnits]\n}\n\n\n// prefixes -----------------------------------------------------------------------------------------\n\n// exponents (int8)\n\nexport enum UnitPrefixCode {\n\n\tYOTTA  = 24,  // 10 ^ 24\n\tZETTA  = 21,  // 10 ^ 21\n\tEXA    = 18,  // 10 ^ 18\n\tPETA   = 15,  // 10 ^ 15\n\tTERRA  = 12,  // 10 ^ 12\n\tGIGA   = 9,  // 10 ^ 9\n\tMEGA   = 6,  // 10 ^ 6\n\tKILO   = 3,  // 10 ^ 3\n\tHECTO  = 2,  // 10 ^ 2\n\tDECA   = 1,  // 10 ^ 1\n\n\tDECI   = -1,  // 10 ^ -1\n\tCENTI  = -2,  // 10 ^ -2\n\tMILLI  = -3,  // 10 ^ -3\n\tMICRO  = -6,  // 10 ^ -6\n\tNANO   = -9,  // 10 ^ -9\n\tPICO   = -12,  // 10 ^ -12\n\tFEMTO  = -15,  // 10 ^ -15\n\tATTO   = -18,  // 10 ^ -18\n\tZEPTO  = -21,  // 10 ^ -21\n\tYOCTO  = -24,  // 10 ^ -24\n}\n\n\nexport const UnitPrefixSymbol =  {\n\n\t[UnitPrefixCode.YOTTA]: 'Y',\n\t[UnitPrefixCode.ZETTA]: 'Z',\n\t[UnitPrefixCode.EXA]: \t'E',\n\t[UnitPrefixCode.PETA]: \t'P',\n\t[UnitPrefixCode.TERRA]: 'T',\n\t[UnitPrefixCode.GIGA]: \t'G',\n\t[UnitPrefixCode.MEGA]: \t'M',\n\t[UnitPrefixCode.KILO]: \t'k',\n\t[UnitPrefixCode.HECTO]: 'h',\n\t[UnitPrefixCode.DECA]: \t'da',\n\n\t[UnitPrefixCode.DECI]: \t'd',\n\t[UnitPrefixCode.CENTI]: 'c',\n\t[UnitPrefixCode.MILLI]: 'm',\n\t[UnitPrefixCode.MICRO]: 'u',\n\t[UnitPrefixCode.NANO]:  'n',\n\t[UnitPrefixCode.PICO]: \t'p',\n\t[UnitPrefixCode.FEMTO]: 'f',\n\t[UnitPrefixCode.ATTO]: \t'a',\n\t[UnitPrefixCode.ZEPTO]: 'z',\n\t[UnitPrefixCode.YOCTO]: 'y',\n\n} as const;\n\nexport const UnitPrefixCodeBySymbol =  {\n\n\t'Y': \tUnitPrefixCode.YOTTA,\n\t'Z': \tUnitPrefixCode.ZETTA,\n\t'E': \tUnitPrefixCode.EXA,\n\t'P': \tUnitPrefixCode.PETA,\n\t'T': \tUnitPrefixCode.TERRA,\n\t'G': \tUnitPrefixCode.GIGA,\n\t'M': \tUnitPrefixCode.MEGA,\n\t'k': \tUnitPrefixCode.KILO,\n\t'h': \tUnitPrefixCode.HECTO,\n\t'da': \tUnitPrefixCode.DECA,\n\n\t'd': \tUnitPrefixCode.DECI,\n\t'c': \tUnitPrefixCode.CENTI,\n\t'm': \tUnitPrefixCode.MILLI,\n\t'u': \tUnitPrefixCode.MICRO,\n\t'n': \tUnitPrefixCode.NANO,\n\t'p': \tUnitPrefixCode.PICO,\n\t'f': \tUnitPrefixCode.FEMTO,\n\t'a': \tUnitPrefixCode.ATTO,\n\t'z': \tUnitPrefixCode.ZEPTO,\n\t'y': \tUnitPrefixCode.YOCTO,\n\n} as const;\n\n\n\n\n// auto-generated types -----------------------------------------------------------------------------------------\n\n// helpers\ntype OptionalPropertyNames<T> = { [K in keyof T]: undefined extends T[K] ? K : never }[keyof T];\ntype SpreadProperties<L, R, K extends keyof L & keyof R> = { [P in K]: L[P] | Exclude<R[P], undefined> };\ntype Id<T> = T extends infer U ? { [K in keyof U]: U[K] } : never\n// { ...L, ...R }\ntype Combine<L, R> = Id<\n  Pick<L, Exclude<keyof L, keyof R>> & \n  SpreadProperties<L, R, OptionalPropertyNames<R> & keyof L>\n>;\n\nexport type unit_factor = [Unit, number];\nexport type unit = unit_factor[];\n\nexport type unit_base_symbol = keyof typeof UnitCodeBySymbol;\n// all allowed symbols (s,m,h,EUR,€,...)\nexport type unit_symbol = unit_base_symbol | keyof typeof UnitCodeBySymbolShortForms | keyof typeof UnitAliases;\n// all allowed prefixes (k,c,m,...)\nexport type unit_prefix = keyof typeof UnitPrefixCodeBySymbol;\n\n\nexport type code_to_symbol<C extends Unit> = typeof UnitSymbol[C] | typeof UnitSymbolShortFormsByCode[C & keyof typeof UnitSymbolShortFormsByCode];\nexport type symbol_to_code = typeof UnitCodeBySymbol & UnitAliasUnits & typeof UnitCodeBySymbolShortForms;\n\nexport type symbol_prefix_combinations<S extends string> = S|`${unit_prefix}${S}`\n\nexport type code_to_extended_symbol<C extends Unit = Unit> = C extends null ? string : symbol_prefix_combinations<code_to_symbol<C>|UnitAliasesMap[C & keyof UnitAliasesMap]>\nexport type symbol_with_prefix = unit_symbol|`${unit_prefix}${unit_symbol}`"],"names":["Unit","UnitPrefixCode","UnitSymbol","UnitCodeBySymbol","UnitCodeBySymbolShortForms","UnitSymbolShortFormsByCode","ONE_KG","ONE_PER_KG","ONE_SQUARE_METRE","ONE_PER_SQUARE_METRE","ONE_PER_SECOND","ONE_PER_SQUARE_SECOND","ONE_PER_CUBE_SECOND","JOULE","DerivedUnits","UnitAliases","UnitPrefixSymbol","UnitPrefixCodeBySymbol"],"mappings":"IAKYA,MA2LAC;;;CA3LAD,OAAAA,UAAAA;AA4BZ,OAAO,MAAME,aAAa;OAEV;OACD;OACD;OACE;OACA;OACF;OACG;SAEJ;SACA;SACA;SACA;SACA;SACA;SAEC;SAES;SAEV;AAGb,EAAW;AAEX,OAAO,MAAMC,mBAAoB;IAEhC,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,GAAK;IACL,EAAI;IAEJ,GAAK;IACL,GAAK;IACL,GAAK;IACL,GAAK;IACL,GAAK;IACL,GAAK;IAEL,IAAM;IAEN,CAAG;IACH,CAAG;IAEH,GAAK;AAEN,EAAW;AAGX,OAAO,MAAMC,6BAA8B;IAC1C,GAAG;IACH,CAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;AACJ,EAAW;AAEX,OAAO,MAAMC,6BAA8B;SAC9B;SACA;SACA;SACA;SACA;AACb,EAAW;AAIX,IAAMC,SAA0B;IAAC;IAAM;;CAAa,EAC9CC,aAA0B;IAAC;IAAM;;IAAc;CAAG,EAClDC,mBAA0B;IAAC;IAAG;;IAAe;CAAE,EAC/CC,uBAA0B;IAAC;IAAG;;IAAe;CAAG,EAChDC,iBAA0B;IAAC;IAAG;;IAAgB;CAAG,EACjDC,wBAA0B;IAAC;IAAG;;IAAgB;CAAG,EACjDC,sBAA0B;IAAC;IAAG;;IAAgB;CAAG,EAEjDC,QAA0B;IAACP;IAAQE;IAAkBG;CAAsB;AAEjF,OAAO,MAAMG,eAAe;IAI3B,KAAQ;QAAC;YAAC;YAAG;;SAAsB;KAAC;IACpC,IAAQ;QAAC;YAAC;YAAG;;SAAsB;KAAC;IAEpC,GAAQ;QAACR;QAAQ;YAAC;YAAG;;SAAc;QAAEK;KAAsB;IAC3D,IAAQ;QAACD;KAAe;IACxB,IAAQ;QAACJ;QAAQ;YAAC;YAAG;;YAAe;SAAG;QAAEK;KAAsB;IAC/D,GAAQE;IACR,GAAQ;QAACP;QAAQE;QAAkBI;KAAoB;IACvD,GAAQ;QAAC;YAAC;YAAG;;SAAe;QAAE;YAAC;YAAG;;SAAe;KAAC;IAClD,GAAQ;QAACN;QAAQE;QAAkBI;QAAqB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAChF,GAAQ;QAACL;QAAYE;QAAsB;YAAC;YAAG;;YAAgB;SAAE;QAAE;YAAC;YAAG;;YAAgB;SAAE;KAAC;IAG1F,GAAQ;QAACH;QAAQE;QAAkBI;QAAqB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAChF,GAAQ;QAACN;QAAQE;QAAkBI;QAAqB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAEhF,GAAQ;QAACL;QAAYE;QAAsB;YAAC;YAAG;;YAAgB;SAAE;QAAE;YAAC;YAAG;;YAAgB;SAAE;KAAC;IAC1F,IAAQ;QAACH;QAAQE;QAAkBG;QAAuB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAClF,GAAQ;QAACL;QAAQK;QAAuB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAChE,GAAQ;QAACL;QAAQE;QAAkBG;QAAuB;YAAC;YAAG;;YAAgB;SAAG;KAAC;IAElF,IAAQ;QAAC;YAAC;YAAG;;SAAgB;KAAC;IAC9B,IAAQ;QAAC;YAAC;YAAG;;SAAgB;QAAEF;KAAqB;IACpD,IAAQ;QAACC;KAAe;IACxB,IAAQ;QAACF;QAAkBG;KAAsB;IACjD,KAAQ;QAAC;YAAC;YAAG;;SAAa;QAAED;KAAe;IAG3C,GAAQ;QAAC;YAAC;YAAG;;YAAkB;SAAE;KAAC;IAClC,IAAQ;QAAC;YAAC;YAAG;;SAA4C;WAAKG;KAAM;AAGrE,EAAW;AAIX,OAAO,MAAME,cAAc;IAI1B,KAAO;QAAC;QAAM;;KAAe;IAC7B,GAAO;QAAC;QAAS;;KAAe;IAChC,GAAO;QAAC;QAAW;;KAAe;IAClC,GAAO;QAAC;QAAY;;KAAe;IACnC,IAAQ;QAAC;QAAY;;KAAe;IAEpC,GAAO;QAAC;QAAY;;KAAa;IACjC,GAAO;QAAC;AAAG,QAAA,0CAA0C;;KAAY;IAEjE,IAAO;QAAC;QAAmB;;KAAc;IACzC,IAAO;AAAC,QAAA,uBAAuB;QAAE;;KAAc;IAE/C,KAAQ;QAAC;QAAI;;KAAY;IACzB,IAAQ;QAAC;QAAI;;KAAY;AAE1B,EAAW;;;CAmBCd,iBAAAA,oBAAAA;AA0BZ,OAAO,MAAMe,mBAAoB;QAER;QACA;QACD;QACC;QACA;OACA;OACA;OACA;OACA;OACA;IAExB,IAAqB,EAAG;IACxB,IAAsB,EAAE;IACxB,IAAsB,EAAE;IACxB,IAAsB,EAAE;IACxB,IAAqB,EAAG;IACxB,KAAqB,EAAG;IACxB,KAAsB,EAAE;IACxB,KAAqB,EAAG;IACxB,KAAsB,EAAE;IACxB,KAAsB,EAAE;AAEzB,EAAW;AAEX,OAAO,MAAMC,yBAA0B;IAEtC,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,EAAI;IAEJ,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;IACH,CAAG;AAEJ,EAAW","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/compiler/","file":"unit_codes.ts"}