@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.
Files changed (113) hide show
  1. package/README.md +2 -2
  2. package/dist/definitions/environment.d.ts +3 -3
  3. package/dist/definitions/errors/privilegeError.d.ts +6 -0
  4. package/dist/definitions/help/axiosUtils.d.ts +2 -0
  5. package/dist/definitions/help/fileConsumer.d.ts +26 -0
  6. package/dist/definitions/{source.spec.d.ts → help/fileConsumer.spec.d.ts} +0 -0
  7. package/dist/definitions/help/fileContainer.d.ts +9 -0
  8. package/dist/definitions/help/fileContainer.spec.d.ts +1 -0
  9. package/dist/definitions/help/urlUtils.d.ts +27 -0
  10. package/dist/definitions/index.d.ts +7 -2
  11. package/dist/definitions/interfaces.d.ts +39 -0
  12. package/dist/definitions/source/batchUploadDocumentsFromFile.d.ts +11 -0
  13. package/dist/definitions/source/catalog.d.ts +69 -0
  14. package/dist/definitions/source/catalog.spec.d.ts +1 -0
  15. package/dist/definitions/source/catalog.stream.spec.d.ts +1 -0
  16. package/dist/definitions/source/documentUploader.d.ts +5 -0
  17. package/dist/definitions/{source.d.ts → source/push.d.ts} +35 -77
  18. package/dist/definitions/source/push.spec.d.ts +1 -0
  19. package/dist/definitions/source/securityIdenty.d.ts +42 -0
  20. package/dist/definitions/source/source.d.ts +5 -0
  21. package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +23 -0
  22. package/dist/definitions/uploadStrategy/index.d.ts +3 -0
  23. package/dist/definitions/uploadStrategy/strategy.d.ts +16 -0
  24. package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +27 -0
  25. package/dist/definitions/validation/preconditions/apiKeyPrivilege.d.ts +3 -0
  26. package/dist/definitions/validation/preconditions/apiKeyPrivilege.spec.d.ts +1 -0
  27. package/dist/definitions/validation/preconditions/platformPrivilege.d.ts +7 -0
  28. package/dist/docs/assets/search.js +1 -1
  29. package/dist/docs/classes/AnySecurityIdentityBuilder.html +3 -3
  30. package/dist/docs/classes/CatalogSource.html +40 -0
  31. package/dist/docs/classes/DocumentBuilder.html +17 -17
  32. package/dist/docs/classes/FieldAnalyser.html +3 -3
  33. package/dist/docs/classes/GroupSecurityIdentityBuilder.html +3 -3
  34. package/dist/docs/classes/PushSource.html +43 -0
  35. package/dist/docs/classes/UserSecurityIdentityBuilder.html +3 -3
  36. package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +3 -3
  37. package/dist/docs/enums/PlatformEnvironment.html +1 -1
  38. package/dist/docs/enums/Region.html +1 -1
  39. package/dist/docs/enums/SourceVisibility.html +1 -1
  40. package/dist/docs/index.html +2 -2
  41. package/dist/docs/interfaces/BatchUpdateDocuments.html +1 -1
  42. package/dist/docs/interfaces/Document.html +14 -14
  43. package/dist/docs/interfaces/SecurityIdentity.html +4 -4
  44. package/dist/docs/interfaces/SecurityIdentityBuilder.html +1 -1
  45. package/dist/docs/interfaces/UploadBatchCallbackData.html +1 -1
  46. package/dist/docs/modules.html +3 -2
  47. package/dist/environment.js.map +1 -1
  48. package/dist/errors/privilegeError.js +13 -0
  49. package/dist/errors/privilegeError.js.map +1 -0
  50. package/dist/fieldAnalyser/fieldAnalyser.js +3 -0
  51. package/dist/fieldAnalyser/fieldAnalyser.js.map +1 -1
  52. package/dist/fieldAnalyser/fieldAnalyser.spec.js +13 -0
  53. package/dist/fieldAnalyser/fieldAnalyser.spec.js.map +1 -1
  54. package/dist/fieldAnalyser/fieldUtils.js +4 -0
  55. package/dist/fieldAnalyser/fieldUtils.js.map +1 -1
  56. package/dist/fieldAnalyser/fieldsUtils.spec.js +3 -0
  57. package/dist/fieldAnalyser/fieldsUtils.spec.js.map +1 -1
  58. package/dist/help/axiosUtils.js +12 -0
  59. package/dist/help/axiosUtils.js.map +1 -0
  60. package/dist/help/fileConsumer.js +100 -0
  61. package/dist/help/fileConsumer.js.map +1 -0
  62. package/dist/help/fileConsumer.spec.js +75 -0
  63. package/dist/help/fileConsumer.spec.js.map +1 -0
  64. package/dist/help/fileContainer.js +20 -0
  65. package/dist/help/fileContainer.js.map +1 -0
  66. package/dist/help/fileContainer.spec.js +34 -0
  67. package/dist/help/fileContainer.spec.js.map +1 -0
  68. package/dist/help/urlUtils.js +43 -0
  69. package/dist/help/urlUtils.js.map +1 -0
  70. package/dist/index.js +8 -3
  71. package/dist/index.js.map +1 -1
  72. package/dist/interfaces.js +3 -0
  73. package/dist/interfaces.js.map +1 -0
  74. package/dist/localtest.js +2 -2
  75. package/dist/localtest.js.map +1 -1
  76. package/dist/source/batchUploadDocumentsFromFile.js +50 -0
  77. package/dist/source/batchUploadDocumentsFromFile.js.map +1 -0
  78. package/dist/source/catalog.js +115 -0
  79. package/dist/source/catalog.js.map +1 -0
  80. package/dist/source/catalog.spec.js +239 -0
  81. package/dist/source/catalog.spec.js.map +1 -0
  82. package/dist/source/catalog.stream.spec.js +189 -0
  83. package/dist/source/catalog.stream.spec.js.map +1 -0
  84. package/dist/source/documentUploader.js +23 -0
  85. package/dist/source/documentUploader.js.map +1 -0
  86. package/dist/source/push.js +199 -0
  87. package/dist/source/push.js.map +1 -0
  88. package/dist/{source.spec.js → source/push.spec.js} +44 -27
  89. package/dist/source/push.spec.js.map +1 -0
  90. package/dist/source/securityIdenty.js +59 -0
  91. package/dist/source/securityIdenty.js.map +1 -0
  92. package/dist/source/source.js +9 -0
  93. package/dist/source/source.js.map +1 -0
  94. package/dist/uploadStrategy/fileContainerStrategy.js +34 -0
  95. package/dist/uploadStrategy/fileContainerStrategy.js.map +1 -0
  96. package/dist/uploadStrategy/index.js +7 -0
  97. package/dist/uploadStrategy/index.js.map +1 -0
  98. package/dist/uploadStrategy/strategy.js +3 -0
  99. package/dist/uploadStrategy/strategy.js.map +1 -0
  100. package/dist/uploadStrategy/streamChunkStrategy.js +51 -0
  101. package/dist/uploadStrategy/streamChunkStrategy.js.map +1 -0
  102. package/dist/validation/preconditions/apiKeyPrivilege.js +21 -0
  103. package/dist/validation/preconditions/apiKeyPrivilege.js.map +1 -0
  104. package/dist/validation/preconditions/apiKeyPrivilege.spec.js +70 -0
  105. package/dist/validation/preconditions/apiKeyPrivilege.spec.js.map +1 -0
  106. package/dist/validation/preconditions/platformPrivilege.js +35 -0
  107. package/dist/validation/preconditions/platformPrivilege.js.map +1 -0
  108. package/package.json +1 -1
  109. package/dist/docs/classes/Source.html +0 -45
  110. package/dist/docs/interfaces/BatchUpdateDocumentsFromFiles.html +0 -7
  111. package/dist/source.js +0 -322
  112. package/dist/source.js.map +0 -1
  113. 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('./fieldAnalyser/fieldAnalyser');
