@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.
Files changed (86) hide show
  1. package/README.md +2 -2
  2. package/dist/definitions/errors/privilegeError.d.ts +6 -0
  3. package/dist/definitions/help/axiosUtils.d.ts +2 -0
  4. package/dist/definitions/help/fileContainer.d.ts +9 -0
  5. package/dist/definitions/help/fileContainer.spec.d.ts +1 -0
  6. package/dist/definitions/help/urlUtils.d.ts +27 -0
  7. package/dist/definitions/interfaces.d.ts +4 -1
  8. package/dist/definitions/source/batchUploadDocumentsFromFile.d.ts +11 -0
  9. package/dist/definitions/source/catalog.d.ts +69 -0
  10. package/dist/definitions/source/catalog.spec.d.ts +1 -0
  11. package/dist/definitions/source/catalog.stream.spec.d.ts +1 -0
  12. package/dist/definitions/source/documentUploader.d.ts +5 -0
  13. package/dist/definitions/source/push.d.ts +5 -12
  14. package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +23 -0
  15. package/dist/definitions/uploadStrategy/index.d.ts +3 -0
  16. package/dist/definitions/uploadStrategy/strategy.d.ts +16 -0
  17. package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +27 -0
  18. package/dist/definitions/validation/preconditions/apiKeyPrivilege.d.ts +3 -0
  19. package/dist/definitions/validation/preconditions/apiKeyPrivilege.spec.d.ts +1 -0
  20. package/dist/definitions/validation/preconditions/platformPrivilege.d.ts +7 -0
  21. package/dist/docs/assets/search.js +1 -1
  22. package/dist/docs/classes/AnySecurityIdentityBuilder.html +2 -2
  23. package/dist/docs/classes/DocumentBuilder.html +16 -16
  24. package/dist/docs/classes/FieldAnalyser.html +3 -3
  25. package/dist/docs/classes/GroupSecurityIdentityBuilder.html +2 -2
  26. package/dist/docs/classes/PushSource.html +14 -14
  27. package/dist/docs/classes/UserSecurityIdentityBuilder.html +2 -2
  28. package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +2 -2
  29. package/dist/docs/enums/PlatformEnvironment.html +1 -1
  30. package/dist/docs/index.html +1 -1
  31. package/dist/docs/interfaces/BatchUpdateDocuments.html +1 -1
  32. package/dist/docs/interfaces/Document.html +13 -13
  33. package/dist/docs/interfaces/SecurityIdentity.html +3 -3
  34. package/dist/docs/interfaces/SecurityIdentityBuilder.html +1 -1
  35. package/dist/docs/interfaces/UploadBatchCallbackData.html +1 -1
  36. package/dist/docs/modules.html +2 -2
  37. package/dist/errors/privilegeError.js +13 -0
  38. package/dist/errors/privilegeError.js.map +1 -0
  39. package/dist/fieldAnalyser/fieldAnalyser.js +3 -0
  40. package/dist/fieldAnalyser/fieldAnalyser.js.map +1 -1
  41. package/dist/fieldAnalyser/fieldAnalyser.spec.js +13 -0
  42. package/dist/fieldAnalyser/fieldAnalyser.spec.js.map +1 -1
  43. package/dist/fieldAnalyser/fieldUtils.js +4 -0
  44. package/dist/fieldAnalyser/fieldUtils.js.map +1 -1
  45. package/dist/fieldAnalyser/fieldsUtils.spec.js +3 -0
  46. package/dist/fieldAnalyser/fieldsUtils.spec.js.map +1 -1
  47. package/dist/help/axiosUtils.js +12 -0
  48. package/dist/help/axiosUtils.js.map +1 -0
  49. package/dist/help/fileContainer.js +20 -0
  50. package/dist/help/fileContainer.js.map +1 -0
  51. package/dist/help/fileContainer.spec.js +34 -0
  52. package/dist/help/fileContainer.spec.js.map +1 -0
  53. package/dist/help/urlUtils.js +43 -0
  54. package/dist/help/urlUtils.js.map +1 -0
  55. package/dist/source/batchUploadDocumentsFromFile.js +50 -0
  56. package/dist/source/batchUploadDocumentsFromFile.js.map +1 -0
  57. package/dist/source/catalog.js +115 -0
  58. package/dist/source/catalog.js.map +1 -0
  59. package/dist/source/catalog.spec.js +239 -0
  60. package/dist/source/catalog.spec.js.map +1 -0
  61. package/dist/source/catalog.stream.spec.js +189 -0
  62. package/dist/source/catalog.stream.spec.js.map +1 -0
  63. package/dist/source/documentUploader.js +23 -0
  64. package/dist/source/documentUploader.js.map +1 -0
  65. package/dist/source/push.js +19 -57
  66. package/dist/source/push.js.map +1 -1
  67. package/dist/source/push.spec.js +3 -0
  68. package/dist/source/push.spec.js.map +1 -1
  69. package/dist/uploadStrategy/fileContainerStrategy.js +34 -0
  70. package/dist/uploadStrategy/fileContainerStrategy.js.map +1 -0
  71. package/dist/uploadStrategy/index.js +7 -0
  72. package/dist/uploadStrategy/index.js.map +1 -0
  73. package/dist/uploadStrategy/strategy.js +3 -0
  74. package/dist/uploadStrategy/strategy.js.map +1 -0
  75. package/dist/uploadStrategy/streamChunkStrategy.js +51 -0
  76. package/dist/uploadStrategy/streamChunkStrategy.js.map +1 -0
  77. package/dist/validation/preconditions/apiKeyPrivilege.js +21 -0
  78. package/dist/validation/preconditions/apiKeyPrivilege.js.map +1 -0
  79. package/dist/validation/preconditions/apiKeyPrivilege.spec.js +70 -0
  80. package/dist/validation/preconditions/apiKeyPrivilege.spec.js.map +1 -0
  81. package/dist/validation/preconditions/platformPrivilege.js +35 -0
  82. package/dist/validation/preconditions/platformPrivilege.js.map +1 -0
  83. package/package.json +1 -1
  84. package/dist/definitions/source/batchUpdateDocumentsFromFile.d.ts +0 -10
  85. package/dist/source/batchUpdateDocumentsFromFile.js +0 -42
  86. 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":"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"}
