@api-client/core 0.8.21 → 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 (215) 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/data/DataAssociation.d.ts +22 -5
  54. package/build/src/models/data/DataAssociation.js +29 -11
  55. package/build/src/models/data/DataAssociation.js.map +1 -1
  56. package/build/src/models/data/DataEntity.d.ts +12 -1
  57. package/build/src/models/data/DataEntity.js +49 -10
  58. package/build/src/models/data/DataEntity.js.map +1 -1
  59. package/build/src/models/data/DataNamespace.d.ts +34 -1
  60. package/build/src/models/data/DataNamespace.js +75 -1
  61. package/build/src/models/data/DataNamespace.js.map +1 -1
  62. package/build/src/models/store/Backend.d.ts +0 -315
  63. package/build/src/models/store/Backend.js +0 -1
  64. package/build/src/models/store/Backend.js.map +1 -1
  65. package/build/src/models/store/File.d.ts +30 -0
  66. package/build/src/models/store/File.js +5 -5
  67. package/build/src/models/store/File.js.map +1 -1
  68. package/build/src/proxy/ProxyService.d.ts +0 -10
  69. package/build/src/proxy/ProxyService.js +0 -14
  70. package/build/src/proxy/ProxyService.js.map +1 -1
  71. package/build/src/runtime/node/InteropInterfaces.d.ts +1 -2
  72. package/build/src/runtime/node/ProjectParallelRunner.d.ts +2 -3
  73. package/build/src/runtime/node/ProjectParallelRunner.js.map +1 -1
  74. package/build/src/runtime/node/ProjectRequestRunner.d.ts +7 -8
  75. package/build/src/runtime/node/ProjectRequestRunner.js +2 -3
  76. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
  77. package/build/src/runtime/node/ProjectRunner.d.ts +3 -4
  78. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  79. package/build/src/runtime/node/ProjectRunnerWorker.js +0 -4
  80. package/build/src/runtime/node/ProjectRunnerWorker.js.map +1 -1
  81. package/build/src/runtime/store/CertificatesSdk.d.ts +46 -0
  82. package/build/src/runtime/store/CertificatesSdk.js +227 -0
  83. package/build/src/runtime/store/CertificatesSdk.js.map +1 -0
  84. package/build/src/runtime/store/FilesSdk.d.ts +14 -9
  85. package/build/src/runtime/store/FilesSdk.js +60 -16
  86. package/build/src/runtime/store/FilesSdk.js.map +1 -1
  87. package/build/src/runtime/store/HistorySdk.d.ts +11 -8
  88. package/build/src/runtime/store/HistorySdk.js +140 -17
  89. package/build/src/runtime/store/HistorySdk.js.map +1 -1
  90. package/build/src/runtime/store/RevisionsSdk.d.ts +12 -0
  91. package/build/src/runtime/store/RevisionsSdk.js +43 -0
  92. package/build/src/runtime/store/RevisionsSdk.js.map +1 -0
  93. package/build/src/runtime/store/RouteBuilder.d.ts +16 -18
  94. package/build/src/runtime/store/RouteBuilder.js +33 -60
  95. package/build/src/runtime/store/RouteBuilder.js.map +1 -1
  96. package/build/src/runtime/store/Sdk.d.ts +10 -7
  97. package/build/src/runtime/store/Sdk.js +12 -5
  98. package/build/src/runtime/store/Sdk.js.map +1 -1
  99. package/build/src/runtime/store/SdkBase.js.map +1 -1
  100. package/build/src/runtime/store/SharedSdk.d.ts +2 -2
  101. package/build/src/runtime/store/SharedSdk.js.map +1 -1
  102. package/build/src/runtime/store/SpacesSdk.d.ts +29 -0
  103. package/build/src/runtime/store/SpacesSdk.js +135 -0
  104. package/build/src/runtime/store/SpacesSdk.js.map +1 -0
  105. package/build/src/runtime/store/TrashSdk.d.ts +35 -0
  106. package/build/src/runtime/store/TrashSdk.js +155 -0
  107. package/build/src/runtime/store/TrashSdk.js.map +1 -0
  108. package/build/src/runtime/store/UsersSdk.d.ts +2 -2
  109. package/build/src/runtime/store/UsersSdk.js.map +1 -1
  110. package/build/src/runtime/store/interfaces/ApiClientStore.d.ts +30 -0
  111. package/build/src/runtime/store/interfaces/ApiClientStore.js +2 -0
  112. package/build/src/runtime/store/interfaces/ApiClientStore.js.map +1 -0
  113. package/build/src/runtime/store/interfaces/Certificates.d.ts +49 -0
  114. package/build/src/runtime/store/interfaces/Certificates.js +2 -0
  115. package/build/src/runtime/store/interfaces/Certificates.js.map +1 -0
  116. package/build/src/runtime/store/interfaces/Files.d.ts +63 -0
  117. package/build/src/runtime/store/interfaces/Files.js +2 -0
  118. package/build/src/runtime/store/interfaces/Files.js.map +1 -0
  119. package/build/src/runtime/store/interfaces/History.d.ts +63 -0
  120. package/build/src/runtime/store/interfaces/History.js +2 -0
  121. package/build/src/runtime/store/interfaces/History.js.map +1 -0
  122. package/build/src/runtime/store/interfaces/Media.d.ts +42 -0
  123. package/build/src/runtime/store/interfaces/Media.js +2 -0
  124. package/build/src/runtime/store/interfaces/Media.js.map +1 -0
  125. package/build/src/runtime/store/interfaces/Revisions.d.ts +25 -0
  126. package/build/src/runtime/store/interfaces/Revisions.js +2 -0
  127. package/build/src/runtime/store/interfaces/Revisions.js.map +1 -0
  128. package/build/src/runtime/store/interfaces/Spaces.d.ts +42 -0
  129. package/build/src/runtime/store/interfaces/Spaces.js +2 -0
  130. package/build/src/runtime/store/interfaces/Spaces.js.map +1 -0
  131. package/build/src/runtime/store/interfaces/Trash.d.ts +38 -0
  132. package/build/src/runtime/store/interfaces/Trash.js +2 -0
  133. package/build/src/runtime/store/interfaces/Trash.js.map +1 -0
  134. package/package.json +12 -12
  135. package/src/events/BaseEvents.ts +136 -18
  136. package/src/events/EventTypes.ts +0 -2
  137. package/src/events/Events.ts +0 -2
  138. package/src/events/transport/TransportEventTypes.ts +0 -1
  139. package/src/events/transport/TransportEvents.ts +0 -13
  140. package/src/mocking/ProjectMock.ts +0 -4
  141. package/src/mocking/lib/History.ts +5 -0
  142. package/src/models/{Workspace.ts → Folder.ts} +12 -12
  143. package/src/models/HttpHistory.ts +53 -63
  144. package/src/models/HttpProject.ts +0 -29
  145. package/src/models/Project.ts +0 -8
  146. package/src/models/ProjectFolder.ts +0 -16
  147. package/src/models/ProjectItem.ts +0 -18
  148. package/src/models/ProjectRequest.ts +3 -4
  149. package/src/models/RequestConfig.ts +1 -1
  150. package/src/models/Space.ts +105 -0
  151. package/src/models/TrashEntry.ts +29 -0
  152. package/src/models/data/DataAssociation.ts +50 -15
  153. package/src/models/data/DataEntity.ts +51 -10
  154. package/src/models/data/DataNamespace.ts +78 -2
  155. package/src/models/store/Backend.ts +0 -342
  156. package/src/models/store/File.ts +38 -5
  157. package/src/proxy/ProxyService.ts +0 -15
  158. package/src/proxy/readme.md +0 -1
  159. package/src/runtime/node/InteropInterfaces.ts +1 -2
  160. package/src/runtime/node/ProjectParallelRunner.ts +2 -3
  161. package/src/runtime/node/ProjectRequestRunner.ts +13 -14
  162. package/src/runtime/node/ProjectRunner.ts +3 -4
  163. package/src/runtime/node/ProjectRunnerWorker.ts +1 -4
  164. package/src/runtime/store/CertificatesSdk.ts +231 -0
  165. package/src/runtime/store/FilesSdk.ts +71 -26
  166. package/src/runtime/store/HistorySdk.ts +145 -33
  167. package/src/runtime/store/RevisionsSdk.ts +44 -0
  168. package/src/runtime/store/RouteBuilder.ts +37 -69
  169. package/src/runtime/store/Sdk.ts +17 -7
  170. package/src/runtime/store/SdkBase.ts +1 -1
  171. package/src/runtime/store/SharedSdk.ts +3 -3
  172. package/src/runtime/store/SpacesSdk.ts +136 -0
  173. package/src/runtime/store/TrashSdk.ts +159 -0
  174. package/src/runtime/store/UsersSdk.ts +3 -3
  175. package/src/runtime/store/interfaces/ApiClientStore.ts +39 -0
  176. package/src/runtime/store/interfaces/Certificates.ts +56 -0
  177. package/src/runtime/store/interfaces/Files.ts +70 -0
  178. package/src/runtime/store/interfaces/History.ts +64 -0
  179. package/src/runtime/store/interfaces/Media.ts +46 -0
  180. package/src/runtime/store/interfaces/Revisions.ts +27 -0
  181. package/src/runtime/store/interfaces/Spaces.ts +48 -0
  182. package/src/runtime/store/interfaces/Trash.ts +42 -0
  183. package/build/src/events/models/ClientCertificateEvents.d.ts +0 -54
  184. package/build/src/events/models/ClientCertificateEvents.js +0 -78
  185. package/build/src/events/models/ClientCertificateEvents.js.map +0 -1
  186. package/build/src/events/models/ModelEventTypes.d.ts +0 -13
  187. package/build/src/events/models/ModelEventTypes.js +0 -14
  188. package/build/src/events/models/ModelEventTypes.js.map +0 -1
  189. package/build/src/events/models/ModelEvents.d.ts +0 -4
  190. package/build/src/events/models/ModelEvents.js +0 -5
  191. package/build/src/events/models/ModelEvents.js.map +0 -1
  192. package/build/src/mocking/lib/App.d.ts +0 -36
  193. package/build/src/mocking/lib/App.js +0 -70
  194. package/build/src/mocking/lib/App.js.map +0 -1
  195. package/build/src/models/AppProject.d.ts +0 -817
  196. package/build/src/models/AppProject.js +0 -1721
  197. package/build/src/models/AppProject.js.map +0 -1
  198. package/build/src/models/AppRequest.d.ts +0 -69
  199. package/build/src/models/AppRequest.js +0 -150
  200. package/build/src/models/AppRequest.js.map +0 -1
  201. package/build/src/models/Workspace.js.map +0 -1
  202. package/build/src/proxy/AppProjectProxy.d.ts +0 -28
  203. package/build/src/proxy/AppProjectProxy.js +0 -107
  204. package/build/src/proxy/AppProjectProxy.js.map +0 -1
  205. package/build/src/runtime/store/AppSdk.d.ts +0 -213
  206. package/build/src/runtime/store/AppSdk.js +0 -836
  207. package/build/src/runtime/store/AppSdk.js.map +0 -1
  208. package/src/events/models/ClientCertificateEvents.ts +0 -85
  209. package/src/events/models/ModelEventTypes.ts +0 -13
  210. package/src/events/models/ModelEvents.ts +0 -5
  211. package/src/mocking/lib/App.ts +0 -101
  212. package/src/models/AppProject.ts +0 -2188
  213. package/src/models/AppRequest.ts +0 -176
  214. package/src/proxy/AppProjectProxy.ts +0 -126
  215. package/src/runtime/store/AppSdk.ts +0 -842
