@neuralinnovations/dataisland-sdk 0.0.1-dev1 → 0.0.1-dev11

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 (276) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +174 -1
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/package.json +98 -0
  8. package/dist/src/appBuilder.d.ts +44 -0
  9. package/dist/src/appBuilder.d.ts.map +1 -0
  10. package/dist/src/appBuilder.js +10 -0
  11. package/dist/src/appBuilder.js.map +1 -0
  12. package/dist/src/commands/startCommandHandler.d.ts +7 -0
  13. package/dist/src/commands/startCommandHandler.d.ts.map +1 -0
  14. package/dist/src/commands/startCommandHandler.js +17 -0
  15. package/dist/src/commands/startCommandHandler.js.map +1 -0
  16. package/dist/src/context.d.ts +23 -0
  17. package/dist/src/context.d.ts.map +1 -0
  18. package/dist/src/context.js +31 -0
  19. package/dist/src/context.js.map +1 -0
  20. package/dist/src/credentials.d.ts +28 -0
  21. package/dist/src/credentials.d.ts.map +1 -0
  22. package/dist/src/credentials.js +70 -0
  23. package/dist/src/credentials.js.map +1 -0
  24. package/dist/src/dataIslandApp.d.ts +50 -0
  25. package/dist/src/dataIslandApp.d.ts.map +1 -0
  26. package/dist/src/dataIslandApp.js +10 -0
  27. package/dist/src/dataIslandApp.js.map +1 -0
  28. package/dist/src/disposable.d.ts +84 -0
  29. package/dist/src/disposable.d.ts.map +1 -0
  30. package/dist/src/disposable.js +140 -0
  31. package/dist/src/disposable.js.map +1 -0
  32. package/dist/src/dto/accessGroupResponse.d.ts +27 -0
  33. package/dist/src/dto/accessGroupResponse.d.ts.map +1 -0
  34. package/dist/src/dto/accessGroupResponse.js +3 -0
  35. package/dist/src/dto/accessGroupResponse.js.map +1 -0
  36. package/dist/src/dto/chatResponse.d.ts +78 -0
  37. package/dist/src/dto/chatResponse.d.ts.map +1 -0
  38. package/dist/src/dto/chatResponse.js +45 -0
  39. package/dist/src/dto/chatResponse.js.map +1 -0
  40. package/dist/src/dto/userInfoResponse.d.ts +40 -0
  41. package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
  42. package/dist/src/dto/userInfoResponse.js +3 -0
  43. package/dist/src/dto/userInfoResponse.js.map +1 -0
  44. package/dist/src/dto/workspacesResponse.d.ts +43 -0
  45. package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
  46. package/dist/src/dto/workspacesResponse.js +3 -0
  47. package/dist/src/dto/workspacesResponse.js.map +1 -0
  48. package/dist/src/events.d.ts +17 -0
  49. package/dist/src/events.d.ts.map +1 -0
  50. package/dist/src/events.js +52 -0
  51. package/dist/src/events.js.map +1 -0
  52. package/dist/src/index.d.ts +56 -0
  53. package/dist/src/index.d.ts.map +1 -0
  54. package/dist/src/index.js +89 -0
  55. package/dist/src/index.js.map +1 -0
  56. package/dist/src/internal/app.impl.d.ts +28 -0
  57. package/dist/src/internal/app.impl.d.ts.map +1 -0
  58. package/dist/src/internal/app.impl.js +151 -0
  59. package/dist/src/internal/app.impl.js.map +1 -0
  60. package/dist/src/internal/appBuilder.impl.d.ts +27 -0
  61. package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
  62. package/dist/src/internal/appBuilder.impl.js +71 -0
  63. package/dist/src/internal/appBuilder.impl.js.map +1 -0
  64. package/dist/src/internal/createApp.impl.d.ts +4 -0
  65. package/dist/src/internal/createApp.impl.d.ts.map +1 -0
  66. package/dist/src/internal/createApp.impl.js +11 -0
  67. package/dist/src/internal/createApp.impl.js.map +1 -0
  68. package/dist/src/internal/registry.d.ts +22 -0
  69. package/dist/src/internal/registry.d.ts.map +1 -0
  70. package/dist/src/internal/registry.js +69 -0
  71. package/dist/src/internal/registry.js.map +1 -0
  72. package/dist/src/middleware.d.ts +5 -0
  73. package/dist/src/middleware.d.ts.map +1 -0
  74. package/dist/src/middleware.js +3 -0
  75. package/dist/src/middleware.js.map +1 -0
  76. package/dist/src/services/commandService.d.ts +18 -0
  77. package/dist/src/services/commandService.d.ts.map +1 -0
  78. package/dist/src/services/commandService.js +40 -0
  79. package/dist/src/services/commandService.js.map +1 -0
  80. package/dist/src/services/credentialService.d.ts +9 -0
  81. package/dist/src/services/credentialService.d.ts.map +1 -0
  82. package/dist/src/services/credentialService.js +26 -0
  83. package/dist/src/services/credentialService.js.map +1 -0
  84. package/dist/src/services/middlewareService.d.ts +9 -0
  85. package/dist/src/services/middlewareService.d.ts.map +1 -0
  86. package/dist/src/services/middlewareService.js +34 -0
  87. package/dist/src/services/middlewareService.js.map +1 -0
  88. package/dist/src/services/organizationService.d.ts +10 -0
  89. package/dist/src/services/organizationService.d.ts.map +1 -0
  90. package/dist/src/services/organizationService.js +19 -0
  91. package/dist/src/services/organizationService.js.map +1 -0
  92. package/dist/src/services/requestBuilder.d.ts +17 -0
  93. package/dist/src/services/requestBuilder.d.ts.map +1 -0
  94. package/dist/src/services/requestBuilder.js +104 -0
  95. package/dist/src/services/requestBuilder.js.map +1 -0
  96. package/dist/src/services/responseUtils.d.ts +6 -0
  97. package/dist/src/services/responseUtils.d.ts.map +1 -0
  98. package/dist/src/services/responseUtils.js +32 -0
  99. package/dist/src/services/responseUtils.js.map +1 -0
  100. package/dist/src/services/rpcService.d.ts +77 -0
  101. package/dist/src/services/rpcService.d.ts.map +1 -0
  102. package/dist/src/services/rpcService.js +125 -0
  103. package/dist/src/services/rpcService.js.map +1 -0
  104. package/dist/src/services/service.d.ts +21 -0
  105. package/dist/src/services/service.d.ts.map +1 -0
  106. package/dist/src/services/service.js +41 -0
  107. package/dist/src/services/service.js.map +1 -0
  108. package/dist/src/services/userProfileService.d.ts +8 -0
  109. package/dist/src/services/userProfileService.d.ts.map +1 -0
  110. package/dist/src/services/userProfileService.js +32 -0
  111. package/dist/src/services/userProfileService.js.map +1 -0
  112. package/dist/src/storages/chats/answer.d.ts +30 -0
  113. package/dist/src/storages/chats/answer.d.ts.map +1 -0
  114. package/dist/src/storages/chats/answer.impl.d.ts +23 -0
  115. package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
  116. package/dist/src/storages/chats/answer.impl.js +110 -0
  117. package/dist/src/storages/chats/answer.impl.js.map +1 -0
  118. package/dist/src/storages/chats/answer.js +7 -0
  119. package/dist/src/storages/chats/answer.js.map +1 -0
  120. package/dist/src/storages/chats/chat.d.ts +30 -0
  121. package/dist/src/storages/chats/chat.d.ts.map +1 -0
  122. package/dist/src/storages/chats/chat.impl.d.ts +22 -0
  123. package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
  124. package/dist/src/storages/chats/chat.impl.js +67 -0
  125. package/dist/src/storages/chats/chat.impl.js.map +1 -0
  126. package/dist/src/storages/chats/chat.js +12 -0
  127. package/dist/src/storages/chats/chat.js.map +1 -0
  128. package/dist/src/storages/chats/chats.d.ts +40 -0
  129. package/dist/src/storages/chats/chats.d.ts.map +1 -0
  130. package/dist/src/storages/chats/chats.impl.d.ts +18 -0
  131. package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
  132. package/dist/src/storages/chats/chats.impl.js +102 -0
  133. package/dist/src/storages/chats/chats.impl.js.map +1 -0
  134. package/dist/src/storages/chats/chats.js +16 -0
  135. package/dist/src/storages/chats/chats.js.map +1 -0
  136. package/dist/src/storages/files/file.d.ts +24 -0
  137. package/dist/src/storages/files/file.d.ts.map +1 -0
  138. package/dist/src/storages/files/file.impl.d.ts +18 -0
  139. package/dist/src/storages/files/file.impl.d.ts.map +1 -0
  140. package/dist/src/storages/files/file.impl.js +52 -0
  141. package/dist/src/storages/files/file.impl.js.map +1 -0
  142. package/dist/src/storages/files/file.js +10 -0
  143. package/dist/src/storages/files/file.js.map +1 -0
  144. package/dist/src/storages/files/files.d.ts +33 -0
  145. package/dist/src/storages/files/files.d.ts.map +1 -0
  146. package/dist/src/storages/files/files.impl.d.ts +33 -0
  147. package/dist/src/storages/files/files.impl.d.ts.map +1 -0
  148. package/dist/src/storages/files/files.impl.js +159 -0
  149. package/dist/src/storages/files/files.impl.js.map +1 -0
  150. package/dist/src/storages/files/files.js +19 -0
  151. package/dist/src/storages/files/files.js.map +1 -0
  152. package/dist/src/storages/files/filesPage.d.ts +23 -0
  153. package/dist/src/storages/files/filesPage.d.ts.map +1 -0
  154. package/dist/src/storages/files/filesPage.js +10 -0
  155. package/dist/src/storages/files/filesPage.js.map +1 -0
  156. package/dist/src/storages/groups/groups.d.ts +87 -0
  157. package/dist/src/storages/groups/groups.d.ts.map +1 -0
  158. package/dist/src/storages/groups/groups.impl.d.ts +55 -0
  159. package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
  160. package/dist/src/storages/groups/groups.impl.js +245 -0
  161. package/dist/src/storages/groups/groups.impl.js.map +1 -0
  162. package/dist/src/storages/groups/groups.js +26 -0
  163. package/dist/src/storages/groups/groups.js.map +1 -0
  164. package/dist/src/storages/organizations/organization.d.ts +38 -0
  165. package/dist/src/storages/organizations/organization.d.ts.map +1 -0
  166. package/dist/src/storages/organizations/organization.impl.d.ts +30 -0
  167. package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
  168. package/dist/src/storages/organizations/organization.impl.js +71 -0
  169. package/dist/src/storages/organizations/organization.impl.js.map +1 -0
  170. package/dist/src/storages/organizations/organization.js +10 -0
  171. package/dist/src/storages/organizations/organization.js.map +1 -0
  172. package/dist/src/storages/organizations/organizations.d.ts +46 -0
  173. package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
  174. package/dist/src/storages/organizations/organizations.impl.d.ts +38 -0
  175. package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
  176. package/dist/src/storages/organizations/organizations.impl.js +151 -0
  177. package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
  178. package/dist/src/storages/organizations/organizations.js +20 -0
  179. package/dist/src/storages/organizations/organizations.js.map +1 -0
  180. package/dist/src/storages/user/userProfile.d.ts +32 -0
  181. package/dist/src/storages/user/userProfile.d.ts.map +1 -0
  182. package/dist/src/storages/user/userProfile.impl.d.ts +13 -0
  183. package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
  184. package/dist/src/storages/user/userProfile.impl.js +51 -0
  185. package/dist/src/storages/user/userProfile.impl.js.map +1 -0
  186. package/dist/src/storages/user/userProfile.js +12 -0
  187. package/dist/src/storages/user/userProfile.js.map +1 -0
  188. package/dist/src/storages/workspaces/workspace.d.ts +40 -0
  189. package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
  190. package/dist/src/storages/workspaces/workspace.impl.d.ts +22 -0
  191. package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
  192. package/dist/src/storages/workspaces/workspace.impl.js +87 -0
  193. package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
  194. package/dist/src/storages/workspaces/workspace.js +18 -0
  195. package/dist/src/storages/workspaces/workspace.js.map +1 -0
  196. package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
  197. package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
  198. package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
  199. package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
  200. package/dist/src/storages/workspaces/workspaces.impl.js +157 -0
  201. package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
  202. package/dist/src/storages/workspaces/workspaces.js +19 -0
  203. package/dist/src/storages/workspaces/workspaces.js.map +1 -0
  204. package/dist/src/unitTest.d.ts +12 -0
  205. package/dist/src/unitTest.d.ts.map +1 -0
  206. package/dist/src/unitTest.js +44 -0
  207. package/dist/src/unitTest.js.map +1 -0
  208. package/index.d.ts +1 -0
  209. package/index.js +1 -0
  210. package/package.json +41 -3
  211. package/src/appBuilder.ts +24 -5
  212. package/src/commands/startCommandHandler.ts +14 -0
  213. package/src/context.ts +32 -0
  214. package/src/credentials.ts +31 -9
  215. package/src/dataIslandApp.ts +59 -0
  216. package/src/disposable.ts +4 -5
  217. package/src/dto/accessGroupResponse.ts +35 -0
  218. package/src/dto/chatResponse.ts +103 -0
  219. package/src/dto/userInfoResponse.ts +47 -0
  220. package/src/dto/workspacesResponse.ts +49 -0
  221. package/src/events.ts +13 -17
  222. package/src/index.ts +44 -18
  223. package/src/internal/app.impl.ts +97 -32
  224. package/src/internal/appBuilder.impl.ts +39 -12
  225. package/src/internal/createApp.impl.ts +5 -5
  226. package/src/middleware.ts +1 -1
  227. package/src/services/commandService.ts +44 -0
  228. package/src/services/credentialService.ts +3 -3
  229. package/src/services/middlewareService.ts +8 -6
  230. package/src/services/organizationService.ts +28 -0
  231. package/src/services/requestBuilder.ts +127 -0
  232. package/src/services/responseUtils.ts +32 -0
  233. package/src/services/rpcService.ts +129 -52
  234. package/src/services/service.ts +10 -8
  235. package/src/services/userProfileService.ts +38 -0
  236. package/src/storages/chats/answer.impl.ts +163 -0
  237. package/src/storages/chats/answer.ts +42 -0
  238. package/src/storages/chats/chat.impl.ts +87 -0
  239. package/src/storages/chats/chat.ts +38 -0
  240. package/src/storages/chats/chats.impl.ts +142 -0
  241. package/src/storages/chats/chats.ts +47 -0
  242. package/src/storages/files/file.impl.ts +69 -0
  243. package/src/storages/files/file.ts +28 -0
  244. package/src/storages/files/files.impl.ts +213 -0
  245. package/src/storages/files/files.ts +38 -0
  246. package/src/storages/files/filesPage.ts +27 -0
  247. package/src/storages/groups/groups.impl.ts +326 -0
  248. package/src/storages/groups/groups.ts +101 -0
  249. package/src/storages/organizations/organization.impl.ts +95 -0
  250. package/src/storages/organizations/organization.ts +44 -0
  251. package/src/storages/organizations/organizations.impl.ts +197 -0
  252. package/src/storages/organizations/organizations.ts +56 -0
  253. package/src/storages/user/userProfile.impl.ts +56 -0
  254. package/src/storages/user/userProfile.ts +42 -0
  255. package/src/storages/workspaces/workspace.impl.ts +109 -0
  256. package/src/storages/workspaces/workspace.ts +49 -0
  257. package/src/storages/workspaces/workspaces.impl.ts +212 -0
  258. package/src/storages/workspaces/workspaces.ts +53 -0
  259. package/src/unitTest.ts +53 -0
  260. package/.browserslistrc +0 -5
  261. package/.editorconfig +0 -22
  262. package/.eslintrc.json +0 -44
  263. package/.github/workflows/publish-npm.yml +0 -28
  264. package/.prettierignore +0 -1
  265. package/.prettierrc +0 -11
  266. package/.yarnrc +0 -2
  267. package/babel.config.js +0 -6
  268. package/jest.config.ts +0 -199
  269. package/src/appSdk.ts +0 -40
  270. package/src/internal/context.ts +0 -13
  271. package/src/types.ts +0 -110
  272. package/test/disposable.test.ts +0 -39
  273. package/test/events.test.ts +0 -151
  274. package/test/index.test.ts +0 -83
  275. package/test/registry.test.ts +0 -44
  276. package/tsconfig.json +0 -31
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkspacesImpl = void 0;
4
+ const workspaces_1 = require("./workspaces");
5
+ const workspace_impl_1 = require("./workspace.impl");
6
+ const rpcService_1 = require("../../services/rpcService");
7
+ const responseUtils_1 = require("../../services/responseUtils");
8
+ class WorkspacesImpl extends workspaces_1.Workspaces {
9
+ constructor(organization, context) {
10
+ super();
11
+ this.organization = organization;
12
+ this.context = context;
13
+ this._workspaces = [];
14
+ }
15
+ get collection() {
16
+ return this._workspaces;
17
+ }
18
+ get(id) {
19
+ return this.tryGet(id);
20
+ }
21
+ tryGet(id) {
22
+ return this._workspaces.find(workspace => workspace.id === id);
23
+ }
24
+ contains(id) {
25
+ return this._workspaces.find(workspace => workspace.id === id) !== undefined;
26
+ }
27
+ /**
28
+ * Create workspace.
29
+ * @param name
30
+ * @param description
31
+ * @param regulation
32
+ */
33
+ async create(name, description, regulation) {
34
+ var _a, _b, _c, _d;
35
+ if (name === undefined || name === null || name.trim() === "") {
36
+ throw new Error("Name is required, must be not empty");
37
+ }
38
+ if (description === undefined ||
39
+ description === null ||
40
+ description.trim() === "") {
41
+ throw new Error("Description is required, must be not empty");
42
+ }
43
+ if (regulation) {
44
+ if (regulation.isCreateNewGroup === undefined ||
45
+ regulation.isCreateNewGroup === null) {
46
+ throw new Error("isCreateNewGroup is required, must be not empty");
47
+ }
48
+ if (regulation.newGroupName === undefined ||
49
+ regulation.newGroupName === null ||
50
+ regulation.newGroupName.trim() === "") {
51
+ throw new Error("newGroupName is required, must be not empty");
52
+ }
53
+ if (regulation.groupIds === undefined ||
54
+ regulation.groupIds === null ||
55
+ regulation.groupIds.length === 0) {
56
+ throw new Error("groupIds is required, must be not empty");
57
+ }
58
+ }
59
+ // send create request to the server
60
+ const response = await ((_a = this.context
61
+ .resolve(rpcService_1.RpcService)) === null || _a === void 0 ? void 0 : _a.requestBuilder("api/v1/Workspaces").sendPostJson({
62
+ organizationId: this.organization.id,
63
+ profile: {
64
+ name: name,
65
+ description: description
66
+ },
67
+ regulation: {
68
+ isCreateNewGroup: (_b = regulation === null || regulation === void 0 ? void 0 : regulation.isCreateNewGroup) !== null && _b !== void 0 ? _b : false,
69
+ newGroupName: (_c = regulation === null || regulation === void 0 ? void 0 : regulation.newGroupName) !== null && _c !== void 0 ? _c : "",
70
+ groupIds: (_d = regulation === null || regulation === void 0 ? void 0 : regulation.groupIds) !== null && _d !== void 0 ? _d : []
71
+ }
72
+ }));
73
+ // check response status
74
+ if (responseUtils_1.ResponseUtils.isFail(response)) {
75
+ await responseUtils_1.ResponseUtils.throwError(`Failed to create workspace, in organization: ${this.organization.id}`, response);
76
+ }
77
+ // parse workspace from the server's response
78
+ const content = (await response.json()).workspace;
79
+ // create workspace implementation
80
+ const workspace = new workspace_impl_1.WorkspaceImpl(this.organization, this.context);
81
+ await workspace.initFrom(content);
82
+ // add workspace to the collection
83
+ this._workspaces.push(workspace);
84
+ // dispatch event
85
+ this.dispatch({
86
+ type: workspaces_1.WorkspacesEvent.ADDED,
87
+ data: workspace
88
+ });
89
+ return workspace;
90
+ }
91
+ /**
92
+ * Delete workspace.
93
+ * @param id
94
+ */
95
+ async delete(id) {
96
+ var _a;
97
+ // get workspace by id
98
+ const workspace = this.tryGet(id);
99
+ // check if workspace is found
100
+ if (!workspace) {
101
+ throw new Error(`Workspace ${id} is not found`);
102
+ }
103
+ // check if workspace is already marked as deleted
104
+ if (workspace.isMarkAsDeleted) {
105
+ throw new Error(`Workspace ${id} is already marked as deleted, in organization: ${this.organization.id}`);
106
+ }
107
+ // mark workspace as deleted
108
+ workspace.markToDelete();
109
+ // send delete request to the server
110
+ const response = await ((_a = this.context
111
+ .resolve(rpcService_1.RpcService)) === null || _a === void 0 ? void 0 : _a.requestBuilder("api/v1/Workspaces").searchParam("id", id).sendDelete());
112
+ // check response status
113
+ if (responseUtils_1.ResponseUtils.isFail(response)) {
114
+ await responseUtils_1.ResponseUtils.throwError(`Failed to delete workspace: ${workspace.organization.name}/${workspace.name}:${id}, in organization: ${this.organization.id}`, response);
115
+ }
116
+ // remove workspace from the collection
117
+ const index = this._workspaces.indexOf(workspace);
118
+ if (index < 0) {
119
+ throw new Error(`Workspace ${id} is not found`);
120
+ }
121
+ this._workspaces.splice(index, 1);
122
+ // dispatch event
123
+ this.dispatch({
124
+ type: workspaces_1.WorkspacesEvent.REMOVED,
125
+ data: workspace
126
+ });
127
+ }
128
+ async initFrom(organizationId) {
129
+ var _a;
130
+ // init workspaces from the server's response
131
+ const response = await ((_a = this.context
132
+ .resolve(rpcService_1.RpcService)) === null || _a === void 0 ? void 0 : _a.requestBuilder("api/v1/Organizations").searchParam("id", organizationId).sendGet());
133
+ // check response status
134
+ if (responseUtils_1.ResponseUtils.isFail(response)) {
135
+ await responseUtils_1.ResponseUtils.throwError(`Failed to fetch workspaces in organization: ${organizationId}`, response);
136
+ }
137
+ // parse workspaces from the server's response
138
+ const workspaces = (await response.json())
139
+ .workspaces;
140
+ // init workspaces from the server's response
141
+ for (const workspace of workspaces) {
142
+ // create workspace implementation
143
+ const workspaceImpl = new workspace_impl_1.WorkspaceImpl(this.organization, this.context);
144
+ // init workspace from the server's response
145
+ await workspaceImpl.initFrom(workspace);
146
+ // add workspace to the collection
147
+ this._workspaces.push(workspaceImpl);
148
+ // dispatch event
149
+ this.dispatch({
150
+ type: workspaces_1.WorkspacesEvent.ADDED,
151
+ data: workspaceImpl
152
+ });
153
+ }
154
+ }
155
+ }
156
+ exports.WorkspacesImpl = WorkspacesImpl;
157
+ //# sourceMappingURL=workspaces.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.impl.js","sourceRoot":"","sources":["../../../../src/storages/workspaces/workspaces.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Workspaces = exports.WorkspacesEvent = void 0;
4
+ const events_1 = require("../../events");
5
+ /**
6
+ * Workspaces event.
7
+ */
8
+ var WorkspacesEvent;
9
+ (function (WorkspacesEvent) {
10
+ WorkspacesEvent["ADDED"] = "added";
11
+ WorkspacesEvent["REMOVED"] = "removed";
12
+ })(WorkspacesEvent || (exports.WorkspacesEvent = WorkspacesEvent = {}));
13
+ /**
14
+ * Organization's workspaces.
15
+ */
16
+ class Workspaces extends events_1.EventDispatcher {
17
+ }
18
+ exports.Workspaces = Workspaces;
19
+ //# sourceMappingURL=workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../../src/storages/workspaces/workspaces.ts"],"names":[],"mappings":";;;AAAA,yCAA8C;AAK9C;;GAEG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAED;;GAEG;AACH,MAAsB,UAAW,SAAQ,wBAGxC;CAiCA;AApCD,gCAoCC"}
@@ -0,0 +1,12 @@
1
+ export declare enum UnitTest {
2
+ DO_NOTHING = 0,
3
+ DO_NOT_START = 1,
4
+ DO_NOT_PRINT_INITIALIZED_LOG = 2,
5
+ DEFAULT = 3
6
+ }
7
+ export type UnitTestProfileSyncAction = () => void;
8
+ export type UnitTestProfileAsyncAction = () => Promise<void>;
9
+ export declare const appTest: (unitTest: UnitTest | undefined, func: UnitTestProfileSyncAction | UnitTestProfileAsyncAction) => Promise<void>;
10
+ export declare const appTestCurrent: () => UnitTest;
11
+ export declare const isUnitTest: (mask: UnitTest) => boolean;
12
+ //# sourceMappingURL=unitTest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unitTest.d.ts","sourceRoot":"","sources":["../../src/unitTest.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,UAAU,IAAI;IACd,YAAY,IAAS;IACrB,4BAA4B,IAAS;IAErC,OAAO,IAA8C;CACtD;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAA;AAClD,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AA8B5D,eAAO,MAAM,OAAO,yCAEZ,yBAAyB,GAAG,0BAA0B,KAC3D,QAAQ,IAAI,CAEd,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,QAEjC,CAAA;AAED,eAAO,MAAM,UAAU,SAAU,QAAQ,KAAG,OAE3C,CAAA"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnitTest = exports.appTestCurrent = exports.appTest = exports.UnitTest = void 0;
4
+ var UnitTest;
5
+ (function (UnitTest) {
6
+ UnitTest[UnitTest["DO_NOTHING"] = 0] = "DO_NOTHING";
7
+ UnitTest[UnitTest["DO_NOT_START"] = 1] = "DO_NOT_START";
8
+ UnitTest[UnitTest["DO_NOT_PRINT_INITIALIZED_LOG"] = 2] = "DO_NOT_PRINT_INITIALIZED_LOG";
9
+ UnitTest[UnitTest["DEFAULT"] = 3] = "DEFAULT";
10
+ })(UnitTest || (exports.UnitTest = UnitTest = {}));
11
+ class AppSdkUnitTest {
12
+ static get current() {
13
+ return this._stack[this._stack.length - 1];
14
+ }
15
+ static async test(unitTest = UnitTest.DEFAULT, func) {
16
+ this._stack.push(unitTest);
17
+ if (func) {
18
+ const result = func();
19
+ if (result) {
20
+ await result;
21
+ }
22
+ AppSdkUnitTest.end();
23
+ }
24
+ }
25
+ static end() {
26
+ if (this._stack.length > 1) {
27
+ this._stack.pop();
28
+ }
29
+ }
30
+ }
31
+ AppSdkUnitTest._stack = [UnitTest.DO_NOTHING];
32
+ const appTest = async (unitTest = UnitTest.DEFAULT, func) => {
33
+ await AppSdkUnitTest.test(unitTest, func);
34
+ };
35
+ exports.appTest = appTest;
36
+ const appTestCurrent = () => {
37
+ return AppSdkUnitTest.current;
38
+ };
39
+ exports.appTestCurrent = appTestCurrent;
40
+ const isUnitTest = (mask) => {
41
+ return (AppSdkUnitTest.current & mask) == mask;
42
+ };
43
+ exports.isUnitTest = isUnitTest;
44
+ //# sourceMappingURL=unitTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unitTest.js","sourceRoot":"","sources":["../../src/unitTest.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,mDAAc,CAAA;IACd,uDAAqB,CAAA;IACrB,uFAAqC,CAAA;IAErC,6CAAqD,CAAA;AACvD,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAKD,MAAM,cAAc;IAGX,MAAM,KAAK,OAAO;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,WAAqB,QAAQ,CAAC,OAAO,EACrC,IAA4D;QAE5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,IAAI,EAAE,CAAA;YACrB,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,CAAA;YACd,CAAC;YACD,cAAc,CAAC,GAAG,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAG;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;;AAxBc,qBAAM,GAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AA2BpD,MAAM,OAAO,GAAG,KAAK,EAC1B,WAAqB,QAAQ,CAAC,OAAO,EACrC,IAA4D,EAC7C,EAAE;IACjB,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC,CAAA;AALY,QAAA,OAAO,WAKnB;AAEM,MAAM,cAAc,GAAG,GAAa,EAAE;IAC3C,OAAO,cAAc,CAAC,OAAO,CAAA;AAC/B,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B;AAEM,MAAM,UAAU,GAAG,CAAC,IAAc,EAAW,EAAE;IACpD,OAAO,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAA;AAChD,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB"}
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/index"
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require("./src/index")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuralinnovations/dataisland-sdk",
3
- "version": "0.0.1-dev1",
3
+ "version": "0.0.1-dev11",
4
4
  "description": "SDK for DataIsland project",
