@api-client/core 0.3.3 → 0.3.6

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 (259) hide show
  1. package/build/browser.d.ts +3 -0
  2. package/build/browser.js +9 -0
  3. package/build/browser.js.map +1 -1
  4. package/build/index.d.ts +11 -2
  5. package/build/index.js +20 -2
  6. package/build/index.js.map +1 -1
  7. package/build/src/lib/fs/Fs.d.ts +52 -0
  8. package/build/src/lib/fs/Fs.js +245 -0
  9. package/build/src/lib/fs/Fs.js.map +1 -0
  10. package/build/src/lib/timers/Timers.d.ts +5 -0
  11. package/build/src/lib/timers/Timers.js +10 -0
  12. package/build/src/lib/timers/Timers.js.map +1 -0
  13. package/build/src/mocking/ProjectMock.d.ts +13 -0
  14. package/build/src/mocking/ProjectMock.js +16 -0
  15. package/build/src/mocking/ProjectMock.js.map +1 -0
  16. package/build/src/mocking/lib/Request.d.ts +32 -0
  17. package/build/src/mocking/lib/Request.js +63 -0
  18. package/build/src/mocking/lib/Request.js.map +1 -0
  19. package/build/src/mocking/lib/Response.d.ts +33 -0
  20. package/build/src/mocking/lib/Response.js +79 -0
  21. package/build/src/mocking/lib/Response.js.map +1 -0
  22. package/build/src/models/ErrorResponse.d.ts +5 -4
  23. package/build/src/models/ErrorResponse.js +18 -5
  24. package/build/src/models/ErrorResponse.js.map +1 -1
  25. package/build/src/models/SerializableError.d.ts +30 -0
  26. package/build/src/models/SerializableError.js +63 -0
  27. package/build/src/models/SerializableError.js.map +1 -0
  28. package/build/src/runtime/http-engine/ArcEngine.js +8 -4
  29. package/build/src/runtime/http-engine/ArcEngine.js.map +1 -1
  30. package/build/src/runtime/http-engine/HttpEngine.d.ts +3 -3
  31. package/build/src/runtime/http-engine/HttpEngine.js +3 -3
  32. package/build/src/runtime/http-engine/HttpEngine.js.map +1 -1
  33. package/build/src/runtime/http-engine/NodeEngine.js +9 -4
  34. package/build/src/runtime/http-engine/NodeEngine.js.map +1 -1
  35. package/build/src/runtime/http-engine/NodeEngineDirect.js +8 -2
  36. package/build/src/runtime/http-engine/NodeEngineDirect.js.map +1 -1
  37. package/build/src/runtime/node/BaseRunner.d.ts +21 -0
  38. package/build/src/runtime/node/BaseRunner.js +27 -0
  39. package/build/src/runtime/node/BaseRunner.js.map +1 -0
  40. package/build/src/runtime/node/ProjectParallelRunner.d.ts +81 -0
  41. package/build/src/runtime/node/ProjectParallelRunner.js +173 -0
  42. package/build/src/runtime/node/ProjectParallelRunner.js.map +1 -0
  43. package/build/src/runtime/node/ProjectRequestRunner.d.ts +125 -0
  44. package/build/src/runtime/node/ProjectRequestRunner.js +185 -0
  45. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -0
  46. package/build/src/runtime/node/ProjectRunner.d.ts +166 -64
  47. package/build/src/runtime/node/ProjectRunner.js +191 -139
  48. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  49. package/build/src/runtime/node/ProjectRunnerWorker.d.ts +1 -0
  50. package/build/src/runtime/node/ProjectRunnerWorker.js +58 -0
  51. package/build/src/runtime/node/ProjectRunnerWorker.js.map +1 -0
  52. package/build/src/runtime/node/ProjectSerialRunner.d.ts +11 -0
  53. package/build/src/runtime/node/ProjectSerialRunner.js +34 -0
  54. package/build/src/runtime/node/ProjectSerialRunner.js.map +1 -0
  55. package/build/src/runtime/reporters/ProjectRunCliReporter.d.ts +7 -0
  56. package/build/src/runtime/reporters/ProjectRunCliReporter.js +73 -0
  57. package/build/src/runtime/reporters/ProjectRunCliReporter.js.map +1 -0
  58. package/build/src/runtime/reporters/Reporter.d.ts +62 -0
  59. package/build/src/runtime/reporters/Reporter.js +98 -0
  60. package/build/src/runtime/reporters/Reporter.js.map +1 -0
  61. package/build/src/testing/TestCliHelper.d.ts +23 -0
  62. package/build/src/testing/TestCliHelper.js +71 -0
  63. package/build/src/testing/TestCliHelper.js.map +1 -0
  64. package/build/src/testing/getPort.d.ts +52 -0
  65. package/build/src/testing/getPort.js +169 -0
  66. package/build/src/testing/getPort.js.map +1 -0
  67. package/package.json +2 -1
  68. package/src/data/DataReader.ts +11 -0
  69. package/src/data/DataUtils.ts +108 -0
  70. package/src/data/JmesparthReader.ts +26 -0
  71. package/src/data/Json2Xml.ts +190 -0
  72. package/src/data/JsonReader.ts +41 -0
  73. package/src/data/PayloadPointer.ts +48 -0
  74. package/src/data/RequestDataExtractor.ts +133 -0
  75. package/src/data/UrlEncodedReader.ts +20 -0
  76. package/src/data/XmlReader.ts +103 -0
  77. package/src/events/BaseEvents.ts +259 -0
  78. package/src/events/CustomEvent.ts +27 -0
  79. package/src/events/EventTypes.ts +19 -0
  80. package/src/events/Events.ts +19 -0
  81. package/src/events/authorization/AuthorizationEventTypes.ts +22 -0
  82. package/src/events/authorization/AuthorizationEvents.ts +61 -0
  83. package/src/events/cookies/CookieEventTypes.ts +13 -0
  84. package/src/events/cookies/CookieEvents.ts +157 -0
  85. package/src/events/encryption/EncryptionEventTypes.ts +4 -0
  86. package/src/events/encryption/EncryptionEvents.ts +51 -0
  87. package/src/events/environment/EnvironmentEventTypes.ts +3 -0
  88. package/src/events/environment/EnvironmentEvents.ts +24 -0
  89. package/src/events/models/ClientCertificateEvents.ts +87 -0
  90. package/src/events/models/ModelEventTypes.ts +47 -0
  91. package/src/events/models/ModelEvents.ts +7 -0
  92. package/src/events/models/ProjectEvents.ts +331 -0
  93. package/src/events/process/ProcessEventTypes.ts +5 -0
  94. package/src/events/process/ProcessEvents.ts +76 -0
  95. package/src/events/readme.md +22 -0
  96. package/src/events/reporting/ReportingEventTypes.ts +3 -0
  97. package/src/events/reporting/ReportingEvents.ts +28 -0
  98. package/src/events/telemetry/TelemetryEventTypes.ts +10 -0
  99. package/src/events/telemetry/TelemetryEvents.ts +156 -0
  100. package/src/lib/cookies/Cookie.ts +312 -0
  101. package/src/lib/cookies/Cookies.ts +326 -0
  102. package/src/lib/cookies/Utils.ts +168 -0
  103. package/src/lib/fs/Fs.ts +258 -0
  104. package/src/lib/headers/Headers.ts +219 -0
  105. package/src/lib/logging/DefaultLogger.ts +19 -0
  106. package/src/lib/logging/DummyLogger.ts +21 -0
  107. package/src/lib/logging/Logger.ts +16 -0
  108. package/src/lib/timers/Timers.ts +9 -0
  109. package/src/lib/transformers/PayloadSerializer.ts +332 -0
  110. package/src/lib/transformers/Utils.ts +18 -0
  111. package/src/lib/uuid.ts +40 -0
  112. package/src/mocking/LegacyInterfaces.ts +52 -0
  113. package/src/mocking/LegacyMock.ts +37 -0
  114. package/src/mocking/ProjectMock.ts +20 -0
  115. package/src/mocking/legacy/Authorization.ts +39 -0
  116. package/src/mocking/legacy/Certificates.ts +145 -0
  117. package/src/mocking/legacy/Cookies.ts +51 -0
  118. package/src/mocking/legacy/HostRules.ts +43 -0
  119. package/src/mocking/legacy/Http.ts +236 -0
  120. package/src/mocking/legacy/HttpResponse.ts +106 -0
  121. package/src/mocking/legacy/RestApi.ts +68 -0
  122. package/src/mocking/legacy/Urls.ts +44 -0
  123. package/src/mocking/legacy/Variables.ts +53 -0
  124. package/src/mocking/lib/Request.ts +85 -0
  125. package/src/mocking/lib/Response.ts +101 -0
  126. package/src/models/ArcResponse.ts +166 -0
  127. package/src/models/Authorization.ts +481 -0
  128. package/src/models/AuthorizationData.ts +60 -0
  129. package/src/models/Backend.ts +107 -0
  130. package/src/models/ClientCertificate.ts +68 -0
  131. package/src/models/Environment.ts +279 -0
  132. package/src/models/ErrorResponse.ts +113 -0
  133. package/src/models/HistoryIndex.ts +76 -0
  134. package/src/models/HistoryRequest.ts +28 -0
  135. package/src/models/HostRule.ts +163 -0
  136. package/src/models/HttpCookie.ts +285 -0
  137. package/src/models/HttpProject.ts +1294 -0
  138. package/src/models/HttpProjectListItem.ts +23 -0
  139. package/src/models/HttpRequest.ts +124 -0
  140. package/src/models/HttpResponse.ts +143 -0
  141. package/src/models/License.ts +113 -0
  142. package/src/models/ProjectDefinitionProperty.ts +40 -0
  143. package/src/models/ProjectFolder.ts +439 -0
  144. package/src/models/ProjectItem.ts +135 -0
  145. package/src/models/ProjectParent.ts +113 -0
  146. package/src/models/ProjectRequest.ts +277 -0
  147. package/src/models/ProjectSchema.ts +202 -0
  148. package/src/models/Property.ts +423 -0
  149. package/src/models/Provider.ts +98 -0
  150. package/src/models/README.md +20 -0
  151. package/src/models/Request.ts +452 -0
  152. package/src/models/RequestActions.ts +163 -0
  153. package/src/models/RequestAuthorization.ts +115 -0
  154. package/src/models/RequestConfig.ts +317 -0
  155. package/src/models/RequestLog.ts +159 -0
  156. package/src/models/RequestTime.ts +108 -0
  157. package/src/models/RequestUiMeta.ts +258 -0
  158. package/src/models/RequestsSize.ts +65 -0
  159. package/src/models/ResponseAuthorization.ts +104 -0
  160. package/src/models/ResponseRedirect.ts +158 -0
  161. package/src/models/RevisionInfo.ts +37 -0
  162. package/src/models/SentRequest.ts +125 -0
  163. package/src/models/SerializableError.ts +80 -0
  164. package/src/models/SerializablePayload.ts +68 -0
  165. package/src/models/Server.ts +153 -0
  166. package/src/models/Thing.ts +110 -0
  167. package/src/models/Url.ts +90 -0
  168. package/src/models/User.ts +120 -0
  169. package/src/models/WebApi.ts +234 -0
  170. package/src/models/WebApiIndex.ts +122 -0
  171. package/src/models/Workspace.ts +182 -0
  172. package/src/models/actions/Action.ts +213 -0
  173. package/src/models/actions/ActionView.ts +40 -0
  174. package/src/models/actions/Condition.ts +207 -0
  175. package/src/models/actions/ConditionView.ts +42 -0
  176. package/src/models/actions/Enums.ts +29 -0
  177. package/src/models/actions/RunnableAction.ts +144 -0
  178. package/src/models/actions/runnable/DeleteCookieAction.ts +113 -0
  179. package/src/models/actions/runnable/Runnable.ts +9 -0
  180. package/src/models/actions/runnable/SetCookieAction.ts +216 -0
  181. package/src/models/actions/runnable/SetVariableAction.ts +81 -0
  182. package/src/models/legacy/DataExport.ts +172 -0
  183. package/src/models/legacy/Normalizer.ts +110 -0
  184. package/src/models/legacy/actions/Actions.ts +269 -0
  185. package/src/models/legacy/authorization/Authorization.ts +572 -0
  186. package/src/models/legacy/models/ApiTypes.ts +202 -0
  187. package/src/models/legacy/models/ArcLegacyProject.ts +39 -0
  188. package/src/models/legacy/models/AuthData.ts +17 -0
  189. package/src/models/legacy/models/ClientCertificate.ts +95 -0
  190. package/src/models/legacy/models/Cookies.ts +52 -0
  191. package/src/models/legacy/models/HostRule.ts +35 -0
  192. package/src/models/legacy/models/RestApi.ts +49 -0
  193. package/src/models/legacy/models/UrlHistory.ts +37 -0
  194. package/src/models/legacy/models/Variable.ts +43 -0
  195. package/src/models/legacy/models/base.d.ts +95 -0
  196. package/src/models/legacy/request/ArcRequest.ts +405 -0
  197. package/src/models/legacy/request/ArcResponse.ts +177 -0
  198. package/src/models/legacy/request/HistoryData.ts +47 -0
  199. package/src/models/legacy/request/Legacy.ts +45 -0
  200. package/src/models/legacy/request/RequestBody.ts +87 -0
  201. package/src/models/transformers/ArcDexieTransformer.ts +323 -0
  202. package/src/models/transformers/ArcLegacyNormalizer.ts +85 -0
  203. package/src/models/transformers/ArcLegacyTransformer.ts +200 -0
  204. package/src/models/transformers/ArcPouchTransformer.ts +184 -0
  205. package/src/models/transformers/BaseTransformer.ts +116 -0
  206. package/src/models/transformers/ImportUtils.ts +141 -0
  207. package/src/models/transformers/LegacyDataExportToApiProject.ts +76 -0
  208. package/src/models/transformers/LegacyExportProcessor.ts +252 -0
  209. package/src/models/transformers/PostmanBackupTransformer.ts +306 -0
  210. package/src/models/transformers/PostmanDataTransformer.ts +50 -0
  211. package/src/models/transformers/PostmanTransformer.ts +106 -0
  212. package/src/models/transformers/PostmanV21Transformer.ts +311 -0
  213. package/src/models/transformers/PostmanV2Transformer.ts +308 -0
  214. package/src/models/transformers/har.ts +865 -0
  215. package/src/runtime/actions/ActionRunner.ts +83 -0
  216. package/src/runtime/actions/ConditionRunner.ts +194 -0
  217. package/src/runtime/actions/RunnableCondition.ts +57 -0
  218. package/src/runtime/actions/runnable/ActionRunnable.ts +19 -0
  219. package/src/runtime/actions/runnable/DeleteCookieRunnable.ts +39 -0
  220. package/src/runtime/actions/runnable/SetCookieRunnable.ts +92 -0
  221. package/src/runtime/actions/runnable/SetVariableRunnable.ts +53 -0
  222. package/src/runtime/http-engine/ArcEngine.ts +1068 -0
  223. package/src/runtime/http-engine/FormData.ts +85 -0
  224. package/src/runtime/http-engine/HttpEngine.ts +874 -0
  225. package/src/runtime/http-engine/HttpErrorCodes.ts +270 -0
  226. package/src/runtime/http-engine/NodeEngine.ts +792 -0
  227. package/src/runtime/http-engine/NodeEngineDirect.ts +482 -0
  228. package/src/runtime/http-engine/PayloadSupport.ts +84 -0
  229. package/src/runtime/http-engine/RequestUtils.ts +164 -0
  230. package/src/runtime/http-engine/ntlm/Des.ts +345 -0
  231. package/src/runtime/http-engine/ntlm/MD4.ts +135 -0
  232. package/src/runtime/http-engine/ntlm/NtlmAuth.ts +186 -0
  233. package/src/runtime/http-engine/ntlm/NtlmMessage.ts +57 -0
  234. package/src/runtime/modules/BasicAuthCache.ts +133 -0
  235. package/src/runtime/modules/ExecutionResponse.ts +4 -0
  236. package/src/runtime/modules/ModulesRegistry.ts +136 -0
  237. package/src/runtime/modules/RequestAuthorization.ts +110 -0
  238. package/src/runtime/modules/RequestCookies.ts +145 -0
  239. package/src/runtime/node/BaseRunner.ts +29 -0
  240. package/src/runtime/node/ProjectParallelRunner.ts +234 -0
  241. package/src/runtime/node/ProjectRequestRunner.ts +281 -0
  242. package/src/runtime/node/ProjectRunner.ts +374 -0
  243. package/src/runtime/node/ProjectRunnerWorker.ts +62 -0
  244. package/src/runtime/node/ProjectSerialRunner.ts +36 -0
  245. package/src/runtime/node/RequestFactory.ts +422 -0
  246. package/src/runtime/node/VariablesStore.ts +25 -0
  247. package/src/runtime/reporters/ProjectRunCliReporter.ts +79 -0
  248. package/src/runtime/reporters/Reporter.ts +142 -0
  249. package/src/runtime/store/StoreSdk.ts +838 -0
  250. package/src/runtime/variables/Cache.ts +53 -0
  251. package/src/runtime/variables/EvalFunctions.ts +132 -0
  252. package/src/runtime/variables/ProjectVariables.ts +6 -0
  253. package/src/runtime/variables/VariablesProcessor.ts +543 -0
  254. package/src/runtime/variables/VariablesTokenizer.ts +55 -0
  255. package/src/testing/TestCliHelper.ts +76 -0
  256. package/src/testing/getPort.ts +212 -0
  257. package/build/src/runtime/http-engine/Errors.d.ts +0 -10
  258. package/build/src/runtime/http-engine/Errors.js +0 -14
  259. package/build/src/runtime/http-engine/Errors.js.map +0 -1
