@coveo/push-api-client 1.7.0 → 2.1.1
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/environment.d.ts +3 -3
- package/dist/definitions/errors/privilegeError.d.ts +6 -0
- package/dist/definitions/help/axiosUtils.d.ts +2 -0
- package/dist/definitions/help/fileConsumer.d.ts +26 -0
- package/dist/definitions/{source.spec.d.ts → help/fileConsumer.spec.d.ts} +0 -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/index.d.ts +7 -2
- package/dist/definitions/interfaces.d.ts +39 -0
- 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.d.ts → source/push.d.ts} +35 -77
- package/dist/definitions/source/push.spec.d.ts +1 -0
- package/dist/definitions/source/securityIdenty.d.ts +42 -0
- package/dist/definitions/source/source.d.ts +5 -0
- 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 +3 -3
- package/dist/docs/classes/CatalogSource.html +40 -0
- package/dist/docs/classes/DocumentBuilder.html +17 -17
- package/dist/docs/classes/FieldAnalyser.html +3 -3
- package/dist/docs/classes/GroupSecurityIdentityBuilder.html +3 -3
- package/dist/docs/classes/PushSource.html +43 -0
- package/dist/docs/classes/UserSecurityIdentityBuilder.html +3 -3
- package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +3 -3
- package/dist/docs/enums/PlatformEnvironment.html +1 -1
- package/dist/docs/enums/Region.html +1 -1
- package/dist/docs/enums/SourceVisibility.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs/interfaces/BatchUpdateDocuments.html +1 -1
- package/dist/docs/interfaces/Document.html +14 -14
- package/dist/docs/interfaces/SecurityIdentity.html +4 -4
- package/dist/docs/interfaces/SecurityIdentityBuilder.html +1 -1
- package/dist/docs/interfaces/UploadBatchCallbackData.html +1 -1
- package/dist/docs/modules.html +3 -2
- package/dist/environment.js.map +1 -1
- 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/fileConsumer.js +100 -0
- package/dist/help/fileConsumer.js.map +1 -0
- package/dist/help/fileConsumer.spec.js +75 -0
- package/dist/help/fileConsumer.spec.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/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces.js +3 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/localtest.js +2 -2
- package/dist/localtest.js.map +1 -1
- 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 +199 -0
- package/dist/source/push.js.map +1 -0
- package/dist/{source.spec.js → source/push.spec.js} +44 -27
- package/dist/source/push.spec.js.map +1 -0
- package/dist/source/securityIdenty.js +59 -0
- package/dist/source/securityIdenty.js.map +1 -0
- package/dist/source/source.js +9 -0
- package/dist/source/source.js.map +1 -0
- 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/docs/classes/Source.html +0 -45
- package/dist/docs/interfaces/BatchUpdateDocumentsFromFiles.html +0 -7
- package/dist/source.js +0 -322
- package/dist/source.js.map +0 -1
- package/dist/source.spec.js.map +0 -1
@@ -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"}
|
@@ -0,0 +1,199 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PushSource = exports.SourceVisibility = void 0;
|
4
|
+
require('isomorphic-fetch');
|
5
|
+
require('abortcontroller-polyfill');
|
6
|
+
const platform_client_1 = require("@coveord/platform-client");
|
7
|
+
var platform_client_2 = require("@coveord/platform-client");
|
8
|
+
Object.defineProperty(exports, "SourceVisibility", { enumerable: true, get: function () { return platform_client_2.SourceVisibility; } });
|
9
|
+
const axios_1 = require("axios");
|
10
|
+
const dayjs = require("dayjs");
|
11
|
+
const url_1 = require("url");
|
12
|
+
const environment_1 = require("../environment");
|
13
|
+
const fieldAnalyser_1 = require("../fieldAnalyser/fieldAnalyser");
|
14
|
+
const fieldErrors_1 = require("../errors/fieldErrors");
|
15
|
+
const fieldUtils_1 = require("../fieldAnalyser/fieldUtils");
|
16
|
+
const securityIdenty_1 = require("./securityIdenty");
|
17
|
+
const axiosUtils_1 = require("../help/axiosUtils");
|
18
|
+
const documentUploader_1 = require("./documentUploader");
|
19
|
+
const urlUtils_1 = require("../help/urlUtils");
|
20
|
+
const uploadStrategy_1 = require("../uploadStrategy");
|
21
|
+
const batchUploadDocumentsFromFile_1 = require("./batchUploadDocumentsFromFile");
|
22
|
+
/**
|
23
|
+
* Manage a push source.
|
24
|
+
*
|
25
|
+
* Allows you to create a new push source, manage security identities and documents in a Coveo organization.
|
26
|
+
*/
|
27
|
+
class PushSource {
|
28
|
+
/**
|
29
|
+
*
|
30
|
+
* @param apikey An apiKey capable of pushing documents and managing sources in a Coveo organization. See [Manage API Keys](https://docs.coveo.com/en/1718).
|
31
|
+
* @param organizationid The Coveo Organization identifier.
|
32
|
+
*/
|
33
|
+
constructor(apikey, organizationid, options) {
|
34
|
+
this.apikey = apikey;
|
35
|
+
this.organizationid = organizationid;
|
36
|
+
this.options = Object.assign(Object.assign({}, PushSource.defaultOptions), options);
|
37
|
+
this.platformClient = new platform_client_1.PlatformClient({
|
38
|
+
accessToken: this.apikey,
|
39
|
+
environment: (0, environment_1.castEnvironmentToPlatformClient)(this.options.environment),
|
40
|
+
organizationId: this.organizationid,
|
41
|
+
region: this.options.region,
|
42
|
+
});
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* Create a new push source
|
46
|
+
* @param name The name of the source to create.
|
47
|
+
* @param sourceVisibility The security option that should be applied to the content of the source. See [Content Security](https://docs.coveo.com/en/1779).
|
48
|
+
* @returns
|
49
|
+
*/
|
50
|
+
create(name, sourceVisibility) {
|
51
|
+
return this.platformClient.source.create({
|
52
|
+
sourceType: platform_client_1.SourceType.PUSH,
|
53
|
+
pushEnabled: true,
|
54
|
+
name,
|
55
|
+
sourceVisibility,
|
56
|
+
});
|
57
|
+
}
|
58
|
+
/**
|
59
|
+
* @deprecated use `identity.createSecurityIdentity`
|
60
|
+
*
|
61
|
+
* See {@link Source.identity}
|
62
|
+
*/
|
63
|
+
createSecurityIdentity(securityProviderId, securityIdentity) {
|
64
|
+
return this.identity.createSecurityIdentity(securityProviderId, securityIdentity);
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* @deprecated use `identity.createOrUpdateSecurityIdentityAlias`
|
68
|
+
*
|
69
|
+
* See {@link Source.identity}
|
70
|
+
*/
|
71
|
+
createOrUpdateSecurityIdentityAlias(securityProviderId, securityIdentityAlias) {
|
72
|
+
return this.identity.createOrUpdateSecurityIdentityAlias(securityProviderId, securityIdentityAlias);
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* @deprecated use `identity.deleteSecurityIdentity`
|
76
|
+
*
|
77
|
+
* See {@link Source.identity}
|
78
|
+
*/
|
79
|
+
deleteSecurityIdentity(securityProviderId, securityIdentityToDelete) {
|
80
|
+
return this.identity.deleteSecurityIdentity(securityProviderId, securityIdentityToDelete);
|
81
|
+
}
|
82
|
+
/**
|
83
|
+
* @deprecated use `identity.deleteOldSecurityIdentities`
|
84
|
+
*
|
85
|
+
* See {@link Source.identity}
|
86
|
+
*/
|
87
|
+
deleteOldSecurityIdentities(securityProviderId, batchDelete) {
|
88
|
+
return this.identity.deleteOldSecurityIdentities(securityProviderId, batchDelete);
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* @deprecated use `identity.manageSecurityIdentities`
|
92
|
+
*
|
93
|
+
* See {@link Source.identity}
|
94
|
+
*/
|
95
|
+
manageSecurityIdentities(securityProviderId, batchConfig) {
|
96
|
+
return this.identity.manageSecurityIdentities(securityProviderId, batchConfig);
|
97
|
+
}
|
98
|
+
get identity() {
|
99
|
+
return new securityIdenty_1.SecurityIdentity(this.platformClient);
|
100
|
+
}
|
101
|
+
/**
|
102
|
+
* Adds or updates an individual item in a push source. See [Adding a Single Item in a Push Source](https://docs.coveo.com/en/133).
|
103
|
+
* @param sourceID
|
104
|
+
* @param docBuilder
|
105
|
+
* @param {BatchUpdateDocumentsOptions} [{createFields = true}={}]
|
106
|
+
* @returns
|
107
|
+
*/
|
108
|
+
async addOrUpdateDocument(sourceID, docBuilder, { createFields: createFields = true } = {}) {
|
109
|
+
if (createFields) {
|
110
|
+
const analyser = new fieldAnalyser_1.FieldAnalyser(this.platformClient);
|
111
|
+
await analyser.add([docBuilder]);
|
112
|
+
await this.createFields(analyser);
|
113
|
+
}
|
114
|
+
const doc = docBuilder.build();
|
115
|
+
const addURL = new url_1.URL(`${this.urlBuilder(sourceID).baseURL}/documents`);
|
116
|
+
addURL.searchParams.append('documentId', doc.uri);
|
117
|
+
return axios_1.default.put(addURL.toString(), docBuilder.marshal(), this.documentsAxiosConfig);
|
118
|
+
}
|
119
|
+
/**
|
120
|
+
* Manage batches of items in a push source. See [Manage Batches of Items in a Push Source](https://docs.coveo.com/en/90)
|
121
|
+
* @param sourceID
|
122
|
+
* @param batch
|
123
|
+
* @returns
|
124
|
+
*/
|
125
|
+
async batchUpdateDocuments(sourceID, batch, { createFields: createFields = true } = {}) {
|
126
|
+
return (0, documentUploader_1.uploadBatch)(this.platformClient, this.fileContainerStrategy(sourceID), batch, createFields);
|
127
|
+
}
|
128
|
+
/**
|
129
|
+
*
|
130
|
+
* Manage batches of items in a push source from a list of JSON files. See [Manage Batches of Items in a Push Source](https://docs.coveo.com/en/90)
|
131
|
+
* @param {string} sourceID The unique identifier of the target Push source
|
132
|
+
* @param {string[]} filesOrDirectories A list of JSON files or directories (containing JSON files) from which to extract documents.
|
133
|
+
* @param {UploadBatchCallback} callback Callback executed when a batch of documents is either successfully uploaded or when an error occurs during the upload
|
134
|
+
* @param {BatchUpdateDocumentsFromFiles} options
|
135
|
+
*/
|
136
|
+
batchUpdateDocumentsFromFiles(sourceID, filesOrDirectories, options) {
|
137
|
+
return new batchUploadDocumentsFromFile_1.BatchUploadDocumentsFromFilesReturn(this.platformClient, this.fileContainerStrategy(sourceID), filesOrDirectories, options);
|
138
|
+
}
|
139
|
+
/**
|
140
|
+
* Deletes a specific item from a Push source. Optionally, the child items of that item can also be deleted. See [Deleting an Item in a Push Source](https://docs.coveo.com/en/171).
|
141
|
+
* @param sourceID
|
142
|
+
* @param documentId
|
143
|
+
* @param deleteChildren
|
144
|
+
* @returns
|
145
|
+
*/
|
146
|
+
deleteDocument(sourceID, documentId, deleteChildren = false) {
|
147
|
+
const deleteURL = new url_1.URL(`${this.urlBuilder(sourceID).baseURL}/documents`);
|
148
|
+
deleteURL.searchParams.append('documentId', documentId);
|
149
|
+
deleteURL.searchParams.append('deleteChildren', `${deleteChildren}`);
|
150
|
+
return axios_1.default.delete(deleteURL.toString(), this.documentsAxiosConfig);
|
151
|
+
}
|
152
|
+
/**
|
153
|
+
* Deletes all items whose last update was made by a Push API operation whose orderingId is strictly lower than a specified value. See [Deleting Old Items in a Push Source](https://docs.coveo.com/en/131).
|
154
|
+
* @param sourceID
|
155
|
+
* @param olderThan
|
156
|
+
* @returns
|
157
|
+
*/
|
158
|
+
deleteDocumentsOlderThan(sourceID, olderThan) {
|
159
|
+
const date = dayjs(olderThan);
|
160
|
+
const deleteURL = new url_1.URL(`${this.urlBuilder(sourceID).baseURL}/documents/olderthan`);
|
161
|
+
deleteURL.searchParams.append('orderingId', `${date.valueOf()}`);
|
162
|
+
return axios_1.default.delete(deleteURL.toString(), this.documentsAxiosConfig);
|
163
|
+
}
|
164
|
+
/**
|
165
|
+
* Set the status of a push source. See [Updating the Status of a Push Source](https://docs.coveo.com/en/35/)
|
166
|
+
* @param sourceID
|
167
|
+
* @param status
|
168
|
+
* @returns
|
169
|
+
*/
|
170
|
+
setSourceStatus(sourceID, status) {
|
171
|
+
const urlStatus = new url_1.URL(`${this.urlBuilder(sourceID).baseURL}/status`);
|
172
|
+
urlStatus.searchParams.append('statusType', status);
|
173
|
+
return axios_1.default.post(urlStatus.toString(), {}, this.documentsAxiosConfig);
|
174
|
+
}
|
175
|
+
get documentsAxiosConfig() {
|
176
|
+
return (0, axiosUtils_1.axiosRequestHeaders)(this.apikey);
|
177
|
+
}
|
178
|
+
async createFields(analyser) {
|
179
|
+
const { fields, inconsistencies } = analyser.report();
|
180
|
+
if (inconsistencies.size > 0) {
|
181
|
+
throw new fieldErrors_1.FieldTypeInconsistencyError(inconsistencies);
|
182
|
+
}
|
183
|
+
await (0, fieldUtils_1.createFields)(this.platformClient, fields);
|
184
|
+
}
|
185
|
+
urlBuilder(sourceId) {
|
186
|
+
return new urlUtils_1.PushUrlBuilder(sourceId, this.organizationid, this.options);
|
187
|
+
}
|
188
|
+
fileContainerStrategy(sourceId) {
|
189
|
+
const urlBuilder = this.urlBuilder(sourceId);
|
190
|
+
const documentsAxiosConfig = (0, axiosUtils_1.axiosRequestHeaders)(this.apikey);
|
191
|
+
return new uploadStrategy_1.FileContainerStrategy(urlBuilder, documentsAxiosConfig);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
exports.PushSource = PushSource;
|
195
|
+
PushSource.defaultOptions = {
|
196
|
+
region: environment_1.DEFAULT_REGION,
|
197
|
+
environment: environment_1.DEFAULT_ENVIRONMENT,
|
198
|
+
};
|
199
|
+
//# sourceMappingURL=push.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/source/push.ts"],"names":[],"mappings":"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"}
|
@@ -3,23 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
/* eslint-disable node/no-unpublished-import */
|
4
4
|
jest.mock('@coveord/platform-client');
|
5
5
|
jest.mock('axios');
|
6
|
-
jest.mock('
|
6
|
+
jest.mock('../fieldAnalyser/fieldAnalyser');
|
7
7
|
const platform_client_1 = require("@coveord/platform-client");
|
8
|
-
const
|
9
|
-
const documentBuilder_1 = require("
|
8
|
+
const push_1 = require("./push");
|
9
|
+
const documentBuilder_1 = require("../documentBuilder");
|
10
10
|
const axios_1 = require("axios");
|
11
11
|
const path_1 = require("path");
|
12
12
|
const process_1 = require("process");
|
13
|
-
const
|
14
|
-
const inconsistencies_1 = require("
|
15
|
-
const fieldErrors_1 = require("
|
13
|
+
const __1 = require("..");
|
14
|
+
const inconsistencies_1 = require("../fieldAnalyser/inconsistencies");
|
15
|
+
const fieldErrors_1 = require("../errors/fieldErrors");
|
16
16
|
const mockAxios = axios_1.default;
|
17
|
-
const mockedFieldAnalyser = jest.mocked(
|
17
|
+
const mockedFieldAnalyser = jest.mocked(__1.FieldAnalyser);
|
18
18
|
const mockedPlatformClient = jest.mocked(platform_client_1.default);
|
19
19
|
const mockCreateSource = jest.fn();
|
20
|
+
const mockEvaluate = jest.fn();
|
20
21
|
const mockCreateField = jest.fn();
|
21
22
|
const mockAnalyserAdd = jest.fn();
|
22
23
|
const mockAnalyserReport = jest.fn();
|
24
|
+
const mockedSuccessCallback = jest.fn();
|
25
|
+
const mockedErrorCallback = jest.fn();
|
23
26
|
const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
|
24
27
|
const doAxiosMockPost = () => {
|
25
28
|
mockAxios.post.mockImplementationOnce((url) => {
|
@@ -37,6 +40,7 @@ const doAxiosMockPost = () => {
|
|
37
40
|
};
|
38
41
|
const doMockPlatformClient = () => {
|
39
42
|
mockedPlatformClient.mockImplementation(() => ({
|
43
|
+
privilegeEvaluator: { evaluate: mockEvaluate },
|
40
44
|
source: {
|
41
45
|
create: mockCreateSource,
|
42
46
|
},
|
@@ -51,14 +55,15 @@ const doMockFieldAnalyser = () => {
|
|
51
55
|
report: mockAnalyserReport,
|
52
56
|
}));
|
53
57
|
};
|
54
|
-
describe('
|
58
|
+
describe('PushSource', () => {
|
55
59
|
let source;
|
56
60
|
beforeAll(() => {
|
57
61
|
doMockPlatformClient();
|
58
62
|
doMockFieldAnalyser();
|
59
63
|
});
|
60
64
|
beforeEach(() => {
|
61
|
-
source = new
|
65
|
+
source = new push_1.PushSource('the_key', 'the_org');
|
66
|
+
mockEvaluate.mockResolvedValue({ approved: true });
|
62
67
|
});
|
63
68
|
const expectedDocumentsHeaders = {
|
64
69
|
headers: {
|
@@ -81,22 +86,22 @@ describe('Source', () => {
|
|
81
86
|
expect(mockAxios.put).toHaveBeenCalledWith('https://api.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
|
82
87
|
});
|
83
88
|
it('should call axios on add document with right region', async () => {
|
84
|
-
const australianSource = new
|
85
|
-
region:
|
89
|
+
const australianSource = new push_1.PushSource('the_key', 'the_org', {
|
90
|
+
region: __1.Region.AU,
|
86
91
|
});
|
87
92
|
await australianSource.addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
|
88
93
|
expect(mockAxios.put).toHaveBeenCalledWith('https://api-au.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
|
89
94
|
});
|
90
95
|
it('should call axios on add document with right environment', async () => {
|
91
|
-
await new
|
92
|
-
environment:
|
96
|
+
await new push_1.PushSource('the_key', 'the_org', {
|
97
|
+
environment: __1.PlatformEnvironment.Dev,
|
93
98
|
}).addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
|
94
99
|
expect(mockAxios.put).toHaveBeenCalledWith('https://apidev.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
|
95
100
|
});
|
96
101
|
it('should call axios on add document with right region and environment', async () => {
|
97
|
-
await new
|
98
|
-
environment:
|
99
|
-
region:
|
102
|
+
await new push_1.PushSource('the_key', 'the_org', {
|
103
|
+
environment: __1.PlatformEnvironment.QA,
|
104
|
+
region: __1.Region.EU,
|
100
105
|
}).addOrUpdateDocument('the_id', new documentBuilder_1.DocumentBuilder('the_uri', 'the_title'), { createFields: false });
|
101
106
|
expect(mockAxios.put).toHaveBeenCalledWith('https://apiqa-eu.cloud.coveo.com/push/v1/organizations/the_org/sources/the_id/documents?documentId=the_uri', expect.objectContaining({ title: 'the_title' }), expectedDocumentsHeaders);
|
102
107
|
});
|
@@ -171,7 +176,6 @@ describe('Source', () => {
|
|
171
176
|
});
|
172
177
|
});
|
173
178
|
describe('when doing batch update from local files', () => {
|
174
|
-
const mockedCallback = jest.fn();
|
175
179
|
afterAll(() => {
|
176
180
|
mockAxios.post.mockReset();
|
177
181
|
});
|
@@ -179,7 +183,9 @@ describe('Source', () => {
|
|
179
183
|
doAxiosMockPost();
|
180
184
|
});
|
181
185
|
it('should upload documents from local file', async () => {
|
182
|
-
await source
|
186
|
+
await source
|
187
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
188
|
+
.batch();
|
183
189
|
expect(mockAxios.put).toHaveBeenCalledWith('https://fake.upload.url/', expect.objectContaining({
|
184
190
|
addOrUpdate: expect.arrayContaining([
|
185
191
|
expect.objectContaining({
|
@@ -197,21 +203,32 @@ describe('Source', () => {
|
|
197
203
|
});
|
198
204
|
});
|
199
205
|
it('should throw an error if the path is invalid', () => {
|
200
|
-
expect(() => source
|
206
|
+
expect(() => source
|
207
|
+
.batchUpdateDocumentsFromFiles('the_id', ['path/to/invalid/document'], { createFields: false })
|
208
|
+
.batch()).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
|
201
209
|
});
|
202
210
|
it('should call the callback without error when uploading documents', async () => {
|
203
|
-
await source
|
204
|
-
|
211
|
+
await source
|
212
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
213
|
+
.onBatchError(mockedErrorCallback)
|
214
|
+
.batch();
|
215
|
+
expect(mockedErrorCallback).not.toHaveBeenCalled();
|
205
216
|
});
|
206
217
|
it('should only push JSON files', async () => {
|
207
|
-
await source
|
208
|
-
|
218
|
+
await source
|
219
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
220
|
+
.onBatchUpload(mockedSuccessCallback)
|
221
|
+
.batch();
|
222
|
+
expect(mockedSuccessCallback).toHaveBeenCalledWith(expect.objectContaining({ files: ['valid.json'] }));
|
209
223
|
});
|
210
224
|
it('should call the errorCallback on a failure from the API', async () => {
|
211
225
|
mockAxios.post.mockReset();
|
212
226
|
mockAxios.post.mockRejectedValue({ message: 'Error Message' });
|
213
|
-
await source
|
214
|
-
|
227
|
+
await source
|
228
|
+
.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], { createFields: false })
|
229
|
+
.onBatchError(mockedErrorCallback)
|
230
|
+
.batch();
|
231
|
+
expect(mockedErrorCallback).toHaveBeenCalledWith({
|
215
232
|
message: 'Error Message',
|
216
233
|
}, expect.anything());
|
217
234
|
});
|
@@ -230,7 +247,7 @@ describe('Source', () => {
|
|
230
247
|
});
|
231
248
|
beforeEach(() => {
|
232
249
|
doAxiosMockPost();
|
233
|
-
source = new
|
250
|
+
source = new push_1.PushSource('the_key', 'the_org');
|
234
251
|
});
|
235
252
|
describe('when there are no inconsistencies', () => {
|
236
253
|
beforeEach(() => {
|
@@ -290,4 +307,4 @@ describe('Source', () => {
|
|
290
307
|
});
|
291
308
|
});
|
292
309
|
});
|
293
|
-
//# sourceMappingURL=
|
310
|
+
//# sourceMappingURL=push.spec.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"push.spec.js","sourceRoot":"","sources":["../../src/source/push.spec.ts"],"names":[],"mappings":"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"}
|