5
5
  "licenses": [
6
6
  {
@@ -8,16 +8,52 @@
8
8
  "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
9
9
  }
10
10
  ],
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/NeuralInnovations/dataisland-client-js-sdk.git"
14
+ },
11
15
  "publishConfig": {
12
16
  "access": "public"
13
17
  },
18
+ "exports": {
19
+ ".": "./dist/dataisland-sdk.js"
20
+ },
21
+ "main": "dist/dataisland-sdk.js",
22
+ "types": "dist/dataisland-sdk.d.ts",
23
+ "browser": "dist/dataisland-sdk.js",
24
+ "directories": {
25
+ "test": "test"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "src",
30
+ "index.js",
31
+ "index.d.ts"
32
+ ],
33
+ "engines": {
34
+ "node": ">=16"
35
+ },
14
36
  "scripts": {
15
37
  "build": "tsc",
16
- "test": "jest",
17
- "lint": "eslint --ext .ts,.tsx src"
38
+ "test": "jest --runInBand",
39
+ "lint": "eslint --ext .ts,.tsx src test",
40
+ "lint:fix": "eslint --fix --ext .ts,.tsx src test",
41
+ "docs": "typedoc --disableSources --includeVersion --plugin typedoc-plugin-markdown --out docs src/index.ts && node scripts/docs/index.js"
18
42
  },
