@utiliread/primitives 1.0.0-7 → 1.0.0-70

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 (148) 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 +70 -39
  6. package/dist/cjs/number-formatter.js.map +1 -1
  7. package/dist/cjs/number-formatter.spec.js +98 -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/aggregate-id.d.ts +1 -1
  37. package/dist/esm/consumption-type-id.d.ts +1 -1
  38. package/dist/esm/index.d.ts +15 -7
  39. package/dist/esm/index.js +8 -3
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/measure-id.d.ts +1 -0
  42. package/dist/esm/measure-id.js +2 -0
  43. package/dist/esm/measure-id.js.map +1 -0
  44. package/dist/esm/number-formatter.d.ts +11 -2
  45. package/dist/esm/number-formatter.js +73 -42
  46. package/dist/esm/number-formatter.js.map +1 -1
  47. package/dist/esm/{register-converter.spec.d.ts → number-formatter.spec.d.ts} +0 -0
  48. package/dist/esm/number-formatter.spec.js +96 -0
  49. package/dist/esm/number-formatter.spec.js.map +1 -0
  50. package/dist/esm/optional.d.ts +1 -0
  51. package/dist/esm/optional.js +2 -0
  52. package/dist/esm/optional.js.map +1 -0
  53. package/dist/esm/precision-number.d.ts +11 -0
  54. package/dist/esm/precision-number.js +32 -0
  55. package/dist/esm/precision-number.js.map +1 -0
  56. package/dist/esm/precision-number.spec.d.ts +1 -0
  57. package/dist/esm/precision-number.spec.js +25 -0
  58. package/dist/esm/precision-number.spec.js.map +1 -0
  59. package/dist/esm/register-convention.d.ts +14 -0
  60. package/dist/esm/register-convention.js +52 -0
  61. package/dist/esm/register-convention.js.map +1 -0
  62. package/dist/esm/register-convention.spec.d.ts +1 -0
  63. package/dist/esm/register-convention.spec.js +37 -0
  64. package/dist/esm/register-convention.spec.js.map +1 -0
  65. package/dist/esm/register-definition.d.ts +4 -0
  66. package/dist/esm/register-id.d.ts +1 -1
  67. package/dist/esm/register-library.d.ts +4 -0
  68. package/dist/esm/register-library.js +32 -23
  69. package/dist/esm/register-library.js.map +1 -1
  70. package/dist/esm/register-library.spec.js +16 -9
  71. package/dist/esm/register-library.spec.js.map +1 -1
  72. package/dist/esm/register-utils.d.ts +3 -0
  73. package/dist/esm/register-utils.js +4 -0
  74. package/dist/esm/register-utils.js.map +1 -0
  75. package/dist/esm/repository.d.ts +9 -0
  76. package/dist/esm/repository.js +22 -0
  77. package/dist/esm/repository.js.map +1 -0
  78. package/dist/esm/repository.spec.d.ts +1 -0
  79. package/dist/esm/repository.spec.js +19 -0
  80. package/dist/esm/repository.spec.js.map +1 -0
  81. package/dist/esm/step.d.ts +15 -0
  82. package/dist/esm/step.js +38 -0
  83. package/dist/esm/step.js.map +1 -0
  84. package/dist/esm/step.spec.d.ts +1 -0
  85. package/dist/esm/step.spec.js +27 -0
  86. package/dist/esm/step.spec.js.map +1 -0
  87. package/dist/esm/time-or-rule.d.ts +7 -0
  88. package/dist/esm/time-or-rule.js +16 -0
  89. package/dist/esm/time-or-rule.js.map +1 -0
  90. package/dist/esm/unit-id.d.ts +1 -1
  91. package/dist/esm/unit-id.js +1 -1
  92. package/dist/esm/unit-id.js.map +1 -1
  93. package/karma.config.js +14 -14
  94. package/locales/da/aggregates.json +8 -0
  95. package/locales/da/consumption-types.json +7 -0
  96. package/locales/da/measures.json +16 -0
  97. package/locales/da/registers.json +221 -0
  98. package/locales/da/units.json +93 -0
  99. package/locales/en/aggregates.json +8 -0
  100. package/locales/en/consumption-types.json +7 -0
  101. package/locales/en/measures.json +16 -0
  102. package/locales/en/registers.json +221 -0
  103. package/locales/en/units.json +93 -0
  104. package/package.json +12 -5
  105. package/src/aggregate-id.ts +9 -9
  106. package/src/consumption-type-id.ts +8 -8
  107. package/src/index.ts +29 -11
  108. package/src/measure-id.ts +15 -0
  109. package/src/number-formatter.spec.ts +105 -77
  110. package/src/number-formatter.ts +95 -50
  111. package/src/optional.ts +1 -0
  112. package/src/precision-number.spec.ts +28 -0
  113. package/src/precision-number.ts +36 -0
  114. package/src/register-convention.spec.ts +43 -0
  115. package/src/register-convention.ts +61 -0
  116. package/src/register-definition.ts +14 -1
  117. package/src/register-id.ts +303 -191
  118. package/src/register-library.spec.ts +41 -33
  119. package/src/register-library.ts +57 -37
  120. package/src/register-pack.ts +5 -5
  121. package/src/register-utils.ts +6 -0
  122. package/src/repository.spec.ts +20 -0
  123. package/src/repository.ts +24 -0
  124. package/src/step.spec.ts +30 -0
  125. package/src/step.ts +37 -0
  126. package/src/time-or-rule.ts +17 -0
  127. package/src/unit-id.ts +131 -100
  128. package/tsconfig.cjs.json +7 -8
  129. package/tsconfig.json +15 -14
  130. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/base.css +0 -224
  131. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/block-navigation.js +0 -79
  132. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/favicon.png +0 -0
  133. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/index.html +0 -96
  134. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.css +0 -1
  135. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.js +0 -2
  136. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sort-arrow-sprite.png +0 -0
  137. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sorter.js +0 -170
  138. package/dist/cjs/register-converter.js +0 -47
  139. package/dist/cjs/register-converter.js.map +0 -1
  140. package/dist/cjs/register-converter.spec.js +0 -29
  141. package/dist/cjs/register-converter.spec.js.map +0 -1
  142. package/dist/esm/register-converter.d.ts +0 -9
  143. package/dist/esm/register-converter.js +0 -44
  144. package/dist/esm/register-converter.js.map +0 -1
  145. package/dist/esm/register-converter.spec.js +0 -27
  146. package/dist/esm/register-converter.spec.js.map +0 -1
  147. package/src/register-converter.spec.ts +0 -31
  148. package/src/register-converter.ts +0 -48