@@ -0,0 +1,101 @@
1
+ import { Http, Har, Types, Lorem, Time, DataMockInit, HttpResponseInit, HarTimingInit, Internet } from '@pawel-up/data-mock';
2
+ import { IHttpResponse, Kind as HttpResponseKind } from '../../models/HttpResponse.js';
3
+ import { IArcResponse, Kind as ArcResponseKind } from '../../models/ArcResponse.js';
4
+ import { IRequestsSize } from '../../models/RequestsSize.js';
5
+ import { IResponseRedirect, Kind as ResponseRedirectKind } from '../../models/ResponseRedirect.js';
6
+
7
+ export interface IArcResponseInit extends HttpResponseInit, HarTimingInit {
8
+ /**
9
+ * When set it does not generate a response payload.
10
+ */
11
+ noBody?: boolean;
12
+ /**
13
+ * The first number of the status group. Other 2 are auto generated
14
+ */
15
+ statusGroup?: number;
16
+ /**
17
+ * Whether to generate timings object
18
+ */
19
+ timings?: boolean;
20
+ }
21
+
22
+ export class Response {
23
+ types: Types;
24
+ lorem: Lorem;
25
+ time: Time;
26
+ http: Http;
27
+ har: Har;
28
+ internet: Internet;
29
+
30
+ constructor(init: DataMockInit={}) {
31
+ this.types = new Types(init.seed);
32
+ this.lorem = new Lorem(init);
33
+ this.time = new Time(init);
34
+ this.http = new Http(init);
35
+ this.har = new Har(init);
36
+ this.internet = new Internet(init);
37
+ }
38
+
39
+ response(init: IArcResponseInit = {}): IHttpResponse {
40
+ const ct = init.noBody ? undefined : this.http.headers.contentType();
41
+ const body = init.noBody ? undefined : this.http.payload.payload(ct);
42
+ const headers = this.http.headers.headers('response', { mime: ct });
43
+ const statusGroup = init.statusGroup ? init.statusGroup : this.types.number({ min: 2, max: 5 });
44
+ const sCode = this.types.number({ min: 0, max: 99 }).toString();
45
+ const code = Number(`${statusGroup}${sCode.padStart(2, '0')}`);
46
+ const status = this.lorem.word();
47
+ const result: IHttpResponse = {
48
+ kind: HttpResponseKind,
49
+ status: code,
50
+ statusText: status,
51
+ headers,
52
+ };
53
+ if (!init.noBody) {
54
+ result.payload = body;
55
+ }
56
+ return result;
57
+ }
58
+
59
+ arcResponse(init: IArcResponseInit={}): IArcResponse {
60
+ const base = this.response(init);
61
+ const length = this.types.number({ min: 10, max: 4000 });
62
+ const result: IArcResponse = {
63
+ ...base,
64
+ kind: ArcResponseKind,
65
+ loadingTime: length,
66
+ };
67
+ if (init.timings) {
68
+ result.timings = this.har.timing(init);
69
+ }
70
+ return result;
71
+ }
72
+
73
+ size(): IRequestsSize {
74
+ const result: IRequestsSize = {
75
+ request: this.types.number({ min: 10 }),
76
+ response: this.types.number({ min: 10 }),
77
+ };
78
+ return result;
79
+ }
80
+
81
+ redirect(init?: IArcResponseInit): IResponseRedirect {
82
+ const start = this.time.timestamp();
83
+ const end = this.time.timestamp({ min: start + 1 })
84
+ const info: IResponseRedirect = {
85
+ kind: ResponseRedirectKind,
86
+ startTime: start,
87
+ endTime: end,
88
+ url: this.internet.uri(),
89
+ response: this.response({ ...init, statusGroup: 3}),
90
+ };
91
+ return info;
92
+ }
93
+
94
+ redirects(size=1, init?: IArcResponseInit): IResponseRedirect[] {
95
+ const result: IResponseRedirect[] = [];
96
+ for (let i = 0; i < size; i++) {
97
+ result.push(this.redirect(init));
98
+ }
99
+ return result;
100
+ }
101
+ }
@@ -0,0 +1,166 @@
1
+ import { IHttpResponse, HttpResponse, Kind } from './HttpResponse.js';
2
+ import { IRequestTime, RequestTime } from './RequestTime.js';
3
+ import { IResponseAuthorization, ResponseAuthorization } from './ResponseAuthorization.js';
4
+ import { IErrorResponse } from './ErrorResponse.js';
5
+ import { Response as LegacyResponse } from './legacy/request/ArcResponse.js';
6
+ import { PayloadSerializer } from '../lib/transformers/PayloadSerializer.js';
7
+ import { Normalizer } from './legacy/Normalizer.js';
8
+
9
+ export { Kind };
10
+
11
+ /**
12
+ * An HTTP response object.
13
+ */
14
+ export interface IArcResponse extends IHttpResponse {
15
+ /**
16
+ * The request timings.
17
+ * Some HTTP clients may not give this information.
18
+ */
19
+ timings?: IRequestTime;
20
+ /**
21
+ * The total loading time (from sending the request to receive the last byte)
22
+ */
23
+ loadingTime: number;
24
+ /**
25
+ * The authentication request from the server.
26
+ */
27
+ auth?: IResponseAuthorization;
28
+ }
29
+
30
+ export class ArcResponse extends HttpResponse {
31
+ /**
32
+ * The request timings.
33
+ * Some HTTP clients may not give this information.
34
+ */
35
+ timings?: RequestTime;
36
+ /**
37
+ * The total loading time (from sending the request to receive the last byte)
38
+ */
39
+ loadingTime = 0;
40
+ /**
41
+ * The authentication request from the server.
42
+ */
43
+ auth?: ResponseAuthorization;
44
+
45
+ static fromValues(status: number, statusText?: string, headers?: string): ArcResponse {
46
+ return new ArcResponse({
47
+ kind: Kind,
48
+ status,
49
+ statusText,
50
+ headers,
51
+ loadingTime: 0,
52
+ });
53
+ }
54
+
55
+ static async fromLegacy(input: LegacyResponse): Promise<ArcResponse> {
56
+ const init: IArcResponse = {
57
+ kind: Kind,
58
+ status: input.status || 0,
59
+ loadingTime: input.loadingTime || 0,
60
+ };
61
+ if (input.headers) {
62
+ init.headers = input.headers;
63
+ }
64
+ if (input.statusText) {
65
+ init.statusText = input.statusText;
66
+ }
67
+ if (input.payload) {
68
+ const orig = Normalizer.restoreTransformedPayload(input.payload);
69
+ if (orig) {
70
+ init.payload = await PayloadSerializer.serialize(orig);
71
+ }
72
+ } else if (input.blob) {
73
+ init.payload = {
74
+ type: 'blob',
75
+ data: input.blob,
76
+ };
77
+ } else if (input.multipart) {
78
+ init.payload = {
79
+ type: 'formdata',
80
+ data: input.multipart,
81
+ };
82
+ }
83
+ if (input.timings) {
84
+ init.timings = new RequestTime(input.timings).toJSON();
85
+ }
86
+ return new ArcResponse(init);
87
+ }
88
+
89
+ /**
90
+ * @param input The response definition used to restore the state.
91
+ */
92
+ constructor(input?: string|IArcResponse) {
93
+ super();
94
+ let init: IArcResponse;
95
+ if (typeof input === 'string') {
96
+ init = JSON.parse(input);
97
+ } else if (typeof input === 'object') {
98
+ init = input;
99
+ } else {
100
+ init = {
101
+ kind: Kind,
102
+ status: 0,
103
+ loadingTime: 0,
104
+ };
105
+ }
106
+ this.new(init);
107
+ }
108
+
109
+ /**
110
+ * Creates a new response clearing anything that is so far defined.
111
+ *
112
+ * Note, this throws an error when the object is not an ARC response.
113
+ */
114
+ new(init: IArcResponse): void {
115
+ super.new(init);
116
+ const { loadingTime=0, timings, auth } = init;
117
+ this.loadingTime = loadingTime;
118
+ if (timings) {
119
+ this.timings = new RequestTime(timings);
120
+ } else {
121
+ this.timings = undefined;
122
+ }
123
+ if (auth) {
124
+ this.auth = new ResponseAuthorization(auth);
125
+ } else {
126
+ this.auth = undefined;
127
+ }
128
+ }
129
+
130
+ toJSON(): IArcResponse {
131
+ const response = super.toJSON() as IArcResponse;
132
+ response.loadingTime = this.loadingTime;
133
+ if (this.timings) {
134
+ response.timings = this.timings.toJSON();
135
+ }
136
+ if (this.auth) {
137
+ response.auth = this.auth.toJSON();
138
+ }
139
+ return response;
140
+ }
141
+
142
+ /**
143
+ * Checks whether the object (JSON Object) is an Error response.
144
+ */
145
+ static isErrorResponse(input: unknown): boolean {
146
+ const typed = input as IErrorResponse;
147
+ if (typed.error) {
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+
153
+ /**
154
+ * Creates the RequestTime object from the passed object.
155
+ */
156
+ setTimings(timings: IRequestTime): void {
157
+ this.timings = new RequestTime(timings);
158
+ }
159
+
160
+ /**
161
+ * Sets the authorization data on the response.
162
+ */
163
+ setAuth(auth: IResponseAuthorization): void {
164
+ this.auth = new ResponseAuthorization(auth);
165
+ }
166
+ }