@@ -0,0 +1,136 @@
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, ContextListOptions, ContextListResult } from '../../events/BaseEvents.js';
4
+ import { ISpace, Kind as SpaceKind } from '../../models/Space.js';
5
+ import { SdkError } from './Errors.js';
6
+
7
+ export class SpacesSdk extends SdkBase {
8
+ /**
9
+ * Lists spaces created by the user.
10
+ * @param options The list query options
11
+ */
12
+ async list(options?: ContextListOptions, request: ISdkRequestOptions = {}): Promise<ContextListResult<ISpace>> {
13
+ const token = request.token || this.sdk.token;
14
+ const url = this.sdk.getUrl(RouteBuilder.spaces());
15
+ this.sdk.appendListOptions(url, options);
16
+ const result = await this.sdk.http.get(url.toString(), { token });
17
+ this.inspectCommonStatusCodes(result.status);
18
+ const E_PREFIX = 'Unable to list spaces. ';
19
+ if (result.status !== 200) {
20
+ this.logInvalidResponse(result);
21
+ let e = this.createGenericSdkError(result.body)
22
+ if (!e) {
23
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
24
+ e.response = result.body;
25
+ }
26
+ throw e;
27
+ }
28
+ if (!result.body) {
29
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
30
+ }
31
+ let data: ContextListResult<ISpace>;
32
+ try {
33
+ data = JSON.parse(result.body);
34
+ } catch (e) {
35
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
36
+ }
37
+ if (!Array.isArray(data.items)) {
38
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
39
+ }
40
+ return data;
41
+ }
42
+
43
+ /**
44
+ * Creates a space from a space definition.
45
+ *
46
+ * @param space The space definition.
47
+ */
48
+ async add(space: ISpace, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<ISpace>> {
49
+ const token = request.token || this.sdk.token;
50
+ const url = this.sdk.getUrl(RouteBuilder.spaces());
51
+ const body = JSON.stringify(space);
52
+ const result = await this.sdk.http.post(url.toString(), { token, body });
53
+ this.inspectCommonStatusCodes(result.status);
54
+ const E_PREFIX = 'Unable to create a space. ';
55
+ if (result.status !== 200) {
56
+ this.logInvalidResponse(result);
57
+ let e = this.createGenericSdkError(result.body)
58
+ if (!e) {
59
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
60
+ e.response = result.body;
61
+ }
62
+ throw e;
63
+ }
64
+ if (!result.body) {
65
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
66
+ }
67
+ let data: ContextChangeRecord<ISpace>;
68
+ try {
69
+ data = JSON.parse(result.body);
70
+ } catch (e) {
71
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
72
+ }
73
+ if (!data.key) {
74
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
75
+ }
76
+ return data;
77
+ }
78
+
79
+ /**
80
+ * Reads a single space from the store.
81
+ * @param key The key of the space to read.
82
+ */
83
+ async read(key: string, request: ISdkRequestOptions = {}): Promise<ISpace> {
84
+ const token = request.token || this.sdk.token;
85
+ const url = this.sdk.getUrl(RouteBuilder.space(key));
86
+ const result = await this.sdk.http.get(url.toString(), { token });
87
+ this.inspectCommonStatusCodes(result.status);
88
+ const E_PREFIX = 'Unable to read a space. ';
89
+ if (result.status !== 200) {
90
+ this.logInvalidResponse(result);
91
+ let e = this.createGenericSdkError(result.body)
92
+ if (!e) {
93
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
94
+ e.response = result.body;
95
+ }
96
+ throw e;
97
+ }
98
+ if (!result.body) {
99
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
100
+ }
101
+ let data: ISpace;
102
+ try {
103
+ data = JSON.parse(result.body);
104
+ } catch (e) {
105
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
106
+ }
107
+ if (data.kind !== SpaceKind) {
108
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
109
+ }
110
+ return data;
111
+ }
112
+
113
+ /**
114
+ * Marks space as deleted.
115
+ * Note, this does not remove any data from the store. It marks the space as deleted
116
+ * and then the space is ignored by most of the API.
117
+ *
118
+ * @param key The key of the space to delete.
119
+ */
120
+ async delete(key: string, request: ISdkRequestOptions = {}): Promise<void> {
121
+ const token = request.token || this.sdk.token;
122
+ const url = this.sdk.getUrl(RouteBuilder.space(key));
123
+ const result = await this.sdk.http.delete(url.toString(), { token });
124
+ this.inspectCommonStatusCodes(result.status, result.body);
125
+ const E_PREFIX = 'Unable to delete the space. ';
126
+ if (result.status !== 204) {
127
+ this.logInvalidResponse(result);
128
+ let e = this.createGenericSdkError(result.body)
129
+ if (!e) {
130
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
131
+ e.response = result.body;
132
+ }
133
+ throw e;
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,159 @@
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, ContextListResult, ContextSpaceListOptions } from '../../events/BaseEvents.js';
4
+ import { SdkError } from './Errors.js';
5
+ import { IFile } from '../../models/store/File.js';
6
+ import { TrashEntry, TrashEntryCreate } from '../../models/TrashEntry.js';
7
+
8
+ export class TrashSdk extends SdkBase {
9
+ /**
10
+ * Inserts a record of file delete.
11
+ *
12
+ * @param entry The trash entry definition
13
+ * @param space The parent space of the file
14
+ */
15
+ async add(entry: TrashEntryCreate, space: string, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<TrashEntry>> {
16
+ const token = request.token || this.sdk.token;
17
+ const url = this.sdk.getUrl(RouteBuilder.trash());
18
+ url.searchParams.set('space', space);
19
+ const body = JSON.stringify(entry);
20
+ const result = await this.sdk.http.post(url.toString(), { token, body });
21
+ this.inspectCommonStatusCodes(result.status);
22
+ const E_PREFIX = 'Unable to create a trash. ';
23
+ if (result.status !== 200) {
24
+ this.logInvalidResponse(result);
25
+ let e = this.createGenericSdkError(result.body)
26
+ if (!e) {
27
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
28
+ e.response = result.body;
29
+ }
30
+ throw e;
31
+ }
32
+ if (!result.body) {
33
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
34
+ }
35
+ let data: ContextChangeRecord<TrashEntry>;
36
+ try {
37
+ data = JSON.parse(result.body);
38
+ } catch (e) {
39
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
40
+ }
41
+ if (!data.key) {
42
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
43
+ }
44
+ return data;
45
+ }
46
+
47
+ /**
48
+ * Lists trashed entires.
49
+ * @param options The list query options.
50
+ */
51
+ async list(options: ContextSpaceListOptions, request: ISdkRequestOptions = {}): Promise<ContextListResult<TrashEntry>> {
52
+ const token = request.token || this.sdk.token;
53
+ const url = this.sdk.getUrl(RouteBuilder.trash());
54
+ this.sdk.appendListOptions(url, options);
55
+ const result = await this.sdk.http.get(url.toString(), { token });
56
+ this.inspectCommonStatusCodes(result.status);
57
+ const E_PREFIX = 'Unable to list trash. ';
58
+ if (result.status !== 200) {
59
+ this.logInvalidResponse(result);
60
+ let e = this.createGenericSdkError(result.body)
61
+ if (!e) {
62
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
63
+ e.response = result.body;
64
+ }
65
+ throw e;
66
+ }
67
+ if (!result.body) {
68
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
69
+ }
70
+ let data: ContextListResult<TrashEntry>;
71
+ try {
72
+ data = JSON.parse(result.body);
73
+ } catch (e) {
74
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
75
+ }
76
+ if (!Array.isArray(data.items)) {
77
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
78
+ }
79
+ return data;
80
+ }
81
+
82
+ /**
83
+ * Removes a trash entry permanently from the store.
84
+ * @param key The key of the deleted object
85
+ */
86
+ async delete(key: string, request: ISdkRequestOptions = {}): Promise<void> {
87
+ const token = request.token || this.sdk.token;
88
+ const url = this.sdk.getUrl(RouteBuilder.trashItem(key));
89
+ const result = await this.sdk.http.delete(url.toString(), { token });
90
+ this.inspectCommonStatusCodes(result.status, result.body);
91
+ const E_PREFIX = 'Unable to delete the trash entry. ';
92
+ if (result.status !== 204) {
93
+ this.logInvalidResponse(result);
94
+ let e = this.createGenericSdkError(result.body)
95
+ if (!e) {
96
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
97
+ e.response = result.body;
98
+ }
99
+ throw e;
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Restores a file from the trash.
105
+ * It deletes a trash entry and updates the `file` object.
106
+ *
107
+ * @param key The key of the file to restore
108
+ */
109
+ async restore(key: string, request: ISdkRequestOptions = {}): Promise<ContextChangeRecord<IFile>> {
110
+ const token = request.token || this.sdk.token;
111
+ const url = this.sdk.getUrl(RouteBuilder.trashRestore(key));
112
+ const result = await this.sdk.http.put(url.toString(), { token });
113
+ this.inspectCommonStatusCodes(result.status, result.body);
114
+ const E_PREFIX = 'Unable to restore from trash. ';
115
+ if (result.status !== 204) {
116
+ this.logInvalidResponse(result);
117
+ let e = this.createGenericSdkError(result.body)
118
+ if (!e) {
119
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
120
+ e.response = result.body;
121
+ }
122
+ throw e;
123
+ }
124
+ if (!result.body) {
125
+ throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
126
+ }
127
+ let data: ContextChangeRecord<IFile>;
128
+ try {
129
+ data = JSON.parse(result.body);
130
+ } catch (e) {
131
+ throw new Error(`${E_PREFIX}${E_INVALID_JSON}.`);
132
+ }
133
+ if (!data.key) {
134
+ throw new Error(`${E_PREFIX}${E_RESPONSE_UNKNOWN}.`);
135
+ }
136
+ return data;
137
+ }
138
+
139
+ /**
140
+ * Empties the trash for the given space.
141
+ * @param space The space key to remove trash for.
142
+ */
143
+ async empty(space: string, request: ISdkRequestOptions = {}): Promise<void> {
144
+ const token = request.token || this.sdk.token;
145
+ const url = this.sdk.getUrl(RouteBuilder.trashEmpty(space));
146
+ const result = await this.sdk.http.delete(url.toString(), { token });
147
+ this.inspectCommonStatusCodes(result.status, result.body);
148
+ const E_PREFIX = 'Unable to empty trash. ';
149
+ if (result.status !== 204) {
150
+ this.logInvalidResponse(result);
151
+ let e = this.createGenericSdkError(result.body)
152
+ if (!e) {
153
+ e = new SdkError(`${E_PREFIX}${E_RESPONSE_STATUS}${result.status}`, result.status);
154
+ e.response = result.body;
155
+ }
156
+ throw e;
157
+ }
158
+ }
159
+ }
@@ -1,7 +1,7 @@
1
1
  import { SdkBase, E_RESPONSE_STATUS, E_RESPONSE_NO_VALUE, E_INVALID_JSON, E_RESPONSE_UNKNOWN, ISdkRequestOptions } from './SdkBase.js';
2
2
  import { RouteBuilder } from './RouteBuilder.js';
3
- import { IListOptions, IListResponse } from '../../models/store/Backend.js';
4
3
  import { IUser } from '../../models/store/User.js';
4
+ import { ContextListResult, ContextListOptions } from '../../events/BaseEvents.js';
5
5
 
6
6
  export class UsersSdk extends SdkBase {
7
7
  /**
@@ -39,7 +39,7 @@ export class UsersSdk extends SdkBase {
39
39
  * @param options Optional query options.
40
40
  * @param request Optional request options.
41
41
  */
42
- async list(options?: IListOptions, request: ISdkRequestOptions = {}): Promise<IListResponse<IUser>> {
42
+ async list(options?: ContextListOptions, request: ISdkRequestOptions = {}): Promise<ContextListResult<IUser>> {
43
43
  const token = request.token || this.sdk.token;
44
44
  const url = this.sdk.getUrl(RouteBuilder.users());
45
45
  this.sdk.appendListOptions(url, options);
@@ -53,7 +53,7 @@ export class UsersSdk extends SdkBase {
53
53
  if (!result.body) {
54
54
  throw new Error(`${E_PREFIX}${E_RESPONSE_NO_VALUE}`);
55
55
  }
56
- let data: IListResponse<IUser>;
56
+ let data: ContextListResult<IUser>;
57
57
  try {
58
58
  data = JSON.parse(result.body);
59
59
  } catch (e) {
@@ -0,0 +1,39 @@
1
+ import { Certificates } from "./Certificates.js";
2
+ import { Files } from "./Files.js";
3
+ import { History } from "./History.js";
4
+ import { Media } from "./Media.js";
5
+ import { Revisions } from "./Revisions.js";
6
+ import { Spaces } from "./Spaces.js";
7
+ import { Trash } from "./Trash.js";
8
+
9
+ /**
10
+ * A base class to define access to the API Client store.
11
+ * This is used by particular store implementation (like IDB or net-store).
12
+ */
13
+ export interface ApiClientStore {
14
+ /**
15
+ * The current space.
16
+ * The bindings will fill up workspace key information when needed.
17
+ * This way the events won't need to contain this information.
18
+ */
19
+ space?: string;
20
+
21
+ /**
22
+ * Initializes the store.
23
+ */
24
+ initializeStore(): Promise<void>;
25
+
26
+ history: History;
27
+
28
+ spaces: Spaces;
29
+
30
+ certificates: Certificates;
31
+
32
+ trash: Trash;
33
+
34
+ revisions: Revisions;
35
+
36
+ media: Media;
37
+
38
+ files: Files;
39
+ }
@@ -0,0 +1,56 @@
1
+ import { HttpCertificate } from "../../../models/ClientCertificate.js";
2
+ import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, ContextSpaceListOptions, IBulkOperationResult } from "../../../events/BaseEvents.js";
3
+
4
+ /**
5
+ * A store for the client certificates.
6
+ * This just keeps record of removed files. File location does not change.
7
+ */
8
+ export interface Certificates {
9
+ /**
10
+ * Inserts a certificate to the store
11
+ *
12
+ * @param value The value to insert.
13
+ * @param space The parent space of the certificate.
14
+ */
15
+ add(value: HttpCertificate, space: string): Promise<ContextChangeRecord<HttpCertificate>>;
16
+
17
+ /**
18
+ * Adds certificates in a bulk operation.
19
+ * @param value The lits of certificates to add.
20
+ * @param space The parent workspace
21
+ * @returns The list of inserted certificates. `undefined` when there was an error inserting a certificate.
22
+ */
23
+ addBulk(values: HttpCertificate[], space: string): Promise<IBulkOperationResult<ContextChangeRecord<HttpCertificate>>>;
24
+
25
+ /**
26
+ * @param key The key of the certificate to read.
27
+ */
28
+ read(key: string): Promise<HttpCertificate>;
29
+
30
+ /**
31
+ * Lists certificate entires.
32
+ *
33
+ * @param space The parent space of the certificate.
34
+ * @param options The list query options.
35
+ */
36
+ list(options?: ContextSpaceListOptions): Promise<ContextListResult<HttpCertificate>>;
37
+
38
+ /**
39
+ * Marks the certificate as deleted.
40
+ *
41
+ * @param key The key of the certificate to delete.
42
+ */
43
+ delete(key: string): Promise<ContextDeleteRecord>;
44
+
45
+ /**
46
+ * Removed certificates in a bulk operation.
47
+ * @param keys The list of certificate keys to delete.
48
+ */
49
+ deleteBulk(keys: string[]): Promise<IBulkOperationResult<ContextDeleteRecord>>;
50
+
51
+ /**
52
+ * Removes all certificates from the store for the given workspace.
53
+ * @param space The parent workspace key
54
+ */
55
+ empty(space: string): Promise<void>;
56
+ }
@@ -0,0 +1,70 @@
1
+ import { IFile, FileAddOptions, FileBreadcrumb } from '../../../models/store/File.js';
2
+ import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, ContextSpaceListOptions, IBulkOperationResult, IPatchInfo, IPatchRevision } from '../../../events/BaseEvents.js';
3
+
4
+ /**
5
+ * A store that stores file/folder metadata in a filesystem like structure.
6
+ *
7
+ * In API Client the `space` is a parent for all data kept in the application.
8
+ */
9
+ export interface Files {
10
+ /**
11
+ * Lists files in a space.
12
+ * @param options Query options. It must include `space`.
13
+ * @param kinds Optionally, lists the files with the listed kinds.
14
+ */
15
+ list(options: ContextSpaceListOptions, kinds?: string[]): Promise<ContextListResult<IFile>>;
16
+
17
+ /**
18
+ * Adds a new file to the store. Note, this throws an error when a file already exists.
19
+ *
20
+ * @param input The file to add.
21
+ * @param space The id of the parent space.
22
+ * @param opts The file add options.
23
+ */
24
+ add(input: IFile, space: string, opts?: FileAddOptions): Promise<ContextChangeRecord<IFile>>;
25
+
26
+ /**
27
+ * Reads a file meta from the store.
28
+ * It throws when the file does not exist or was deleted.
29
+ *
30
+ * @param key The id of the file to read the metadata for.
31
+ */
32
+ read(key: string): Promise<IFile>;
33
+
34
+ /**
35
+ * Reads multiple files in a single call.
36
+ * Unlike the `read()` method, this does not throw when a file is not found or deleted.
37
+ * When the file is missing it inserts `undefined` or `null` in the resulting array at the index
38
+ * of the missing key.
39
+ *
40
+ * Note, this returns `undefined` when directly querying the store but it may return `null` when
41
+ * structured clone algorithm is used between the application and the database.
42
+ *
43
+ * @param keys The list of keys to read
44
+ */
45
+ readBulk(keys: string[]): Promise<IBulkOperationResult<IFile>>;
46
+
47
+ /**
48
+ * Marks file as deleted.
49
+ * Files are not deleted by using this method. They are marked as deleted and later ignored
50
+ * by most of the API.
51
+ *
52
+ * @param key The database id of the file to remove.
53
+ */
54
+ delete(key: string): Promise<ContextDeleteRecord>;
55
+
56
+ /**
57
+ * This is the preferred way to update a file metadata. It allows to apply a reversible patch
58
+ * to the file and reverse it on demand.
59
+ *
60
+ * @param key The datastore id of the file to patch
61
+ * @param info The patch to apply.
62
+ */
63
+ patch(key: string, info: IPatchInfo): Promise<IPatchRevision>;
64
+
65
+ /**
66
+ * Lists breadcrumbs to the file.
67
+ * @param key The lowest file in the hierarchy
68
+ */
69
+ breadcrumbs(key: string): Promise<ContextListResult<FileBreadcrumb>>;
70
+ }
@@ -0,0 +1,64 @@
1
+ import { ContextChangeRecord, ContextDeleteRecord, ContextListResult, HistoryListOptions, IBulkOperationResult } from "../../../events/BaseEvents.js";
2
+ import { IHttpHistory, IHttpHistoryBulkAdd } from "../../../models/HttpHistory.js";
3
+
4
+ /**
5
+ * A store for the HTTP requests history.
6
+ */
7
+ export interface History {
8
+ /**
9
+ * Adds a history object to the store.
10
+ *
11
+ * @param history The history object
12
+ * @param space The parent space key
13
+ */
14
+ add(item: IHttpHistory): Promise<ContextChangeRecord<IHttpHistory>>;
15
+ /**
16
+ * Adds history in a bulk operation.
17
+ * @param info The bulk add operation schema.
18
+ * @param space The parent space key
19
+ */
20
+ addBulk(info: IHttpHistoryBulkAdd): Promise<IBulkOperationResult<ContextChangeRecord<IHttpHistory>>>;
21
+ /**
22
+ * Lists the history data.
23
+ * @param space The parent space key
24
+ * @param options List options
25
+ */
26
+ list(options?: HistoryListOptions): Promise<ContextListResult<IHttpHistory>>;
27
+ /**
28
+ * Marks the data as deleted. It also removes the data from the indexes.
29
+ * Only the owner can delete the history object. This may change in the future.
30
+ *
31
+ * @param key The history object key to delete. This is an URL-encoded key.
32
+ */
33
+ delete(key: string): Promise<ContextDeleteRecord>;
34
+ /**
35
+ * Deletes a history in a bulk operation.
36
+ * @param keys The list of history keys to delete. This is base64url encoded keys
37
+ */
38
+ deleteBulk(keys: string[]): Promise<IBulkOperationResult<ContextDeleteRecord>>;
39
+ /**
40
+ * Reads a history item.
41
+ *
42
+ * @param key The key of the history object to read.
43
+ */
44
+ read(key: string): Promise<IHttpHistory>;
45
+ /**
46
+ * Clears the datastore from history for a space.
47
+ *
48
+ * @param space The parent space key
49
+ */
50
+ clearSpace(space: string): Promise<void>;
51
+ /**
52
+ * Clears all history from a project
53
+ *
54
+ * @param project The parent project key
55
+ */
56
+ clearProject(project: string): Promise<void>;
57
+ /**
58
+ * Clears all history from a request
59
+ *
60
+ * @param project The parent project key
61
+ * @param request The parent request key
62
+ */
63
+ clearRequest(project: string, request: string): Promise<void>;
64
+ }
@@ -0,0 +1,46 @@
1
+ import { IPatchInfo, IPatchRevision } from "../../../events/BaseEvents.js";
2
+ import { MediaReadOptions } from "../../../models/store/File.js";
3
+
4
+ /**
5
+ * A media is the contents of a File.
6
+ * Keys are the same as for a file but kept in a different namespace.
7
+ *
8
+ * Note, this class does not check for space dependency. This should be done when requesting a file, not contents.
9
+ */
10
+ export interface Media {
11
+ /**
12
+ * Creates / re-creates file contents.
13
+ *
14
+ * @param key The datastore id of the file to create/update the contents for.
15
+ * @param contents The contents to store.
16
+ * @param mime The content mime type. Used for (de)serialization.
17
+ * @param allowOverwrite Whether overwriting is permitted. When not then in throws an error when trying to re-create a file.
18
+ */
19
+ add(key: string, contents: unknown, mime: string, allowOverwrite: boolean): Promise<void>;
20
+
21
+ /**
22
+ * Reads file contents.
23
+ * @param key The datastore key of the file
24
+ * @param opts Read options.
25
+ */
26
+ read(key: string, opts?: MediaReadOptions): Promise<unknown>;
27
+
28
+ /**
29
+ * Deletes file contents.
30
+ * Note, this won't broadcast the delete event as this is done by the `files?alt=meta`.
31
+ *
32
+ * @param key The file key to delete.
33
+ */
34
+ delete(key: string): Promise<void>;
35
+
36
+ /**
37
+ * This is the preferred way to update a file contents.
38
+ *
39
+ * Note, the broadcast event will most likely contain the `kind` of the **file** metadata and not content's.
40
+ * The media has no concept of a `kind` as it may store any data.
41
+ *
42
+ * @param key The datastore key of the file to patch
43
+ * @param info The patch to apply.
44
+ */
45
+ patch(key: string, info: IPatchInfo): Promise<IPatchRevision>;
46
+ }
@@ -0,0 +1,27 @@
1
+ import { IRevision } from "../../../models/store/Revision.js";
2
+ import { ContextListResult, ContextSpaceListOptions } from "../../../events/BaseEvents.js";
3
+ import { JsonPatch } from "@api-client/json";
4
+
5
+ /**
6
+ * A store to keep revision data for a file.
7
+ * This only stores revision data for file contents, not metadata.
8
+ */
9
+ export interface Revisions {
10
+ /**
11
+ * Lists revisions for a single file.
12
+ *
13
+ * @param key The id of the file to lists revisions for.
14
+ * @param options The list query options
15
+ */
16
+ list(key: string, options: ContextSpaceListOptions): Promise<ContextListResult<IRevision>>;
17
+
18
+ /**
19
+ * Creates a new revision for a file contents.
20
+ *
21
+ * @param key The datastore id of the file
22
+ * @param space The parent space
23
+ * @param kind The kind of the file that was patched
24
+ * @param patch The applied patch.
25
+ */
26
+ add(key: string, space: string, kind: string, patch: JsonPatch): Promise<IRevision>;
27
+ }
@@ -0,0 +1,48 @@
1
+ import { ISpace } from "../../../models/Space.js";
2
+ import { ContextListResult, ContextListOptions, ContextDeleteRecord, ContextChangeRecord } from "../../../events/BaseEvents.js";
3
+
4
+ /**
5
+ * A store that keeps a list of spaces created in the application.
6
+ */
7
+ export interface Spaces {
8
+ /**
9
+ * Lists spaces created by the user.
10
+ * @param options The list query options
11
+ */
12
+ list(options?: ContextListOptions): Promise<ContextListResult<ISpace>>;
13
+
14
+ /**
15
+ * Creates a space from the name.
16
+ *
17
+ * @param name The name of the space to create
18
+ */
19
+ add(name: string): Promise<ContextChangeRecord<ISpace>>;
20
+
21
+ /**
22
+ * Creates a space from a space definition.
23
+ * @param space The space definition.
24
+ */
25
+ add(space: ISpace): Promise<ContextChangeRecord<ISpace>>;
26
+
27
+ /**
28
+ * Creates a space from a name or a definition.
29
+ *
30
+ * @param nameOrObject The space name or definition.
31
+ */
32
+ add(nameOrObject: string | ISpace): Promise<ContextChangeRecord<ISpace>>;
33
+
34
+ /**
35
+ * Reads a single space from the store.
36
+ * @param key The key of the space to read.
37
+ */
38
+ read(key: string): Promise<ISpace>;
39
+
40
+ /**
41
+ * Marks space as deleted.
42
+ * Note, this does not remove any data from the store. It marks the space as deleted
43
+ * and then the space is ignored by most of the API.
44
+ *
45
+ * @param key The key of the space to delete.
46
+ */
47
+ delete(key: string): Promise<ContextDeleteRecord>;
48
+ }