@coveo/push-api-client 2.0.0 → 2.1.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/README.md +2 -2
- package/dist/definitions/errors/privilegeError.d.ts +6 -0
- package/dist/definitions/help/axiosUtils.d.ts +2 -0
- package/dist/definitions/help/fileContainer.d.ts +9 -0
- package/dist/definitions/help/fileContainer.spec.d.ts +1 -0
- package/dist/definitions/help/urlUtils.d.ts +27 -0
- package/dist/definitions/interfaces.d.ts +4 -1
- package/dist/definitions/source/batchUploadDocumentsFromFile.d.ts +11 -0
- package/dist/definitions/source/catalog.d.ts +69 -0
- package/dist/definitions/source/catalog.spec.d.ts +1 -0
- package/dist/definitions/source/catalog.stream.spec.d.ts +1 -0
- package/dist/definitions/source/documentUploader.d.ts +5 -0
- package/dist/definitions/source/push.d.ts +5 -12
- package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +23 -0
- package/dist/definitions/uploadStrategy/index.d.ts +3 -0
- package/dist/definitions/uploadStrategy/strategy.d.ts +16 -0
- package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +27 -0
- package/dist/definitions/validation/preconditions/apiKeyPrivilege.d.ts +3 -0
- package/dist/definitions/validation/preconditions/apiKeyPrivilege.spec.d.ts +1 -0
- package/dist/definitions/validation/preconditions/platformPrivilege.d.ts +7 -0
- package/dist/docs/assets/search.js +1 -1
- package/dist/docs/classes/AnySecurityIdentityBuilder.html +2 -2
- package/dist/docs/classes/DocumentBuilder.html +16 -16
- package/dist/docs/classes/FieldAnalyser.html +3 -3
- package/dist/docs/classes/GroupSecurityIdentityBuilder.html +2 -2
- package/dist/docs/classes/PushSource.html +14 -14
- package/dist/docs/classes/UserSecurityIdentityBuilder.html +2 -2
- package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +2 -2
- package/dist/docs/enums/PlatformEnvironment.html +1 -1
- package/dist/docs/index.html +1 -1
- package/dist/docs/interfaces/BatchUpdateDocuments.html +1 -1
- package/dist/docs/interfaces/Document.html +13 -13
- package/dist/docs/interfaces/SecurityIdentity.html +3 -3
- package/dist/docs/interfaces/SecurityIdentityBuilder.html +1 -1
- package/dist/docs/interfaces/UploadBatchCallbackData.html +1 -1
- package/dist/docs/modules.html +2 -2
- package/dist/errors/privilegeError.js +13 -0
- package/dist/errors/privilegeError.js.map +1 -0
- package/dist/fieldAnalyser/fieldAnalyser.js +3 -0
- package/dist/fieldAnalyser/fieldAnalyser.js.map +1 -1
- package/dist/fieldAnalyser/fieldAnalyser.spec.js +13 -0
- package/dist/fieldAnalyser/fieldAnalyser.spec.js.map +1 -1
- package/dist/fieldAnalyser/fieldUtils.js +4 -0
- package/dist/fieldAnalyser/fieldUtils.js.map +1 -1
- package/dist/fieldAnalyser/fieldsUtils.spec.js +3 -0
- package/dist/fieldAnalyser/fieldsUtils.spec.js.map +1 -1
- package/dist/help/axiosUtils.js +12 -0
- package/dist/help/axiosUtils.js.map +1 -0
- package/dist/help/fileContainer.js +20 -0
- package/dist/help/fileContainer.js.map +1 -0
- package/dist/help/fileContainer.spec.js +34 -0
- package/dist/help/fileContainer.spec.js.map +1 -0
- package/dist/help/urlUtils.js +43 -0
- package/dist/help/urlUtils.js.map +1 -0
- package/dist/source/batchUploadDocumentsFromFile.js +50 -0
- package/dist/source/batchUploadDocumentsFromFile.js.map +1 -0
- package/dist/source/catalog.js +115 -0
- package/dist/source/catalog.js.map +1 -0
- package/dist/source/catalog.spec.js +239 -0
- package/dist/source/catalog.spec.js.map +1 -0
- package/dist/source/catalog.stream.spec.js +189 -0
- package/dist/source/catalog.stream.spec.js.map +1 -0
- package/dist/source/documentUploader.js +23 -0
- package/dist/source/documentUploader.js.map +1 -0
- package/dist/source/push.js +19 -57
- package/dist/source/push.js.map +1 -1
- package/dist/source/push.spec.js +3 -0
- package/dist/source/push.spec.js.map +1 -1
- package/dist/uploadStrategy/fileContainerStrategy.js +34 -0
- package/dist/uploadStrategy/fileContainerStrategy.js.map +1 -0
- package/dist/uploadStrategy/index.js +7 -0
- package/dist/uploadStrategy/index.js.map +1 -0
- package/dist/uploadStrategy/strategy.js +3 -0
- package/dist/uploadStrategy/strategy.js.map +1 -0
- package/dist/uploadStrategy/streamChunkStrategy.js +51 -0
- package/dist/uploadStrategy/streamChunkStrategy.js.map +1 -0
- package/dist/validation/preconditions/apiKeyPrivilege.js +21 -0
- package/dist/validation/preconditions/apiKeyPrivilege.js.map +1 -0
- package/dist/validation/preconditions/apiKeyPrivilege.spec.js +70 -0
- package/dist/validation/preconditions/apiKeyPrivilege.spec.js.map +1 -0
- package/dist/validation/preconditions/platformPrivilege.js +35 -0
- package/dist/validation/preconditions/platformPrivilege.js.map +1 -0
- package/package.json +1 -1
- package/dist/definitions/source/batchUpdateDocumentsFromFile.d.ts +0 -10
- package/dist/source/batchUpdateDocumentsFromFile.js +0 -42
- package/dist/source/batchUpdateDocumentsFromFile.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"batchUploadDocumentsFromFile.js","sourceRoot":"","sources":["../../src/source/batchUploadDocumentsFromFile.ts"],"names":[],"mappings":";;;AACA,uDAAkE;AAClE,uCAAwD;AACxD,uDAAkD;AAClD,oCAMkB;AAClB,4DAAmE;AAEnE,uDAAmF;AAEnF,MAAa,mCAAmC;IAI9C,YACE,cAA8B,EAC9B,QAAwB,EACxB,kBAA4B,EAC5B,OAAuC;QAEvC,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC;QACF,MAAM,EAAC,aAAa,EAAE,YAAY,EAAC,mCAC9B,cAAc,GACd,OAAO,CACX,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAC9B,CAAC,KAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACvD,EAAC,aAAa,EAAC,CAChB,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;;YACjC,MAAM,KAAK,GAAG,IAAA,iCAA0B,EAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE;gBAChB,MAAM,QAAQ,GAAG,IAAI,qBAAa,CAAC,cAAc,CAAC,CAAC;gBACnD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;oBACrC,MAAM,WAAW,GACf,IAAA,sDAA0C,EAAC,QAAQ,CAAC,CAAC;oBACvD,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBACjC;gBACD,MAAM,EAAC,MAAM,EAAE,eAAe,EAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAEpD,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;oBAC5B,MAAM,IAAI,yCAA2B,CAAC,eAAe,CAAC,CAAC;iBACxD;gBACD,MAAM,IAAA,yBAAM,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;aACtC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAA,MAAA,QAAQ,CAAC,UAAU,wDAAI,CAAA,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEM,aAAa,CAAC,EAA4B;QAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,EAAwB;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;CACF;AA1DD,kFA0DC"}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CatalogSource = void 0;
|
4
|
+
require('isomorphic-fetch');
|
5
|
+
require('abortcontroller-polyfill');
|
6
|
+
const platform_client_1 = require("@coveord/platform-client");
|
7
|
+
const environment_1 = require("../environment");
|
8
|
+
const securityIdenty_1 = require("./securityIdenty");
|
9
|
+
const uploadStrategy_1 = require("../uploadStrategy");
|
10
|
+
const axiosUtils_1 = require("../help/axiosUtils");
|
11
|
+
const documentUploader_1 = require("./documentUploader");
|
12
|
+
const urlUtils_1 = require("../help/urlUtils");
|
13
|
+
const batchUploadDocumentsFromFile_1 = require("./batchUploadDocumentsFromFile");
|
14
|
+
/**
|
15
|
+
* Manage a catalog source.
|
16
|
+
*
|
17
|
+
* Allows you to create a new catalog source, manage security identities and documents in a Coveo organization.
|
18
|
+
*/
|
19
|
+
class CatalogSource {
|
20
|
+
/**
|
21
|
+
* Creates an instance of CatalogSource.
|
22
|
+
* @param {string} apikey An apiKey capable of pushing documents and managing sources in a Coveo organization. See [Manage API Keys](https://docs.coveo.com/en/1718).
|
23
|
+
* @param {string} organizationid The Coveo Organization identifier.
|
24
|
+
* @param {PlatformUrlOptions} [opts=CatalogSource.defaultOptions]
|
25
|
+
*/
|
26
|
+
constructor(apikey, organizationid, opts = CatalogSource.defaultOptions) {
|
27
|
+
this.apikey = apikey;
|
28
|
+
this.organizationid = organizationid;
|
29
|
+
this.options = Object.assign(Object.assign({}, CatalogSource.defaultOptions), opts);
|
30
|
+
this.platformClient = new platform_client_1.PlatformClient({
|
31
|
+
accessToken: apikey,
|
32
|
+
environment: (0, environment_1.castEnvironmentToPlatformClient)(this.options.environment),
|
33
|
+
organizationId: organizationid,
|
34
|
+
region: this.options.region,
|
35
|
+
});
|
36
|
+
}
|
37
|
+
/**
|
38
|
+
* Create a new catalog source
|
39
|
+
* @param name The name of the source to create.
|
40
|
+
* @param sourceVisibility The security option that should be applied to the content of the source. See [Content Security](https://docs.coveo.com/en/1779).
|
41
|
+
* @returns
|
42
|
+
*/
|
43
|
+
create(name, sourceVisibility) {
|
44
|
+
return this.platformClient.source.create({
|
45
|
+
name,
|
46
|
+
streamEnabled: true,
|
47
|
+
sourceVisibility,
|
48
|
+
sourceType: platform_client_1.SourceType.CATALOG,
|
49
|
+
});
|
50
|
+
}
|
51
|
+
get identity() {
|
52
|
+
return new securityIdenty_1.SecurityIdentity(this.platformClient);
|
53
|
+
}
|
54
|
+
/**
|
55
|
+
* Manage batches of items in a catalog source.
|
56
|
+
* See [Full Document Update](https://docs.coveo.com/en/l62e0540)
|
57
|
+
* @param sourceId
|
58
|
+
* @param batch
|
59
|
+
* @param {BatchUpdateDocumentsOptions} [{createFields: createFields = true}={}]
|
60
|
+
* @returns
|
61
|
+
*/
|
62
|
+
batchUpdateDocuments(sourceId, batch, { createFields: createFields = true } = {}) {
|
63
|
+
const strategy = this.fileContainerStrategy(sourceId);
|
64
|
+
return (0, documentUploader_1.uploadBatch)(this.platformClient, strategy, batch, createFields);
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* Send your catalog data to your catalog source.
|
68
|
+
* See [How to Stream Your Catalog Data to Your Source](https://docs.coveo.com/en/lb4a0344)
|
69
|
+
* @param {string} sourceId
|
70
|
+
* @param {BatchUpdateDocuments} batch
|
71
|
+
* @param {BatchUpdateDocumentsOptions} [{createFields: createFields = true}={}]
|
72
|
+
*/
|
73
|
+
async batchStreamDocuments(sourceId, batch, { createFields: createFields = true } = {}) {
|
74
|
+
const strategy = this.streamChunkStrategy(sourceId);
|
75
|
+
await (0, documentUploader_1.uploadBatch)(this.platformClient, strategy, batch, createFields);
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Manage batches of items in a catalog source from a list of JSON files. See [Full Document Update Source](https://docs.coveo.com/en/l62e0540)
|
79
|
+
* @param {string} sourceId The unique identifier of the target Push source
|
80
|
+
* @param {string[]} filesOrDirectories A list of JSON files or directories (containing JSON files) from which to extract documents.
|
81
|
+
* @param {BatchUpdateDocumentsFromFiles} options
|
82
|
+
*/
|
83
|
+
batchUpdateDocumentsFromFiles(sourceId, filesOrDirectories, options) {
|
84
|
+
return new batchUploadDocumentsFromFile_1.BatchUploadDocumentsFromFilesReturn(this.platformClient, this.fileContainerStrategy(sourceId), filesOrDirectories, options);
|
85
|
+
}
|
86
|
+
/**
|
87
|
+
* Send your catalog data to your catalog source from a list of JSON files.
|
88
|
+
* See [How to Stream Your Catalog Data to Your Source](https://docs.coveo.com/en/lb4a0344)
|
89
|
+
* @param {string} sourceId The unique identifier of the target Push source
|
90
|
+
* @param {string[]} filesOrDirectories A list of JSON files or directories (containing JSON files) from which to extract documents.
|
91
|
+
* @param {BatchUpdateDocumentsFromFiles} [options]
|
92
|
+
*/
|
93
|
+
batchStreamDocumentsFromFiles(sourceId, filesOrDirectories, options) {
|
94
|
+
return new batchUploadDocumentsFromFile_1.BatchUploadDocumentsFromFilesReturn(this.platformClient, this.streamChunkStrategy(sourceId), filesOrDirectories, options);
|
95
|
+
}
|
96
|
+
urlBuilder(sourceId) {
|
97
|
+
return new urlUtils_1.StreamUrlBuilder(sourceId, this.organizationid, this.options);
|
98
|
+
}
|
99
|
+
fileContainerStrategy(sourceId) {
|
100
|
+
const urlBuilder = this.urlBuilder(sourceId);
|
101
|
+
const documentsAxiosConfig = (0, axiosUtils_1.axiosRequestHeaders)(this.apikey);
|
102
|
+
return new uploadStrategy_1.FileContainerStrategy(urlBuilder, documentsAxiosConfig);
|
103
|
+
}
|
104
|
+
streamChunkStrategy(sourceId) {
|
105
|
+
const urlBuilder = this.urlBuilder(sourceId);
|
106
|
+
const documentsAxiosConfig = (0, axiosUtils_1.axiosRequestHeaders)(this.apikey);
|
107
|
+
return new uploadStrategy_1.StreamChunkStrategy(urlBuilder, documentsAxiosConfig);
|
108
|
+
}
|
109
|
+
}
|
110
|
+
exports.CatalogSource = CatalogSource;
|
111
|
+
CatalogSource.defaultOptions = {
|
112
|
+
region: environment_1.DEFAULT_REGION,
|
113
|
+
environment: environment_1.DEFAULT_ENVIRONMENT,
|
114
|
+
};
|
115
|
+
//# sourceMappingURL=catalog.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/source/catalog.ts"],"names":[],"mappings":";;;AAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC5B,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEpC,8DAIkC;AAClC,gDAKwB;AACxB,qDAAkD;AAClD,sDAA6E;AAM7E,mDAAuD;AACvD,yDAA+C;AAC/C,+CAAkD;AAClD,iFAAmF;AAEnF;;;;GAIG;AACH,MAAa,aAAa;IAQxB;;;;;OAKG;IACH,YACU,MAAc,EACd,cAAsB,EAC9B,OAA2B,aAAa,CAAC,cAAc;QAF/C,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAQ;QAG9B,IAAI,CAAC,OAAO,mCAAO,aAAa,CAAC,cAAc,GAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC;YACvC,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,IAAA,6CAA+B,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACtE,cAAc,EAAE,cAAc;YAC9B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,IAAY,EAAE,gBAAkC;QAC5D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI;YACJ,aAAa,EAAE,IAAI;YACnB,gBAAgB;YAChB,UAAU,EAAE,4BAAU,CAAC,OAAO;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,iCAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACI,oBAAoB,CACzB,QAAgB,EAChB,KAA2B,EAC3B,EAAC,YAAY,EAAE,YAAY,GAAG,IAAI,KAAiC,EAAE;QAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAA,8BAAW,EAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,oBAAoB,CAC/B,QAAgB,EAChB,KAA2B,EAC3B,EAAC,YAAY,EAAE,YAAY,GAAG,IAAI,KAAiC,EAAE;QAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAA,8BAAW,EAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACI,6BAA6B,CAClC,QAAgB,EAChB,kBAA4B,EAC5B,OAAuC;QAEvC,OAAO,IAAI,kEAAmC,CAC5C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EACpC,kBAAkB,EAClB,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,6BAA6B,CAClC,QAAgB,EAChB,kBAA4B,EAC5B,OAAuC;QAEvC,OAAO,IAAI,kEAAmC,CAC5C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAClC,kBAAkB,EAClB,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,OAAO,IAAI,2BAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;IAEO,qBAAqB,CAAC,QAAgB;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GAAG,IAAA,gCAAmB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,sCAAqB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACrE,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GAAG,IAAA,gCAAmB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,oCAAmB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACnE,CAAC;;AArIH,sCAsIC;AAnIgB,4BAAc,GAAiC;IAC5D,MAAM,EAAE,4BAAc;IACtB,WAAW,EAAE,iCAAmB;CACjC,CAAC"}
|
@@ -0,0 +1,239 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
/* eslint-disable node/no-unpublished-import */
|
4
|
+
jest.mock('@coveord/platform-client');
|
5
|
+
jest.mock('axios');
|
6
|
+
jest.mock('../fieldAnalyser/fieldAnalyser');
|
7
|
+
const platform_client_1 = require("@coveord/platform-client");
|
8
|
+
const documentBuilder_1 = require("../documentBuilder");
|
9
|
+
const axios_1 = require("axios");
|
10
|
+
const path_1 = require("path");
|
11
|
+
const process_1 = require("process");
|
12
|
+
const inconsistencies_1 = require("../fieldAnalyser/inconsistencies");
|
13
|
+
const fieldErrors_1 = require("../errors/fieldErrors");
|
14
|
+
const catalog_1 = require("./catalog");
|
15
|
+
const __1 = require("..");
|
16
|
+
const mockAxios = axios_1.default;
|
17
|
+
const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
|
18
|
+
const mockedPlatformClient = jest.mocked(platform_client_1.default);
|
19
|
+
const mockCreateSource = jest.fn();
|
20
|
+
const mockEvaluate = jest.fn();
|
21
|
+
const mockCreateField = jest.fn();
|
22
|
+
const mockAnalyserAdd = jest.fn();
|
23
|
+
const mockAnalyserReport = jest.fn();
|
24
|
+
const mockedSuccessCallback = jest.fn();
|
25
|
+
const mockedErrorCallback = jest.fn();
|
26
|
+
const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
|
27
|
+
const expectedDocumentsHeaders = {
|
28
|
+
headers: {
|
29
|
+
Accept: 'application/json',
|
30
|
+
Authorization: 'Bearer the_key',
|
31
|
+
'Content-Type': 'application/json',
|
32
|
+
},
|
33
|
+
};
|
34
|
+
const doAxiosMockFileContainerResponse = () => ({
|
35
|
+
data: {
|
36
|
+
uploadUri: 'https://fake.upload.url',
|
37
|
+
fileId: 'file_id',
|
38
|
+
requiredHeaders: { foo: 'bar' },
|
39
|
+
},
|
40
|
+
});
|
41
|
+
const doAxiosMockPost = () => {
|
42
|
+
mockAxios.post.mockImplementationOnce((url) => {
|
43
|
+
if (url.match(/files/)) {
|
44
|
+
return Promise.resolve(doAxiosMockFileContainerResponse());
|
45
|
+
}
|
46
|
+
return Promise.resolve();
|
47
|
+
});
|
48
|
+
};
|
49
|
+
const doMockPlatformClient = () => {
|
50
|
+
mockedPlatformClient.mockImplementation(() => ({
|
51
|
+
privilegeEvaluator: { evaluate: mockEvaluate },
|
52
|
+
source: {
|
53
|
+
create: mockCreateSource,
|
54
|
+
},
|
55
|
+
field: {
|
56
|
+
createFields: mockCreateField,
|
57
|
+
},
|
58
|
+
}));
|
59
|
+
};
|
60
|
+
const doMockFieldAnalyser = () => {
|
61
|
+
mockedFieldAnalyser.mockImplementation(() => ({
|
62
|
+
add: mockAnalyserAdd,
|
63
|
+
report: mockAnalyserReport,
|
64
|
+
}));
|
65
|
+
};
|
66
|
+
describe('CatalogSource - Push', () => {
|
67
|
+
let source;
|
68
|
+
let batch;
|
69
|
+
beforeAll(() => {
|
70
|
+
doMockPlatformClient();
|
71
|
+
doMockFieldAnalyser();
|
72
|
+
});
|
73
|
+
beforeEach(() => {
|
74
|
+
mockEvaluate.mockResolvedValue({ approved: true });
|
75
|
+
source = new catalog_1.CatalogSource('the_key', 'the_org');
|
76
|
+
batch = {
|
77
|
+
addOrUpdate: [
|
78
|
+
new documentBuilder_1.DocumentBuilder('the_uri_1', 'the_title_1'),
|
79
|
+
new documentBuilder_1.DocumentBuilder('the_uri_2', 'the_title_2'),
|
80
|
+
],
|
81
|
+
delete: [{ documentId: 'the_uri_3', deleteChildren: true }],
|
82
|
+
};
|
83
|
+
});
|
84
|
+
it('should call platform client on creation', () => {
|
85
|
+
source.create('the_name', platform_client_1.SourceVisibility.SHARED);
|
86
|
+
expect(mockCreateSource).toHaveBeenCalledWith({
|
87
|
+
name: 'the_name',
|
88
|
+
streamEnabled: true,
|
89
|
+
sourceType: 'CATALOG',
|
90
|
+
sourceVisibility: 'SHARED',
|
91
|
+
});
|
92
|
+
});
|
93
|
+
describe('when doing batch update', () => {
|
94
|
+
beforeEach(() => {
|
95
|
+
doAxiosMockPost();
|
96
|
+
});
|
97
|
+
it('should create a file container', async () => {
|
98
|
+
await source.batchUpdateDocuments('the_id', batch, {
|
99
|
+
createFields: false,
|
100
|
+
});
|
101
|
+
expect(mockAxios.post).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/files', expect.objectContaining({}), expectedDocumentsHeaders);
|
102
|
+
});
|
103
|
+
it('should upload files to container with returned upload uri and required headers ', async () => {
|
104
|
+
await source.batchUpdateDocuments('the_id', batch, {
|
105
|
+
createFields: false,
|
106
|
+
});
|
107
|
+
expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
|
108
|
+
addOrUpdate: expect.arrayContaining([
|
109
|
+
expect.objectContaining({ documentId: 'the_uri_1' }),
|
110
|
+
expect.objectContaining({ documentId: 'the_uri_2' }),
|
111
|
+
]),
|
112
|
+
delete: expect.arrayContaining([
|
113
|
+
expect.objectContaining({ documentId: 'the_uri_3' }),
|
114
|
+
]),
|
115
|
+
}), { headers: { foo: 'bar' } });
|
116
|
+
});
|
117
|
+
it('should push content to source with returned fileId', async () => {
|
118
|
+
await source.batchUpdateDocuments('the_id', batch, {
|
119
|
+
createFields: false,
|
120
|
+
});
|
121
|
+
expect(mockAxios.put).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/update?fileId=file_id', {}, expectedDocumentsHeaders);
|
122
|
+
});
|
123
|
+
});
|
124
|
+
describe('when doing batch update from local files', () => {
|
125
|
+
afterAll(() => {
|
126
|
+
mockAxios.post.mockReset();
|
127
|
+
});
|
128
|
+
beforeEach(() => {
|
129
|
+
doAxiosMockPost();
|
130
|
+
});
|
131
|
+
it('should upload documents from local file', async () => {
|
132
|
+
await source
|
133
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
134
|
+
.batch();
|
135
|
+
expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
|
136
|
+
addOrUpdate: expect.arrayContaining([
|
137
|
+
expect.objectContaining({
|
138
|
+
documentId: 'https://www.themoviedb.org/movie/268',
|
139
|
+
}),
|
140
|
+
expect.objectContaining({
|
141
|
+
documentId: 'https://www.themoviedb.org/movie/999',
|
142
|
+
}),
|
143
|
+
]),
|
144
|
+
delete: expect.arrayContaining([]),
|
145
|
+
}), {
|
146
|
+
headers: {
|
147
|
+
foo: 'bar',
|
148
|
+
},
|
149
|
+
});
|
150
|
+
});
|
151
|
+
it('should throw an error if the path is invalid', () => {
|
152
|
+
expect(() => source
|
153
|
+
.batchUpdateDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
|
154
|
+
.batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
|
155
|
+
});
|
156
|
+
it('should call the callback without error when uploading documents', async () => {
|
157
|
+
await source
|
158
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
159
|
+
.onBatchError(mockedErrorCallback)
|
160
|
+
.batch();
|
161
|
+
expect(mockedErrorCallback).not.toHaveBeenCalled();
|
162
|
+
});
|
163
|
+
it('should only push JSON files', async () => {
|
164
|
+
await source
|
165
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
166
|
+
.onBatchUpload(mockedSuccessCallback)
|
167
|
+
.batch();
|
168
|
+
expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
|
169
|
+
});
|
170
|
+
it('should call the errorCallback on a failure from the API', async () => {
|
171
|
+
mockAxios.post.mockReset();
|
172
|
+
mockAxios.post.mockRejectedValue({ message: 'Error Message' });
|
173
|
+
await source
|
174
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
175
|
+
.onBatchError(mockedErrorCallback)
|
176
|
+
.batch();
|
177
|
+
expect(mockedErrorCallback).toHaveBeenCalledWith({
|
178
|
+
message: 'Error Message',
|
179
|
+
}, expect.anything());
|
180
|
+
});
|
181
|
+
});
|
182
|
+
describe('when enabling auto field creation', () => {
|
183
|
+
beforeEach(() => {
|
184
|
+
doAxiosMockPost();
|
185
|
+
});
|
186
|
+
describe('when there are no inconsistencies', () => {
|
187
|
+
beforeEach(() => {
|
188
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
189
|
+
mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
|
190
|
+
});
|
191
|
+
it('should analyse document builder batch', async () => {
|
192
|
+
await source.batchUpdateDocuments('the_id', batch);
|
193
|
+
expect(mockAnalyserAdd).toHaveBeenCalledWith(batch.addOrUpdate);
|
194
|
+
});
|
195
|
+
});
|
196
|
+
describe('when document batches contain type inconsistencies', () => {
|
197
|
+
beforeEach(() => {
|
198
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies().add('foo', [
|
199
|
+
platform_client_1.FieldTypes.STRING,
|
200
|
+
platform_client_1.FieldTypes.DOUBLE,
|
201
|
+
]);
|
202
|
+
mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
|
203
|
+
});
|
204
|
+
it('should throw', () => {
|
205
|
+
expect(() => source.batchUpdateDocuments('the_id', batch)).rejects.toThrow(fieldErrors_1.FieldTypeInconsistencyError);
|
206
|
+
});
|
207
|
+
});
|
208
|
+
describe('when document batches contain missing fields', () => {
|
209
|
+
beforeEach(() => {
|
210
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
211
|
+
mockAnalyserReport.mockReturnValueOnce({
|
212
|
+
fields: [
|
213
|
+
{ name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
|
214
|
+
{ name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
|
215
|
+
],
|
216
|
+
inconsistencies,
|
217
|
+
});
|
218
|
+
});
|
219
|
+
it('should create fields', async () => {
|
220
|
+
await source.batchUpdateDocuments('the_id', batch);
|
221
|
+
expect(mockCreateField).toHaveBeenCalledWith([
|
222
|
+
{ name: 'stringfield', type: platform_client_1.FieldTypes.STRING },
|
223
|
+
{ name: 'numericalfield', type: platform_client_1.FieldTypes.DOUBLE },
|
224
|
+
]);
|
225
|
+
});
|
226
|
+
});
|
227
|
+
describe('when document batches do not contain missing fields', () => {
|
228
|
+
beforeEach(() => {
|
229
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
230
|
+
mockAnalyserReport.mockReturnValueOnce({ fields: [], inconsistencies });
|
231
|
+
});
|
232
|
+
it('should not create fields', async () => {
|
233
|
+
source.batchUpdateDocuments('the_id', batch);
|
234
|
+
expect(mockCreateField).not.toHaveBeenCalled();
|
235
|
+
});
|
236
|
+
});
|
237
|
+
});
|
238
|
+
});
|
239
|
+
//# sourceMappingURL=catalog.spec.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"catalog.spec.js","sourceRoot":"","sources":["../../src/source/catalog.spec.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,189 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
/* eslint-disable node/no-unpublished-import */
|
4
|
+
jest.mock('@coveord/platform-client');
|
5
|
+
jest.mock('axios');
|
6
|
+
jest.mock('../fieldAnalyser/fieldAnalyser');
|
7
|
+
const platform_client_1 = require("@coveord/platform-client");
|
8
|
+
const axios_1 = require("axios");
|
9
|
+
const path_1 = require("path");
|
10
|
+
const process_1 = require("process");
|
11
|
+
const catalog_1 = require("./catalog");
|
12
|
+
const __1 = require("..");
|
13
|
+
const mockAxios = axios_1.default;
|
14
|
+
const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
|
15
|
+
const mockedPlatformClient = jest.mocked(platform_client_1.default);
|
16
|
+
const mockCreateSource = jest.fn();
|
17
|
+
const mockCreateField = jest.fn();
|
18
|
+
const mockEvaluate = jest.fn();
|
19
|
+
const mockAnalyserAdd = jest.fn();
|
20
|
+
const mockAnalyserReport = jest.fn();
|
21
|
+
const mockedSuccessCallback = jest.fn();
|
22
|
+
const mockedErrorCallback = jest.fn();
|
23
|
+
const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
|
24
|
+
const expectedDocumentsHeaders = {
|
25
|
+
headers: {
|
26
|
+
Accept: 'application/json',
|
27
|
+
Authorization: 'Bearer the_key',
|
28
|
+
'Content-Type': 'application/json',
|
29
|
+
},
|
30
|
+
};
|
31
|
+
const doAxiosMockFileContainerResponse = () => ({
|
32
|
+
data: {
|
33
|
+
uploadUri: 'https://fake.upload.url',
|
34
|
+
fileId: 'file_id',
|
35
|
+
requiredHeaders: { foo: 'bar' },
|
36
|
+
},
|
37
|
+
});
|
38
|
+
const doAxiosMockOpenStream = () => ({
|
39
|
+
data: {
|
40
|
+
streamId: 'the_stream_id',
|
41
|
+
},
|
42
|
+
});
|
43
|
+
const doMockPlatformClient = () => {
|
44
|
+
mockedPlatformClient.mockImplementation(() => ({
|
45
|
+
privilegeEvaluator: { evaluate: mockEvaluate },
|
46
|
+
source: {
|
47
|
+
create: mockCreateSource,
|
48
|
+
},
|
49
|
+
field: {
|
50
|
+
createFields: mockCreateField,
|
51
|
+
},
|
52
|
+
}));
|
53
|
+
};
|
54
|
+
const doMockFieldAnalyser = () => {
|
55
|
+
mockedFieldAnalyser.mockImplementation(() => ({
|
56
|
+
add: mockAnalyserAdd,
|
57
|
+
report: mockAnalyserReport,
|
58
|
+
}));
|
59
|
+
};
|
60
|
+
const mockAxiosForStreamCalls = () => {
|
61
|
+
mockAxios.post.mockImplementation((url) => {
|
62
|
+
if (url.match(/chunk/)) {
|
63
|
+
return Promise.resolve(doAxiosMockFileContainerResponse());
|
64
|
+
}
|
65
|
+
if (url.match(/stream\/open/)) {
|
66
|
+
return Promise.resolve(doAxiosMockOpenStream());
|
67
|
+
}
|
68
|
+
return Promise.resolve({ data: {} });
|
69
|
+
});
|
70
|
+
};
|
71
|
+
const basicStreamExpectations = () => {
|
72
|
+
it('should open a stream', async () => {
|
73
|
+
expect(mockAxios.post).toHaveReturnedTimes(3);
|
74
|
+
});
|
75
|
+
it('should open a stream', async () => {
|
76
|
+
expect(mockAxios.post).toHaveBeenNthCalledWith(1, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/open', {}, expectedDocumentsHeaders);
|
77
|
+
});
|
78
|
+
it('should request a stream chunk', async () => {
|
79
|
+
expect(mockAxios.post).toHaveBeenNthCalledWith(2, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/the_stream_id/chunk', {}, expectedDocumentsHeaders);
|
80
|
+
});
|
81
|
+
it('should close a stream', async () => {
|
82
|
+
expect(mockAxios.post).toHaveBeenNthCalledWith(3, 'https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/stream/the_stream_id/close', {}, expectedDocumentsHeaders);
|
83
|
+
});
|
84
|
+
};
|
85
|
+
describe('CatalogSource - Stream', () => {
|
86
|
+
let source;
|
87
|
+
beforeAll(() => {
|
88
|
+
doMockPlatformClient();
|
89
|
+
doMockFieldAnalyser();
|
90
|
+
});
|
91
|
+
beforeEach(() => {
|
92
|
+
mockEvaluate.mockResolvedValue({ approved: true });
|
93
|
+
source = new catalog_1.CatalogSource('the_key', 'the_org');
|
94
|
+
});
|
95
|
+
describe('when streaming data from a batch', () => {
|
96
|
+
beforeEach(async () => {
|
97
|
+
mockAxiosForStreamCalls();
|
98
|
+
await source
|
99
|
+
.batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
100
|
+
.batch();
|
101
|
+
});
|
102
|
+
afterAll(() => {
|
103
|
+
mockAxios.post.mockReset();
|
104
|
+
});
|
105
|
+
basicStreamExpectations();
|
106
|
+
it('should upload content to stream chunk', async () => {
|
107
|
+
expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
|
108
|
+
addOrUpdate: expect.arrayContaining([
|
109
|
+
expect.objectContaining({
|
110
|
+
documentId: 'https://www.themoviedb.org/movie/268',
|
111
|
+
}),
|
112
|
+
expect.objectContaining({
|
113
|
+
documentId: 'https://www.themoviedb.org/movie/999',
|
114
|
+
}),
|
115
|
+
]),
|
116
|
+
delete: expect.arrayContaining([]),
|
117
|
+
}), {
|
118
|
+
headers: {
|
119
|
+
foo: 'bar',
|
120
|
+
},
|
121
|
+
});
|
122
|
+
});
|
123
|
+
});
|
124
|
+
describe('when streaming data from local files', () => {
|
125
|
+
beforeEach(async () => {
|
126
|
+
mockAxiosForStreamCalls();
|
127
|
+
});
|
128
|
+
afterAll(() => {
|
129
|
+
mockAxios.post.mockReset();
|
130
|
+
});
|
131
|
+
describe('API call expectations', () => {
|
132
|
+
beforeEach(async () => {
|
133
|
+
mockAxiosForStreamCalls();
|
134
|
+
await source
|
135
|
+
.batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
136
|
+
.batch();
|
137
|
+
});
|
138
|
+
basicStreamExpectations();
|
139
|
+
it('should upload documents from local file', async () => {
|
140
|
+
expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
|
141
|
+
addOrUpdate: expect.arrayContaining([
|
142
|
+
expect.objectContaining({
|
143
|
+
documentId: 'https://www.themoviedb.org/movie/268',
|
144
|
+
}),
|
145
|
+
expect.objectContaining({
|
146
|
+
documentId: 'https://www.themoviedb.org/movie/999',
|
147
|
+
}),
|
148
|
+
]),
|
149
|
+
delete: expect.arrayContaining([]),
|
150
|
+
}), {
|
151
|
+
headers: {
|
152
|
+
foo: 'bar',
|
153
|
+
},
|
154
|
+
});
|
155
|
+
});
|
156
|
+
});
|
157
|
+
it('should call the callback without error when uploading documents', async () => {
|
158
|
+
await source
|
159
|
+
.batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
160
|
+
.onBatchError(mockedErrorCallback)
|
161
|
+
.batch();
|
162
|
+
expect(mockedErrorCallback).not.toHaveBeenCalled();
|
163
|
+
});
|
164
|
+
it('should only push JSON files', async () => {
|
165
|
+
await source
|
166
|
+
.batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
167
|
+
.onBatchUpload(mockedSuccessCallback)
|
168
|
+
.batch();
|
169
|
+
expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
|
170
|
+
});
|
171
|
+
it('should call the errorCallback on a failure from the API', async () => {
|
172
|
+
mockAxios.post.mockReset();
|
173
|
+
mockAxios.post.mockRejectedValue({ message: 'Error Message' });
|
174
|
+
await source
|
175
|
+
.batchStreamDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
176
|
+
.onBatchError(mockedErrorCallback)
|
177
|
+
.batch();
|
178
|
+
expect(mockedErrorCallback).toHaveBeenCalledWith({
|
179
|
+
message: 'Error Message',
|
180
|
+
}, expect.anything());
|
181
|
+
});
|
182
|
+
it('should throw an error if the path is invalid', () => {
|
183
|
+
expect(() => source
|
184
|
+
.batchStreamDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
|
185
|
+
.batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
|
186
|
+
});
|
187
|
+
});
|
188
|
+
});
|
189
|
+
//# sourceMappingURL=catalog.stream.spec.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"catalog.stream.spec.js","sourceRoot":"","sources":["../../src/source/catalog.stream.spec.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.uploadBatch = void 0;
|
4
|
+
const __1 = require("..");
|
5
|
+
const fieldErrors_1 = require("../errors/fieldErrors");
|
6
|
+
const fieldUtils_1 = require("../fieldAnalyser/fieldUtils");
|
7
|
+
async function uploadBatch(platformClient, strategy, batch, createFields = true) {
|
8
|
+
var _a;
|
9
|
+
if (createFields) {
|
10
|
+
const analyser = new __1.FieldAnalyser(platformClient);
|
11
|
+
await analyser.add(batch.addOrUpdate);
|
12
|
+
const { fields, inconsistencies } = analyser.report();
|
13
|
+
if (inconsistencies.size > 0) {
|
14
|
+
throw new fieldErrors_1.FieldTypeInconsistencyError(inconsistencies);
|
15
|
+
}
|
16
|
+
await (0, fieldUtils_1.createFields)(platformClient, fields);
|
17
|
+
}
|
18
|
+
const res = await strategy.upload(batch);
|
19
|
+
await ((_a = strategy.postUpload) === null || _a === void 0 ? void 0 : _a.call(strategy));
|
20
|
+
return res;
|
21
|
+
}
|
22
|
+
exports.uploadBatch = uploadBatch;
|
23
|
+
//# sourceMappingURL=documentUploader.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"documentUploader.js","sourceRoot":"","sources":["../../src/source/documentUploader.ts"],"names":[],"mappings":";;;AAEA,0BAAiC;AACjC,uDAAkE;AAClE,4DAAmE;AAI5D,KAAK,UAAU,WAAW,CAC/B,cAA8B,EAC9B,QAAwB,EACxB,KAA2B,EAC3B,YAAY,GAAG,IAAI;;IAEnB,IAAI,YAAY,EAAE;QAChB,MAAM,QAAQ,GAAG,IAAI,iBAAa,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,EAAC,MAAM,EAAE,eAAe,EAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEpD,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;YAC5B,MAAM,IAAI,yCAA2B,CAAC,eAAe,CAAC,CAAC;SACxD;QAED,MAAM,IAAA,yBAAM,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;KACtC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,CAAA,MAAA,QAAQ,CAAC,UAAU,wDAAI,CAAA,CAAC;IAE9B,OAAO,GAAG,CAAC;AACb,CAAC;AArBD,kCAqBC"}
|