emissions-api-sdk 1.0.0

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 (120) hide show
  1. package/CODE_OF_CONDUCT.md +76 -0
  2. package/CONTRIBUTING.md +68 -0
  3. package/LICENSE +201 -0
  4. package/MAINTAINERS.md +10 -0
  5. package/README.md +89 -0
  6. package/dist/Client.js +227 -0
  7. package/dist/Constants.js +19 -0
  8. package/dist/api/Calculation.js +41 -0
  9. package/dist/api/Factor.js +79 -0
  10. package/dist/api/FactorSets.js +24 -0
  11. package/dist/api/Factors.js +98 -0
  12. package/dist/api/Fugitive.js +40 -0
  13. package/dist/api/FugitiveEmission.js +40 -0
  14. package/dist/api/GenericCalculation.js +41 -0
  15. package/dist/api/Location.js +41 -0
  16. package/dist/api/LocationEmission.js +41 -0
  17. package/dist/api/Mobile.js +41 -0
  18. package/dist/api/MobileEmission.js +41 -0
  19. package/dist/api/Stationary.js +41 -0
  20. package/dist/api/StationaryEmission.js +41 -0
  21. package/dist/api/TransportationAndDistribution.js +40 -0
  22. package/dist/api/TransportationDistributionEmission.js +40 -0
  23. package/dist/coverage/clover.xml +225 -0
  24. package/dist/coverage/coverage-final.json +19 -0
  25. package/dist/coverage/lcov-report/base.css +224 -0
  26. package/dist/coverage/lcov-report/block-navigation.js +87 -0
  27. package/dist/coverage/lcov-report/favicon.png +0 -0
  28. package/dist/coverage/lcov-report/index.html +161 -0
  29. package/dist/coverage/lcov-report/prettify.css +1 -0
  30. package/dist/coverage/lcov-report/prettify.js +2 -0
  31. package/dist/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  32. package/dist/coverage/lcov-report/sorter.js +210 -0
  33. package/dist/coverage/lcov-report/src/Client.ts.html +838 -0
  34. package/dist/coverage/lcov-report/src/Constants.ts.html +130 -0
  35. package/dist/coverage/lcov-report/src/api/Calculation.ts.html +217 -0
  36. package/dist/coverage/lcov-report/src/api/Factor.ts.html +343 -0
  37. package/dist/coverage/lcov-report/src/api/FactorSets.ts.html +154 -0
  38. package/dist/coverage/lcov-report/src/api/Factors.ts.html +403 -0
  39. package/dist/coverage/lcov-report/src/api/Fugitive.ts.html +214 -0
  40. package/dist/coverage/lcov-report/src/api/FugitiveEmission.ts.html +214 -0
  41. package/dist/coverage/lcov-report/src/api/GenericCalculation.ts.html +217 -0
  42. package/dist/coverage/lcov-report/src/api/Location.ts.html +214 -0
  43. package/dist/coverage/lcov-report/src/api/LocationEmission.ts.html +214 -0
  44. package/dist/coverage/lcov-report/src/api/Mobile.ts.html +220 -0
  45. package/dist/coverage/lcov-report/src/api/MobileEmission.ts.html +220 -0
  46. package/dist/coverage/lcov-report/src/api/Stationary.ts.html +220 -0
  47. package/dist/coverage/lcov-report/src/api/StationaryEmission.ts.html +220 -0
  48. package/dist/coverage/lcov-report/src/api/TransportationAndDistribution.ts.html +211 -0
  49. package/dist/coverage/lcov-report/src/api/TransportationDistributionEmission.ts.html +211 -0
  50. package/dist/coverage/lcov-report/src/api/index.html +221 -0
  51. package/dist/coverage/lcov-report/src/index.html +161 -0
  52. package/dist/coverage/lcov-report/src/request.ts.html +235 -0
  53. package/dist/coverage/lcov-report/src/utils.ts.html +139 -0
  54. package/dist/coverage/lcov-report/test/index.html +116 -0
  55. package/dist/coverage/lcov-report/test/mocks/CommonRequest.ts.html +142 -0
  56. package/dist/coverage/lcov-report/test/mocks/FactorRequest.ts.html +133 -0
  57. package/dist/coverage/lcov-report/test/mocks/GenericCalculationRequest.ts.html +142 -0
  58. package/dist/coverage/lcov-report/test/mocks/LocationRequest.ts.html +139 -0
  59. package/dist/coverage/lcov-report/test/mocks/SearchRequest.ts.html +142 -0
  60. package/dist/coverage/lcov-report/test/mocks/index.html +176 -0
  61. package/dist/coverage/lcov-report/test/testUtils.ts.html +97 -0
  62. package/dist/coverage/lcov.info +404 -0
  63. package/dist/index.js +46 -0
  64. package/dist/interfaces/Api.js +2 -0
  65. package/dist/interfaces/Config.js +2 -0
  66. package/dist/interfaces/common.js +2 -0
  67. package/dist/request.js +51 -0
  68. package/dist/types/Client.d.ts +146 -0
  69. package/dist/types/Constants.d.ts +16 -0
  70. package/dist/types/api/Calculation.d.ts +28 -0
  71. package/dist/types/api/Factor.d.ts +57 -0
  72. package/dist/types/api/FactorSets.d.ts +11 -0
  73. package/dist/types/api/Factors.d.ts +68 -0
  74. package/dist/types/api/Fugitive.d.ts +27 -0
  75. package/dist/types/api/FugitiveEmission.d.ts +27 -0
  76. package/dist/types/api/GenericCalculation.d.ts +28 -0
  77. package/dist/types/api/Location.d.ts +28 -0
  78. package/dist/types/api/LocationEmission.d.ts +28 -0
  79. package/dist/types/api/Mobile.d.ts +28 -0
  80. package/dist/types/api/MobileEmission.d.ts +28 -0
  81. package/dist/types/api/Stationary.d.ts +28 -0
  82. package/dist/types/api/StationaryEmission.d.ts +28 -0
  83. package/dist/types/api/TransportationAndDistribution.d.ts +27 -0
  84. package/dist/types/api/TransportationDistributionEmission.d.ts +27 -0
  85. package/dist/types/index.d.ts +10 -0
  86. package/dist/types/interfaces/Api.d.ts +286 -0
  87. package/dist/types/interfaces/Config.d.ts +66 -0
  88. package/dist/types/interfaces/common.d.ts +152 -0
  89. package/dist/types/request.d.ts +25 -0
  90. package/dist/types/utils.d.ts +14 -0
  91. package/dist/utils.js +23 -0
  92. package/jest.config.js +9 -0
  93. package/package.json +50 -0
  94. package/src/Client.ts +252 -0
  95. package/src/Constants.ts +16 -0
  96. package/src/api/Calculation.ts +44 -0
  97. package/src/api/Factor.ts +86 -0
  98. package/src/api/FactorSets.ts +24 -0
  99. package/src/api/Fugitive.ts +43 -0
  100. package/src/api/Location.ts +43 -0
  101. package/src/api/Mobile.ts +45 -0
  102. package/src/api/Stationary.ts +45 -0
  103. package/src/api/TransportationAndDistribution.ts +42 -0
  104. package/src/index.ts +10 -0
  105. package/src/interfaces/Api.ts +300 -0
  106. package/src/interfaces/Config.ts +78 -0
  107. package/src/interfaces/common.ts +174 -0
  108. package/src/request.ts +50 -0
  109. package/src/utils.ts +19 -0
  110. package/test/apiTest.test.ts +168 -0
  111. package/test/client.test.ts +82 -0
  112. package/test/mocks/CommonRequest.ts +19 -0
  113. package/test/mocks/FactorRequest.ts +16 -0
  114. package/test/mocks/GenericCalculationRequest.ts +19 -0
  115. package/test/mocks/LocationRequest.ts +19 -0
  116. package/test/mocks/SearchRequest.ts +19 -0
  117. package/test/request.test.ts +111 -0
  118. package/test/testUtils.ts +5 -0
  119. package/test/tokenRefresh.test.ts +52 -0
  120. package/tsconfig.json +15 -0