43
+ "keywords": [
44
+ "dataisland",
45
+ "sdk",
46
+ "neuralinnovations",
47
+ "neural innovations",
48
+ "neural-innovations",
49
+ "neural"
50
+ ],
19
51
  "author": "Neural Innovations LTD",
20
52
  "license": "Apache-2.0",
53
+ "bugs": {
54
+ "url": "https://github.com/NeuralInnovations/dataisland-client-js-sdk/issues"
55
+ },
56
+ "homepage": "https://github.com/NeuralInnovations/dataisland-client-js-sdk#readme",
21
57
  "devDependencies": {
22
58
  "@babel/core": "^7.22.11",
23
59
  "@babel/plugin-transform-modules-commonjs": "7.22.11",
@@ -49,12 +85,14 @@
49
85
  "tslib": "^2.6.2",
50
86
  "tslint": "6.1.3",
51
87
  "typedoc": "^0.25.7",
88
+ "typedoc-plugin-markdown": "^3.17.1",
52
89
  "typescript": "^5.3.3",
53
90
  "watch": "^0.13.0",
54
91
  "webpack": "5.76.0",
55
92
  "yargs": "17.7.2"
56
93
  },
57
94
  "dependencies": {
95
+ "dotenv": "^16.3.2",
58
96
  "jsdom": "^23.2.0"
59
97
  }
