@utiliread/primitives 1.0.0-6 → 1.0.0-60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/cjs/index.js +17 -5
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/measure-id.js +3 -0
  4. package/dist/cjs/measure-id.js.map +1 -0
  5. package/dist/cjs/number-formatter.js +66 -39
  6. package/dist/cjs/number-formatter.js.map +1 -1
  7. package/dist/cjs/number-formatter.spec.js +94 -0
  8. package/dist/cjs/number-formatter.spec.js.map +1 -0
  9. package/dist/cjs/optional.js +3 -0
  10. package/dist/cjs/optional.js.map +1 -0
  11. package/dist/cjs/precision-number.js +36 -0
  12. package/dist/cjs/precision-number.js.map +1 -0
  13. package/dist/cjs/precision-number.spec.js +27 -0
  14. package/dist/cjs/precision-number.spec.js.map +1 -0
  15. package/dist/cjs/register-convention.js +56 -0
  16. package/dist/cjs/register-convention.js.map +1 -0
  17. package/dist/cjs/register-convention.spec.js +39 -0
  18. package/dist/cjs/register-convention.spec.js.map +1 -0
  19. package/dist/cjs/register-library.js +31 -22
  20. package/dist/cjs/register-library.js.map +1 -1
  21. package/dist/cjs/register-library.spec.js +20 -13
  22. package/dist/cjs/register-library.spec.js.map +1 -1
  23. package/dist/cjs/register-utils.js +8 -0
  24. package/dist/cjs/register-utils.js.map +1 -0
  25. package/dist/cjs/repository.js +26 -0
  26. package/dist/cjs/repository.js.map +1 -0
  27. package/dist/cjs/repository.spec.js +21 -0
  28. package/dist/cjs/repository.spec.js.map +1 -0
  29. package/dist/cjs/step.js +41 -0
  30. package/dist/cjs/step.js.map +1 -0
  31. package/dist/cjs/step.spec.js +29 -0
  32. package/dist/cjs/step.spec.js.map +1 -0
  33. package/dist/cjs/time-or-rule.js +19 -0
  34. package/dist/cjs/time-or-rule.js.map +1 -0
  35. package/dist/cjs/unit-id.js.map +1 -1
  36. package/dist/esm/index.d.ts +15 -7
  37. package/dist/esm/index.js +8 -3
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/measure-id.d.ts +1 -0
  40. package/dist/esm/measure-id.js +2 -0
  41. package/dist/esm/measure-id.js.map +1 -0
  42. package/dist/esm/number-formatter.d.ts +9 -0
  43. package/dist/esm/number-formatter.js +69 -42
  44. package/dist/esm/number-formatter.js.map +1 -1
  45. package/dist/esm/{register-converter.spec.d.ts → number-formatter.spec.d.ts} +0 -0
  46. package/dist/esm/number-formatter.spec.js +92 -0
  47. package/dist/esm/number-formatter.spec.js.map +1 -0
  48. package/dist/esm/optional.d.ts +1 -0
  49. package/dist/esm/optional.js +2 -0
  50. package/dist/esm/optional.js.map +1 -0
  51. package/dist/esm/precision-number.d.ts +11 -0
  52. package/dist/esm/precision-number.js +32 -0
  53. package/dist/esm/precision-number.js.map +1 -0
  54. package/dist/esm/precision-number.spec.d.ts +1 -0
  55. package/dist/esm/precision-number.spec.js +25 -0
  56. package/dist/esm/precision-number.spec.js.map +1 -0
  57. package/dist/esm/register-convention.d.ts +14 -0
  58. package/dist/esm/register-convention.js +52 -0
  59. package/dist/esm/register-convention.js.map +1 -0
  60. package/dist/esm/register-convention.spec.d.ts +1 -0
  61. package/dist/esm/register-convention.spec.js +37 -0
  62. package/dist/esm/register-convention.spec.js.map +1 -0
  63. package/dist/esm/register-definition.d.ts +4 -0
  64. package/dist/esm/register-id.d.ts +1 -1
  65. package/dist/esm/register-library.d.ts +4 -0
  66. package/dist/esm/register-library.js +32 -23
  67. package/dist/esm/register-library.js.map +1 -1
  68. package/dist/esm/register-library.spec.js +16 -9
  69. package/dist/esm/register-library.spec.js.map +1 -1
  70. package/dist/esm/register-utils.d.ts +3 -0
  71. package/dist/esm/register-utils.js +4 -0
  72. package/dist/esm/register-utils.js.map +1 -0
  73. package/dist/esm/repository.d.ts +9 -0
  74. package/dist/esm/repository.js +22 -0
  75. package/dist/esm/repository.js.map +1 -0
  76. package/dist/esm/repository.spec.d.ts +1 -0
  77. package/dist/esm/repository.spec.js +19 -0
  78. package/dist/esm/repository.spec.js.map +1 -0
  79. package/dist/esm/step.d.ts +15 -0
  80. package/dist/esm/step.js +38 -0
  81. package/dist/esm/step.js.map +1 -0
  82. package/dist/esm/step.spec.d.ts +1 -0
  83. package/dist/esm/step.spec.js +27 -0
  84. package/dist/esm/step.spec.js.map +1 -0
  85. package/dist/esm/time-or-rule.d.ts +7 -0
  86. package/dist/esm/time-or-rule.js +16 -0
  87. package/dist/esm/time-or-rule.js.map +1 -0
  88. package/dist/esm/unit-id.d.ts +1 -1
  89. package/dist/esm/unit-id.js +1 -1
  90. package/dist/esm/unit-id.js.map +1 -1
  91. package/karma.config.js +11 -14
  92. package/locales/da/aggregates.json +8 -0
  93. package/locales/da/consumption-types.json +7 -0
  94. package/locales/da/measures.json +15 -0
  95. package/locales/da/registers.json +198 -0
  96. package/locales/da/units.json +90 -0
  97. package/locales/en/aggregates.json +8 -0
  98. package/locales/en/consumption-types.json +7 -0
  99. package/locales/en/measures.json +15 -0
  100. package/locales/en/registers.json +198 -0
  101. package/locales/en/units.json +90 -0
  102. package/package.json +11 -4
  103. package/src/aggregate-id.ts +9 -9
  104. package/src/consumption-type-id.ts +8 -8
  105. package/src/index.ts +29 -11
  106. package/src/measure-id.ts +14 -0
  107. package/src/number-formatter.spec.ts +99 -0
  108. package/src/number-formatter.ts +88 -52
  109. package/src/optional.ts +1 -0
  110. package/src/precision-number.spec.ts +28 -0
  111. package/src/precision-number.ts +36 -0
  112. package/src/register-convention.spec.ts +43 -0
  113. package/src/register-convention.ts +61 -0
  114. package/src/register-definition.ts +23 -10
  115. package/src/register-id.ts +80 -6
  116. package/src/register-library.spec.ts +41 -33
  117. package/src/register-library.ts +57 -37
  118. package/src/register-pack.ts +5 -5
  119. package/src/register-utils.ts +6 -0
  120. package/src/repository.spec.ts +20 -0
  121. package/src/repository.ts +24 -0
  122. package/src/step.spec.ts +30 -0
  123. package/src/step.ts +37 -0
  124. package/src/time-or-rule.ts +17 -0
  125. package/src/unit-id.ts +126 -100
  126. package/tsconfig.cjs.json +7 -8
  127. package/tsconfig.json +15 -14
  128. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/base.css +0 -224
  129. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/block-navigation.js +0 -79
  130. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/favicon.png +0 -0
  131. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/index.html +0 -96
  132. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.css +0 -1
  133. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.js +0 -2
  134. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sort-arrow-sprite.png +0 -0
  135. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sorter.js +0 -170
  136. package/dist/cjs/register-converter.js +0 -47
  137. package/dist/cjs/register-converter.js.map +0 -1
  138. package/dist/cjs/register-converter.spec.js +0 -29
  139. package/dist/cjs/register-converter.spec.js.map +0 -1
  140. package/dist/esm/register-converter.d.ts +0 -9
  141. package/dist/esm/register-converter.js +0 -44
  142. package/dist/esm/register-converter.js.map +0 -1
  143. package/dist/esm/register-converter.spec.js +0 -27
  144. package/dist/esm/register-converter.spec.js.map +0 -1
  145. package/src/register-converter.spec.ts +0 -31
  146. package/src/register-converter.ts +0 -48
