@api-client/core 0.8.22 → 0.9.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 (203) hide show
  1. package/build/browser.d.ts +12 -5
  2. package/build/browser.js +2 -3
  3. package/build/browser.js.map +1 -1
  4. package/build/index.d.ts +12 -5
  5. package/build/index.js +2 -4
  6. package/build/index.js.map +1 -1
  7. package/build/src/events/BaseEvents.d.ts +125 -18
  8. package/build/src/events/BaseEvents.js.map +1 -1
  9. package/build/src/events/EventTypes.d.ts +0 -14
  10. package/build/src/events/EventTypes.js +0 -2
  11. package/build/src/events/EventTypes.js.map +1 -1
  12. package/build/src/events/Events.d.ts +1 -5
  13. package/build/src/events/Events.js +0 -2
  14. package/build/src/events/Events.js.map +1 -1
  15. package/build/src/events/transport/TransportEventTypes.d.ts +0 -1
  16. package/build/src/events/transport/TransportEventTypes.js +0 -1
  17. package/build/src/events/transport/TransportEventTypes.js.map +1 -1
  18. package/build/src/events/transport/TransportEvents.d.ts +0 -8
  19. package/build/src/events/transport/TransportEvents.js +0 -11
  20. package/build/src/events/transport/TransportEvents.js.map +1 -1
  21. package/build/src/mocking/ProjectMock.d.ts +0 -3
  22. package/build/src/mocking/ProjectMock.js +0 -3
  23. package/build/src/mocking/ProjectMock.js.map +1 -1
  24. package/build/src/mocking/lib/History.js +5 -0
  25. package/build/src/mocking/lib/History.js.map +1 -1
  26. package/build/src/models/{Workspace.d.ts → Folder.d.ts} +7 -7
  27. package/build/src/models/{Workspace.js → Folder.js} +5 -5
  28. package/build/src/models/Folder.js.map +1 -0
  29. package/build/src/models/HttpHistory.d.ts +38 -43
  30. package/build/src/models/HttpHistory.js +27 -34
  31. package/build/src/models/HttpHistory.js.map +1 -1
  32. package/build/src/models/HttpProject.d.ts +0 -2
  33. package/build/src/models/HttpProject.js +0 -27
  34. package/build/src/models/HttpProject.js.map +1 -1
  35. package/build/src/models/Project.d.ts +0 -8
  36. package/build/src/models/Project.js +0 -4
  37. package/build/src/models/Project.js.map +1 -1
  38. package/build/src/models/ProjectFolder.d.ts +0 -2
  39. package/build/src/models/ProjectFolder.js +0 -14
  40. package/build/src/models/ProjectFolder.js.map +1 -1
  41. package/build/src/models/ProjectItem.d.ts +0 -2
  42. package/build/src/models/ProjectItem.js +0 -20
  43. package/build/src/models/ProjectItem.js.map +1 -1
  44. package/build/src/models/ProjectRequest.d.ts +2 -3
  45. package/build/src/models/ProjectRequest.js.map +1 -1
  46. package/build/src/models/RequestConfig.d.ts +1 -1
  47. package/build/src/models/Space.d.ts +42 -0
  48. package/build/src/models/Space.js +81 -0
  49. package/build/src/models/Space.js.map +1 -0
  50. package/build/src/models/TrashEntry.d.ts +27 -0
  51. package/build/src/models/TrashEntry.js +2 -0
  52. package/build/src/models/TrashEntry.js.map +1 -0
  53. package/build/src/models/store/Backend.d.ts +0 -315
  54. package/build/src/models/store/Backend.js +0 -1
  55. package/build/src/models/store/Backend.js.map +1 -1
  56. package/build/src/models/store/File.d.ts +30 -0
  57. package/build/src/models/store/File.js +5 -5
  58. package/build/src/models/store/File.js.map +1 -1
  59. package/build/src/proxy/ProxyService.d.ts +0 -10
  60. package/build/src/proxy/ProxyService.js +0 -14
  61. package/build/src/proxy/ProxyService.js.map +1 -1
  62. package/build/src/runtime/node/InteropInterfaces.d.ts +1 -2
  63. package/build/src/runtime/node/ProjectParallelRunner.d.ts +2 -3
  64. package/build/src/runtime/node/ProjectParallelRunner.js.map +1 -1
  65. package/build/src/runtime/node/ProjectRequestRunner.d.ts +7 -8
  66. package/build/src/runtime/node/ProjectRequestRunner.js +2 -3
  67. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
  68. package/build/src/runtime/node/ProjectRunner.d.ts +3 -4
  69. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  70. package/build/src/runtime/node/ProjectRunnerWorker.js +0 -4
  71. package/build/src/runtime/node/ProjectRunnerWorker.js.map +1 -1
  72. package/build/src/runtime/store/CertificatesSdk.d.ts +46 -0
  73. package/build/src/runtime/store/CertificatesSdk.js +227 -0
  74. package/build/src/runtime/store/CertificatesSdk.js.map +1 -0
  75. package/build/src/runtime/store/FilesSdk.d.ts +14 -9
  76. package/build/src/runtime/store/FilesSdk.js +60 -16
  77. package/build/src/runtime/store/FilesSdk.js.map +1 -1
  78. package/build/src/runtime/store/HistorySdk.d.ts +11 -8
  79. package/build/src/runtime/store/HistorySdk.js +140 -17
  80. package/build/src/runtime/store/HistorySdk.js.map +1 -1
  81. package/build/src/runtime/store/RevisionsSdk.d.ts +12 -0
  82. package/build/src/runtime/store/RevisionsSdk.js +43 -0
  83. package/build/src/runtime/store/RevisionsSdk.js.map +1 -0
  84. package/build/src/runtime/store/RouteBuilder.d.ts +16 -18
  85. package/build/src/runtime/store/RouteBuilder.js +33 -60
  86. package/build/src/runtime/store/RouteBuilder.js.map +1 -1
  87. package/build/src/runtime/store/Sdk.d.ts +10 -7
  88. package/build/src/runtime/store/Sdk.js +12 -5
  89. package/build/src/runtime/store/Sdk.js.map +1 -1
  90. package/build/src/runtime/store/SdkBase.js.map +1 -1
  91. package/build/src/runtime/store/SharedSdk.d.ts +2 -2
  92. package/build/src/runtime/store/SharedSdk.js.map +1 -1
  93. package/build/src/runtime/store/SpacesSdk.d.ts +29 -0
  94. package/build/src/runtime/store/SpacesSdk.js +135 -0
  95. package/build/src/runtime/store/SpacesSdk.js.map +1 -0
  96. package/build/src/runtime/store/TrashSdk.d.ts +35 -0
  97. package/build/src/runtime/store/TrashSdk.js +155 -0
  98. package/build/src/runtime/store/TrashSdk.js.map +1 -0
  99. package/build/src/runtime/store/UsersSdk.d.ts +2 -2
  100. package/build/src/runtime/store/UsersSdk.js.map +1 -1
  101. package/build/src/runtime/store/interfaces/ApiClientStore.d.ts +30 -0
  102. package/build/src/runtime/store/interfaces/ApiClientStore.js +2 -0
  103. package/build/src/runtime/store/interfaces/ApiClientStore.js.map +1 -0
  104. package/build/src/runtime/store/interfaces/Certificates.d.ts +49 -0
  105. package/build/src/runtime/store/interfaces/Certificates.js +2 -0
  106. package/build/src/runtime/store/interfaces/Certificates.js.map +1 -0
  107. package/build/src/runtime/store/interfaces/Files.d.ts +63 -0
  108. package/build/src/runtime/store/interfaces/Files.js +2 -0
  109. package/build/src/runtime/store/interfaces/Files.js.map +1 -0
  110. package/build/src/runtime/store/interfaces/History.d.ts +63 -0
  111. package/build/src/runtime/store/interfaces/History.js +2 -0
  112. package/build/src/runtime/store/interfaces/History.js.map +1 -0
  113. package/build/src/runtime/store/interfaces/Media.d.ts +42 -0
  114. package/build/src/runtime/store/interfaces/Media.js +2 -0
  115. package/build/src/runtime/store/interfaces/Media.js.map +1 -0
  116. package/build/src/runtime/store/interfaces/Revisions.d.ts +25 -0
  117. package/build/src/runtime/store/interfaces/Revisions.js +2 -0
  118. package/build/src/runtime/store/interfaces/Revisions.js.map +1 -0
  119. package/build/src/runtime/store/interfaces/Spaces.d.ts +42 -0
  120. package/build/src/runtime/store/interfaces/Spaces.js +2 -0
  121. package/build/src/runtime/store/interfaces/Spaces.js.map +1 -0
  122. package/build/src/runtime/store/interfaces/Trash.d.ts +38 -0
  123. package/build/src/runtime/store/interfaces/Trash.js +2 -0
  124. package/build/src/runtime/store/interfaces/Trash.js.map +1 -0
  125. package/package.json +1 -1
  126. package/src/events/BaseEvents.ts +136 -18
  127. package/src/events/EventTypes.ts +0 -2
  128. package/src/events/Events.ts +0 -2
  129. package/src/events/transport/TransportEventTypes.ts +0 -1
  130. package/src/events/transport/TransportEvents.ts +0 -13
  131. package/src/mocking/ProjectMock.ts +0 -4
  132. package/src/mocking/lib/History.ts +5 -0
  133. package/src/models/{Workspace.ts → Folder.ts} +12 -12
  134. package/src/models/HttpHistory.ts +53 -63
  135. package/src/models/HttpProject.ts +0 -29
  136. package/src/models/Project.ts +0 -8
  137. package/src/models/ProjectFolder.ts +0 -16
  138. package/src/models/ProjectItem.ts +0 -18
  139. package/src/models/ProjectRequest.ts +3 -4
  140. package/src/models/RequestConfig.ts +1 -1
  141. package/src/models/Space.ts +105 -0
  142. package/src/models/TrashEntry.ts +29 -0
  143. package/src/models/store/Backend.ts +0 -342
  144. package/src/models/store/File.ts +38 -5
  145. package/src/proxy/ProxyService.ts +0 -15
  146. package/src/proxy/readme.md +0 -1
  147. package/src/runtime/node/InteropInterfaces.ts +1 -2
  148. package/src/runtime/node/ProjectParallelRunner.ts +2 -3
  149. package/src/runtime/node/ProjectRequestRunner.ts +13 -14
  150. package/src/runtime/node/ProjectRunner.ts +3 -4
  151. package/src/runtime/node/ProjectRunnerWorker.ts +1 -4
  152. package/src/runtime/store/CertificatesSdk.ts +231 -0
  153. package/src/runtime/store/FilesSdk.ts +71 -26
  154. package/src/runtime/store/HistorySdk.ts +145 -33
  155. package/src/runtime/store/RevisionsSdk.ts +44 -0
  156. package/src/runtime/store/RouteBuilder.ts +37 -69
  157. package/src/runtime/store/Sdk.ts +17 -7
  158. package/src/runtime/store/SdkBase.ts +1 -1
  159. package/src/runtime/store/SharedSdk.ts +3 -3
  160. package/src/runtime/store/SpacesSdk.ts +136 -0
  161. package/src/runtime/store/TrashSdk.ts +159 -0
  162. package/src/runtime/store/UsersSdk.ts +3 -3
  163. package/src/runtime/store/interfaces/ApiClientStore.ts +39 -0
  164. package/src/runtime/store/interfaces/Certificates.ts +56 -0
  165. package/src/runtime/store/interfaces/Files.ts +70 -0
  166. package/src/runtime/store/interfaces/History.ts +64 -0
  167. package/src/runtime/store/interfaces/Media.ts +46 -0
  168. package/src/runtime/store/interfaces/Revisions.ts +27 -0
  169. package/src/runtime/store/interfaces/Spaces.ts +48 -0
  170. package/src/runtime/store/interfaces/Trash.ts +42 -0
  171. package/build/src/events/models/ClientCertificateEvents.d.ts +0 -54
  172. package/build/src/events/models/ClientCertificateEvents.js +0 -78
  173. package/build/src/events/models/ClientCertificateEvents.js.map +0 -1
  174. package/build/src/events/models/ModelEventTypes.d.ts +0 -13
  175. package/build/src/events/models/ModelEventTypes.js +0 -14
  176. package/build/src/events/models/ModelEventTypes.js.map +0 -1
  177. package/build/src/events/models/ModelEvents.d.ts +0 -4
  178. package/build/src/events/models/ModelEvents.js +0 -5
  179. package/build/src/events/models/ModelEvents.js.map +0 -1
  180. package/build/src/mocking/lib/App.d.ts +0 -36
  181. package/build/src/mocking/lib/App.js +0 -70
  182. package/build/src/mocking/lib/App.js.map +0 -1
  183. package/build/src/models/AppProject.d.ts +0 -817
  184. package/build/src/models/AppProject.js +0 -1721
  185. package/build/src/models/AppProject.js.map +0 -1
  186. package/build/src/models/AppRequest.d.ts +0 -69
  187. package/build/src/models/AppRequest.js +0 -150
  188. package/build/src/models/AppRequest.js.map +0 -1
  189. package/build/src/models/Workspace.js.map +0 -1
  190. package/build/src/proxy/AppProjectProxy.d.ts +0 -28
  191. package/build/src/proxy/AppProjectProxy.js +0 -107
  192. package/build/src/proxy/AppProjectProxy.js.map +0 -1
  193. package/build/src/runtime/store/AppSdk.d.ts +0 -213
  194. package/build/src/runtime/store/AppSdk.js +0 -836
  195. package/build/src/runtime/store/AppSdk.js.map +0 -1
  196. package/src/events/models/ClientCertificateEvents.ts +0 -85
  197. package/src/events/models/ModelEventTypes.ts +0 -13
  198. package/src/events/models/ModelEvents.ts +0 -5
  199. package/src/mocking/lib/App.ts +0 -101
  200. package/src/models/AppProject.ts +0 -2188
  201. package/src/models/AppRequest.ts +0 -176
  202. package/src/proxy/AppProjectProxy.ts +0 -126
  203. package/src/runtime/store/AppSdk.ts +0 -842
