@magda/typescript-common 1.1.0-arm64.0 → 1.2.0-alpha.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.
- package/dist/AspectBuilder.d.ts +7 -0
- package/dist/AspectBuilder.js +3 -0
- package/dist/AspectBuilder.js.map +1 -0
- package/dist/AspectCreationFailure.d.ts +5 -0
- package/dist/AspectCreationFailure.js +10 -0
- package/dist/AspectCreationFailure.js.map +1 -0
- package/dist/AsyncPage.d.ts +18 -0
- package/dist/AsyncPage.js +140 -0
- package/dist/AsyncPage.js.map +1 -0
- package/dist/ConnectionResult.d.ts +16 -0
- package/dist/ConnectionResult.js +77 -0
- package/dist/ConnectionResult.js.map +1 -0
- package/dist/ConnectorRecordId.d.ts +15 -0
- package/dist/ConnectorRecordId.js +46 -0
- package/dist/ConnectorRecordId.js.map +1 -0
- package/dist/JsonConnector.d.ts +195 -0
- package/dist/JsonConnector.js +427 -0
- package/dist/JsonConnector.js.map +1 -0
- package/dist/JsonTransformer.d.ts +112 -0
- package/dist/JsonTransformer.js +225 -0
- package/dist/JsonTransformer.js.map +1 -0
- package/dist/OpaCompileResponseParser.d.ts +480 -0
- package/dist/OpaCompileResponseParser.js +1134 -0
- package/dist/OpaCompileResponseParser.js.map +1 -0
- package/dist/RecordCreationFailure.d.ts +7 -0
- package/dist/RecordCreationFailure.js +11 -0
- package/dist/RecordCreationFailure.js.map +1 -0
- package/dist/SimpleOpaSQLTranslator.d.ts +14 -0
- package/dist/SimpleOpaSQLTranslator.js +79 -0
- package/dist/SimpleOpaSQLTranslator.js.map +1 -0
- package/dist/addTrailingSlash.d.ts +1 -0
- package/dist/addTrailingSlash.js +15 -0
- package/dist/addTrailingSlash.js.map +1 -0
- package/dist/appendUrlSegments.d.ts +2 -0
- package/dist/appendUrlSegments.js +18 -0
- package/dist/appendUrlSegments.js.map +1 -0
- package/dist/authorization-api/AccessControlError.d.ts +4 -0
- package/dist/authorization-api/AccessControlError.js +13 -0
- package/dist/authorization-api/AccessControlError.js.map +1 -0
- package/dist/authorization-api/ApiClient.d.ts +141 -0
- package/dist/authorization-api/ApiClient.js +335 -0
- package/dist/authorization-api/ApiClient.js.map +1 -0
- package/dist/authorization-api/AuthError.d.ts +4 -0
- package/dist/authorization-api/AuthError.js +13 -0
- package/dist/authorization-api/AuthError.js.map +1 -0
- package/dist/authorization-api/GenericError.d.ts +9 -0
- package/dist/authorization-api/GenericError.js +17 -0
- package/dist/authorization-api/GenericError.js.map +1 -0
- package/dist/authorization-api/authMiddleware.d.ts +7 -0
- package/dist/authorization-api/authMiddleware.js +52 -0
- package/dist/authorization-api/authMiddleware.js.map +1 -0
- package/dist/authorization-api/model.d.ts +99 -0
- package/dist/authorization-api/model.js +3 -0
- package/dist/authorization-api/model.js.map +1 -0
- package/dist/coerceJson.d.ts +2 -0
- package/dist/coerceJson.js +13 -0
- package/dist/coerceJson.js.map +1 -0
- package/dist/createServiceError.d.ts +19 -0
- package/dist/createServiceError.js +45 -0
- package/dist/createServiceError.js.map +1 -0
- package/dist/delay.d.ts +2 -0
- package/dist/delay.js +9 -0
- package/dist/delay.js.map +1 -0
- package/dist/express/status.d.ts +30 -0
- package/dist/express/status.js +180 -0
- package/dist/express/status.js.map +1 -0
- package/dist/formatServiceError.d.ts +1 -0
- package/dist/formatServiceError.js +23 -0
- package/dist/formatServiceError.js.map +1 -0
- package/dist/generated/registry/api.d.ts +596 -0
- package/dist/generated/registry/api.js +2060 -0
- package/dist/generated/registry/api.js.map +1 -0
- package/dist/getAbsoluteUrl.d.ts +12 -0
- package/dist/getAbsoluteUrl.js +35 -0
- package/dist/getAbsoluteUrl.js.map +1 -0
- package/dist/getBasePathFromUrl.d.ts +10 -0
- package/dist/getBasePathFromUrl.js +27 -0
- package/dist/getBasePathFromUrl.js.map +1 -0
- package/dist/markdownToHtml.d.ts +3 -0
- package/dist/markdownToHtml.js +38 -0
- package/dist/markdownToHtml.js.map +1 -0
- package/dist/opa/OpaTypes.d.ts +41 -0
- package/dist/opa/OpaTypes.js +3 -0
- package/dist/opa/OpaTypes.js.map +1 -0
- package/dist/opa/getAuthDecision.d.ts +19 -0
- package/dist/opa/getAuthDecision.js +94 -0
- package/dist/opa/getAuthDecision.js.map +1 -0
- package/dist/opa/queryOpa.d.ts +1 -0
- package/dist/opa/queryOpa.js +41 -0
- package/dist/opa/queryOpa.js.map +1 -0
- package/dist/registry/AuthorizedRegistryClient.d.ts +29 -0
- package/dist/registry/AuthorizedRegistryClient.js +115 -0
- package/dist/registry/AuthorizedRegistryClient.js.map +1 -0
- package/dist/registry/RegistryClient.d.ts +36 -0
- package/dist/registry/RegistryClient.js +59 -0
- package/dist/registry/RegistryClient.js.map +1 -0
- package/dist/registry/TenantConsts.d.ts +31 -0
- package/dist/registry/TenantConsts.js +35 -0
- package/dist/registry/TenantConsts.js.map +1 -0
- package/dist/registry-manual/api.d.ts +9 -0
- package/dist/registry-manual/api.js +10 -0
- package/dist/registry-manual/api.js.map +1 -0
- package/dist/request.d.ts +3 -0
- package/dist/request.js +19 -0
- package/dist/request.js.map +1 -0
- package/dist/retry.d.ts +1 -0
- package/dist/retry.js +21 -0
- package/dist/retry.js.map +1 -0
- package/dist/retryBackoff.d.ts +1 -0
- package/dist/retryBackoff.js +21 -0
- package/dist/retryBackoff.js.map +1 -0
- package/dist/runLater.d.ts +1 -0
- package/dist/runLater.js +16 -0
- package/dist/runLater.js.map +1 -0
- package/dist/session/GetUserId.d.ts +5 -0
- package/dist/session/GetUserId.js +41 -0
- package/dist/session/GetUserId.js.map +1 -0
- package/dist/session/GetUserSession.d.ts +3 -0
- package/dist/session/GetUserSession.js +22 -0
- package/dist/session/GetUserSession.js.map +1 -0
- package/dist/session/addJwtSecretFromEnvVar.d.ts +14 -0
- package/dist/session/addJwtSecretFromEnvVar.js +23 -0
- package/dist/session/addJwtSecretFromEnvVar.js.map +1 -0
- package/dist/session/buildJwt.d.ts +1 -0
- package/dist/session/buildJwt.js +8 -0
- package/dist/session/buildJwt.js.map +1 -0
- package/dist/session/cookieUtils.d.ts +16 -0
- package/dist/session/cookieUtils.js +19 -0
- package/dist/session/cookieUtils.js.map +1 -0
- package/dist/session/destroySession.d.ts +10 -0
- package/dist/session/destroySession.js +44 -0
- package/dist/session/destroySession.js.map +1 -0
- package/dist/session/getSessionId.d.ts +2 -0
- package/dist/session/getSessionId.js +28 -0
- package/dist/session/getSessionId.js.map +1 -0
- package/dist/tenant-api/AuthorizedTenantClient.d.ts +25 -0
- package/dist/tenant-api/AuthorizedTenantClient.js +61 -0
- package/dist/tenant-api/AuthorizedTenantClient.js.map +1 -0
- package/dist/tenant-api/Tenant.d.ts +17 -0
- package/dist/tenant-api/Tenant.js +10 -0
- package/dist/tenant-api/Tenant.js.map +1 -0
- package/dist/test/JsonConnector.spec.d.ts +1 -0
- package/dist/test/JsonConnector.spec.js +352 -0
- package/dist/test/JsonConnector.spec.js.map +1 -0
- package/dist/test/JsonTransformer.spec.d.ts +1 -0
- package/dist/test/JsonTransformer.spec.js +98 -0
- package/dist/test/JsonTransformer.spec.js.map +1 -0
- package/dist/test/arbitraries.d.ts +98 -0
- package/dist/test/arbitraries.js +264 -0
- package/dist/test/arbitraries.js.map +1 -0
- package/dist/test/aspect-templates/organization-details.d.ts +4 -0
- package/dist/test/aspect-templates/organization-details.js +11 -0
- package/dist/test/aspect-templates/organization-details.js.map +1 -0
- package/dist/test/buildApiClient.spec.d.ts +1 -0
- package/dist/test/buildApiClient.spec.js +177 -0
- package/dist/test/buildApiClient.spec.js.map +1 -0
- package/dist/test/buildAuthorizedTenantClient.spec.d.ts +1 -0
- package/dist/test/buildAuthorizedTenantClient.spec.js +60 -0
- package/dist/test/buildAuthorizedTenantClient.spec.js.map +1 -0
- package/dist/test/connectors/MockExpressServer.d.ts +5 -0
- package/dist/test/connectors/MockExpressServer.js +28 -0
- package/dist/test/connectors/MockExpressServer.js.map +1 -0
- package/dist/test/connectors/MockRegistry.d.ts +7 -0
- package/dist/test/connectors/MockRegistry.js +93 -0
- package/dist/test/connectors/MockRegistry.js.map +1 -0
- package/dist/test/connectors/runConnectorTest.d.ts +5 -0
- package/dist/test/connectors/runConnectorTest.js +106 -0
- package/dist/test/connectors/runConnectorTest.js.map +1 -0
- package/dist/test/db/getTestDBConfig.d.ts +7 -0
- package/dist/test/db/getTestDBConfig.js +13 -0
- package/dist/test/db/getTestDBConfig.js.map +1 -0
- package/dist/test/db/runMigrationSql.d.ts +9 -0
- package/dist/test/db/runMigrationSql.js +82 -0
- package/dist/test/db/runMigrationSql.js.map +1 -0
- package/dist/test/express/status.spec.d.ts +1 -0
- package/dist/test/express/status.spec.js +160 -0
- package/dist/test/express/status.spec.js.map +1 -0
- package/dist/test/fakeArgv.d.ts +2 -0
- package/dist/test/fakeArgv.js +7 -0
- package/dist/test/fakeArgv.js.map +1 -0
- package/dist/test/getAuthDecision.spec.d.ts +1 -0
- package/dist/test/getAuthDecision.spec.js +22 -0
- package/dist/test/getAuthDecision.spec.js.map +1 -0
- package/dist/test/getBasePathFromUrl.spec.d.ts +1 -0
- package/dist/test/getBasePathFromUrl.spec.js +25 -0
- package/dist/test/getBasePathFromUrl.spec.js.map +1 -0
- package/dist/test/jsverify.d.ts +2 -0
- package/dist/test/jsverify.js +8 -0
- package/dist/test/jsverify.js.map +1 -0
- package/dist/test/mockAuthApiHost.d.ts +14 -0
- package/dist/test/mockAuthApiHost.js +174 -0
- package/dist/test/mockAuthApiHost.js.map +1 -0
- package/dist/test/mockAuthorization.d.ts +3 -0
- package/dist/test/mockAuthorization.js +24 -0
- package/dist/test/mockAuthorization.js.map +1 -0
- package/dist/test/mockTenantDataStore.d.ts +8 -0
- package/dist/test/mockTenantDataStore.js +41 -0
- package/dist/test/mockTenantDataStore.js.map +1 -0
- package/dist/test/mockUserDataStore.d.ts +11 -0
- package/dist/test/mockUserDataStore.js +56 -0
- package/dist/test/mockUserDataStore.js.map +1 -0
- package/dist/test/registry/buildAuthorizedClient.spec.d.ts +1 -0
- package/dist/test/registry/buildAuthorizedClient.spec.js +101 -0
- package/dist/test/registry/buildAuthorizedClient.spec.js.map +1 -0
- package/dist/test/sampleOpaResponse.json +480 -0
- package/dist/test/sampleOpaResponseSimple.json +173 -0
- package/dist/test/sampleOpaResponseUnconditionalTrue.json +193 -0
- package/dist/test/sampleOpaResponseUnconditionalTrueWithDefaultRule.json +303 -0
- package/dist/test/sampleOpaResponseWithDefaultRule.json +303 -0
- package/dist/test/session/buildJwt.spec.d.ts +1 -0
- package/dist/test/session/buildJwt.spec.js +50 -0
- package/dist/test/session/buildJwt.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js +64 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js +52 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js +36 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js.map +1 -0
- package/dist/test/testAsyncPage.spec.d.ts +1 -0
- package/dist/test/testAsyncPage.spec.js +463 -0
- package/dist/test/testAsyncPage.spec.js.map +1 -0
- package/dist/test/testOpaCompileResponseParser.spec.d.ts +1 -0
- package/dist/test/testOpaCompileResponseParser.spec.js +148 -0
- package/dist/test/testOpaCompileResponseParser.spec.js.map +1 -0
- package/dist/test/util.d.ts +1 -0
- package/dist/test/util.js +8 -0
- package/dist/test/util.js.map +1 -0
- package/dist/util/arrayToMaybe.d.ts +2 -0
- package/dist/util/arrayToMaybe.js +8 -0
- package/dist/util/arrayToMaybe.js.map +1 -0
- package/dist/util/cleanOrgTitle.d.ts +1 -0
- package/dist/util/cleanOrgTitle.js +13 -0
- package/dist/util/cleanOrgTitle.js.map +1 -0
- package/dist/util/escapeRegExp.d.ts +2 -0
- package/dist/util/escapeRegExp.js +5 -0
- package/dist/util/escapeRegExp.js.map +1 -0
- package/dist/util/getMinikubeIP.d.ts +1 -0
- package/dist/util/getMinikubeIP.js +13 -0
- package/dist/util/getMinikubeIP.js.map +1 -0
- package/dist/util/isUuid.d.ts +2 -0
- package/dist/util/isUuid.js +6 -0
- package/dist/util/isUuid.js.map +1 -0
- package/dist/util/unionToThrowable.d.ts +1 -0
- package/dist/util/unionToThrowable.js +12 -0
- package/dist/util/unionToThrowable.js.map +1 -0
- package/dist/utilityTypes.d.ts +1 -0
- package/dist/utilityTypes.js +3 -0
- package/dist/utilityTypes.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AspectBuilder.js","sourceRoot":"","sources":["../src/AspectBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
+
}
|