@@ -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":";;AAAA,+CAA+C;AAC/C,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAC5C,8DAAsD;AACtD,iCAA0B;AAC1B,+BAA0B;AAC1B,qCAA4B;AAC5B,uCAAwC;AACxC,0BAAiC;AACjC,MAAM,SAAS,GAAG,eAAkC,CAAC;AAErD,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAc,CAAC,CAAC;AACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACnC,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAClC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACrC,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACxC,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAElD,MAAM,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACP,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,gBAAgB;QAC/B,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC;AAEF,MAAM,gCAAgC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,EAAE;QACJ,SAAS,EAAE,yBAAyB;QACpC,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,EAAC,GAAG,EAAE,KAAK,EAAC;KAC9B;CACF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE;QACJ,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,oBAAoB,CAAC,kBAAkB,CACrC,GAAG,EAAE,CACH,CAAC;QACC,kBAAkB,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC;QAC5C,MAAM,EAAE;YACN,MAAM,EAAE,gBAAgB;SACzB;QACD,KAAK,EAAE;YACL,YAAY,EAAE,eAAe;SAC9B;KAC4B,CAAA,CAClC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC/B,mBAAmB,CAAC,kBAAkB,CACpC,GAAG,EAAE,CACH,CAAC;QACC,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,kBAAkB;KACE,CAAA,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE;QAChD,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAAC;SAC5D;QACD,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAC5C,CAAC,EACD,sFAAsF,EACtF,EAAE,EACF,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAC5C,CAAC,EACD,qGAAqG,EACrG,EAAE,EACF,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAC5C,CAAC,EACD,qGAAqG,EACrG,EAAE,EACF,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,MAAqB,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,oBAAoB,EAAE,CAAC;QACvB,mBAAmB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,iBAAiB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QACjD,MAAM,GAAG,IAAI,uBAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,uBAAuB,EAAE,CAAC;YAC1B,MAAM,MAAM;iBACT,6BAA6B,CAC5B,QAAQ,EACR,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAClC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;iBACA,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,EAAE;YACZ,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,uBAAuB,EAAE,CAAC;QAE1B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,0BAA0B,EAC1B,MAAM,CAAC,gBAAgB,CAAC;gBACtB,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC;oBAClC,MAAM,CAAC,gBAAgB,CAAC;wBACtB,UAAU,EAAE,sCAAsC;qBACnD,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC;wBACtB,UAAU,EAAE,sCAAsC;qBACnD,CAAC;iBACH,CAAC;gBACF,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;aACnC,CAAC,EACF;gBACE,OAAO,EAAE;oBACP,GAAG,EAAE,KAAK;iBACX;aACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,uBAAuB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,EAAE;YACZ,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,uBAAuB,EAAE,CAAC;gBAC1B,MAAM,MAAM;qBACT,6BAA6B,CAC5B,QAAQ,EACR,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAClC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;qBACA,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,uBAAuB,EAAE,CAAC;YAE1B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACvD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,0BAA0B,EAC1B,MAAM,CAAC,gBAAgB,CAAC;oBACtB,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC;wBAClC,MAAM,CAAC,gBAAgB,CAAC;4BACtB,UAAU,EAAE,sCAAsC;yBACnD,CAAC;wBACF,MAAM,CAAC,gBAAgB,CAAC;4BACtB,UAAU,EAAE,sCAAsC;yBACnD,CAAC;qBACH,CAAC;oBACF,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;iBACnC,CAAC,EACF;oBACE,OAAO,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,MAAM;iBACT,6BAA6B,CAC5B,QAAQ,EACR,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAClC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;iBACA,YAAY,CAAC,mBAAmB,CAAC;iBACjC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,MAAM;iBACT,6BAA6B,CAC5B,QAAQ,EACR,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAClC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;iBACA,aAAa,CAAC,qBAAqB,CAAC;iBACpC,KAAK,EAAE,CAAC;YAEX,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAChD,MAAM,CAAC,gBAAgB,CAAC,EAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAC,CAAC,CACjD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;YAE7D,MAAM,MAAM;iBACT,6BAA6B,CAC5B,QAAQ,EACR,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAClC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;iBACA,YAAY,CAAC,mBAAmB,CAAC;iBACjC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAC9C;gBACE,OAAO,EAAE,eAAe;aACzB,EACD,MAAM,CAAC,QAAQ,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CACV,MAAM;iBACH,6BAA6B,CAC5B,QAAQ,EACR,CAAC,0BAA0B,CAAC,EAC5B,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB;iBACA,KAAK,EAAE,CACX,CAAC,OAAO,CAAC,OAAO,CACf,6DAA6D,CAC9D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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"}