@magda/typescript-common 1.1.0-arm64.0 → 1.1.0-rc.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 (252) hide show
  1. package/dist/AspectBuilder.d.ts +7 -0
  2. package/dist/AspectBuilder.js +3 -0
  3. package/dist/AspectBuilder.js.map +1 -0
  4. package/dist/AspectCreationFailure.d.ts +5 -0
  5. package/dist/AspectCreationFailure.js +10 -0
  6. package/dist/AspectCreationFailure.js.map +1 -0
  7. package/dist/AsyncPage.d.ts +18 -0
  8. package/dist/AsyncPage.js +140 -0
  9. package/dist/AsyncPage.js.map +1 -0
  10. package/dist/ConnectionResult.d.ts +16 -0
  11. package/dist/ConnectionResult.js +77 -0
  12. package/dist/ConnectionResult.js.map +1 -0
  13. package/dist/ConnectorRecordId.d.ts +15 -0
  14. package/dist/ConnectorRecordId.js +46 -0
  15. package/dist/ConnectorRecordId.js.map +1 -0
  16. package/dist/JsonConnector.d.ts +195 -0
  17. package/dist/JsonConnector.js +427 -0
  18. package/dist/JsonConnector.js.map +1 -0
  19. package/dist/JsonTransformer.d.ts +112 -0
  20. package/dist/JsonTransformer.js +225 -0
  21. package/dist/JsonTransformer.js.map +1 -0
  22. package/dist/OpaCompileResponseParser.d.ts +480 -0
  23. package/dist/OpaCompileResponseParser.js +1134 -0
  24. package/dist/OpaCompileResponseParser.js.map +1 -0
  25. package/dist/RecordCreationFailure.d.ts +7 -0
  26. package/dist/RecordCreationFailure.js +11 -0
  27. package/dist/RecordCreationFailure.js.map +1 -0
  28. package/dist/SimpleOpaSQLTranslator.d.ts +14 -0
  29. package/dist/SimpleOpaSQLTranslator.js +79 -0
  30. package/dist/SimpleOpaSQLTranslator.js.map +1 -0
  31. package/dist/addTrailingSlash.d.ts +1 -0
  32. package/dist/addTrailingSlash.js +15 -0
  33. package/dist/addTrailingSlash.js.map +1 -0
  34. package/dist/appendUrlSegments.d.ts +2 -0
  35. package/dist/appendUrlSegments.js +18 -0
  36. package/dist/appendUrlSegments.js.map +1 -0
  37. package/dist/authorization-api/AccessControlError.d.ts +4 -0
  38. package/dist/authorization-api/AccessControlError.js +13 -0
  39. package/dist/authorization-api/AccessControlError.js.map +1 -0
  40. package/dist/authorization-api/ApiClient.d.ts +141 -0
  41. package/dist/authorization-api/ApiClient.js +335 -0
  42. package/dist/authorization-api/ApiClient.js.map +1 -0
  43. package/dist/authorization-api/AuthError.d.ts +4 -0
  44. package/dist/authorization-api/AuthError.js +13 -0
  45. package/dist/authorization-api/AuthError.js.map +1 -0
  46. package/dist/authorization-api/GenericError.d.ts +9 -0
  47. package/dist/authorization-api/GenericError.js +17 -0
  48. package/dist/authorization-api/GenericError.js.map +1 -0
  49. package/dist/authorization-api/authMiddleware.d.ts +7 -0
  50. package/dist/authorization-api/authMiddleware.js +52 -0
  51. package/dist/authorization-api/authMiddleware.js.map +1 -0
  52. package/dist/authorization-api/model.d.ts +99 -0
  53. package/dist/authorization-api/model.js +3 -0
  54. package/dist/authorization-api/model.js.map +1 -0
  55. package/dist/coerceJson.d.ts +2 -0
  56. package/dist/coerceJson.js +13 -0
  57. package/dist/coerceJson.js.map +1 -0
  58. package/dist/createServiceError.d.ts +19 -0
  59. package/dist/createServiceError.js +45 -0
  60. package/dist/createServiceError.js.map +1 -0
  61. package/dist/delay.d.ts +2 -0
  62. package/dist/delay.js +9 -0
  63. package/dist/delay.js.map +1 -0
  64. package/dist/express/status.d.ts +30 -0
  65. package/dist/express/status.js +180 -0
  66. package/dist/express/status.js.map +1 -0
  67. package/dist/formatServiceError.d.ts +1 -0
  68. package/dist/formatServiceError.js +23 -0
  69. package/dist/formatServiceError.js.map +1 -0
  70. package/dist/generated/registry/api.d.ts +596 -0
  71. package/dist/generated/registry/api.js +2060 -0
  72. package/dist/generated/registry/api.js.map +1 -0
  73. package/dist/getAbsoluteUrl.d.ts +12 -0
  74. package/dist/getAbsoluteUrl.js +35 -0
  75. package/dist/getAbsoluteUrl.js.map +1 -0
  76. package/dist/getBasePathFromUrl.d.ts +10 -0
  77. package/dist/getBasePathFromUrl.js +27 -0
  78. package/dist/getBasePathFromUrl.js.map +1 -0
  79. package/dist/markdownToHtml.d.ts +3 -0
  80. package/dist/markdownToHtml.js +38 -0
  81. package/dist/markdownToHtml.js.map +1 -0
  82. package/dist/opa/OpaTypes.d.ts +41 -0
  83. package/dist/opa/OpaTypes.js +3 -0
  84. package/dist/opa/OpaTypes.js.map +1 -0
  85. package/dist/opa/getAuthDecision.d.ts +19 -0
  86. package/dist/opa/getAuthDecision.js +94 -0
  87. package/dist/opa/getAuthDecision.js.map +1 -0
  88. package/dist/opa/queryOpa.d.ts +1 -0
  89. package/dist/opa/queryOpa.js +41 -0
  90. package/dist/opa/queryOpa.js.map +1 -0
  91. package/dist/registry/AuthorizedRegistryClient.d.ts +29 -0
  92. package/dist/registry/AuthorizedRegistryClient.js +115 -0
  93. package/dist/registry/AuthorizedRegistryClient.js.map +1 -0
  94. package/dist/registry/RegistryClient.d.ts +36 -0
  95. package/dist/registry/RegistryClient.js +59 -0
  96. package/dist/registry/RegistryClient.js.map +1 -0
  97. package/dist/registry/TenantConsts.d.ts +31 -0
  98. package/dist/registry/TenantConsts.js +35 -0
  99. package/dist/registry/TenantConsts.js.map +1 -0
  100. package/dist/registry-manual/api.d.ts +9 -0
  101. package/dist/registry-manual/api.js +10 -0
  102. package/dist/registry-manual/api.js.map +1 -0
  103. package/dist/request.d.ts +3 -0
  104. package/dist/request.js +19 -0
  105. package/dist/request.js.map +1 -0
  106. package/dist/retry.d.ts +1 -0
  107. package/dist/retry.js +21 -0
  108. package/dist/retry.js.map +1 -0
  109. package/dist/retryBackoff.d.ts +1 -0
  110. package/dist/retryBackoff.js +21 -0
  111. package/dist/retryBackoff.js.map +1 -0
  112. package/dist/runLater.d.ts +1 -0
  113. package/dist/runLater.js +16 -0
  114. package/dist/runLater.js.map +1 -0
  115. package/dist/session/GetUserId.d.ts +5 -0
  116. package/dist/session/GetUserId.js +41 -0
  117. package/dist/session/GetUserId.js.map +1 -0
  118. package/dist/session/GetUserSession.d.ts +3 -0
  119. package/dist/session/GetUserSession.js +22 -0
  120. package/dist/session/GetUserSession.js.map +1 -0
  121. package/dist/session/addJwtSecretFromEnvVar.d.ts +14 -0
  122. package/dist/session/addJwtSecretFromEnvVar.js +23 -0
  123. package/dist/session/addJwtSecretFromEnvVar.js.map +1 -0
  124. package/dist/session/buildJwt.d.ts +1 -0
  125. package/dist/session/buildJwt.js +8 -0
  126. package/dist/session/buildJwt.js.map +1 -0
  127. package/dist/session/cookieUtils.d.ts +16 -0
  128. package/dist/session/cookieUtils.js +19 -0
  129. package/dist/session/cookieUtils.js.map +1 -0
  130. package/dist/session/destroySession.d.ts +10 -0
  131. package/dist/session/destroySession.js +44 -0
  132. package/dist/session/destroySession.js.map +1 -0
  133. package/dist/session/getSessionId.d.ts +2 -0
  134. package/dist/session/getSessionId.js +28 -0
  135. package/dist/session/getSessionId.js.map +1 -0
  136. package/dist/tenant-api/AuthorizedTenantClient.d.ts +25 -0
  137. package/dist/tenant-api/AuthorizedTenantClient.js +61 -0
  138. package/dist/tenant-api/AuthorizedTenantClient.js.map +1 -0
  139. package/dist/tenant-api/Tenant.d.ts +17 -0
  140. package/dist/tenant-api/Tenant.js +10 -0
  141. package/dist/tenant-api/Tenant.js.map +1 -0
  142. package/dist/test/JsonConnector.spec.d.ts +1 -0
  143. package/dist/test/JsonConnector.spec.js +352 -0
  144. package/dist/test/JsonConnector.spec.js.map +1 -0
  145. package/dist/test/JsonTransformer.spec.d.ts +1 -0
  146. package/dist/test/JsonTransformer.spec.js +98 -0
  147. package/dist/test/JsonTransformer.spec.js.map +1 -0
  148. package/dist/test/arbitraries.d.ts +98 -0
  149. package/dist/test/arbitraries.js +264 -0
  150. package/dist/test/arbitraries.js.map +1 -0
  151. package/dist/test/aspect-templates/organization-details.d.ts +4 -0
  152. package/dist/test/aspect-templates/organization-details.js +11 -0
  153. package/dist/test/aspect-templates/organization-details.js.map +1 -0
  154. package/dist/test/buildApiClient.spec.d.ts +1 -0
  155. package/dist/test/buildApiClient.spec.js +177 -0
  156. package/dist/test/buildApiClient.spec.js.map +1 -0
  157. package/dist/test/buildAuthorizedTenantClient.spec.d.ts +1 -0
  158. package/dist/test/buildAuthorizedTenantClient.spec.js +60 -0
  159. package/dist/test/buildAuthorizedTenantClient.spec.js.map +1 -0
  160. package/dist/test/connectors/MockExpressServer.d.ts +5 -0
  161. package/dist/test/connectors/MockExpressServer.js +28 -0
  162. package/dist/test/connectors/MockExpressServer.js.map +1 -0
  163. package/dist/test/connectors/MockRegistry.d.ts +7 -0
  164. package/dist/test/connectors/MockRegistry.js +93 -0
  165. package/dist/test/connectors/MockRegistry.js.map +1 -0
  166. package/dist/test/connectors/runConnectorTest.d.ts +5 -0
  167. package/dist/test/connectors/runConnectorTest.js +106 -0
  168. package/dist/test/connectors/runConnectorTest.js.map +1 -0
  169. package/dist/test/db/getTestDBConfig.d.ts +7 -0
  170. package/dist/test/db/getTestDBConfig.js +13 -0
  171. package/dist/test/db/getTestDBConfig.js.map +1 -0
  172. package/dist/test/db/runMigrationSql.d.ts +9 -0
  173. package/dist/test/db/runMigrationSql.js +82 -0
  174. package/dist/test/db/runMigrationSql.js.map +1 -0
  175. package/dist/test/express/status.spec.d.ts +1 -0
  176. package/dist/test/express/status.spec.js +160 -0
  177. package/dist/test/express/status.spec.js.map +1 -0
  178. package/dist/test/fakeArgv.d.ts +2 -0
  179. package/dist/test/fakeArgv.js +7 -0
  180. package/dist/test/fakeArgv.js.map +1 -0
  181. package/dist/test/getAuthDecision.spec.d.ts +1 -0
  182. package/dist/test/getAuthDecision.spec.js +22 -0
  183. package/dist/test/getAuthDecision.spec.js.map +1 -0
  184. package/dist/test/getBasePathFromUrl.spec.d.ts +1 -0
  185. package/dist/test/getBasePathFromUrl.spec.js +25 -0
  186. package/dist/test/getBasePathFromUrl.spec.js.map +1 -0
  187. package/dist/test/jsverify.d.ts +2 -0
  188. package/dist/test/jsverify.js +8 -0
  189. package/dist/test/jsverify.js.map +1 -0
  190. package/dist/test/mockAuthApiHost.d.ts +14 -0
  191. package/dist/test/mockAuthApiHost.js +174 -0
  192. package/dist/test/mockAuthApiHost.js.map +1 -0
  193. package/dist/test/mockAuthorization.d.ts +3 -0
  194. package/dist/test/mockAuthorization.js +24 -0
  195. package/dist/test/mockAuthorization.js.map +1 -0
  196. package/dist/test/mockTenantDataStore.d.ts +8 -0
  197. package/dist/test/mockTenantDataStore.js +41 -0
  198. package/dist/test/mockTenantDataStore.js.map +1 -0
  199. package/dist/test/mockUserDataStore.d.ts +11 -0
  200. package/dist/test/mockUserDataStore.js +56 -0
  201. package/dist/test/mockUserDataStore.js.map +1 -0
  202. package/dist/test/registry/buildAuthorizedClient.spec.d.ts +1 -0
  203. package/dist/test/registry/buildAuthorizedClient.spec.js +101 -0
  204. package/dist/test/registry/buildAuthorizedClient.spec.js.map +1 -0
  205. package/dist/test/sampleOpaResponse.json +480 -0
  206. package/dist/test/sampleOpaResponseSimple.json +173 -0
  207. package/dist/test/sampleOpaResponseUnconditionalTrue.json +193 -0
  208. package/dist/test/sampleOpaResponseUnconditionalTrueWithDefaultRule.json +303 -0
  209. package/dist/test/sampleOpaResponseWithDefaultRule.json +303 -0
  210. package/dist/test/session/buildJwt.spec.d.ts +1 -0
  211. package/dist/test/session/buildJwt.spec.js +50 -0
  212. package/dist/test/session/buildJwt.spec.js.map +1 -0
  213. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.d.ts +1 -0
  214. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js +64 -0
  215. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js.map +1 -0
  216. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.d.ts +1 -0
  217. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js +52 -0
  218. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js.map +1 -0
  219. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.d.ts +1 -0
  220. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js +36 -0
  221. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js.map +1 -0
  222. package/dist/test/testAsyncPage.spec.d.ts +1 -0
  223. package/dist/test/testAsyncPage.spec.js +463 -0
  224. package/dist/test/testAsyncPage.spec.js.map +1 -0
  225. package/dist/test/testOpaCompileResponseParser.spec.d.ts +1 -0
  226. package/dist/test/testOpaCompileResponseParser.spec.js +148 -0
  227. package/dist/test/testOpaCompileResponseParser.spec.js.map +1 -0
  228. package/dist/test/util.d.ts +1 -0
  229. package/dist/test/util.js +8 -0
  230. package/dist/test/util.js.map +1 -0
  231. package/dist/util/arrayToMaybe.d.ts +2 -0
  232. package/dist/util/arrayToMaybe.js +8 -0
  233. package/dist/util/arrayToMaybe.js.map +1 -0
  234. package/dist/util/cleanOrgTitle.d.ts +1 -0
  235. package/dist/util/cleanOrgTitle.js +13 -0
  236. package/dist/util/cleanOrgTitle.js.map +1 -0
  237. package/dist/util/escapeRegExp.d.ts +2 -0
  238. package/dist/util/escapeRegExp.js +5 -0
  239. package/dist/util/escapeRegExp.js.map +1 -0
  240. package/dist/util/getMinikubeIP.d.ts +1 -0
  241. package/dist/util/getMinikubeIP.js +13 -0
  242. package/dist/util/getMinikubeIP.js.map +1 -0
  243. package/dist/util/isUuid.d.ts +2 -0
  244. package/dist/util/isUuid.js +6 -0
  245. package/dist/util/isUuid.js.map +1 -0
  246. package/dist/util/unionToThrowable.d.ts +1 -0
  247. package/dist/util/unionToThrowable.js +12 -0
  248. package/dist/util/unionToThrowable.js.map +1 -0
  249. package/dist/utilityTypes.d.ts +1 -0
  250. package/dist/utilityTypes.js +3 -0
  251. package/dist/utilityTypes.js.map +1 -0
  252. package/package.json +3 -3
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const isomorphic_fetch_1 = __importDefault(require("isomorphic-fetch"));
16
+ const tsmonad_1 = require("tsmonad");
17
+ const lodash_1 = __importDefault(require("lodash"));
18
+ const buildJwt_1 = __importDefault(require("../session/buildJwt"));
19
+ const GenericError_1 = __importDefault(require("./GenericError"));
20
+ const addTrailingSlash_1 = __importDefault(require("../addTrailingSlash"));
21
+ const urijs_1 = __importDefault(require("urijs"));
22
+ class ApiClient {
23
+ constructor(
24
+ // e.g. http://authorization-api/v0
25
+ baseUrl, jwtSecret = null, userId = null) {
26
+ this.jwt = null;
27
+ this.requestInitOption = null;
28
+ this.baseUrl = "";
29
+ this.baseUrl = addTrailingSlash_1.default(baseUrl);
30
+ if (jwtSecret && userId) {
31
+ this.jwt = buildJwt_1.default(jwtSecret, userId);
32
+ }
33
+ this.requestInitOption = {
34
+ headers: {
35
+ "X-Magda-Session": this.jwt
36
+ }
37
+ };
38
+ }
39
+ getMergeRequestInitOption(extraOptions = null) {
40
+ return lodash_1.default.merge({}, this.requestInitOption, extraOptions);
41
+ }
42
+ processJsonResponse(res) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ if (res.status >= 200 && res.status < 300) {
45
+ return (yield res.json());
46
+ }
47
+ else {
48
+ const responseText = (yield res.text()).replace(/<(.|\n)*?>/g, "");
49
+ throw new GenericError_1.default(responseText, res.status);
50
+ }
51
+ });
52
+ }
53
+ /**
54
+ * Get the data of a user.
55
+ *
56
+ * @param {string} userId
57
+ * @returns {Promise<Maybe<User>>}
58
+ * @memberof ApiClient
59
+ */
60
+ getUser(userId) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return yield this.handleGetResult(isomorphic_fetch_1.default(`${this.baseUrl}private/users/${userId}`, this.getMergeRequestInitOption()));
63
+ });
64
+ }
65
+ /**
66
+ * Get the data of a user.
67
+ * (Deprecated) This is the public facing API and will return less fields.
68
+ *
69
+ * @param {string} userId
70
+ * @returns {Promise<Maybe<User>>}
71
+ * @memberof ApiClient
72
+ */
73
+ getUserPublic(userId) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ return yield this.handleGetResult(isomorphic_fetch_1.default(`${this.baseUrl}public/users/${userId}`, this.getMergeRequestInitOption()));
76
+ });
77
+ }
78
+ /**
79
+ * Lookup user by source (identity provider) & sourceId (identity ID)
80
+ *
81
+ * @param {string} source
82
+ * @param {string} sourceId
83
+ * @returns {Promise<Maybe<User>>}
84
+ * @memberof ApiClient
85
+ */
86
+ lookupUser(source, sourceId) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ return this.handleGetResult(isomorphic_fetch_1.default(`${this.baseUrl}private/users/lookup?source=${source}&sourceId=${sourceId}`, this.getMergeRequestInitOption()));
89
+ });
90
+ }
91
+ /**
92
+ * create a user
93
+ *
94
+ * @param {User} user
95
+ * @returns {Promise<User>}
96
+ * @memberof ApiClient
97
+ */
98
+ createUser(user) {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ try {
101
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}private/users`, this.getMergeRequestInitOption({
102
+ method: "POST",
103
+ headers: {
104
+ "Content-Type": "application/json"
105
+ },
106
+ body: JSON.stringify(user)
107
+ }));
108
+ if (res.status >= 400) {
109
+ throw new Error(`Encountered error ${res.status} when POSTing new user to ${this.baseUrl}/private/users`);
110
+ }
111
+ const resData = yield res.json();
112
+ return Object.assign(Object.assign({}, user), resData);
113
+ }
114
+ catch (e) {
115
+ console.error(e);
116
+ throw e;
117
+ }
118
+ });
119
+ }
120
+ /**
121
+ * Add Roles to a user.
122
+ * Returns a list of current role ids of the user.
123
+ *
124
+ * @param {string} userId
125
+ * @param {string[]} roleIds
126
+ * @returns {Promise<string[]>}
127
+ * @memberof ApiClient
128
+ */
129
+ addUserRoles(userId, roleIds) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/user/${userId}/roles`, this.getMergeRequestInitOption({
132
+ method: "POST",
133
+ headers: {
134
+ "Content-Type": "application/json"
135
+ },
136
+ body: JSON.stringify(roleIds)
137
+ }));
138
+ return yield this.processJsonResponse(res);
139
+ });
140
+ }
141
+ /**
142
+ * Remove a list roles from a user.
143
+ *
144
+ * @param {string} userId
145
+ * @param {string[]} roleIds
146
+ * @returns {Promise<void>}
147
+ * @memberof ApiClient
148
+ */
149
+ deleteUserRoles(userId, roleIds) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/user/${userId}/roles`, this.getMergeRequestInitOption({
152
+ method: "DELETE",
153
+ headers: {
154
+ "Content-Type": "application/json"
155
+ },
156
+ body: JSON.stringify(roleIds)
157
+ }));
158
+ yield this.processJsonResponse(res);
159
+ });
160
+ }
161
+ /**
162
+ * Get all roles of a user
163
+ *
164
+ * @param {string} userId
165
+ * @returns {Promise<Role[]>}
166
+ * @memberof ApiClient
167
+ */
168
+ getUserRoles(userId) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/user/${userId}/roles`, this.getMergeRequestInitOption());
171
+ return yield this.processJsonResponse(res);
172
+ });
173
+ }
174
+ /**
175
+ * Get all permissions of a user
176
+ *
177
+ * @param {string} userId
178
+ * @returns {Promise<Permission[]>}
179
+ * @memberof ApiClient
180
+ */
181
+ getUserPermissions(userId) {
182
+ return __awaiter(this, void 0, void 0, function* () {
183
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/user/${userId}/permissions`, this.getMergeRequestInitOption());
184
+ return yield this.processJsonResponse(res);
185
+ });
186
+ }
187
+ /**
188
+ * Get all permissions of a role
189
+ *
190
+ * @param {string} roleId
191
+ * @returns {Promise<Permission[]>}
192
+ * @memberof ApiClient
193
+ */
194
+ getRolePermissions(roleId) {
195
+ return __awaiter(this, void 0, void 0, function* () {
196
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/role/${roleId}/permissions`, this.getMergeRequestInitOption());
197
+ return yield this.processJsonResponse(res);
198
+ });
199
+ }
200
+ /**
201
+ * List OrgUnits at certain org tree level.
202
+ * Optionally provide a test Org Unit Id that will be used to test the relationship with each of returned orgUnit item.
203
+ * Possible Value: 'ancestor', 'descendant', 'equal', 'unrelated'
204
+ *
205
+ * @param {string} orgLevel The level number (starts from 1) where org Units of the tree are taken horizontally.
206
+ * @param {string} [relationshipOrgUnitId] Optional; The org unit id that is used to test the relationship with each of returned orgUnit item.
207
+ * @returns {Promise<OrgUnit[]>}
208
+ * @memberof ApiClient
209
+ */
210
+ getOrgUnitsByLevel(orgLevel, relationshipOrgUnitId) {
211
+ return __awaiter(this, void 0, void 0, function* () {
212
+ const uri = urijs_1.default(`${this.baseUrl}public/orgunits/bylevel`).segmentCoded(`${orgLevel}`);
213
+ const queries = {};
214
+ if (relationshipOrgUnitId) {
215
+ queries["relationshipOrgUnitId"] = relationshipOrgUnitId;
216
+ }
217
+ const res = yield isomorphic_fetch_1.default(Object.keys(queries).length
218
+ ? uri.search(queries).toString()
219
+ : uri.toString(), this.getMergeRequestInitOption());
220
+ return yield this.processJsonResponse(res);
221
+ });
222
+ }
223
+ /**
224
+ * Get orgunits by name
225
+ *
226
+ * @param {string} nodeName
227
+ * @param {boolean} [leafNodesOnly=false] Whether only leaf nodes should be returned
228
+ * @param {string} [relationshipOrgUnitId] Optional; The org unit id that is used to test the relationship with each of returned orgUnit item.
229
+ * @returns {Promise<OrgUnit[]>}
230
+ * @memberof ApiClient
231
+ */
232
+ getOrgUnitsByName(nodeName, leafNodesOnly = false, relationshipOrgUnitId) {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ const uri = urijs_1.default(`${this.baseUrl}public/orgunits`);
235
+ const queries = {
236
+ nodeName,
237
+ leafNodesOnly
238
+ };
239
+ if (relationshipOrgUnitId) {
240
+ queries["relationshipOrgUnitId"] = relationshipOrgUnitId;
241
+ }
242
+ const res = yield isomorphic_fetch_1.default(uri.search(queries).toString(), this.getMergeRequestInitOption());
243
+ return yield this.processJsonResponse(res);
244
+ });
245
+ }
246
+ /**
247
+ * Gets the root organisation unit (top of the tree).
248
+ *
249
+ * @returns {Promise<OrgUnit>}
250
+ * @memberof ApiClient
251
+ */
252
+ getRootOrgUnit() {
253
+ return __awaiter(this, void 0, void 0, function* () {
254
+ const res = yield isomorphic_fetch_1.default(`${this.baseUrl}public/orgunits/root`, this.getMergeRequestInitOption());
255
+ return yield this.processJsonResponse(res);
256
+ });
257
+ }
258
+ /**
259
+ * Gets the details of the node with its id.
260
+ *
261
+ * @param {string} nodeId
262
+ * @returns {Promise<OrgUnit>}
263
+ * @memberof ApiClient
264
+ */
265
+ getOrgUnitById(nodeId) {
266
+ return __awaiter(this, void 0, void 0, function* () {
267
+ const uri = urijs_1.default(`${this.baseUrl}public/orgunits`).segmentCoded(nodeId);
268
+ const res = yield isomorphic_fetch_1.default(uri.toString(), this.getMergeRequestInitOption());
269
+ return yield this.processJsonResponse(res);
270
+ });
271
+ }
272
+ /**
273
+ * Gets all the children immediately below the requested node. If the node doesn't exist, returns an empty list.
274
+ *
275
+ * @param {string} nodeId
276
+ * @returns {Promise<OrgUnit[]>}
277
+ * @memberof ApiClient
278
+ */
279
+ getImmediateOrgUnitChildren(nodeId) {
280
+ return __awaiter(this, void 0, void 0, function* () {
281
+ const uri = urijs_1.default(`${this.baseUrl}public/orgunits`)
282
+ .segmentCoded(nodeId)
283
+ .segmentCoded("children")
284
+ .segmentCoded("immediate");
285
+ const res = yield isomorphic_fetch_1.default(uri.toString(), this.getMergeRequestInitOption());
286
+ return yield this.processJsonResponse(res);
287
+ });
288
+ }
289
+ /**
290
+ * Gets all the children below the requested node recursively. If node doesn't exist, returns an empty list.
291
+ *
292
+ * @param {string} nodeId
293
+ * @returns {Promise<OrgUnit[]>}
294
+ * @memberof ApiClient
295
+ */
296
+ getAllOrgUnitChildren(nodeId) {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ const uri = urijs_1.default(`${this.baseUrl}public/orgunits`)
299
+ .segmentCoded(nodeId)
300
+ .segmentCoded("children")
301
+ .segmentCoded("all");
302
+ const res = yield isomorphic_fetch_1.default(uri.toString(), this.getMergeRequestInitOption());
303
+ return yield this.processJsonResponse(res);
304
+ });
305
+ }
306
+ handleGetResult(promise) {
307
+ return __awaiter(this, void 0, void 0, function* () {
308
+ return promise
309
+ .then((res) => {
310
+ if (res.status === 404) {
311
+ return Promise.resolve(tsmonad_1.Maybe.nothing());
312
+ }
313
+ else {
314
+ return res
315
+ .text()
316
+ .then((resText) => {
317
+ try {
318
+ return JSON.parse(resText);
319
+ }
320
+ catch (e) {
321
+ throw new Error(resText);
322
+ }
323
+ })
324
+ .then((user) => tsmonad_1.Maybe.just(user));
325
+ }
326
+ })
327
+ .catch((e) => {
328
+ console.error(e);
329
+ throw e;
330
+ });
331
+ });
332
+ }
333
+ }
334
+ exports.default = ApiClient;
335
+ //# sourceMappingURL=ApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/authorization-api/ApiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import GenericError from "./GenericError";
2
+ export default class AuthError extends GenericError {
3
+ constructor(message?: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const GenericError_1 = __importDefault(require("./GenericError"));
7
+ class AuthError extends GenericError_1.default {
8
+ constructor(message = "Not authorized", statusCode = 401) {
9
+ super(message, statusCode);
10
+ }
11
+ }
12
+ exports.default = AuthError;
13
+ //# sourceMappingURL=AuthError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthError.js","sourceRoot":"","sources":["../../src/authorization-api/AuthError.ts"],"names":[],"mappings":";;;;;AAAA,kEAA0C;AAC1C,MAAqB,SAAU,SAAQ,sBAAY;IAC/C,YAAY,UAAkB,gBAAgB,EAAE,aAAqB,GAAG;QACpE,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;CACJ;AAJD,4BAIC"}
@@ -0,0 +1,9 @@
1
+ export default class GenericError extends Error {
2
+ statusCode: number;
3
+ constructor(message?: string, statusCode?: number);
4
+ toData(): {
5
+ isError: boolean;
6
+ errorCode: number;
7
+ errorMessage: string;
8
+ };
9
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class GenericError extends Error {
4
+ constructor(message = "Unknown Error", statusCode = 500) {
5
+ super(message);
6
+ this.statusCode = statusCode;
7
+ }
8
+ toData() {
9
+ return {
10
+ isError: true,
11
+ errorCode: this.statusCode,
12
+ errorMessage: this.message
13
+ };
14
+ }
15
+ }
16
+ exports.default = GenericError;
17
+ //# sourceMappingURL=GenericError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericError.js","sourceRoot":"","sources":["../../src/authorization-api/GenericError.ts"],"names":[],"mappings":";;AAAA,MAAqB,YAAa,SAAQ,KAAK;IAG3C,YAAY,UAAkB,eAAe,EAAE,aAAqB,GAAG;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,MAAM;QACF,OAAO;YACH,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,YAAY,EAAE,IAAI,CAAC,OAAO;SAC7B,CAAC;IACN,CAAC;CACJ;AAfD,+BAeC"}
@@ -0,0 +1,7 @@
1
+ import { Request, Response } from "express";
2
+ export declare const mustBeLoggedIn: (jwtSecret: string) => (this: any, req: Request, res: Response, next: () => void) => void;
3
+ /**
4
+ * Find the user making the request. Assign it to req passport style.
5
+ */
6
+ export declare const getUser: (baseAuthUrl: string, jwtSecret: string) => (req: Request, res: Response, next: () => void) => void;
7
+ export declare const mustBeAdmin: (baseAuthUrl: string, jwtSecret: string) => (req: Request, res: Response, next: () => void) => void;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mustBeAdmin = exports.getUser = exports.mustBeLoggedIn = void 0;
7
+ const GetUserId_1 = require("../session/GetUserId");
8
+ const ApiClient_1 = __importDefault(require("./ApiClient"));
9
+ exports.mustBeLoggedIn = (jwtSecret) => function (req, res, next) {
10
+ GetUserId_1.getUserIdHandling(req, res, jwtSecret, (userId) => {
11
+ this.userId = userId;
12
+ next();
13
+ });
14
+ };
15
+ /**
16
+ * Find the user making the request. Assign it to req passport style.
17
+ */
18
+ exports.getUser = (baseAuthUrl, jwtSecret) => (req, res, next) => {
19
+ GetUserId_1.getUserId(req, jwtSecret).caseOf({
20
+ just: (userId) => {
21
+ const apiClient = new ApiClient_1.default(baseAuthUrl, jwtSecret, userId);
22
+ apiClient
23
+ .getUser(userId)
24
+ .then((maybeUser) => {
25
+ maybeUser.caseOf({
26
+ just: (user) => {
27
+ req.user = Object.assign(Object.assign({}, (req.user ? req.user : {})), user);
28
+ next();
29
+ },
30
+ nothing: next
31
+ });
32
+ })
33
+ .catch(() => next());
34
+ },
35
+ nothing: next
36
+ });
37
+ };
38
+ exports.mustBeAdmin = (baseAuthUrl, jwtSecret) => {
39
+ const getUserInstance = exports.getUser(baseAuthUrl, jwtSecret);
40
+ return (req, res, next) => {
41
+ getUserInstance(req, res, () => {
42
+ if (req.user && req.user.isAdmin) {
43
+ next();
44
+ }
45
+ else {
46
+ console.warn("Rejecting because user is not an admin");
47
+ res.status(401).send("Not authorized.");
48
+ }
49
+ });
50
+ };
51
+ };
52
+ //# sourceMappingURL=authMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../src/authorization-api/authMiddleware.ts"],"names":[],"mappings":";;;;;;AACA,oDAAoE;AACpE,4DAAoC;AAEvB,QAAA,cAAc,GAAG,CAAC,SAAiB,EAAE,EAAE,CAChD,UAAqB,GAAY,EAAE,GAAa,EAAE,IAAgB;IAC9D,6BAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEN;;GAEG;AACU,QAAA,OAAO,GAAG,CAAC,WAAmB,EAAE,SAAiB,EAAE,EAAE,CAAC,CAC/D,GAAY,EACZ,GAAa,EACb,IAAgB,EAClB,EAAE;IACA,qBAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAChE,SAAS;iBACJ,OAAO,CAAC,MAAM,CAAC;iBACf,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gBAChB,SAAS,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;wBACX,GAAG,CAAC,IAAI,mCAID,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1B,IAAI,CACV,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC,CAAC;YACP,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;AACP,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,CAAC,WAAmB,EAAE,SAAiB,EAAE,EAAE;IAClE,MAAM,eAAe,GAAG,eAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;QACrD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC3B,IAAI,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,OAAO,EAAE;gBACvC,IAAI,EAAE,CAAC;aACV;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,99 @@
1
+ declare global {
2
+ namespace Express {
3
+ /**
4
+ * This defines magda session data type.
5
+ * the default session data type is `UserToken` (i.e. only user id field is available and is a compulsory field)
6
+ * But any auth plugin provider could choose to customise the session by adding more fields (e.g. `arcgis`).
7
+ * We also make sure it allows extra fields here.
8
+ */
9
+ interface User extends UserToken {
10
+ [key: string]: any;
11
+ }
12
+ }
13
+ }
14
+ export interface PublicUser {
15
+ id?: string;
16
+ displayName: string;
17
+ photoURL?: string;
18
+ isAdmin: boolean;
19
+ roles?: Role[];
20
+ permissions?: Permission[];
21
+ managingOrgUnitIds?: string[];
22
+ orgUnitId?: string;
23
+ orgUnit?: OrgUnit;
24
+ }
25
+ export declare type OrgUnitRelationshipType = "ancestor" | "descendant" | "equal" | "unrelated";
26
+ export interface OrgUnit {
27
+ id?: string;
28
+ name?: string;
29
+ description?: string;
30
+ relationship?: OrgUnitRelationshipType;
31
+ left?: number;
32
+ right?: number;
33
+ createBy?: string;
34
+ createTime?: Date;
35
+ editBy?: string;
36
+ editTime?: Date;
37
+ }
38
+ export interface User extends PublicUser {
39
+ email: string;
40
+ source: string;
41
+ sourceId: string;
42
+ }
43
+ export interface APIKeyRecord {
44
+ id: string;
45
+ user_id: string;
46
+ created_timestamp: string;
47
+ hash: string;
48
+ }
49
+ export interface Role {
50
+ id: string;
51
+ name: string;
52
+ permissionIds: string[];
53
+ description?: string;
54
+ createBy?: string;
55
+ createTime?: Date;
56
+ editBy?: string;
57
+ editTime?: Date;
58
+ }
59
+ export interface Operation {
60
+ id: string;
61
+ uri: string;
62
+ name: string;
63
+ description?: string;
64
+ }
65
+ export interface Permission {
66
+ id: string;
67
+ name: string;
68
+ description?: string;
69
+ resourceId: string;
70
+ resourceUri: string;
71
+ userOwnershipConstraint: boolean;
72
+ orgUnitOwnershipConstraint: boolean;
73
+ preAuthorisedConstraint: boolean;
74
+ operations: Operation[];
75
+ createBy?: string;
76
+ createTime?: Date;
77
+ editBy?: string;
78
+ editTime?: Date;
79
+ }
80
+ export interface UserToken {
81
+ id: string;
82
+ }
83
+ /**
84
+ * This is the metadata model used by Opa policy
85
+ * You only need this when you try to figure out user characteristic (unknown) via Known information of a dataset.
86
+ * i.e. set `input.user` to unknown then calculate residual rules via partial evaluation.
87
+ */
88
+ export interface DatasetAccessControlMetaData {
89
+ /**
90
+ * We do allow "archived" as defined in `publishing.schema.json`
91
+ * But we probably should avoid using it as there is no story behinds it.
92
+ */
93
+ publishingState: "draft" | "published" | "archived";
94
+ accessControl?: {
95
+ ownerId?: string;
96
+ orgUnitOwnerId?: string;
97
+ preAuthorisedPermissionIds?: string[];
98
+ };
99
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/authorization-api/model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ declare const _default: (param: string) => (json?: string | object | any[]) => any;
2
+ export default _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = (param) => (json) => {
4
+ if (typeof json !== "string") {
5
+ return json;
6
+ }
7
+ const data = JSON.parse(json);
8
+ if (!data || typeof data !== "object") {
9
+ throw new Error(`Invalid "${param}" parameter.`);
10
+ }
11
+ return data;
12
+ };
13
+ //# sourceMappingURL=coerceJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coerceJson.js","sourceRoot":"","sources":["../src/coerceJson.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,IAA8B,EAAE,EAAE;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,IAAI,CAAC;KACf;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,cAAc,CAAC,CAAC;KACpD;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ApiError } from "./generated/registry/api";
2
+ export declare class ServiceError extends Error {
3
+ e: any;
4
+ constructor(message: string, e: any);
5
+ }
6
+ export declare class BadRequestError extends ServiceError {
7
+ constructor(statusCode: number, errorResponse: ApiError, e: any);
8
+ }
9
+ /**
10
+ * Creates a {@link ServiceError} from the result of a failed call to an API generated
11
+ * by swagger-codegen. The result typically includes `response` (with a status code) and
12
+ * a `body` (the JSON the server returned with the error), but may be other things if,
13
+ * e.g., an exception occurred while attempting to invoke the service.
14
+ *
15
+ * @export
16
+ * @param {*} e The result of the failed call.
17
+ * @returns {Error} An Error created from the failed result.
18
+ */
19
+ export default function createServiceError(e: any): Error;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BadRequestError = exports.ServiceError = void 0;
4
+ class ServiceError extends Error {
5
+ constructor(message, e) {
6
+ super(message);
7
+ this.e = e;
8
+ }
9
+ }
10
+ exports.ServiceError = ServiceError;
11
+ class BadRequestError extends ServiceError {
12
+ constructor(statusCode, errorResponse, e) {
13
+ super(`Status code: ${statusCode}, body:\n${JSON.stringify(errorResponse, null, " ")}`, e);
14
+ }
15
+ }
16
+ exports.BadRequestError = BadRequestError;
17
+ /**
18
+ * Creates a {@link ServiceError} from the result of a failed call to an API generated
19
+ * by swagger-codegen. The result typically includes `response` (with a status code) and
20
+ * a `body` (the JSON the server returned with the error), but may be other things if,
21
+ * e.g., an exception occurred while attempting to invoke the service.
22
+ *
23
+ * @export
24
+ * @param {*} e The result of the failed call.
25
+ * @returns {Error} An Error created from the failed result.
26
+ */
27
+ function createServiceError(e) {
28
+ if (e && e.response && e.response.statusCode && e.body) {
29
+ return new BadRequestError(e.response.statusCode, e.body, e);
30
+ }
31
+ else if (e && e instanceof Error) {
32
+ return e;
33
+ }
34
+ else if (e && e.toString() !== {}.toString()) {
35
+ return new ServiceError(e.toString(), e);
36
+ }
37
+ else if (e) {
38
+ return new ServiceError(`${JSON.stringify(e, null, " ")}`, e);
39
+ }
40
+ else {
41
+ return new ServiceError("An undefined service error occurred.", undefined);
42
+ }
43
+ }
44
+ exports.default = createServiceError;
45
+ //# sourceMappingURL=createServiceError.js.map