60
98
  }
package/src/appBuilder.ts CHANGED
@@ -1,16 +1,23 @@
1
- import type { Middleware } from './middleware'
2
- import type { CredentialBase } from './credentials'
3
- import type { Service, ServiceContext } from './services/service'
4
- import type { Constructor } from './internal/registry'
1
+ import type { Middleware } from "./middleware"
2
+ import type { CredentialBase } from "./credentials"
3
+ import type { Service, ServiceContext } from "./services/service"
4
+ import type { Constructor } from "./internal/registry"
5
+ import { CommandHandler, Command } from "./services/commandService"
6
+ import { Context } from "./context"
5
7
 
6
8
  /**
7
9
  * DataIsland App builder.
8
10
  */
9
11
  export abstract class AppBuilder {
12
+ /**
13
+ * Set custom data.
14
+ */
15
+ abstract get env(): Record<string, any>
16
+
10
17
  /**
11
18
  * Add a middleware to the app.
12
19
  */
13
- abstract addMiddleware(middleware: Middleware): AppBuilder
20
+ abstract registerMiddleware(middleware: Middleware): AppBuilder
14
21
 
15
22
  /**
16
23
  * Host of the app.
@@ -36,4 +43,16 @@ export abstract class AppBuilder {
36
43
  type: Constructor<T>,
37
44
  factory: (context: ServiceContext) => T
38
45
  ): AppBuilder
46
+
47
+ /**
48
+ * Register a command to the app.
49
+ * @param messageType
50
+ * @param commandFactory
51
+ */
52
+ abstract registerCommand<T extends Command>(
53
+ messageType: Constructor<T>,
54
+ commandFactory:
55
+ | ((context: Context) => CommandHandler<T>)
56
+ | ((context: Context) => (context: Context) => Promise<void>)
57
+ ): AppBuilder
39
58
  }
