@magda/typescript-common 1.1.0-alpha.2 → 1.1.0-alpha.3

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 (249) 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/getMinikubeIP.d.ts +1 -0
  238. package/dist/util/getMinikubeIP.js +13 -0
  239. package/dist/util/getMinikubeIP.js.map +1 -0
  240. package/dist/util/isUuid.d.ts +2 -0
  241. package/dist/util/isUuid.js +6 -0
  242. package/dist/util/isUuid.js.map +1 -0
  243. package/dist/util/unionToThrowable.d.ts +1 -0
  244. package/dist/util/unionToThrowable.js +12 -0
  245. package/dist/util/unionToThrowable.js.map +1 -0
  246. package/dist/utilityTypes.d.ts +1 -0
  247. package/dist/utilityTypes.js +3 -0
  248. package/dist/utilityTypes.js.map +1 -0
  249. package/package.json +3 -3
@@ -0,0 +1,7 @@
1
+ import { AspectDefinition } from "./generated/registry/api";
2
+ interface AspectBuilder {
3
+ aspectDefinition: AspectDefinition;
4
+ builderFunctionString: string;
5
+ setupFunctionString?: string;
6
+ }
7
+ export default AspectBuilder;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AspectBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AspectBuilder.js","sourceRoot":"","sources":["../src/AspectBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export default class AspectCreationFailure {
2
+ readonly id: string;
3
+ readonly error: Error;
4
+ constructor(id: string, error: Error);
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AspectCreationFailure {
4
+ constructor(id, error) {
5
+ this.id = id;
6
+ this.error = error;
7
+ }
8
+ }
9
+ exports.default = AspectCreationFailure;
10
+ //# sourceMappingURL=AspectCreationFailure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AspectCreationFailure.js","sourceRoot":"","sources":["../src/AspectCreationFailure.ts"],"names":[],"mappings":";;AAAA,MAAqB,qBAAqB;IACtC,YAAqB,EAAU,EAAW,KAAY;QAAjC,OAAE,GAAF,EAAE,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;CAC7D;AAFD,wCAEC"}
@@ -0,0 +1,18 @@
1
+ export interface CreateAsyncPage<T> {
2
+ (): Promise<AsyncPage<T>>;
3
+ }
4
+ export default class AsyncPage<T> {
5
+ readonly requestNextPage: CreateAsyncPage<T>;
6
+ readonly data: T;
7
+ readonly hasData: boolean;
8
+ static create<T>(next: (data: T) => Promise<T>): AsyncPage<T>;
9
+ static single<T>(value: T): AsyncPage<T>;
10
+ static singlePromise<T>(valuePromise: Promise<T>): AsyncPage<T>;
11
+ static none<T>(): AsyncPage<T>;
12
+ constructor(data: T, hasData: boolean, requestNextPage: CreateAsyncPage<T>);
13
+ map<TResult>(selector: (data: T) => TResult): AsyncPage<TResult>;
14
+ forEach(callback: (data: T) => void): Promise<void>;
15
+ take(n: number): AsyncPage<T>;
16
+ }
17
+ export declare function forEachAsync<T>(page: AsyncPage<T[]>, maxConcurrency: number, callbackFn: (data: T) => Promise<void>): Promise<void>;
18
+ export declare function asyncPageToArray<T>(page: AsyncPage<T[]>): Promise<T[]>;
@@ -0,0 +1,140 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.asyncPageToArray = exports.forEachAsync = void 0;
13
+ class AsyncPage {
14
+ constructor(data, hasData, requestNextPage) {
15
+ this.data = data;
16
+ this.hasData = hasData;
17
+ this.requestNextPage = requestNextPage;
18
+ }
19
+ static create(next) {
20
+ const nextPage = (lastPage) => {
21
+ const nextPromise = next(lastPage);
22
+ if (!nextPromise) {
23
+ // There is no next page.
24
+ return Promise.resolve(new AsyncPage(undefined, false, undefined));
25
+ }
26
+ return nextPromise.then((thisPage) => {
27
+ return new AsyncPage(thisPage, true, () => nextPage(thisPage));
28
+ });
29
+ };
30
+ return new AsyncPage(undefined, false, () => nextPage(undefined));
31
+ }
32
+ static single(value) {
33
+ return new AsyncPage(value, true, undefined);
34
+ }
35
+ static singlePromise(valuePromise) {
36
+ return AsyncPage.create((current) => current ? undefined : valuePromise);
37
+ }
38
+ static none() {
39
+ return new AsyncPage(undefined, false, undefined);
40
+ }
41
+ map(selector) {
42
+ function loadNextPage(pager) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const nextPage = yield pager.requestNextPage();
45
+ const data = nextPage.hasData ? selector(nextPage.data) : undefined;
46
+ const loadNextPageFunction = nextPage.requestNextPage
47
+ ? () => loadNextPage(nextPage)
48
+ : undefined;
49
+ return new AsyncPage(data, nextPage.hasData, loadNextPageFunction);
50
+ });
51
+ }
52
+ return new AsyncPage(this.hasData ? selector(this.data) : undefined, this.hasData, this.requestNextPage ? () => loadNextPage(this) : undefined);
53
+ }
54
+ forEach(callback) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ let current = this;
57
+ while (current) {
58
+ if (current.hasData) {
59
+ callback(current.data);
60
+ }
61
+ if (current.requestNextPage) {
62
+ current = yield current.requestNextPage();
63
+ }
64
+ else {
65
+ current = undefined;
66
+ }
67
+ }
68
+ });
69
+ }
70
+ take(n) {
71
+ if (n === 0) {
72
+ return AsyncPage.none();
73
+ }
74
+ const nextN = this.hasData ? n - 1 : n;
75
+ return new AsyncPage(this.data, this.hasData, this.requestNextPage
76
+ ? () => this.requestNextPage().then((page) => page.take(nextN))
77
+ : undefined);
78
+ }
79
+ }
80
+ exports.default = AsyncPage;
81
+ function forEachAsync(page, maxConcurrency, callbackFn) {
82
+ let currentPromise = undefined;
83
+ let currentPage = page;
84
+ let currentIndex = 0;
85
+ let resultIndex = 0;
86
+ function getNext() {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ while (currentPage.requestNextPage &&
89
+ (!currentPage.hasData || currentIndex >= currentPage.data.length)) {
90
+ if (!currentPromise) {
91
+ currentPromise = currentPage
92
+ .requestNextPage()
93
+ .then((nextPage) => {
94
+ currentIndex = 0;
95
+ currentPromise = undefined;
96
+ currentPage = nextPage;
97
+ return nextPage;
98
+ });
99
+ }
100
+ currentPage = yield currentPromise;
101
+ }
102
+ if (!currentPage.hasData || currentIndex >= currentPage.data.length) {
103
+ return undefined;
104
+ }
105
+ return {
106
+ value: currentPage.data[currentIndex++],
107
+ index: resultIndex++
108
+ };
109
+ });
110
+ }
111
+ function callNext() {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const next = yield getNext();
114
+ if (!next) {
115
+ return;
116
+ }
117
+ yield callbackFn(next.value);
118
+ // Start the next value.
119
+ return callNext();
120
+ });
121
+ }
122
+ const promises = [];
123
+ for (var i = 0; i < maxConcurrency; ++i) {
124
+ promises.push(callNext());
125
+ }
126
+ return Promise.all(promises).then((results) => {
127
+ return;
128
+ });
129
+ }
130
+ exports.forEachAsync = forEachAsync;
131
+ function asyncPageToArray(page) {
132
+ const result = new Array();
133
+ return page
134
+ .forEach((value) => {
135
+ result.push(...value);
136
+ })
137
+ .then(() => result);
138
+ }
139
+ exports.asyncPageToArray = asyncPageToArray;
140
+ //# sourceMappingURL=AsyncPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncPage.js","sourceRoot":"","sources":["../src/AsyncPage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import AspectCreationFailure from "./AspectCreationFailure";
2
+ import RecordCreationFailure from "./RecordCreationFailure";
3
+ export default class ConnectionResult {
4
+ aspectDefinitionsConnected: number;
5
+ organizationsConnected: number;
6
+ datasetsConnected: number;
7
+ distributionsConnected: number;
8
+ recordsTrimmed: number;
9
+ trimStillProcessing: boolean;
10
+ aspectDefinitionFailures: AspectCreationFailure[];
11
+ organizationFailures: RecordCreationFailure[];
12
+ datasetFailures: RecordCreationFailure[];
13
+ distributionFailures: RecordCreationFailure[];
14
+ summarize(): string;
15
+ static combine(...results: ConnectionResult[]): ConnectionResult;
16
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ConnectionResult {
4
+ constructor() {
5
+ this.aspectDefinitionsConnected = 0;
6
+ this.organizationsConnected = 0;
7
+ this.datasetsConnected = 0;
8
+ this.distributionsConnected = 0;
9
+ this.recordsTrimmed = 0;
10
+ this.trimStillProcessing = false;
11
+ this.aspectDefinitionFailures = Array();
12
+ this.organizationFailures = Array();
13
+ this.datasetFailures = Array();
14
+ this.distributionFailures = Array();
15
+ }
16
+ summarize() {
17
+ let result = "";
18
+ result +=
19
+ "Aspect Definitions Connected: " +
20
+ this.aspectDefinitionsConnected +
21
+ "\n";
22
+ result += "Datasets Connected: " + this.datasetsConnected + "\n";
23
+ result +=
24
+ "Distributions Connected: " + this.distributionsConnected + "\n";
25
+ result +=
26
+ "Organizations Connected: " + this.organizationsConnected + "\n";
27
+ result += "Records Trimmed: " + this.recordsTrimmed + "\n";
28
+ if (this.trimStillProcessing) {
29
+ result += "(trim still processing) \n";
30
+ }
31
+ if (this.aspectDefinitionFailures.length > 0) {
32
+ result +=
33
+ "Aspect Definition Failures:\n" +
34
+ JSON.stringify(this.aspectDefinitionFailures, undefined, " ") +
35
+ "\n";
36
+ }
37
+ if (this.organizationFailures.length > 0) {
38
+ result +=
39
+ "Organization Failures:\n" +
40
+ JSON.stringify(this.organizationFailures, undefined, " ") +
41
+ "\n";
42
+ }
43
+ if (this.datasetFailures.length > 0) {
44
+ result +=
45
+ "Dataset Failures:\n" +
46
+ JSON.stringify(this.datasetFailures, undefined, " ") +
47
+ "\n";
48
+ }
49
+ if (this.distributionFailures.length > 0) {
50
+ result +=
51
+ "Distribution Failures:\n" +
52
+ JSON.stringify(this.distributionFailures, undefined, " ") +
53
+ "\n";
54
+ }
55
+ return result;
56
+ }
57
+ static combine(...results) {
58
+ const total = new ConnectionResult();
59
+ results.forEach((result) => {
60
+ total.aspectDefinitionsConnected +=
61
+ result.aspectDefinitionsConnected;
62
+ total.organizationsConnected += result.organizationsConnected;
63
+ total.datasetsConnected += result.datasetsConnected;
64
+ total.distributionsConnected += result.distributionsConnected;
65
+ total.recordsTrimmed += result.recordsTrimmed;
66
+ total.trimStillProcessing =
67
+ result.trimStillProcessing || total.trimStillProcessing;
68
+ total.aspectDefinitionFailures.push(...result.aspectDefinitionFailures);
69
+ total.organizationFailures.push(...result.organizationFailures);
70
+ total.datasetFailures.push(...result.datasetFailures);
71
+ total.distributionFailures.push(...result.distributionFailures);
72
+ });
73
+ return total;
74
+ }
75
+ }
76
+ exports.default = ConnectionResult;
77
+ //# sourceMappingURL=ConnectionResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionResult.js","sourceRoot":"","sources":["../src/ConnectionResult.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const RecordTypeMapping: {
2
+ Organization: string;
3
+ Dataset: string;
4
+ Distribution: string;
5
+ Group: string;
6
+ };
7
+ export declare type RecordType = "Organization" | "Dataset" | "Distribution" | "Group";
8
+ export default class ConnectorRecordId {
9
+ readonly id: string;
10
+ readonly type: RecordType;
11
+ readonly sourceId: string;
12
+ constructor(id: string, type: RecordType, sourceId: string);
13
+ toString(): string;
14
+ private get typeId();
15
+ }
@@ -0,0 +1,46 @@
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.RecordTypeMapping = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ exports.RecordTypeMapping = {
9
+ Organization: "org",
10
+ Dataset: "ds",
11
+ Distribution: "dist",
12
+ Group: "gp"
13
+ };
14
+ class ConnectorRecordId {
15
+ constructor(id, type, sourceId) {
16
+ this.id = id;
17
+ this.type = type;
18
+ this.sourceId = sourceId;
19
+ }
20
+ toString() {
21
+ const id = [this.typeId, this.sourceId, this.id].join("-");
22
+ if (id.length > 100) {
23
+ // ID is too long, so hash the source record ID.
24
+ const hashedId = crypto_1.default
25
+ .createHash("sha256")
26
+ .update(this.id, "utf8")
27
+ .digest("hex");
28
+ const hashedFullId = [this.typeId, this.sourceId, hashedId].join("-");
29
+ if (hashedFullId.length > 100) {
30
+ // It's _still_ too long, probably because the sourceId is excessively long.
31
+ // So hash the full ID, including the sourceId and typeId.
32
+ return crypto_1.default
33
+ .createHash("sha256")
34
+ .update(id, "utf8")
35
+ .digest("hex");
36
+ }
37
+ return hashedFullId;
38
+ }
39
+ return id;
40
+ }
41
+ get typeId() {
42
+ return exports.RecordTypeMapping[this.type];
43
+ }
44
+ }
45
+ exports.default = ConnectorRecordId;
46
+ //# sourceMappingURL=ConnectorRecordId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectorRecordId.js","sourceRoot":"","sources":["../src/ConnectorRecordId.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAEf,QAAA,iBAAiB,GAAG;IAC7B,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,MAAM;IACpB,KAAK,EAAE,IAAI;CACd,CAAC;AAIF,MAAqB,iBAAiB;IAClC,YACa,EAAU,EACV,IAAgB,EAChB,QAAgB;QAFhB,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAY;QAChB,aAAQ,GAAR,QAAQ,CAAQ;IAC1B,CAAC;IAEJ,QAAQ;QACJ,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YACjB,gDAAgD;YAChD,MAAM,QAAQ,GAAG,gBAAM;iBAClB,UAAU,CAAC,QAAQ,CAAC;iBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;iBACvB,MAAM,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC5D,GAAG,CACN,CAAC;YACF,IAAI,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC3B,4EAA4E;gBAC5E,0DAA0D;gBAC1D,OAAO,gBAAM;qBACR,UAAU,CAAC,QAAQ,CAAC;qBACpB,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;qBAClB,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,YAAY,CAAC;SACvB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAY,MAAM;QACd,OAAO,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACJ;AAlCD,oCAkCC"}
@@ -0,0 +1,195 @@
1
+ import { Record } from "./generated/registry/api";
2
+ import AsyncPage from "./AsyncPage";
3
+ import { RecordType } from "./ConnectorRecordId";
4
+ import ConnectionResult from "./ConnectionResult";
5
+ import JsonTransformer from "./JsonTransformer";
6
+ import Registry from "./registry/AuthorizedRegistryClient";
7
+ /**
8
+ * A base class for connectors for most any JSON-based catalog source.
9
+ */
10
+ export default class JsonConnector {
11
+ readonly source: ConnectorSource;
12
+ readonly transformer: JsonTransformer;
13
+ readonly registry: Registry;
14
+ readonly maxConcurrency: number;
15
+ readonly sourceTag?: string;
16
+ readonly configData?: JsonConnectorConfig;
17
+ constructor({ source, transformer, registry, maxConcurrency, sourceTag }: JsonConnectorOptions);
18
+ readConfigData(): JsonConnectorConfig;
19
+ createAspectDefinitions(): Promise<ConnectionResult>;
20
+ createOrganization(organizationJson: object): Promise<Record | Error>;
21
+ createDataset(datasetJson: object): Promise<Record | Error>;
22
+ createDistribution(distributionJson: object, datasetJson: object): Promise<Record | Error>;
23
+ createOrganizations(): Promise<ConnectionResult>;
24
+ createDatasetsAndDistributions(): Promise<ConnectionResult>;
25
+ trimRecords(): Promise<ConnectionResult>;
26
+ /**
27
+ * Runs the connector, creating aspect definitions, organizations, datasets, and distributions in the
28
+ * registry as necessary.
29
+ *
30
+ * @returns {Promise<ConnectionResult>}
31
+ * @memberof JsonConnector
32
+ */
33
+ run(): Promise<ConnectionResult>;
34
+ runInteractive(options: JsonConnectorRunInteractiveOptions): void;
35
+ private shutdownOnIdle;
36
+ putRecord(record: Record, recordType: RecordType): Promise<Record | Error>;
37
+ /**
38
+ * Copy `extras` from connector config data to
39
+ * records `source` aspect
40
+ */
41
+ private attachConnectorDataToSource;
42
+ private attachConnectorPresetAspects;
43
+ }
44
+ export interface ConnectorSource {
45
+ /**
46
+ * The ID of the source. This is used to prefix IDs of datasets, distributions, and organizations
47
+ * found in this source.
48
+ */
49
+ readonly id: string;
50
+ /**
51
+ * The user-friendly name of the source.
52
+ */
53
+ readonly name: string;
54
+ /**
55
+ * This field is not compulsory and JsonConnector will try to locate its value from commandline parameters
56
+ * before use ConnectorSource.extras as backup --- more for test cases
57
+ */
58
+ readonly extras?: JsonConnectorConfigExtraMetaData;
59
+ /**
60
+ * This field is not compulsory and JsonConnector will try to locate its value from commandline parameters
61
+ * before use ConnectorSource.presetRecordAspects as backup --- more for test cases
62
+ */
63
+ readonly presetRecordAspects?: JsonConnectorConfigPresetAspect[];
64
+ /**
65
+ * Get all of the datasets as pages of objects.
66
+ *
67
+ * @returns {AsyncPage<any[]>} A page of datasets.
68
+ */
69
+ getJsonDatasets(): AsyncPage<any[]>;
70
+ /**
71
+ * Get a particular dataset given its ID.
72
+ *
73
+ * @param {string} id The ID of the dataset.
74
+ * @returns {Promise<any>} The dataset object with the given ID.
75
+ */
76
+ getJsonDataset(id: string): Promise<any>;
77
+ /**
78
+ * Search datasets for those that have a particular case-insensitive string
79
+ * in their title.
80
+ *
81
+ * @param {string} title The string to search for the in the title.
82
+ * @param {number} maxResults The maximum number of results to return.
83
+ * @returns {AsyncPage<any[]>} A page of matching datasets.
84
+ */
85
+ searchDatasetsByTitle(title: string, maxResults: number): AsyncPage<any[]>;
86
+ /**
87
+ * Gets the distributions of a given dataset.
88
+ *
89
+ * @param {object} dataset The dataset.
90
+ * @returns {AsyncPage<any[]>} A page of distributions of the dataset.
91
+ */
92
+ getJsonDistributions(dataset: any): AsyncPage<any[]>;
93
+ /**
94
+ * True if the source provides organizations as first-class objects that can be enumerated and retrieved
95
+ * by ID. False if organizations are just fields on datasets or distributions, or if they're not
96
+ * available at all.
97
+ */
98
+ readonly hasFirstClassOrganizations: boolean;
99
+ /**
100
+ * Enumerates first-class organizations. If {@link hasFirstClassOrganizations} is false, this
101
+ * method returns undefined.
102
+ *
103
+ * @returns {AsyncPage<any[]>} A page of organizations, or undefined if first-class organizations are not available.
104
+ */
105
+ getJsonFirstClassOrganizations(): AsyncPage<any[]>;
106
+ /**
107
+ * Gets a first-class organization by ID. If {@link hasFirstClassOrganizations} is false, this
108
+ * method returns undefined.
109
+ *
110
+ * @param {string} id The ID of the organization to retrieve.
111
+ * @returns {Promise<any>} A promise for the organization, or undefined if first-class organizations are not available.
112
+ */
113
+ getJsonFirstClassOrganization(id: string): Promise<any>;
114
+ /**
115
+ * Search first-class organizations for those that have a particular case-insensitive string
116
+ * in their title.
117
+ *
118
+ * @param {string} title The string to search for the in the title.
119
+ * @param {number} maxResults The maximum number of results to return.
120
+ * @returns {AsyncPage<any[]>} A page of matching organizations, or undefined if first-class organizations are not available.
121
+ */
122
+ searchFirstClassOrganizationsByTitle(title: string, maxResults: number): AsyncPage<any[]>;
123
+ /**
124
+ * Gets the ID of the publisher of this dataset. This method will return undefined if {@link hasFirstClassOrganizations}
125
+ * is false because non-first-class organizations do not have IDs.
126
+ *
127
+ * @param {any} dataset The dataset from which to get the publisher ID.
128
+ * @returns {string} The ID of the dataset's publisher.
129
+ */
130
+ getJsonDatasetPublisherId(dataset: any): string;
131
+ /**
132
+ * Gets the publisher organization of this dataset.
133
+ *
134
+ * @param {any} dataset The dataset from which to get the publisher.
135
+ * @returns {Promise<object>} A promise for the organization that published this dataset.
136
+ */
137
+ getJsonDatasetPublisher(dataset: any): Promise<any>;
138
+ }
139
+ export interface JsonConnectorOptions {
140
+ source: ConnectorSource;
141
+ transformer: JsonTransformer;
142
+ registry: Registry;
143
+ maxConcurrency?: number;
144
+ sourceTag?: string;
145
+ }
146
+ export interface JsonConnectorRunInteractiveOptions {
147
+ timeoutSeconds: number;
148
+ listenPort: number;
149
+ transformerOptions: any;
150
+ }
151
+ /**
152
+ * Connector extra metadata
153
+ * Will be copied to records' source aspect automatically
154
+ */
155
+ export declare type JsonConnectorConfigExtraMetaData = {
156
+ [k: string]: any;
157
+ };
158
+ /**
159
+ * Any aspects that will be `preset` on any records created by the connector
160
+ *
161
+ * opType: operation type; Describe how to add the aspect to the record
162
+ * - MERGE_LEFT: merge `presetAspect` with records aspects.
163
+ * i.e. `presetAspect` will be overwritten by records aspects data if any
164
+ * - MEREG_RIGHT: merge records aspects with `presetAspect`.
165
+ * i.e. records aspects data (if any) will be overwritten by `presetAspect`
166
+ * - REPLACE: `presetAspect` will replace any existing records aspect
167
+ * - FILL: `presetAspect` will be added if no existing aspect
168
+ * Default value (If not specified) will be `MERGE_LEFT`
169
+ *
170
+ * recordType:
171
+ * Describes which type of records this aspect will be added to;
172
+ * If this field is omitted, the aspect will be added to every records.
173
+ *
174
+ * data: Object; aspect data
175
+ */
176
+ export declare type JsonConnectorConfigPresetAspect = {
177
+ id: string;
178
+ recordType?: RecordType;
179
+ opType?: "MERGE_LEFT" | "REPLACE" | "FILL" | "MERGE_RIGHT";
180
+ data: {
181
+ [k: string]: any;
182
+ };
183
+ };
184
+ export interface JsonConnectorConfig {
185
+ id: string;
186
+ name: string;
187
+ sourceUrl?: string;
188
+ pageSize?: number;
189
+ schedule?: string;
190
+ ignoreHarvestSources?: string[];
191
+ allowedOrganisationNames?: string[];
192
+ ignoreOrganisationNames?: string[];
193
+ extras?: JsonConnectorConfigExtraMetaData;
194
+ presetRecordAspects?: JsonConnectorConfigPresetAspect[];
195
+ }