@@ -0,0 +1,6 @@
1
+ import { RegisterDefinition } from "./register-definition";
2
+ import { RegisterId } from "./register-id";
3
+
4
+ export function getRegisterId(register: RegisterId | RegisterDefinition) {
5
+ return typeof register === "string" ? register : register.id;
6
+ }
@@ -0,0 +1,20 @@
1
+ import { expect } from "chai";
2
+ import { Repository } from "./repository";
3
+
4
+ describe("ctor", () => {
5
+ it("creates", () => {
6
+ expect(Repository("gpkv", "gjoel")).to.equal("gpkv/gjoel");
7
+ expect(Repository("gpkv/gjoel")).to.equal("gpkv/gjoel");
8
+ });
9
+ it("throws if wrong format", () => {
10
+ expect(() => Repository("invalid")).to.throw();
11
+ })
12
+ });
13
+
14
+ describe("split", () => {
15
+ it("splits into correct parts", () => {
16
+ const { team, name } = Repository.split(Repository("gpkv", "gjoel"));
17
+ expect(team).to.equal("gpkv");
18
+ expect(name).to.equal("gjoel");
19
+ });
20
+ });
@@ -0,0 +1,24 @@
1
+ // This is clearly not correct but it provides some amazing type safety
2
+ export type Repository = "some/repo";
3
+
4
+ export function Repository(repo: string): Repository;
5
+ export function Repository(team: string, name: string): Repository;
6
+ export function Repository(repoOrTeam: string, name?: string): Repository {
7
+ if (name) {
8
+ return <Repository>`${repoOrTeam}/${name}`;
9
+ } else if (repoOrTeam.indexOf("/") > 0) {
10
+ return <Repository>repoOrTeam;
11
+ } else {
12
+ throw new TypeError("Invalid repository format");
13
+ }
14
+ }
15
+
16
+ export namespace Repository {
17
+ export function split(repo: Repository) {
18
+ const parts = repo.split("/");
19
+ return {
20
+ team: parts[0],
21
+ name: parts[1],
22
+ };
23
+ }
24
+ }
@@ -0,0 +1,30 @@
1
+ import { expect } from "chai";
2
+ import { DateTime } from "luxon";
3
+ import { DayOfWeek, Step } from "./step";
4
+
5
+ describe("startOf", () => {
6
+ it("returns start of day", () => {
7
+ const dt = DateTime.fromISO("2020-01-11T05:00:00+01:00");
8
+ const result = Step.startOf(dt, "day");
9
+ expect(+result).to.equal(+DateTime.fromISO("2020-01-11T00:00:00+01:00"));
10
+ });
11
+
12
+ it("returns previous monday from saturday", () => {
13
+ const dt = DateTime.fromISO("2020-01-11T05:00:00+01:00");
14
+ const result = Step.startOf(dt, "week", DayOfWeek.Monday);
15
+ expect(+result).to.equal(+DateTime.fromISO("2020-01-06T00:00:00+01:00"));
16
+ });
17
+
18
+ it("returns same monday from monday with hour", () => {
19
+ const dt = DateTime.fromISO("2020-01-13T05:00:00+01:00");
20
+ const result = Step.startOf(dt, "week", DayOfWeek.Monday);
21
+ expect(+result).to.equal(+DateTime.fromISO("2020-01-13T00:00:00+01:00"));
22
+ });
23
+ });
24
+
25
+ describe("asDuration", () => {
26
+ it("should return equivalent duration", () => {
27
+ const duration = Step.asDuration("week");
28
+ expect(duration.days).to.equal(7);
29
+ });
30
+ });
package/src/step.ts ADDED
@@ -0,0 +1,37 @@
1
+ import { DateTime, Duration } from "luxon";
2
+
3
+ export type Step = "hour" | "day" | "week" | "month" | "year";
4
+
5
+ export enum DayOfWeek {
6
+ Monday = 1,
7
+ Tuesday = 2,
8
+ Wednesday = 3,
9
+ Thursday = 4,
10
+ Friday = 5,
11
+ Saturday = 6,
12
+ Sunday = 7,
13
+ };
14
+
15
+ export namespace Step {
16
+ export function startOf(dateTime: DateTime, step: Step, firstDayOfWeek?: DayOfWeek): DateTime {
17
+ if (step === "week") {
18
+ const value = dateTime.startOf("day").set({ weekday: firstDayOfWeek ?? DayOfWeek.Monday });
19
+ return value > dateTime
20
+ ? value.minus({ days: 7 })
21
+ : value;
22
+ }
23
+ else {
24
+ return dateTime.startOf(step);
25
+ }
26
+ }
27
+
28
+ export function asDuration(step: Step, amount = 1): Duration {
29
+ switch (step) {
30
+ case "hour": return Duration.fromObject({ hours: amount });
31
+ case "day": return Duration.fromObject({ days: amount });
32
+ case "week": return Duration.fromObject({ days: 7 * amount });
33
+ case "month": return Duration.fromObject({ months: amount });
34
+ case "year": return Duration.fromObject({ years: amount });
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,17 @@
1
+ import { DateTime } from "luxon";
2
+
3
+ export type TimeOrRule = Date | DateTime | string;
4
+
5
+ export namespace TimeOrRule {
6
+ export function isTime(input: TimeOrRule): input is Date | DateTime {
7
+ return typeof input !== "string";
8
+ }
9
+
10
+ export function isRule(input: TimeOrRule): input is string {
11
+ return typeof input === "string";
12
+ }
13
+
14
+ export function asJSON(input: TimeOrRule) {
15
+ return isRule(input) ? input : input.toJSON();
16
+ }
17
+ }
package/src/unit-id.ts CHANGED
@@ -1,100 +1,131 @@
1
- export type UnitId =
2
- "unitless" |
3
-
4
- "milliWattHour" |
5
- "wattHour" |
6
- "kiloWattHour" |
7
- "megaWattHour" |
8
- "gigaWattHour" |
9
- "calorie" |
10
- "kiloCalorie" |
11
- "megaCalorie" |
12
-
13
- "joule" |
14
- "kiloJoule" |
15
- "megaJoule" |
16
- "gigaJoule" |
17
-
18
- "liter" |
19
- "cubicMeter" |
20
-
21
- "fluidOunce" |
22
- "gallon" |
23
-
24
- "gram" |
25
- "kiloGram" |
26
- "tonne" |
27
-
28
- "ounce" |
29
- "pound" |
30
- "ton" |
31
-
32
- "second" |
33
- "minute" |
34
- "hour" |
35
- "day" |
36
- "week" |
37
- "month" |
38
- "year" |
39
-
40
- "milliWatt" |
41
- "watt" |
42
- "kiloWatt" |
43
- "megaWatt" |
44
- "gigaWatt" |
45
-
46
- "joulesPerSecond" |
47
- "joulesPerMinute" |
48
- "joulesPerHour" |
49
-
50
- "litersPerSecond" |
51
- "litersPerMinute" |
52
- "litersPerHour" |
53
-
54
- "cubicMetersPerSecond" |
55
- "cubicMetersPerMinute" |
56
- "cubicMetersPerHour" |
57
-
58
- "fluidOuncesPerSecond" |
59
- "fluidOuncesPerMinute" |
60
- "fluidOuncesPerHour" |
61
-
62
- "gallonsPerSecond" |
63
- "gallonsPerMinute" |
64
- "gallonsPerHour" |
65
-
66
- "gramsPerSecond" |
67
- "gramsPerMinute" |
68
- "gramsPerHour" |
69
-
70
- "kiloGramsPerSecond" |
71
- "kiloGramsPerMinute" |
72
- "kiloGramsPerHour" |
73
-
74
- "celcius" |
75
- "kelvin" |
76
- "fahrenheit" |
77
-
78
- "var" |
79
- "kiloVar" |
80
- "megaVar" |
81
-
82
- "varHour" |
83
- "kiloVarHour" |
84
- "megaVarHour" |
85
-
86
- "percentage" |
87
-
88
- "literCelcius" |
89
- "cubicMeterCelcius";
90
-
91
- export const energyUnits: UnitId[] = [
92
- "milliWattHour",
93
- "wattHour",
94
- "kiloWattHour",
95
- "megaWattHour",
96
- "gigaWattHour",
97
- "calorie",
98
- "kiloCalorie",
99
- "megaCalorie",
100
- ];
1
+ export type UnitId =
2
+ "unitless" |
3
+
4
+ "milliWattHour" |
5
+ "wattHour" |
6
+ "kiloWattHour" |
7
+ "megaWattHour" |
8
+ "gigaWattHour" |
9
+ "calorie" |
10
+ "kiloCalorie" |
11
+ "megaCalorie" |
12
+
13
+ "joule" |
14
+ "kiloJoule" |
15
+ "megaJoule" |
16
+ "gigaJoule" |
17
+
18
+ "liter" |
19
+ "cubicMeter" |
20
+
21
+ "fluidOunce" |
22
+ "gallon" |
23
+
24
+ "gram" |
25
+ "kiloGram" |
26
+ "tonne" |
27
+
28
+ "ounce" |
29
+ "pound" |
30
+ "ton" |
31
+
32
+ "second" |
33
+ "minute" |
34
+ "hour" |
35
+ "day" |
36
+ "week" |
37
+ "month" |
38
+ "year" |
39
+
40
+ "milliWatt" |
41
+ "milliWatt2" |
42
+ "watt" |
43
+ "watt2" |
44
+ "kiloWatt" |
45
+ "kiloWatt2" |
46
+ "megaWatt" |
47
+ "megaWatt2" |
48
+ "gigaWatt" |
49
+ "gigaWatt2" |
50
+
51
+ "joulesPerSecond" |
52
+ "joulesPerSecond2" |
53
+ "joulesPerMinute" |
54
+ "joulesPerMinute2" |
55
+ "joulesPerHour" |
56
+ "joulesPerHour2" |
57
+
58
+ "litersPerSecond" |
59
+ "litersPerSecond2" |
60
+ "litersPerMinute" |
61
+ "litersPerMinute2" |
62
+ "litersPerHour" |
63
+ "litersPerHour2" |
64
+
65
+ "cubicMetersPerSecond" |
66
+ "cubicMetersPerSecond2" |
67
+ "cubicMetersPerMinute" |
68
+ "cubicMetersPerMinute2" |
69
+ "cubicMetersPerHour" |
70
+ "cubicMetersPerHour2" |
71
+
72
+ "fluidOuncesPerSecond" |
73
+ "fluidOuncesPerSecond2" |
74
+ "fluidOuncesPerMinute" |
75
+ "fluidOuncesPerMinute2" |
76
+ "fluidOuncesPerHour" |
77
+ "fluidOuncesPerHour2" |
78
+
79
+ "gallonsPerSecond" |
80
+ "gallonsPerSecond2" |
81
+ "gallonsPerMinute" |
82
+ "gallonsPerMinute2" |
83
+ "gallonsPerHour" |
84
+ "gallonsPerHour2" |
85
+
86
+ "gramsPerSecond" |
87
+ "gramsPerSecond2" |
88
+ "gramsPerMinute" |
89
+ "gramsPerMinute2" |
90
+ "gramsPerHour" |
91
+ "gramsPerHour2" |
92
+
93
+ "kiloGramsPerSecond" |
94
+ "kiloGramsPerSecond2" |
95
+ "kiloGramsPerMinute" |
96
+ "kiloGramsPerMinute2" |
97
+ "kiloGramsPerHour" |
98
+ "kiloGramsPerHour2" |
99
+
100
+ "celcius" |
101
+ "kelvin" |
102
+ "fahrenheit" |
103
+
104
+ "bar" |
105
+ "bar2" |
106
+ "pascal" |
107
+ "pascal2" |
108
+
109
+ "var" |
110
+ "kiloVar" |
111
+ "megaVar" |
112
+
113
+ "varHour" |
114
+ "kiloVarHour" |
115
+ "megaVarHour" |
116
+
117
+ "percentage" |
118
+
119
+ "literCelcius" |
120
+ "cubicMeterCelcius";
121
+
122
+ export const energyUnits: UnitId[] = [
123
+ "milliWattHour",
124
+ "wattHour",
125
+ "kiloWattHour",
126
+ "megaWattHour",
127
+ "gigaWattHour",
128
+ "calorie",
129
+ "kiloCalorie",
130
+ "megaCalorie",
131
+ ];
package/tsconfig.cjs.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "target": "es5",
5
- "module": "commonjs",
6
- "outDir": "dist/cjs",
7
- "declaration": false
8
- }
9
- }
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "CommonJS",
5
+ "outDir": "dist/cjs",
6
+ "declaration": false
7
+ }
8
+ }
package/tsconfig.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
- "compilerOptions": {
3
- "target": "es5",
4
- "module": "esnext",
5
- "moduleResolution": "node",
6
- "declaration": true,
7
- "sourceMap": true,
8
- "experimentalDecorators": true,
9
- "emitDecoratorMetadata": true,
10
- "strict": true,
11
- "rootDir": "src",
12
- "outDir": "dist/esm",
13
- "lib": [ "ES2018", "DOM" ]
14
- }
15
- }
2
+ "compilerOptions": {
3
+ "target": "ES2018",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Node",
6
+ "declaration": true,
7
+ "sourceMap": true,
8
+ "experimentalDecorators": true,
9
+ "emitDecoratorMetadata": true,
10
+ "strict": true,
11
+ "rootDir": "src",
12
+ "outDir": "dist/esm",
13
+ "lib": ["ES2018", "DOM"],
14
+ "types": ["mocha"]
15
+ }
16
+ }
@@ -1,224 +0,0 @@
1
- body, html {
2
- margin:0; padding: 0;
3
- height: 100%;
4
- }
5
- body {
6
- font-family: Helvetica Neue, Helvetica, Arial;
7
- font-size: 14px;
8
- color:#333;
9
- }
10
- .small { font-size: 12px; }
11
- *, *:after, *:before {
12
- -webkit-box-sizing:border-box;
13
- -moz-box-sizing:border-box;
14
- box-sizing:border-box;
15
- }
16
- h1 { font-size: 20px; margin: 0;}
17
- h2 { font-size: 14px; }
18
- pre {
19
- font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
20
- margin: 0;
21
- padding: 0;
22
- -moz-tab-size: 2;
23
- -o-tab-size: 2;
24
- tab-size: 2;
25
- }
26
- a { color:#0074D9; text-decoration:none; }
27
- a:hover { text-decoration:underline; }
28
- .strong { font-weight: bold; }
29
- .space-top1 { padding: 10px 0 0 0; }
30
- .pad2y { padding: 20px 0; }
31
- .pad1y { padding: 10px 0; }
32
- .pad2x { padding: 0 20px; }
33
- .pad2 { padding: 20px; }
34
- .pad1 { padding: 10px; }
35
- .space-left2 { padding-left:55px; }
36
- .space-right2 { padding-right:20px; }
37
- .center { text-align:center; }
38
- .clearfix { display:block; }
39
- .clearfix:after {
40
- content:'';
41
- display:block;
42
- height:0;
43
- clear:both;
44
- visibility:hidden;
45
- }
46
- .fl { float: left; }
47
- @media only screen and (max-width:640px) {
48
- .col3 { width:100%; max-width:100%; }
49
- .hide-mobile { display:none!important; }
50
- }
51
-
52
- .quiet {
53
- color: #7f7f7f;
54
- color: rgba(0,0,0,0.5);
55
- }
56
- .quiet a { opacity: 0.7; }
57
-
58
- .fraction {
59
- font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
60
- font-size: 10px;
61
- color: #555;
62
- background: #E8E8E8;
63
- padding: 4px 5px;
64
- border-radius: 3px;
65
- vertical-align: middle;
66
- }
67
-
68
- div.path a:link, div.path a:visited { color: #333; }
69
- table.coverage {
70
- border-collapse: collapse;
71
- margin: 10px 0 0 0;
72
- padding: 0;
73
- }
74
-
75
- table.coverage td {
76
- margin: 0;
77
- padding: 0;
78
- vertical-align: top;
79
- }
80
- table.coverage td.line-count {
81
- text-align: right;
82
- padding: 0 5px 0 20px;
83
- }
84
- table.coverage td.line-coverage {
85
- text-align: right;
86
- padding-right: 10px;
87
- min-width:20px;
88
- }
89
-
90
- table.coverage td span.cline-any {
91
- display: inline-block;
92
- padding: 0 5px;
93
- width: 100%;
94
- }
95
- .missing-if-branch {
96
- display: inline-block;
97
- margin-right: 5px;
98
- border-radius: 3px;
99
- position: relative;
100
- padding: 0 4px;
101
- background: #333;
102
- color: yellow;
103
- }
104
-
105
- .skip-if-branch {
106
- display: none;
107
- margin-right: 10px;
108
- position: relative;
109
- padding: 0 4px;
110
- background: #ccc;
111
- color: white;
112
- }
113
- .missing-if-branch .typ, .skip-if-branch .typ {
114
- color: inherit !important;
115
- }
116
- .coverage-summary {
117
- border-collapse: collapse;
118
- width: 100%;
119
- }
120
- .coverage-summary tr { border-bottom: 1px solid #bbb; }
121
- .keyline-all { border: 1px solid #ddd; }
122
- .coverage-summary td, .coverage-summary th { padding: 10px; }
123
- .coverage-summary tbody { border: 1px solid #bbb; }
124
- .coverage-summary td { border-right: 1px solid #bbb; }
125
- .coverage-summary td:last-child { border-right: none; }
126
- .coverage-summary th {
127
- text-align: left;
128
- font-weight: normal;
129
- white-space: nowrap;
130
- }
131
- .coverage-summary th.file { border-right: none !important; }
132
- .coverage-summary th.pct { }
133
- .coverage-summary th.pic,
134
- .coverage-summary th.abs,
135
- .coverage-summary td.pct,
136
- .coverage-summary td.abs { text-align: right; }
137
- .coverage-summary td.file { white-space: nowrap; }
138
- .coverage-summary td.pic { min-width: 120px !important; }
139
- .coverage-summary tfoot td { }
140
-
141
- .coverage-summary .sorter {
142
- height: 10px;
143
- width: 7px;
144
- display: inline-block;
145
- margin-left: 0.5em;
146
- background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
147
- }
148
- .coverage-summary .sorted .sorter {
149
- background-position: 0 -20px;
150
- }
151
- .coverage-summary .sorted-desc .sorter {
152
- background-position: 0 -10px;
153
- }
154
- .status-line { height: 10px; }
155
- /* yellow */
156
- .cbranch-no { background: yellow !important; color: #111; }
157
- /* dark red */
158
- .red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
159
- .low .chart { border:1px solid #C21F39 }
160
- .highlighted,
161
- .highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
162
- background: #C21F39 !important;
163
- }
164
- /* medium red */
165
- .cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
166
- /* light red */
167
- .low, .cline-no { background:#FCE1E5 }
168
- /* light green */
169
- .high, .cline-yes { background:rgb(230,245,208) }
170
- /* medium green */
171
- .cstat-yes { background:rgb(161,215,106) }
172
- /* dark green */
173
- .status-line.high, .high .cover-fill { background:rgb(77,146,33) }
174
- .high .chart { border:1px solid rgb(77,146,33) }
175
- /* dark yellow (gold) */
176
- .status-line.medium, .medium .cover-fill { background: #f9cd0b; }
177
- .medium .chart { border:1px solid #f9cd0b; }
178
- /* light yellow */
179
- .medium { background: #fff4c2; }
180
-
181
- .cstat-skip { background: #ddd; color: #111; }
182
- .fstat-skip { background: #ddd; color: #111 !important; }
183
- .cbranch-skip { background: #ddd !important; color: #111; }
184
-
185
- span.cline-neutral { background: #eaeaea; }
186
-
187
- .coverage-summary td.empty {
188
- opacity: .5;
189
- padding-top: 4px;
190
- padding-bottom: 4px;
191
- line-height: 1;
192
- color: #888;
193
- }
194
-
195
- .cover-fill, .cover-empty {
196
- display:inline-block;
197
- height: 12px;
198
- }
199
- .chart {
200
- line-height: 0;
201
- }
202
- .cover-empty {
203
- background: white;
204
- }
205
- .cover-full {
206
- border-right: none !important;
207
- }
208
- pre.prettyprint {
209
- border: none !important;
210
- padding: 0 !important;
211
- margin: 0 !important;
212
- }
213
- .com { color: #999 !important; }
214
- .ignore-none { color: #999; font-weight: normal; }
215
-
216
- .wrapper {
217
- min-height: 100%;
218
- height: auto !important;
219
- height: 100%;
220
- margin: 0 auto -48px;
221
- }
222
- .footer, .push {
223
- height: 48px;
224
- }