@@ -0,0 +1,14 @@
1
+ import { CommandHandler, Command } from "../services/commandService"
2
+ import { UserProfileService } from "../services/userProfileService"
3
+
4
+ export class StartCommand extends Command {}
5
+
6
+ export class StartCommandHandler extends CommandHandler<StartCommand> {
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ async execute(message: StartCommand): Promise<void> {
9
+ const service = this.context.resolve(
10
+ UserProfileService
11
+ ) as UserProfileService
12
+ await service.fetch()
13
+ }
14
+ }
package/src/context.ts ADDED
@@ -0,0 +1,32 @@
1
+ import { type Constructor, type Registry } from "./internal/registry"
2
+ import { type Lifetime } from "./disposable"
3
+ import { Command, CommandService } from "./services/commandService"
4
+
5
+ /**
6
+ * DataIsland App context.
7
+ */
8
+ export class Context {
9
+ constructor(
10
+ private readonly registry: Registry,
11
+ public readonly lifetime: Lifetime,
12
+ public readonly appName: string
13
+ ) {
14
+ }
15
+
16
+ /**
17
+ * Resolve a service from the context.
18
+ * @param type of the service
19
+ */
20
+ resolve<T>(type: Constructor<T>): T | undefined {
21
+ return this.registry.get(type)
22
+ }
23
+
24
+ /**
25
+ * Execute a command.
26
+ * @param command to execute
27
+ */
28
+ async execute<T extends Command>(command: T): Promise<void> {
29
+ const service = this.resolve(CommandService) as CommandService
30
+ await service.execute(command)
31
+ }
32
+ }
@@ -1,6 +1,6 @@
1
- import { MiddlewareService } from './services/middlewareService'
2
- import { type Lifetime } from './disposable'
3
- import { type Context } from './internal/context'
1
+ import { MiddlewareService } from "./services/middlewareService"
2
+ import { type Lifetime } from "./disposable"
3
+ import { type Context } from "./context"
4
4
 