@@ -0,0 +1,231 @@
1
+ import { SdkBase, E_RESPONSE_STATUS, E_RESPONSE_NO_VALUE, E_INVALID_JSON, E_RESPONSE_UNKNOWN, ISdkRequestOptions } from './SdkBase.js';
2
+ import { RouteBuilder } from './RouteBuilder.js';
3
+ import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, ContextSpaceListOptions, IBulkOperationResult } from '../../events/BaseEvents.js';
4
+ import { HttpCertificate } from '../../models/ClientCertificate.js';
5
+ import { SdkError } from './Errors.js';
6
+
7
+ export class CertificatesSdk extends SdkBase {
8
+ /**
9
+ * Inserts a certificate to the store
10
+ *
11
+ * @param value The value to insert.
12
+ * @param space The parent space of the certificate.
13
+ */
14
+ async add(value: HttpCertificate, space: string, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<HttpCertificate>> {
15
+ const token = request.token || this.sdk.token;
16
+ const url = this.sdk.getUrl(RouteBuilder.certificates());
17
+ url.searchParams.set('space', space);
18
+ const body = JSON.stringify(value);
19
+ const result = await this.sdk.http.post(url.toString(), { token, body });
20
+ this.inspectCommonStatusCodes(result.status);
21
+ const E_PREFIX = 'Unable to create a certificate. ';
22
+ if (result.status !== 200) {
23
+ this.logInvalidResponse(result);
24
+ let e = this.createGenericSdkError(result.body)
25
+ if (!e) {
26
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
27
+ e.response = result.body;
28
+ }
29
+ throw e;
30
+ }
31
+ if (!result.body) {
32
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
33
+ }
34
+ let data: ContextChangeRecord<HttpCertificate>;
35
+ try {
36
+ data = JSON.parse(result.body);
37
+ } catch (e) {
38
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
39
+ }
40
+ if (!data.key) {
41
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
42
+ }
43
+ return data;
44
+ }
45
+
46
+ /**
47
+ * Adds certificates in a bulk operation.
48
+ * @param value The lits of certificates to add.
49
+ * @param space The parent workspace
50
+ * @returns The list of inserted certificates. `undefined` when there was an error inserting a certificate.
51
+ */
52
+ async addBulk(values: HttpCertificate[], space: string, request: ISdkRequestOptions = {}): Promise<IBulkOperationResult<ContextChangeRecord<HttpCertificate>>> {
53
+ const token = request.token || this.sdk.token;
54
+ const url = this.sdk.getUrl(RouteBuilder.certificateBatchCreate());
55
+ url.searchParams.set('space', space);
56
+ const body = JSON.stringify(values);
57
+ const result = await this.sdk.http.post(url.toString(), { token, body });
58
+ this.inspectCommonStatusCodes(result.status);
59
+ const E_PREFIX = 'Unable to create a bulk certificates. ';
60
+ if (result.status !== 200) {
61
+ this.logInvalidResponse(result);
62
+ let e = this.createGenericSdkError(result.body)
63
+ if (!e) {
64
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
65
+ e.response = result.body;
66
+ }
67
+ throw e;
68
+ }
69
+ if (!result.body) {
70
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
71
+ }
72
+ let data: IBulkOperationResult<ContextChangeRecord<HttpCertificate>>;
73
+ try {
74
+ data = JSON.parse(result.body).items;
75
+ } catch (e) {
76
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
77
+ }
78
+ if (!data.items) {
79
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
80
+ }
81
+ return data;
82
+ }
83
+
84
+ /**
85
+ * @param key The key of the certificate to read.
86
+ */
87
+ async read(key: string, request: ISdkRequestOptions = {}): Promise<HttpCertificate> {
88
+ const token = request.token || this.sdk.token;
89
+ const url = this.sdk.getUrl(RouteBuilder.certificate(key));
90
+ const result = await this.sdk.http.get(url.toString(), { token });
91
+ this.inspectCommonStatusCodes(result.status);
92
+ const E_PREFIX = 'Unable to read a certificate. ';
93
+ if (result.status !== 200) {
94
+ this.logInvalidResponse(result);
95
+ let e = this.createGenericSdkError(result.body)
96
+ if (!e) {
97
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
98
+ e.response = result.body;
99
+ }
100
+ throw e;
101
+ }
102
+ if (!result.body) {
103
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
104
+ }
105
+ let data: HttpCertificate;
106
+ try {
107
+ data = JSON.parse(result.body);
108
+ } catch (e) {
109
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
110
+ }
111
+ if (!data.kind) {
112
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
113
+ }
114
+ return data;
115
+ }
116
+
117
+ /**
118
+ * Lists certificate entires.
119
+ *
120
+ * @param space The parent space of the certificate.
121
+ * @param options The list query options.
122
+ */
123
+ async list(options?: ContextSpaceListOptions, request: ISdkRequestOptions = {}): Promise<ContextListResult<HttpCertificate>> {
124
+ const token = request.token || this.sdk.token;
125
+ const url = this.sdk.getUrl(RouteBuilder.certificates());
126
+ this.sdk.appendListOptions(url, options);
127
+ const result = await this.sdk.http.get(url.toString(), { token });
128
+ this.inspectCommonStatusCodes(result.status);
129
+ const E_PREFIX = 'Unable to list certificates. ';
130
+ if (result.status !== 200) {
131
+ this.logInvalidResponse(result);
132
+ let e = this.createGenericSdkError(result.body)
133
+ if (!e) {
134
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
135
+ e.response = result.body;
136
+ }
137
+ throw e;
138
+ }
139
+ if (!result.body) {
140
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
141
+ }
142
+ let data: ContextListResult<HttpCertificate>;
143
+ try {
144
+ data = JSON.parse(result.body);
145
+ } catch (e) {
146
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
147
+ }
148
+ if (!Array.isArray(data.items)) {
149
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
150
+ }
151
+ return data;
152
+ }
153
+
154
+ /**
155
+ * Marks the certificate as deleted.
156
+ *
157
+ * @param key The key of the certificate to delete.
158
+ */
159
+ async delete(key: string, request: ISdkRequestOptions = {}): Promise<void> {
160
+ const token = request.token || this.sdk.token;
161
+ const url = this.sdk.getUrl(RouteBuilder.certificate(key));
162
+ const result = await this.sdk.http.delete(url.toString(), { token });
163
+ this.inspectCommonStatusCodes(result.status, result.body);
164
+ const E_PREFIX = 'Unable to delete the certificate. ';
165
+ if (result.status !== 204) {
166
+ this.logInvalidResponse(result);
167
+ let e = this.createGenericSdkError(result.body)
168
+ if (!e) {
169
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
170
+ e.response = result.body;
171
+ }
172
+ throw e;
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Removed certificates in a bulk operation.
178
+ * @param keys The list of certificate keys to delete.
179
+ */
180
+ async deleteBulk(keys: string[], request: ISdkRequestOptions = {}): Promise<IBulkOperationResult<ContextDeleteRecord>> {
181
+ const token = request.token || this.sdk.token;
182
+ const url = this.sdk.getUrl(RouteBuilder.certificateBatchDelete());
183
+ const result = await this.sdk.http.post(url.toString(), { token, body: JSON.stringify(keys) });
184
+ this.inspectCommonStatusCodes(result.status);
185
+ const E_PREFIX = 'Unable to delete history. ';
186
+ if (result.status !== 200) {
187
+ this.logInvalidResponse(result);
188
+ let e = this.createGenericSdkError(result.body)
189
+ if (!e) {
190
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
191
+ e.response = result.body;
192
+ }
193
+ throw e;
194
+ }
195
+ if (!result.body) {
196
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
197
+ }
198
+
199
+ let data: IBulkOperationResult<ContextDeleteRecord>;
200
+ try {
201
+ data = JSON.parse(result.body);
202
+ } catch (e) {
203
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
204
+ }
205
+ if (!Array.isArray(data.items)) {
206
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
207
+ }
208
+ return data;
209
+ }
210
+
211
+ /**
212
+ * Removes all certificates from the store for the given workspace.
213
+ * @param space The parent workspace key
214
+ */
215
+ async empty(space: string, request: ISdkRequestOptions = {}): Promise<void> {
216
+ const token = request.token || this.sdk.token;
217
+ const url = this.sdk.getUrl(RouteBuilder.certificatesEmpty(space));
218
+ const result = await this.sdk.http.delete(url.toString(), { token });
219
+ this.inspectCommonStatusCodes(result.status, result.body);
220
+ const E_PREFIX = 'Unable to delete the certificate. ';
221
+ if (result.status !== 204) {
222
+ this.logInvalidResponse(result);
223
+ let e = this.createGenericSdkError(result.body)
224
+ if (!e) {
225
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
226
+ e.response = result.body;
227
+ }
228
+ throw e;
229
+ }
230
+ }
231
+ }
@@ -1,13 +1,13 @@
1
1
  import WebSocketNode from 'ws';
2
- import { SdkBase, E_RESPONSE_STATUS, E_RESPONSE_NO_VALUE, E_INVALID_JSON, E_RESPONSE_UNKNOWN, E_RESPONSE_LOCATION, ISdkRequestOptions } from './SdkBase.js';
2
+ import { SdkBase, E_RESPONSE_STATUS, E_RESPONSE_NO_VALUE, E_INVALID_JSON, E_RESPONSE_UNKNOWN, ISdkRequestOptions } from './SdkBase.js';
3
3
  import { RouteBuilder } from './RouteBuilder.js';
4
- import { IListOptions, IListResponse, IPatchInfo, IPatchRevision, IAccessPatchInfo } from '../../models/store/Backend.js';
5
4
  import { IUser } from '../../models/store/User.js';
6
- import { IFile } from '../../models/store/File.js';
5
+ import { FileBreadcrumb, IFile } from '../../models/store/File.js';
7
6
  import { Kind as ProjectKind } from '../../models/Project.js';
8
- import { Kind as WorkspaceKind } from '../../models/Workspace.js';
7
+ import { Kind as FolderKind } from '../../models/Folder.js';
9
8
  import { Kind as DataNamespaceKind } from '../../models/data/DataNamespace.js';
10
9
  import { SdkError } from './Errors.js';
10
+ import { ContextListResult, IPatchInfo, IPatchRevision, IAccessPatchInfo, ContextSpaceListOptions, ContextChangeRecord, IBulkOperationResult } from '../../events/BaseEvents.js';
11
11
 
12
12
  export interface IMetaCreateOptions {
13
13
  /**
@@ -29,7 +29,7 @@ export interface IFileCreateOptions extends IMetaCreateOptions, IMediaCreateOpti
29
29
 
30
30
  }
31
31
 
32
- export type ListFileKind = typeof ProjectKind | typeof WorkspaceKind | typeof DataNamespaceKind;
32
+ export type ListFileKind = typeof ProjectKind | typeof FolderKind | typeof DataNamespaceKind;
33
33
 
34
34
  /**
35
35
  * In the store, the file is represented by the meta and the media.
@@ -45,7 +45,7 @@ export class FilesSdk extends SdkBase {
45
45
  * @param options Optional query options.
46
46
  * @param request Optional request options.
47
47
  */
48
- async list(kinds?: ListFileKind[], options?: IListOptions, request: ISdkRequestOptions = {}): Promise<IListResponse<IFile>> {
48
+ async list(kinds?: ListFileKind[], options?: ContextSpaceListOptions, request: ISdkRequestOptions = {}): Promise<ContextListResult<IFile>> {
49
49
  const token = request.token || this.sdk.token;
50
50
  const url = this.sdk.getUrl(RouteBuilder.files());
51
51
  this.sdk.appendListOptions(url, options);
@@ -67,7 +67,7 @@ export class FilesSdk extends SdkBase {
67
67
  if (!result.body) {
68
68
  throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
69
69
  }
70
- let data: IListResponse<IFile>;
70
+ let data: ContextListResult<IFile>;
71
71
  try {
72
72
  data = JSON.parse(result.body);
73
73
  } catch (e) {
@@ -88,10 +88,10 @@ export class FilesSdk extends SdkBase {
88
88
  * @param request Optional request details
89
89
  * @returns The id of the created file meta.
90
90
  */
91
- async create(meta: IFile, contents: unknown, opts: IFileCreateOptions = {}, request: ISdkRequestOptions = {}): Promise<string> {
92
- const id = await this.createMeta(meta, opts, request);
93
- await this.createMedia(contents, id, opts, request);
94
- return id;
91
+ async create(meta: IFile, contents: unknown, space: string, opts: IFileCreateOptions = {}, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<IFile>> {
92
+ const result = await this.createMeta(meta, space, opts, request);
93
+ await this.createMedia(contents, result.key, opts, request);
94
+ return result;
95
95
  }
96
96
 
97
97
  /**
@@ -102,10 +102,10 @@ export class FilesSdk extends SdkBase {
102
102
  * @param request Optional request options.
103
103
  * @returns The key of the creates file.
104
104
  */
105
- async createMeta(file: IFile, opts: IMetaCreateOptions = {}, request: ISdkRequestOptions = {}): Promise<string> {
105
+ async createMeta(file: IFile, space: string, opts: IMetaCreateOptions = {}, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<IFile>> {
106
106
  const token = request.token || this.sdk.token;
107
- const path = RouteBuilder.files();
108
- const url = this.sdk.getUrl(path);
107
+ const url = this.sdk.getUrl(RouteBuilder.files());
108
+ url.searchParams.set('space', space);
109
109
  if (opts.parent) {
110
110
  url.searchParams.set('parent', opts.parent);
111
111
  }
@@ -119,7 +119,7 @@ export class FilesSdk extends SdkBase {
119
119
  });
120
120
  this.inspectCommonStatusCodes(result.status, result.body);
121
121
  const E_PREFIX = 'Unable to create a file. ';
122
- if (result.status !== 204) {
122
+ if (result.status !== 200) {
123
123
  this.logInvalidResponse(result);
124
124
  let e = this.createGenericSdkError(result.body)
125
125
  if (!e) {
@@ -128,12 +128,20 @@ export class FilesSdk extends SdkBase {
128
128
  }
129
129
  throw e;
130
130
  }
131
- const location = result.headers.get('location');
132
- if (!location) {
133
- throw new Error(`${E_PREFIX}${E_RESPONSE_LOCATION}`);
131
+
132
+ if (!result.body) {
133
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
134
+ }
135
+ let data: ContextChangeRecord<IFile>;
136
+ try {
137
+ data = JSON.parse(result.body);
138
+ } catch (e) {
139
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
134
140
  }
135
- const id = location.split('/').pop();
136
- return id as string;
141
+ if (!data.key) {
142
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
143
+ }
144
+ return data;
137
145
  }
138
146
 
139
147
  /**
@@ -184,6 +192,7 @@ export class FilesSdk extends SdkBase {
184
192
  * @returns THe file metadata
185
193
  */
186
194
  read(key: string, media: false, request?: ISdkRequestOptions): Promise<IFile>;
195
+
187
196
  /**
188
197
  * Reads file contents from the store.
189
198
  *
@@ -226,8 +235,10 @@ export class FilesSdk extends SdkBase {
226
235
  } catch (e) {
227
236
  throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
228
237
  }
229
- if (!data.kind) {
230
- throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
238
+ if (!media) {
239
+ if (!data.kind) {
240
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
241
+ }
231
242
  }
232
243
  return data;
233
244
  }
@@ -239,7 +250,7 @@ export class FilesSdk extends SdkBase {
239
250
  * in that place. It also inserts `undefined` in place of a file that doesn't exist.
240
251
  * @param request Optional request options.
241
252
  */
242
- async readBulk(keys: string[], request: ISdkRequestOptions = {}): Promise<IListResponse<IFile|undefined>> {
253
+ async readBulk(keys: string[], request: ISdkRequestOptions = {}): Promise<IBulkOperationResult<IFile>> {
243
254
  const token = request.token || this.sdk.token;
244
255
  const url = this.sdk.getUrl(RouteBuilder.filesBatch());
245
256
  const body = JSON.stringify(keys);
@@ -258,7 +269,7 @@ export class FilesSdk extends SdkBase {
258
269
  if (!result.body) {
259
270
  throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
260
271
  }
261
- let data: IListResponse<IFile | undefined>;
272
+ let data: IBulkOperationResult<IFile>;
262
273
  try {
263
274
  data = JSON.parse(result.body);
264
275
  } catch (e) {
@@ -384,7 +395,7 @@ export class FilesSdk extends SdkBase {
384
395
  * @param key The file key
385
396
  * @param request Optional request options.
386
397
  */
387
- async listUsers(key: string, request: ISdkRequestOptions = {}): Promise<IListResponse<IUser>> {
398
+ async listUsers(key: string, request: ISdkRequestOptions = {}): Promise<ContextListResult<IUser>> {
388
399
  const token = request.token || this.sdk.token;
389
400
  const url = this.sdk.getUrl(RouteBuilder.fileUsers(key));
390
401
  const result = await this.sdk.http.get(url.toString(), { token });
@@ -402,7 +413,7 @@ export class FilesSdk extends SdkBase {
402
413
  if (!result.body) {
403
414
  throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
404
415
  }
405
- let data: IListResponse<IUser>;
416
+ let data: ContextListResult<IUser>;
406
417
  try {
407
418
  data = JSON.parse(result.body);
408
419
  } catch (e) {
@@ -439,4 +450,38 @@ export class FilesSdk extends SdkBase {
439
450
  }
440
451
  return this.sdk.ws.createAndConnect(url.toString(), token);
441
452
  }
453
+
454
+ /**
455
+ * Lists breadcrumbs to the file.
456
+ * @param key The lowest file in the hierarchy
457
+ */
458
+ async breadcrumbs(key: string, request: ISdkRequestOptions = {}): Promise<ContextListResult<FileBreadcrumb>> {
459
+ const token = request.token || this.sdk.token;
460
+ const url = this.sdk.getUrl(RouteBuilder.fileBreadcrumbs(key));
461
+ const result = await this.sdk.http.get(url.toString(), { token });
462
+ this.inspectCommonStatusCodes(result.status, result.body);
463
+ const E_PREFIX = 'Unable to read a file. ';
464
+ if (result.status !== 200) {
465
+ this.logInvalidResponse(result);
466
+ let e = this.createGenericSdkError(result.body)
467
+ if (!e) {
468
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
469
+ e.response = result.body;
470
+ }
471
+ throw e;
472
+ }
473
+ if (!result.body) {
474
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
475
+ }
476
+ let data: ContextListResult<FileBreadcrumb>;
477
+ try {
478
+ data = JSON.parse(result.body);
479
+ } catch (e) {
480
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
481
+ }
482
+ if (!Array.isArray(data.items)) {
483
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
484
+ }
485
+ return data;
486
+ }
442
487
  }