@@ -1,30 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var register_library_1 = require("./register-library");
5
- var volume = {
3
+ const chai_1 = require("chai");
4
+ const register_library_1 = require("./register-library");
5
+ const volume = {
6
6
  id: "volume",
7
+ measure: "volume",
7
8
  aggregate: "instant",
8
9
  units: ["cubicMeter"]
9
10
  };
10
- describe("library", function () {
11
- beforeEach(function () {
11
+ describe("library", () => {
12
+ beforeEach(() => {
12
13
  register_library_1.RegisterLibrary.reset();
13
14
  });
14
- it("should get added definition", function () {
15
+ it("should get added definition", () => {
15
16
  register_library_1.RegisterLibrary.add(volume);
16
- var definition = register_library_1.RegisterLibrary.get("volume");
17
- chai_1.expect(definition.id).to.equal("volume");
17
+ const definition = register_library_1.RegisterLibrary.get("volume");
18
+ (0, chai_1.expect)(definition.id).to.equal("volume");
18
19
  });
19
- it("should add all definitions in pack", function () {
20
+ it("should add all definitions in pack", () => {
20
21
  register_library_1.RegisterLibrary.add({
21
22
  someRandomKey: volume
22
23
  });
23
- var definition = register_library_1.RegisterLibrary.get("volume");
24
- chai_1.expect(definition.id).to.equal("volume");
24
+ const definition = register_library_1.RegisterLibrary.get("volume");
25
+ (0, chai_1.expect)(definition.id).to.equal("volume");
25
26
  });
26
- it("should throw when getting not added register", function () {
27
- chai_1.expect(function () { return register_library_1.RegisterLibrary.get("volume"); }).to.throw();
27
+ it("should throw when getting not added register", () => {
28
+ (0, chai_1.expect)(() => register_library_1.RegisterLibrary.get("volume")).to.throw();
29
+ });
30
+ it("should return all definitions when invoking all()", () => {
31
+ register_library_1.RegisterLibrary.add(volume);
32
+ register_library_1.RegisterLibrary.add(volume); // Only added once.
33
+ const all = register_library_1.RegisterLibrary.all();
34
+ (0, chai_1.expect)(all.length).to.equal(1);
28
35
  });
29
36
  });
30
37
  //# sourceMappingURL=register-library.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-library.spec.js","sourceRoot":"","sources":["../../src/register-library.spec.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAE9B,uDAAqD;AAErD,IAAM,MAAM,GAAuB;IAC/B,EAAE,EAAE,QAAQ;IACZ,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,CAAC,YAAY,CAAC;CACxB,CAAC;AAEF,QAAQ,CAAC,SAAS,EAAE;IAChB,UAAU,CAAC;QACP,kCAAe,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAC9B,kCAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAM,UAAU,GAAG,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,aAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE;QACrC,kCAAe,CAAC,GAAG,CAAC;YAChB,aAAa,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,IAAM,UAAU,GAAG,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,aAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE;QAC/C,aAAM,CAAC,cAAM,OAAA,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAA7B,CAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"register-library.spec.js","sourceRoot":"","sources":["../../src/register-library.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,yDAAqD;AAErD,MAAM,MAAM,GAAuB;IAC/B,EAAE,EAAE,QAAQ;IACZ,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,CAAC,YAAY,CAAC;CACxB,CAAC;AAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,UAAU,CAAC,GAAG,EAAE;QACZ,kCAAe,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,kCAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAA,aAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,kCAAe,CAAC,GAAG,CAAC;YAChB,aAAa,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAA,aAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,kCAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,kCAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;QAChD,MAAM,GAAG,GAAG,kCAAe,CAAC,GAAG,EAAE,CAAC;QAClC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRegisterId = void 0;
4
+ function getRegisterId(register) {
5
+ return typeof register === "string" ? register : register.id;
6
+ }
7
+ exports.getRegisterId = getRegisterId;
8
+ //# sourceMappingURL=register-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-utils.js","sourceRoot":"","sources":["../../src/register-utils.ts"],"names":[],"mappings":";;;AAGA,SAAgB,aAAa,CAAC,QAAyC;IACnE,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjE,CAAC;AAFD,sCAEC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Repository = void 0;
4
+ function Repository(repoOrTeam, name) {
5
+ if (name) {
6
+ return `${repoOrTeam}/${name}`;
7
+ }
8
+ else if (repoOrTeam.indexOf("/") > 0) {
9
+ return repoOrTeam;
10
+ }
11
+ else {
12
+ throw new TypeError("Invalid repository format");
13
+ }
14
+ }
15
+ exports.Repository = Repository;
16
+ (function (Repository) {
17
+ function split(repo) {
18
+ const parts = repo.split("/");
19
+ return {
20
+ team: parts[0],
21
+ name: parts[1],
22
+ };
23
+ }
24
+ Repository.split = split;
25
+ })(Repository = exports.Repository || (exports.Repository = {}));
26
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repository.ts"],"names":[],"mappings":";;;AAKA,SAAgB,UAAU,CAAC,UAAkB,EAAE,IAAa;IACxD,IAAI,IAAI,EAAE;QACN,OAAmB,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;KAC9C;SAAM,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACpC,OAAmB,UAAU,CAAC;KACjC;SAAM;QACH,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;KACpD;AACL,CAAC;AARD,gCAQC;AAED,WAAiB,UAAU;IACvB,SAAgB,KAAK,CAAC,IAAgB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACjB,CAAC;IACN,CAAC;IANe,gBAAK,QAMpB,CAAA;AACL,CAAC,EARgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQ1B"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const repository_1 = require("./repository");
5
+ describe("ctor", () => {
6
+ it("creates", () => {
7
+ (0, chai_1.expect)((0, repository_1.Repository)("gpkv", "gjoel")).to.equal("gpkv/gjoel");
8
+ (0, chai_1.expect)((0, repository_1.Repository)("gpkv/gjoel")).to.equal("gpkv/gjoel");
9
+ });
10
+ it("throws if wrong format", () => {
11
+ (0, chai_1.expect)(() => (0, repository_1.Repository)("invalid")).to.throw();
12
+ });
13
+ });
14
+ describe("split", () => {
15
+ it("splits into correct parts", () => {
16
+ const { team, name } = repository_1.Repository.split((0, repository_1.Repository)("gpkv", "gjoel"));
17
+ (0, chai_1.expect)(team).to.equal("gpkv");
18
+ (0, chai_1.expect)(name).to.equal("gjoel");
19
+ });
20
+ });
21
+ //# sourceMappingURL=repository.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.spec.js","sourceRoot":"","sources":["../../src/repository.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,6CAA0C;AAE1C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACf,IAAA,aAAM,EAAC,IAAA,uBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAA,aAAM,EAAC,IAAA,uBAAU,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,IAAA,uBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,uBAAU,CAAC,KAAK,CAAC,IAAA,uBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Step = exports.DayOfWeek = void 0;
4
+ const luxon_1 = require("luxon");
5
+ var DayOfWeek;
6
+ (function (DayOfWeek) {
7
+ DayOfWeek[DayOfWeek["Monday"] = 1] = "Monday";
8
+ DayOfWeek[DayOfWeek["Tuesday"] = 2] = "Tuesday";
9
+ DayOfWeek[DayOfWeek["Wednesday"] = 3] = "Wednesday";
10
+ DayOfWeek[DayOfWeek["Thursday"] = 4] = "Thursday";
11
+ DayOfWeek[DayOfWeek["Friday"] = 5] = "Friday";
12
+ DayOfWeek[DayOfWeek["Saturday"] = 6] = "Saturday";
13
+ DayOfWeek[DayOfWeek["Sunday"] = 7] = "Sunday";
14
+ })(DayOfWeek = exports.DayOfWeek || (exports.DayOfWeek = {}));
15
+ ;
16
+ var Step;
17
+ (function (Step) {
18
+ function startOf(dateTime, step, firstDayOfWeek) {
19
+ if (step === "week") {
20
+ const value = dateTime.startOf("day").set({ weekday: firstDayOfWeek !== null && firstDayOfWeek !== void 0 ? firstDayOfWeek : DayOfWeek.Monday });
21
+ return value > dateTime
22
+ ? value.minus({ days: 7 })
23
+ : value;
24
+ }
25
+ else {
26
+ return dateTime.startOf(step);
27
+ }
28
+ }
29
+ Step.startOf = startOf;
30
+ function asDuration(step, amount = 1) {
31
+ switch (step) {
32
+ case "hour": return luxon_1.Duration.fromObject({ hours: amount });
33
+ case "day": return luxon_1.Duration.fromObject({ days: amount });
34
+ case "week": return luxon_1.Duration.fromObject({ days: 7 * amount });
35
+ case "month": return luxon_1.Duration.fromObject({ months: amount });
36
+ case "year": return luxon_1.Duration.fromObject({ years: amount });
37
+ }
38
+ }
39
+ Step.asDuration = asDuration;
40
+ })(Step = exports.Step || (exports.Step = {}));
41
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/step.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAI3C,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,6CAAU,CAAA;IACV,+CAAW,CAAA;IACX,mDAAa,CAAA;IACb,iDAAY,CAAA;IACZ,6CAAU,CAAA;IACV,iDAAY,CAAA;IACZ,6CAAU,CAAA;AACd,CAAC,EARW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAQpB;AAAA,CAAC;AAEF,IAAiB,IAAI,CAsBpB;AAtBD,WAAiB,IAAI;IACjB,SAAgB,OAAO,CAAC,QAAkB,EAAE,IAAU,EAAE,cAA0B;QAC9E,IAAI,IAAI,KAAK,MAAM,EAAE;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3F,OAAO,KAAK,GAAG,QAAQ;gBACnB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1B,CAAC,CAAC,KAAK,CAAC;SACf;aACI;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACjC;IACL,CAAC;IAVe,YAAO,UAUtB,CAAA;IAED,SAAgB,UAAU,CAAC,IAAU,EAAE,MAAM,GAAG,CAAC;QAC7C,QAAQ,IAAI,EAAE;YACV,KAAK,MAAM,CAAC,CAAC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,KAAK,KAAK,CAAC,CAAC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;YAC9D,KAAK,OAAO,CAAC,CAAC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM,CAAC,CAAC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IARe,eAAU,aAQzB,CAAA;AACL,CAAC,EAtBgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAsBpB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const luxon_1 = require("luxon");
5
+ const step_1 = require("./step");
6
+ describe("startOf", () => {
7
+ it("returns start of day", () => {
8
+ const dt = luxon_1.DateTime.fromISO("2020-01-11T05:00:00+01:00");
9
+ const result = step_1.Step.startOf(dt, "day");
10
+ (0, chai_1.expect)(+result).to.equal(+luxon_1.DateTime.fromISO("2020-01-11T00:00:00+01:00"));
11
+ });
12
+ it("returns previous monday from saturday", () => {
13
+ const dt = luxon_1.DateTime.fromISO("2020-01-11T05:00:00+01:00");
14
+ const result = step_1.Step.startOf(dt, "week", step_1.DayOfWeek.Monday);
15
+ (0, chai_1.expect)(+result).to.equal(+luxon_1.DateTime.fromISO("2020-01-06T00:00:00+01:00"));
16
+ });
17
+ it("returns same monday from monday with hour", () => {
18
+ const dt = luxon_1.DateTime.fromISO("2020-01-13T05:00:00+01:00");
19
+ const result = step_1.Step.startOf(dt, "week", step_1.DayOfWeek.Monday);
20
+ (0, chai_1.expect)(+result).to.equal(+luxon_1.DateTime.fromISO("2020-01-13T00:00:00+01:00"));
21
+ });
22
+ });
23
+ describe("asDuration", () => {
24
+ it("should return equivalent duration", () => {
25
+ const duration = step_1.Step.asDuration("week");
26
+ (0, chai_1.expect)(duration.days).to.equal(7);
27
+ });
28
+ });
29
+ //# sourceMappingURL=step.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.spec.js","sourceRoot":"","sources":["../../src/step.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iCAAiC;AACjC,iCAAyC;AAEzC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,GAAG,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,WAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,GAAG,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,WAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAS,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAA,aAAM,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,GAAG,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,WAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAS,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAA,aAAM,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,QAAQ,GAAG,WAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeOrRule = void 0;
4
+ var TimeOrRule;
5
+ (function (TimeOrRule) {
6
+ function isTime(input) {
7
+ return typeof input !== "string";
8
+ }
9
+ TimeOrRule.isTime = isTime;
10
+ function isRule(input) {
11
+ return typeof input === "string";
12
+ }
13
+ TimeOrRule.isRule = isRule;
14
+ function asJSON(input) {
15
+ return isRule(input) ? input : input.toJSON();
16
+ }
17
+ TimeOrRule.asJSON = asJSON;
18
+ })(TimeOrRule = exports.TimeOrRule || (exports.TimeOrRule = {}));
19
+ //# sourceMappingURL=time-or-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-or-rule.js","sourceRoot":"","sources":["../../src/time-or-rule.ts"],"names":[],"mappings":";;;AAIA,IAAiB,UAAU,CAY1B;AAZD,WAAiB,UAAU;IACvB,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAZgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAY1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"unit-id.js","sourceRoot":"","sources":["../../src/unit-id.ts"],"names":[],"mappings":";;;AA0Fa,QAAA,WAAW,GAAa;IACjC,eAAe;IACf,UAAU;IACV,cAAc;IACd,cAAc;IACd,cAAc;IACd,SAAS;IACT,aAAa;IACb,aAAa;CAChB,CAAC"}
1
+ {"version":3,"file":"unit-id.js","sourceRoot":"","sources":["../../src/unit-id.ts"],"names":[],"mappings":";;;AAoHa,QAAA,WAAW,GAAa;IACjC,eAAe;IACf,UAAU;IACV,cAAc;IACd,cAAc;IACd,cAAc;IACd,SAAS;IACT,aAAa;IACb,aAAa;CAChB,CAAC"}
@@ -1,8 +1,16 @@
1
- import { ConsumptionTypeId } from "./consumption-type-id";
2
- import { RegisterId } from "./register-id";
3
- import { UnitId } from "./unit-id";
1
+ import type { ConsumptionTypeId } from "./consumption-type-id";
2
+ import type { RegisterId } from "./register-id";
3
+ import type { UnitId } from "./unit-id";
4
4
  import { RegisterLibrary } from "./register-library";
5
- import { RegisterDefinition } from "./register-definition";
6
- import { RegisterConverter } from "./register-converter";
7
- import { NumberFormatter } from "./number-formatter";
8
- export { ConsumptionTypeId, RegisterId, RegisterDefinition, UnitId, RegisterLibrary, RegisterConverter, NumberFormatter, };
5
+ import type { RegisterDefinition } from "./register-definition";
6
+ import { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from "./number-formatter";
7
+ import { RegisterConvention } from "./register-convention";
8
+ import type { AggregateId } from "./aggregate-id";
9
+ import type { MeasureId } from "./measure-id";
10
+ import { Step, DayOfWeek } from "./step";
11
+ import { TimeOrRule } from "./time-or-rule";
12
+ import { PrecisionNumber } from "./precision-number";
13
+ import "./repository";
14
+ import { Repository } from "./repository";
15
+ import type { Optional } from "./optional";
16
+ export { AggregateId, ConsumptionTypeId, DayOfWeek, MeasureId, NumberFormatter, PrecisionNumber, RegisterConvention, RegisterDefinition, RegisterId, RegisterLibrary, Repository, Step, TimeOrRule, UnitId, invariantDecimalSeparator, localeDecimalSeparator, Optional, };
package/dist/esm/index.js CHANGED
@@ -1,5 +1,10 @@
1
1
  import { RegisterLibrary } from "./register-library";
2
- import { RegisterConverter } from "./register-converter";
3
- import { NumberFormatter } from "./number-formatter";
4
- export { RegisterLibrary, RegisterConverter, NumberFormatter, };
2
+ import { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from "./number-formatter";
3
+ import { RegisterConvention } from "./register-convention";
4
+ import { Step, DayOfWeek } from "./step";
5
+ import { TimeOrRule } from "./time-or-rule";
6
+ import { PrecisionNumber } from "./precision-number";
7
+ import "./repository"; // We need this to get the Repository namespace exported
8
+ import { Repository } from "./repository";
9
+ export { DayOfWeek, NumberFormatter, PrecisionNumber, RegisterConvention, RegisterLibrary, Repository, Step, TimeOrRule, invariantDecimalSeparator, localeDecimalSeparator, };
5
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAKH,eAAe,EACf,iBAAiB,EACjB,eAAe,GAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,cAAc,CAAC,CAAC,wDAAwD;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAGH,SAAS,EAET,eAAe,EACf,eAAe,EACf,kBAAkB,EAGlB,eAAe,EACf,UAAU,EACV,IAAI,EACJ,UAAU,EAEV,yBAAyB,EACzB,sBAAsB,GAEzB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare type MeasureId = "none" | "duration" | "energy" | "humidity" | "mass" | "massFlow" | "power" | "reactiveEnergy" | "reactivePower" | "temperature" | "time" | "volume" | "volumeFlow";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=measure-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-id.js","sourceRoot":"","sources":["../../src/measure-id.ts"],"names":[],"mappings":""}
@@ -1,8 +1,17 @@
1
1
  export declare const invariantDecimalSeparator: string;
2
2
  export declare const localeDecimalSeparator: string;
3
+ export interface Parts {
4
+ invariantPrecisionString: string;
5
+ invariantCoefficientString: string;
6
+ exponent: number;
7
+ noOfCoefficientDecimals: number;
8
+ }
3
9
  declare class Formatter {
10
+ toPrecision(value: number, precision: number): string;
4
11
  toLocalePrecision(value: number, precision: number): string;
12
+ toFixed(value: number, precision: number): string;
5
13
  toLocaleFixed(value: number, precision: number): string;
14
+ getParts(value: number, precision: number): Parts;
6
15
  }
7
16
  export declare const NumberFormatter: Formatter;
8
17
  export {};
@@ -1,48 +1,75 @@
1
- export var invariantDecimalSeparator = (0.1).toString()[1];
2
- export var localeDecimalSeparator = (0.1).toLocaleString()[1];
3
- var Formatter = /** @class */ (function () {
4
- function Formatter() {
5
- }
6
- Formatter.prototype.toLocalePrecision = function (value, precision) {
7
- var absValue = Math.abs(value);
1
+ export const invariantDecimalSeparator = (0.1).toString()[1];
2
+ export const localeDecimalSeparator = (0.1).toLocaleString()[1];
3
+ class Formatter {
4
+ toPrecision(value, precision) {
5
+ if (value === 0) {
6
+ // (0).toPrecision(1) == "0"
7
+ // (0).toPrecision(2) == "0.0"
8
+ // (0).toPrecision(3) == "0.00"
9
+ // However, we want:
10
+ // Formatter.toPrecision(0, 0) == "0"
11
+ // Formatter.toPrecision(0, 1) == "0.0"
12
+ // Formatter.toPrecision(0, 2) == "0.00"
13
+ return value.toPrecision(precision + 1);
14
+ }
15
+ const absValue = Math.abs(value);
8
16
  if (absValue < 1) {
9
- return toPrecision(value, precision);
17
+ return value.toPrecision(precision);
10
18
  }
11
- var noOfIntegerDigits = Math.round(absValue).toString().length;
19
+ const noOfIntegerDigits = Math.round(absValue).toString().length;
12
20
  return precision >= noOfIntegerDigits
13
- ? toFixed(value, precision - noOfIntegerDigits)
14
- : toPrecision(value, precision);
15
- };
16
- Formatter.prototype.toLocaleFixed = function (value, precision) {
17
- var formatted = this.toLocalePrecision(value, precision);
18
- var match = /(.*)e\+(\d)$/.exec(formatted);
19
- if (match) {
20
- var number = match[1];
21
- var exponent = parseInt(match[2]);
22
- var decimalSeparatorIndex = number.indexOf(localeDecimalSeparator);
23
- if (decimalSeparatorIndex === -1) {
24
- return "" + number + "0".repeat(exponent);
25
- }
26
- else if (decimalSeparatorIndex >= 0) {
27
- var noOfDecimals = number.length - decimalSeparatorIndex - 1;
28
- if (noOfDecimals < exponent) {
29
- number = number.replace(localeDecimalSeparator, "");
30
- exponent -= noOfDecimals;
31
- return "" + number + "0".repeat(exponent);
32
- }
33
- }
21
+ ? value.toFixed(precision - noOfIntegerDigits)
22
+ : value.toPrecision(precision);
23
+ }
24
+ toLocalePrecision(value, precision) {
25
+ return this.toPrecision(value, precision)
26
+ .replace(invariantDecimalSeparator, localeDecimalSeparator);
27
+ }
28
+ toFixed(value, precision) {
29
+ const parts = this.getParts(value, precision);
30
+ if (parts.noOfCoefficientDecimals < parts.exponent) {
31
+ const number = parts.invariantCoefficientString.replace(invariantDecimalSeparator, "");
32
+ const zeros = parts.exponent - parts.noOfCoefficientDecimals;
33
+ return `${number}${"0".repeat(zeros)}`;
34
34
  }
35
- return formatted;
36
- };
37
- return Formatter;
38
- }());
39
- function toFixed(value, fractionDigits) {
40
- var formatted = value.toFixed(fractionDigits);
41
- return formatted.replace(invariantDecimalSeparator, localeDecimalSeparator);
42
- }
43
- function toPrecision(value, precision) {
44
- var formatted = value.toPrecision(precision);
45
- return formatted.replace(invariantDecimalSeparator, localeDecimalSeparator);
35
+ else {
36
+ return parts.invariantPrecisionString;
37
+ }
38
+ }
39
+ toLocaleFixed(value, precision) {
40
+ return this.toFixed(value, precision)
41
+ .replace(invariantDecimalSeparator, localeDecimalSeparator);
42
+ }
43
+ getParts(value, precision) {
44
+ const precisionString = this.toPrecision(value, precision);
45
+ if (precisionString.indexOf("e") >= 0) {
46
+ const match = /(.*)e([\+-]\d+)$/.exec(precisionString);
47
+ const coefficientString = match[1];
48
+ const exponent = parseInt(match[2]);
49
+ const decimalSeparatorIndex = coefficientString.indexOf(invariantDecimalSeparator);
50
+ const noOfCoefficientDecimals = decimalSeparatorIndex >= 0
51
+ ? coefficientString.length - decimalSeparatorIndex - 1
52
+ : 0;
53
+ return {
54
+ invariantPrecisionString: precisionString,
55
+ invariantCoefficientString: coefficientString,
56
+ exponent,
57
+ noOfCoefficientDecimals,
58
+ };
59
+ }
60
+ else {
61
+ const decimalSeparatorIndex = precisionString.indexOf(invariantDecimalSeparator);
62
+ const noOfCoefficientDecimals = decimalSeparatorIndex >= 0
63
+ ? precisionString.length - decimalSeparatorIndex - 1
64
+ : 0;
65
+ return {
66
+ invariantPrecisionString: precisionString,
67
+ invariantCoefficientString: precisionString,
68
+ exponent: 0,
69
+ noOfCoefficientDecimals,
70
+ };
71
+ }
72
+ }
46
73
  }
47
- export var NumberFormatter = new Formatter();
74
+ export const NumberFormatter = new Formatter();
48
75
  //# sourceMappingURL=number-formatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-formatter.js","sourceRoot":"","sources":["../../src/number-formatter.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,yBAAyB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,IAAM,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhE;IAAA;IAoCA,CAAC;IAnCU,qCAAiB,GAAxB,UAAyB,KAAa,EAAE,SAAiB;QACrD,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACxC;QAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QACjE,OAAO,SAAS,IAAI,iBAAiB;YACjC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;YAC/C,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAEM,iCAAa,GAApB,UAAqB,KAAa,EAAE,SAAiB;QACjD,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE;YACP,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACrE,IAAI,qBAAqB,KAAK,CAAC,CAAC,EAAE;gBAC9B,OAAO,KAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAG,CAAC;aAC7C;iBACI,IAAI,qBAAqB,IAAI,CAAC,EAAE;gBACjC,IAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,qBAAqB,GAAG,CAAC,CAAC;gBAE/D,IAAI,YAAY,GAAG,QAAQ,EAAE;oBACzB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;oBACpD,QAAQ,IAAI,YAAY,CAAC;oBAEzB,OAAO,KAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAG,CAAC;iBAC7C;aACJ;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IACL,gBAAC;AAAD,CAAC,AApCD,IAoCC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,cAAsB;IAClD,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,SAAiB;IACjD,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,IAAM,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"number-formatter.js","sourceRoot":"","sources":["../../src/number-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { expect } from 'chai';
2
+ import { NumberFormatter, localeDecimalSeparator, invariantDecimalSeparator } from './number-formatter';
3
+ describe("toParts and toPrecision", () => {
4
+ it("should format correctly", () => {
5
+ const data = [
6
+ [0, 0, { invariantPrecisionString: "0", invariantCoefficientString: "0", exponent: 0, noOfCoefficientDecimals: 0 }],
7
+ [0.0, 1, { invariantPrecisionString: "0.0", invariantCoefficientString: "0.0", exponent: 0, noOfCoefficientDecimals: 1 }],
8
+ [77.1274, 1, { invariantPrecisionString: "8e+1", invariantCoefficientString: "8", exponent: 1, noOfCoefficientDecimals: 0 }],
9
+ [77.1274, 2, { invariantPrecisionString: "77", invariantCoefficientString: "77", exponent: 0, noOfCoefficientDecimals: 0 }],
10
+ [77.1274, 4, { invariantPrecisionString: "77.13", invariantCoefficientString: "77.13", exponent: 0, noOfCoefficientDecimals: 2 }],
11
+ [77.1274, 5, { invariantPrecisionString: "77.127", invariantCoefficientString: "77.127", exponent: 0, noOfCoefficientDecimals: 3 }],
12
+ [77.1274, 6, { invariantPrecisionString: "77.1274", invariantCoefficientString: "77.1274", exponent: 0, noOfCoefficientDecimals: 4 }],
13
+ [77.1274, 7, { invariantPrecisionString: "77.12740", invariantCoefficientString: "77.12740", exponent: 0, noOfCoefficientDecimals: 5 }],
14
+ [77.1274, 15, { invariantPrecisionString: "77.1274000000000", invariantCoefficientString: "77.1274000000000", exponent: 0, noOfCoefficientDecimals: 13 }],
15
+ [77.1274, 16, { invariantPrecisionString: "77.12739999999999", invariantCoefficientString: "77.12739999999999", exponent: 0, noOfCoefficientDecimals: 14 }],
16
+ [77.1274, 17, { invariantPrecisionString: "77.127399999999994", invariantCoefficientString: "77.127399999999994", exponent: 0, noOfCoefficientDecimals: 15 }],
17
+ [77.1274, 18, { invariantPrecisionString: "77.1273999999999944", invariantCoefficientString: "77.1273999999999944", exponent: 0, noOfCoefficientDecimals: 16 }],
18
+ [77.1274, 19, { invariantPrecisionString: "77.12739999999999441", invariantCoefficientString: "77.12739999999999441", exponent: 0, noOfCoefficientDecimals: 17 }],
19
+ [77.1274, 20, { invariantPrecisionString: "77.127399999999994407", invariantCoefficientString: "77.127399999999994407", exponent: 0, noOfCoefficientDecimals: 18 }],
20
+ [77.1274, 21, { invariantPrecisionString: "77.1273999999999944066", invariantCoefficientString: "77.1273999999999944066", exponent: 0, noOfCoefficientDecimals: 19 }],
21
+ [0.00000123, 2, { invariantPrecisionString: "0.0000012", invariantCoefficientString: "0.0000012", exponent: 0, noOfCoefficientDecimals: 7 }],
22
+ [0.000000123, 2, { invariantPrecisionString: "1.2e-7", invariantCoefficientString: "1.2", exponent: -7, noOfCoefficientDecimals: 1 }],
23
+ [0.00000123, 21, { invariantPrecisionString: "0.00000123000000000000008198", invariantCoefficientString: "0.00000123000000000000008198", exponent: 0, noOfCoefficientDecimals: 26 }],
24
+ [123456, 3, { invariantPrecisionString: "1.23e+5", invariantCoefficientString: "1.23", exponent: 5, noOfCoefficientDecimals: 2 }],
25
+ [Number.MAX_VALUE, 3, { invariantPrecisionString: "1.80e+308", invariantCoefficientString: "1.80", exponent: 308, noOfCoefficientDecimals: 2 }],
26
+ [123456, 15, { invariantPrecisionString: "123456.000000000", invariantCoefficientString: "123456.000000000", exponent: 0, noOfCoefficientDecimals: 9 }],
27
+ [0, 5, { invariantPrecisionString: "0.00000", invariantCoefficientString: "0.00000", exponent: 0, noOfCoefficientDecimals: 5 }],
28
+ [0.000001, 1, { invariantPrecisionString: "0.000001", invariantCoefficientString: "0.000001", exponent: 0, noOfCoefficientDecimals: 6 }],
29
+ [0.000001, 10, { invariantPrecisionString: "0.000001000000000", invariantCoefficientString: "0.000001000000000", exponent: 0, noOfCoefficientDecimals: 15 }],
30
+ [0.0000001, 10, { invariantPrecisionString: "1.000000000e-7", invariantCoefficientString: "1.000000000", exponent: -7, noOfCoefficientDecimals: 9 }],
31
+ [0.00000000001, 1, { invariantPrecisionString: "1e-11", invariantCoefficientString: "1", exponent: -11, noOfCoefficientDecimals: 0 }],
32
+ [0.00000000001, 2, { invariantPrecisionString: "1.0e-11", invariantCoefficientString: "1.0", exponent: -11, noOfCoefficientDecimals: 1 }],
33
+ [55, 2, { invariantPrecisionString: "55", invariantCoefficientString: "55", exponent: 0, noOfCoefficientDecimals: 0 }],
34
+ [55, 1, { invariantPrecisionString: "6e+1", invariantCoefficientString: "6", exponent: 1, noOfCoefficientDecimals: 0 }],
35
+ [-55, 2, { invariantPrecisionString: "-55", invariantCoefficientString: "-55", exponent: 0, noOfCoefficientDecimals: 0 }],
36
+ [-55, 1, { invariantPrecisionString: "-6e+1", invariantCoefficientString: "-6", exponent: 1, noOfCoefficientDecimals: 0 }],
37
+ [9.59, 1, { invariantPrecisionString: "1e+1", invariantCoefficientString: "1", exponent: 1, noOfCoefficientDecimals: 0 }],
38
+ [9.59, 2, { invariantPrecisionString: "10", invariantCoefficientString: "10", exponent: 0, noOfCoefficientDecimals: 0 }],
39
+ [9.95, 2, { invariantPrecisionString: "10", invariantCoefficientString: "10", exponent: 0, noOfCoefficientDecimals: 0 }],
40
+ [9.96, 2, { invariantPrecisionString: "10", invariantCoefficientString: "10", exponent: 0, noOfCoefficientDecimals: 0 }],
41
+ [-555555555555555555555, 1, { invariantPrecisionString: "-6e+20", invariantCoefficientString: "-6", exponent: 20, noOfCoefficientDecimals: 0 }],
42
+ [-5555555555555555555555, 1, { invariantPrecisionString: "-6e+21", invariantCoefficientString: "-6", exponent: 21, noOfCoefficientDecimals: 0 }],
43
+ [18014398509482012, 21, { invariantPrecisionString: "18014398509482012.0000", invariantCoefficientString: "18014398509482012.0000", exponent: 0, noOfCoefficientDecimals: 4 }],
44
+ [180143985094820121234, 21, { invariantPrecisionString: "180143985094820134912", invariantCoefficientString: "180143985094820134912", exponent: 0, noOfCoefficientDecimals: 0 }],
45
+ [0.1, 21, { invariantPrecisionString: "0.100000000000000005551", invariantCoefficientString: "0.100000000000000005551", exponent: 0, noOfCoefficientDecimals: 21 }],
46
+ [Number.EPSILON, 2, { invariantPrecisionString: "2.2e-16", invariantCoefficientString: "2.2", exponent: -16, noOfCoefficientDecimals: 1 }],
47
+ [Number.EPSILON, 21, { invariantPrecisionString: "2.22044604925031308085e-16", invariantCoefficientString: "2.22044604925031308085", exponent: -16, noOfCoefficientDecimals: 20 }],
48
+ [Number.NaN, 3, { invariantPrecisionString: "NaN", invariantCoefficientString: "NaN", exponent: 0, noOfCoefficientDecimals: 0 }],
49
+ [Number.POSITIVE_INFINITY, 3, { invariantPrecisionString: "Infinity", invariantCoefficientString: "Infinity", exponent: 0, noOfCoefficientDecimals: 0 }],
50
+ [Number.NEGATIVE_INFINITY, 3, { invariantPrecisionString: "-Infinity", invariantCoefficientString: "-Infinity", exponent: 0, noOfCoefficientDecimals: 0 }],
51
+ [164735280, 7, { invariantPrecisionString: "1.647353e+8", invariantCoefficientString: "1.647353", exponent: 8, noOfCoefficientDecimals: 6 }],
52
+ ];
53
+ for (const [value, precision, expectedParts] of data) {
54
+ expect(NumberFormatter.toPrecision(value, precision)).to.equal(expectedParts.invariantPrecisionString);
55
+ const localePrecisionString = expectedParts.invariantPrecisionString.replace(invariantDecimalSeparator, localeDecimalSeparator);
56
+ expect(NumberFormatter.toLocalePrecision(value, precision)).to.equal(localePrecisionString);
57
+ const parts = NumberFormatter.getParts(value, precision);
58
+ expect(parts.invariantPrecisionString).to.equal(expectedParts.invariantPrecisionString);
59
+ expect(parts.invariantCoefficientString).to.equal(expectedParts.invariantCoefficientString);
60
+ expect(parts.exponent).to.equal(expectedParts.exponent);
61
+ expect(parts.noOfCoefficientDecimals).to.equal(expectedParts.noOfCoefficientDecimals);
62
+ }
63
+ });
64
+ });
65
+ describe("toFixed", () => {
66
+ it("should format correctly", () => {
67
+ const data = [
68
+ [0, 0, "0"],
69
+ [0.0, 1, "0.0"],
70
+ [10, 1, "10"],
71
+ [10, 2, "10"],
72
+ [10, 3, "10.0"],
73
+ [10, 4, "10.00"],
74
+ [10.2, 1, "10"],
75
+ [10.2, 2, "10"],
76
+ [10.2, 3, "10.2"],
77
+ [10.2, 4, "10.20"],
78
+ [217887000000, 6, "217887000000"],
79
+ ];
80
+ for (const [value, precision, invariantExpected] of data) {
81
+ expect(NumberFormatter.toFixed(value, precision)).to.equal(invariantExpected);
82
+ const localeExpected = invariantExpected.replace(invariantDecimalSeparator, localeDecimalSeparator);
83
+ expect(NumberFormatter.toLocaleFixed(value, precision)).to.equal(localeExpected);
84
+ }
85
+ });
86
+ });
87
+ describe("toLocaleFixed", () => {
88
+ it("should format correctly", () => {
89
+ expect(NumberFormatter.toLocaleFixed(400, 2)).to.equal("400");
90
+ });
91
+ });
92
+ //# sourceMappingURL=number-formatter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatter.spec.js","sourceRoot":"","sources":["../../src/number-formatter.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=optional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/optional.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export declare class PrecisionNumber {
2
+ value: number;
3
+ precision: number;
4
+ constructor(value: number, precision: number);
5
+ static parse(input: string): PrecisionNumber;
6
+ toString(): string;
7
+ toFixed(): string;
8
+ toPrecision(): string;
9
+ toLocaleFixed(): string;
10
+ toLocalePrecision(): string;
11
+ }