5
5
  /**
6
6
  * DataIsland App credential.
@@ -29,12 +29,34 @@ export class BasicCredential extends CredentialBase {
29
29
  onRegister(lifetime: Lifetime, context: Context): void {
30
30
  const service = context.resolve(MiddlewareService)
31
31
  if (service === undefined) {
32
- throw new Error('MiddlewareService is not registered.')
32
+ throw new Error("MiddlewareService is not registered.")
33
33
  }
34
34
  lifetime.add(
35
35
  service.useMiddleware(async (req, next) => {
36
- req.headers.set('Authorization', `Basic ${this.email}:${this.password}`)
37
- await next(req)
36
+ req.headers.set("Authorization", `Basic ${this.email}:${this.password}`)
37
+ return await next(req)
38
+ })
39
+ )
40
+ }
41
+ }
42
+
43
+ export class DebugCredential extends CredentialBase {
44
+ readonly token: string
45
+
46
+ constructor(token: string) {
47
+ super()
48
+ this.token = token
49
+ }
50
+
51
+ onRegister(lifetime: Lifetime, context: Context): void {
52
+ const service = context.resolve(MiddlewareService)
53
+ if (service === undefined) {
54
+ throw new Error("MiddlewareService is not registered.")
55
+ }
56
+ lifetime.add(
57
+ service.useMiddleware(async (req, next) => {
58
+ req.headers.set("Authorization", `Debug ${this.token}`)
59
+ return await next(req)
38
60
  })
39
61
  )
40
62
  }
@@ -51,12 +73,12 @@ export class BearerCredential extends CredentialBase {
51
73
  onRegister(lifetime: Lifetime, context: Context): void {
52
74
  const service = context.resolve(MiddlewareService)
53
75
  if (service === undefined) {
54
- throw new Error('MiddlewareService is not registered.')
76
+ throw new Error("MiddlewareService is not registered.")
55
77
  }
56
78
  lifetime.add(
57
79
  service.useMiddleware(async (req, next) => {
58
- req.headers.set('Authorization', `Bearer ${this.token}`)
59
- await next(req)
80
+ req.headers.set("Authorization", `Bearer ${this.token}`)
81
+ return await next(req)
60
82
  })
61
83
  )
62
84
  }
@@ -0,0 +1,59 @@
1
+ import type { Lifetime } from "./disposable"
2
+ import type { CredentialBase } from "./credentials"
3
+ import { Context } from "./context"
4
+ import type { Constructor } from "./internal/registry"
5
+ import { Organizations } from "./storages/organizations/organizations"
6
+ import { UserProfile } from "./storages/user/userProfile"
7
+
8
+ /**
9
+ * DataIsland App instance.
10
+ */
11
+ export abstract class DataIslandApp {
12
+ /**
13
+ * The name of this app.
14
+ */
15
+ abstract get name(): string
16
+
17
+ /**
18
+ * The host of this app.
19
+ */
20
+ abstract get host(): string
21
+
22
+ /**
23
+ * The automaticDataCollectionEnabled of this app.
24
+ */
25
+ abstract get automaticDataCollectionEnabled(): boolean
26
+
27
+ /**
28
+ * The lifetime of this app.
29
+ */
30
+ abstract get lifetime(): Lifetime
31
+
32
+ /**
33
+ * The credential of this app.
34
+ */
35
+ abstract get credential(): CredentialBase | undefined
36
+
37
+ abstract set credential(value: CredentialBase)
38
+
39
+ /**
40
+ * The context of this app.
41
+ */
42
+ abstract get context(): Context
43
+
44
+ /**
45
+ * User's organizations.
46
+ */
47
+ abstract get organizations(): Organizations
48
+
49
+ /**
50
+ * User's profile.
51
+ */
52
+ abstract get userProfile(): UserProfile
53
+
54
+ /**
55
+ * Resolve a service from the app.
56
+ * @param type
57
+ */
58
+ abstract resolve<T>(type: Constructor<T>): T | undefined
59
+ }
package/src/disposable.ts CHANGED
@@ -2,14 +2,15 @@
2
2
  * Represents an object that can be disposed.