@@ -0,0 +1,214 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/api/LocationEmission.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/api</a> LocationEmission.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>7/7</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>7/7</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
110
+ <span class="cline-any cline-yes">1x</span>
111
+ <span class="cline-any cline-neutral">&nbsp;</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-yes">1x</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-yes">1x</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-yes">1x</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Client } from "../Client";
153
+ import { LOCATION_API_PATH, POST } from "../Constants";
154
+ import { LocationRequest } from "../interfaces/Api";
155
+ import { makeApiRequest } from "../request";
156
+ &nbsp;
157
+ /**
158
+ * Performs scope 2 purchased energy Emission calculations by making a POST request to the location API endpoint.
159
+ *
160
+ * @export
161
+ * @param {LocationRequest} payload - The location request data to be sent to the API
162
+ * @return {Promise&lt;string&gt;} A promise that resolves to the purchased energy emission result string returned by the API
163
+ * @throws {Error} May throw an error if the API request fails
164
+ *
165
+ * @example
166
+ * const calculationRequest = {
167
+ "time" : {
168
+ "date": "2025-01-04"
169
+ },
170
+ "location": {
171
+ "country": "usa",
172
+ "stateProvince": "new york"
173
+ },
174
+ "activity": {
175
+ "type":"electricity",
176
+ "unit": "kwh",
177
+ "value": 14123143
178
+ },
179
+ "includeDetails": true
180
+ };
181
+ * const result = await calculate(calculationRequest);
182
+ */
183
+ export async function calculate(
184
+ payload: LocationRequest
185
+ ): Promise&lt;string&gt; {
186
+ const client = Client.getInstance();
187
+ const url = client.getDomain() + LOCATION_API_PATH;
188
+ &nbsp;
189
+ return makeApiRequest&lt;string&gt;({
190
+ method: POST,
191
+ url,
192
+ data: payload,
193
+ });
194
+ }
195
+ &nbsp;</pre></td></tr></table></pre>
196
+
197
+ <div class='push'></div><!-- for sticky footer -->
198
+ </div><!-- /wrapper -->
199
+ <div class='footer quiet pad2 space-top1 center small'>
200
+ Code coverage generated by
201
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
202
+ at 2025-09-29T07:56:01.600Z
203
+ </div>
204
+ <script src="../../prettify.js"></script>
205
+ <script>
206
+ window.onload = function () {
207
+ prettyPrint();
208
+ };
209
+ </script>
210
+ <script src="../../sorter.js"></script>
211
+ <script src="../../block-navigation.js"></script>
212
+ </body>
213
+ </html>
214
+
@@ -0,0 +1,220 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/api/Mobile.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/api</a> Mobile.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>7/7</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>7/7</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-yes">1x</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-yes">1x</span>
148
+ <span class="cline-any cline-yes">1x</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">1x</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { makeApiRequest } from "../request";
157
+ import { MOBILE_API_PATH, POST } from "../Constants";
158
+ import { CommonRequest } from "../interfaces/Api";
159
+ import { Client } from "../Client";
160
+ &nbsp;
161
+ &nbsp;
162
+ /**
163
+ * Performs Scope 1 mobile emissions related calculations by making a POST request to the mobile API endpoint.
164
+ *
165
+ * @export
166
+ * @param {CommonRequest} payload - The request data to be sent to the mobile API
167
+ * @return {Promise&lt;string&gt;} A promise that resolves to the calculation result string returned by the API
168
+ * @throws {Error} May throw an error if the API request fails
169
+ *
170
+ * @example
171
+ * const request = {
172
+ "time": {
173
+ "date": "2022-01-01"
174
+ },
175
+ "location": {
176
+ "country": "USA",
177
+ "stateProvince": "new york"
178
+ },
179
+ "activity": {
180
+ "type": "Diesel Fuel",
181
+ "value": 1500000,
182
+ "unit": "l"
183
+ },
184
+ "includeDetails": false
185
+ };
186
+ * const result = await calculate(request);
187
+ */
188
+ &nbsp;
189
+ export async function calculate(
190
+ payload: CommonRequest
191
+ ): Promise&lt;string&gt; {
192
+ const client = Client.getInstance();
193
+ const url = client.getDomain() + MOBILE_API_PATH;
194
+ &nbsp;
195
+ return makeApiRequest&lt;string&gt;({
196
+ method: POST,
197
+ url,
198
+ data: payload,
199
+ });
200
+ }
201
+ &nbsp;</pre></td></tr></table></pre>
202
+
203
+ <div class='push'></div><!-- for sticky footer -->
204
+ </div><!-- /wrapper -->
205
+ <div class='footer quiet pad2 space-top1 center small'>
206
+ Code coverage generated by
207
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
+ at 2025-09-29T10:08:48.327Z
209
+ </div>
210
+ <script src="../../prettify.js"></script>
211
+ <script>
212
+ window.onload = function () {
213
+ prettyPrint();
214
+ };
215
+ </script>
216
+ <script src="../../sorter.js"></script>
217
+ <script src="../../block-navigation.js"></script>
218
+ </body>
219
+ </html>
220
+
@@ -0,0 +1,220 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/api/MobileEmission.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/api</a> MobileEmission.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>7/7</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>7/7</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-yes">1x</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-yes">1x</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-yes">1x</span>
148
+ <span class="cline-any cline-yes">1x</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">1x</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { makeApiRequest } from "../request";
157
+ import { MOBILE_API_PATH, POST } from "../Constants";
158
+ import { CommonRequest } from "../interfaces/Api";
159
+ import { Client } from "../Client";
160
+ &nbsp;
161
+ &nbsp;
162
+ /**
163
+ * Performs Scope 1 mobile emissions related calculations by making a POST request to the mobile API endpoint.
164
+ *
165
+ * @export
166
+ * @param {CommonRequest} payload - The request data to be sent to the mobile API
167
+ * @return {Promise&lt;string&gt;} A promise that resolves to the calculation result string returned by the API
168
+ * @throws {Error} May throw an error if the API request fails
169
+ *
170
+ * @example
171
+ * const request = {
172
+ "time": {
173
+ "date": "2022-01-01"
174
+ },
175
+ "location": {
176
+ "country": "USA",
177
+ "stateProvince": "new york"
178
+ },
179
+ "activity": {
180
+ "type": "Diesel Fuel",
181
+ "value": 1500000,
182
+ "unit": "l"
183
+ },
184
+ "includeDetails": false
185
+ };
186
+ * const result = await calculate(request);
187
+ */
188
+ &nbsp;
189
+ export async function calculate(
190
+ payload: CommonRequest
191
+ ): Promise&lt;string&gt; {
192
+ const client = Client.getInstance();
193
+ const url = client.getDomain() + MOBILE_API_PATH;
194
+ &nbsp;
195
+ return makeApiRequest&lt;string&gt;({
196
+ method: POST,
197
+ url,
198
+ data: payload,
199
+ });
200
+ }
201
+ &nbsp;</pre></td></tr></table></pre>
202
+
203
+ <div class='push'></div><!-- for sticky footer -->
204
+ </div><!-- /wrapper -->
205
+ <div class='footer quiet pad2 space-top1 center small'>
206
+ Code coverage generated by
207
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
+ at 2025-09-29T07:56:01.600Z
209
+ </div>
210
+ <script src="../../prettify.js"></script>
211
+ <script>
212
+ window.onload = function () {
213
+ prettyPrint();
214
+ };
215
+ </script>
216
+ <script src="../../sorter.js"></script>
217
+ <script src="../../block-navigation.js"></script>
218
+ </body>
219
+ </html>
220
+