6
+ jest.mock('../fieldAnalyser/fieldAnalyser');
7
7
  const platform_client_1 = require("@coveord/platform-client");
8
- const source_1 = require("./source");
9
- const documentBuilder_1 = require("./documentBuilder");
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 _1 = require(".");
14
- const inconsistencies_1 = require("./fieldAnalyser/inconsistencies");
15
- const fieldErrors_1 = require("./errors/fieldErrors");
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(_1.FieldAnalyser);
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('Source', () => {
58
+ describe('PushSource', () => {
55
59
  let source;
56
60
  beforeAll(() => {
57
61
  doMockPlatformClient();
58
62
  doMockFieldAnalyser();
59
63
  });
60
64
  beforeEach(() => {
61
- source = new source_1.Source('the_key', 'the_org');
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 source_1.Source('the_key', 'the_org', {
85
- region: _1.Region.AU,
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 source_1.Source('the_key', 'the_org', {
92
- environment: _1.PlatformEnvironment.Dev,
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 source_1.Source('the_key', 'the_org', {
98
- environment: _1.PlatformEnvironment.QA,
99
- region: _1.Region.EU,
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.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], mockedCallback, { createFields: false });
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.batchUpdateDocumentsFromFiles('the_id', ['path/to/invalid/document'], mockedCallback, { createFields: false })).rejects.toThrow("no such file or directory, lstat 'path/to/invalid/document'");
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.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], mockedCallback, { createFields: false });
204
- expect(mockedCallback).toHaveBeenCalledWith(null, expect.anything());
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.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], mockedCallback, { createFields: false });
208
- expect(mockedCallback).toHaveBeenCalledWith(null, expect.objectContaining({ files: ['valid.json'] }));
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.batchUpdateDocumentsFromFiles('the_id', [(0, path_1.join)(pathToStub, 'mixdocuments')], mockedCallback, { createFields: false });
214
- expect(mockedCallback).toHaveBeenCalledWith({
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 source_1.Source('the_key', 'the_org');
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=source.spec.js.map
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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"}