3
3
  */
4
4
  export interface Disposable {
5
- dispose: () => void
5
+ dispose(): void
6
6
  }
7
7
 
8
8
  /**
9
9
  * Represents a lifetime.
10
10
  */
11
11
  export class Lifetime {
12
- constructor(private readonly container: DisposableContainer) {}
12
+ constructor(private readonly container: DisposableContainer) {
13
+ }
13
14
 
14
15
  /**
15
16
  * Define a new nested disposable to this lifetime.
@@ -131,7 +132,7 @@ export class DisposableContainer implements Disposable {
131
132
  */
132
133
  private _throwIfDisposed(): void {
133
134
  if (this._isDisposed) {
134
- throw new Error('Object disposed')
135
+ throw new Error("Object disposed")
135
136
  }
136
137
  }
137
138
  }
@@ -147,5 +148,3 @@ export function disposable(action: () => void, target: unknown): Disposable {
147
148
  action.call(target)
148
149
  })
149
150
  }
150
-
151
- export const eternalLifetime = new DisposableContainer().lifetime
@@ -0,0 +1,35 @@
1
+ import { UserDto } from "./userInfoResponse"
2
+
3
+
4
+ export interface PermitsDto {
5
+ isAdmin: boolean;
6
+ }
7
+
8
+ export interface RegulationDto {
9
+ isRegulateOrganization: boolean;
10
+ regulateWorkspaceIds: string[];
11
+ }
12
+
13
+ export interface AccessGroupDto {
14
+ id: string;
15
+ name: string;
16
+ type: number;
17
+ createdAt: number;
18
+ modifiedAt: number;
19
+ organizationId: string;
20
+ permits: PermitsDto;
21
+ regulation: RegulationDto;
22
+ membersCount: number;
23
+ }
24
+
25
+ export interface AccessGroupResponse {
26
+ group: AccessGroupDto;
27
+ members: UserDto[];
28
+ }
29
+
30
+ export interface AccessGroupsResponse {
31
+ groups: AccessGroupDto[];
32
+ }
33
+
34
+
35
+