@coveo/push-api-client 3.0.117 → 3.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/APICore.js +47 -47
- package/dist/APICore.js.map +1 -1
- package/dist/definitions/APICore.d.ts +18 -18
- package/dist/definitions/document.d.ts +124 -124
- package/dist/definitions/documentBuilder.d.ts +168 -168
- package/dist/definitions/documentBuilder.spec.d.ts +1 -1
- package/dist/definitions/environment.d.ts +16 -16
- package/dist/definitions/errors/baseError.d.ts +4 -4
- package/dist/definitions/errors/fieldErrors.d.ts +18 -18
- package/dist/definitions/errors/index.d.ts +3 -3
- package/dist/definitions/errors/privilegeError.d.ts +6 -6
- package/dist/definitions/errors/validatorErrors.d.ts +20 -20
- package/dist/definitions/fieldAnalyser/fieldAnalyser.d.ts +36 -36
- package/dist/definitions/fieldAnalyser/fieldAnalyser.spec.d.ts +1 -1
- package/dist/definitions/fieldAnalyser/fieldStore.d.ts +5 -5
- package/dist/definitions/fieldAnalyser/fieldUtils.d.ts +6 -6
- package/dist/definitions/fieldAnalyser/fieldsUtils.spec.d.ts +1 -1
- package/dist/definitions/fieldAnalyser/inconsistencies.d.ts +5 -5
- package/dist/definitions/fieldAnalyser/inconsistencies.spec.d.ts +1 -1
- package/dist/definitions/fieldAnalyser/typeUtils.d.ts +3 -3
- package/dist/definitions/fieldAnalyser/typeUtils.spec.d.ts +1 -1
- package/dist/definitions/help/file.d.ts +3 -3
- package/dist/definitions/help/file.spec.d.ts +1 -1
- package/dist/definitions/help/fileConsumer.d.ts +31 -31
- package/dist/definitions/help/fileConsumer.spec.d.ts +1 -1
- package/dist/definitions/help/fileContainer.d.ts +8 -8
- package/dist/definitions/help/fileContainer.spec.d.ts +1 -1
- package/dist/definitions/help/function.d.ts +1 -1
- package/dist/definitions/help/generator.d.ts +11 -11
- package/dist/definitions/help/generator.spec.d.ts +1 -1
- package/dist/definitions/help/urlUtils.d.ts +27 -27
- package/dist/definitions/help/urlUtils.spec.d.ts +1 -1
- package/dist/definitions/index.d.ts +14 -14
- package/dist/definitions/interfaces.d.ts +70 -70
- package/dist/definitions/localtest.d.ts +1 -1
- package/dist/definitions/permissionSetBuilder.d.ts +34 -34
- package/dist/definitions/permissionSetBuilder.spec.d.ts +1 -1
- package/dist/definitions/securityIdentityBuilder.d.ts +105 -105
- package/dist/definitions/securityIdentityBuilder.spec.d.ts +1 -1
- package/dist/definitions/source/batchUploadDocumentsFromFile.d.ts +11 -11
- package/dist/definitions/source/batchUploadDocumentsFromFile.spec.d.ts +1 -1
- package/dist/definitions/source/catalog.d.ts +70 -70
- package/dist/definitions/source/catalog.spec.d.ts +1 -1
- package/dist/definitions/source/documentUploader.d.ts +11 -11
- package/dist/definitions/source/documentUploader.spec.d.ts +1 -1
- package/dist/definitions/source/push.d.ts +87 -87
- package/dist/definitions/source/push.spec.d.ts +1 -1
- package/dist/definitions/source/securityIdenty.d.ts +43 -43
- package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +23 -23
- package/dist/definitions/uploadStrategy/fileContainerStrategy.spec.d.ts +1 -1
- package/dist/definitions/uploadStrategy/index.d.ts +3 -3
- package/dist/definitions/uploadStrategy/strategy.d.ts +23 -23
- package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +28 -28
- package/dist/definitions/uploadStrategy/streamChunkStrategy.spec.d.ts +1 -1
- package/dist/definitions/validation/caseInsensitiveDocument.d.ts +13 -13
- package/dist/definitions/validation/knownKey.d.ts +10 -10
- package/dist/definitions/validation/parseFile.d.ts +4 -4
- package/dist/definitions/validation/parseFile.spec.d.ts +1 -1
- package/dist/definitions/validation/parsePermissions.d.ts +5 -5
- package/dist/definitions/validation/parsePermissions.spec.d.ts +1 -1
- package/dist/definitions/validation/preconditions/apiKeyPrivilege.d.ts +3 -3
- package/dist/definitions/validation/preconditions/apiKeyPrivilege.spec.d.ts +1 -1
- package/dist/definitions/validation/preconditions/platformPrivilege.d.ts +7 -7
- package/dist/definitions/validation/requiredKeyValidator.d.ts +17 -17
- package/dist/definitions/validation/transformers/transformer.d.ts +31 -31
- package/dist/definitions/validation/transformers/transformer.spec.d.ts +1 -1
- package/dist/document.js +2 -2
- package/dist/documentBuilder.js +292 -292
- package/dist/documentBuilder.spec.js +191 -191
- package/dist/environment.js +41 -41
- package/dist/errors/baseError.js +10 -10
- package/dist/errors/fieldErrors.js +42 -42
- package/dist/errors/index.js +19 -19
- package/dist/errors/privilegeError.js +12 -12
- package/dist/errors/validatorErrors.js +40 -40
- package/dist/fieldAnalyser/fieldAnalyser.js +95 -95
- package/dist/fieldAnalyser/fieldAnalyser.spec.js +230 -230
- package/dist/fieldAnalyser/fieldStore.js +21 -21
- package/dist/fieldAnalyser/fieldUtils.js +41 -41
- package/dist/fieldAnalyser/fieldsUtils.spec.js +116 -116
- package/dist/fieldAnalyser/inconsistencies.js +14 -14
- package/dist/fieldAnalyser/inconsistencies.spec.js +40 -40
- package/dist/fieldAnalyser/typeUtils.js +61 -61
- package/dist/fieldAnalyser/typeUtils.spec.js +142 -142
- package/dist/help/file.js +37 -37
- package/dist/help/file.spec.js +67 -67
- package/dist/help/fileConsumer.js +150 -150
- package/dist/help/fileConsumer.spec.js +153 -153
- package/dist/help/fileContainer.js +48 -48
- package/dist/help/fileContainer.spec.js +65 -65
- package/dist/help/function.js +5 -5
- package/dist/help/generator.js +32 -32
- package/dist/help/generator.spec.js +82 -82
- package/dist/help/urlUtils.js +42 -42
- package/dist/help/urlUtils.spec.js +41 -41
- package/dist/index.js +38 -38
- package/dist/interfaces.js +2 -2
- package/dist/localtest.js +55 -55
- package/dist/permissionSetBuilder.js +58 -58
- package/dist/permissionSetBuilder.spec.js +68 -68
- package/dist/securityIdentityBuilder.js +128 -128
- package/dist/securityIdentityBuilder.spec.js +50 -50
- package/dist/source/batchUploadDocumentsFromFile.js +46 -46
- package/dist/source/batchUploadDocumentsFromFile.spec.js +145 -145
- package/dist/source/catalog.js +111 -111
- package/dist/source/catalog.spec.js +64 -64
- package/dist/source/documentUploader.js +45 -45
- package/dist/source/documentUploader.spec.js +118 -118
- package/dist/source/push.js +140 -140
- package/dist/source/push.spec.js +152 -152
- package/dist/source/securityIdenty.js +57 -57
- package/dist/uploadStrategy/fileContainerStrategy.js +32 -32
- package/dist/uploadStrategy/fileContainerStrategy.spec.js +86 -86
- package/dist/uploadStrategy/index.js +19 -19
- package/dist/uploadStrategy/strategy.js +2 -2
- package/dist/uploadStrategy/streamChunkStrategy.js +52 -52
- package/dist/uploadStrategy/streamChunkStrategy.spec.js +77 -77
- package/dist/validation/caseInsensitiveDocument.js +31 -31
- package/dist/validation/knownKey.js +37 -37
- package/dist/validation/parseFile.js +120 -120
- package/dist/validation/parseFile.spec.js +96 -96
- package/dist/validation/parsePermissions.js +118 -118
- package/dist/validation/parsePermissions.spec.js +86 -86
- package/dist/validation/preconditions/apiKeyPrivilege.js +20 -20
- package/dist/validation/preconditions/apiKeyPrivilege.spec.js +66 -66
- package/dist/validation/preconditions/platformPrivilege.js +32 -32
- package/dist/validation/requiredKeyValidator.js +61 -61
- package/dist/validation/transformers/transformer.js +51 -51
- package/dist/validation/transformers/transformer.spec.js +21 -21
- package/package.json +11 -11
@@ -1,117 +1,117 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
jest.mock('@coveo/platform-client');
|
4
|
-
const platform_client_1 = require("@coveo/platform-client");
|
5
|
-
const inconsistencies_1 = require("./inconsistencies");
|
6
|
-
const errors_1 = require("../errors");
|
7
|
-
const Utils = require("./fieldUtils");
|
8
|
-
const { createFields, listAllFieldsFromOrg, createFieldsFromReport } = Utils;
|
9
|
-
const mockedPlatformClient = jest.mocked(platform_client_1.default);
|
10
|
-
const mockedCreateField = jest.fn();
|
11
|
-
const mockedListFields = jest.fn();
|
12
|
-
const mockEvaluate = jest.fn();
|
13
|
-
const dummyPlatformClient = () => {
|
14
|
-
return new platform_client_1.default({ accessToken: 'xxx' });
|
15
|
-
};
|
16
|
-
const doMockPlatformClient = () => {
|
17
|
-
mockedPlatformClient.mockImplementation(() => ({
|
18
|
-
privilegeEvaluator: { evaluate: mockEvaluate },
|
19
|
-
field: {
|
20
|
-
createFields: mockedCreateField,
|
21
|
-
list: mockedListFields,
|
22
|
-
},
|
23
|
-
}));
|
24
|
-
};
|
25
|
-
describe('fieldUtils', () => {
|
26
|
-
let client;
|
27
|
-
beforeAll(() => {
|
28
|
-
doMockPlatformClient();
|
29
|
-
});
|
30
|
-
beforeEach(async () => {
|
31
|
-
client = dummyPlatformClient();
|
32
|
-
mockEvaluate.mockResolvedValue({ approved: true });
|
33
|
-
});
|
34
|
-
describe('when listing fields', () => {
|
35
|
-
beforeEach(async () => {
|
36
|
-
mockedListFields
|
37
|
-
.mockReturnValueOnce({
|
38
|
-
items: [{ name: 'brand' }, { name: 'category' }],
|
39
|
-
totalPages: 2,
|
40
|
-
})
|
41
|
-
.mockReturnValueOnce({
|
42
|
-
items: [{ name: 'type' }],
|
43
|
-
totalPages: 2,
|
44
|
-
});
|
45
|
-
await listAllFieldsFromOrg(client);
|
46
|
-
});
|
47
|
-
it('should list all fields from org', async () => {
|
48
|
-
expect(mockedListFields).toHaveBeenCalledTimes(2);
|
49
|
-
});
|
50
|
-
});
|
51
|
-
describe('when creating fields', () => {
|
52
|
-
const fields = [
|
53
|
-
{ name: 'field1' },
|
54
|
-
{ name: 'field2' },
|
55
|
-
{ name: 'field3' },
|
56
|
-
{ name: 'field4' },
|
57
|
-
{ name: 'field5' },
|
58
|
-
{ name: 'field6' },
|
59
|
-
];
|
60
|
-
it.each([
|
61
|
-
{
|
62
|
-
batchLimit: 4,
|
63
|
-
batches: [
|
64
|
-
['field1', 'field2', 'field3', 'field4'],
|
65
|
-
['field5', 'field6'],
|
66
|
-
],
|
67
|
-
},
|
68
|
-
{
|
69
|
-
batchLimit: 6,
|
70
|
-
batches: [['field1', 'field2', 'field3', 'field4', 'field5', 'field6']],
|
71
|
-
},
|
72
|
-
{
|
73
|
-
batchLimit: 999,
|
74
|
-
batches: [['field1', 'field2', 'field3', 'field4', 'field5', 'field6']],
|
75
|
-
},
|
76
|
-
])('should split fields into smaller batches', async ({ batchLimit, batches }) => {
|
77
|
-
await createFields(client, fields, batchLimit);
|
78
|
-
expect(mockedCreateField).toHaveBeenCalledTimes(batches.length);
|
79
|
-
batches.forEach((batch, index) => {
|
80
|
-
const field = batch.map((f) => ({
|
81
|
-
name: f,
|
82
|
-
}));
|
83
|
-
expect(mockedCreateField).toHaveBeenNthCalledWith(index + 1, field);
|
84
|
-
});
|
85
|
-
});
|
86
|
-
});
|
87
|
-
describe('when creating fields from report', () => {
|
88
|
-
const fields = [
|
89
|
-
{ name: 'field1' },
|
90
|
-
{ name: 'field2' },
|
91
|
-
{ name: 'field3' },
|
92
|
-
];
|
93
|
-
it('should call #createFields', async () => {
|
94
|
-
const spy = jest.spyOn(Utils, 'createFields');
|
95
|
-
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
96
|
-
await createFieldsFromReport(dummyPlatformClient(), {
|
97
|
-
fields,
|
98
|
-
inconsistencies,
|
99
|
-
});
|
100
|
-
expect(spy).toHaveBeenCalledWith(client, [
|
101
|
-
{ name: 'field1' },
|
102
|
-
{ name: 'field2' },
|
103
|
-
{ name: 'field3' },
|
104
|
-
]);
|
105
|
-
});
|
106
|
-
it('should throw if inconsistencies', async () => {
|
107
|
-
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
108
|
-
inconsistencies.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.DOUBLE]);
|
109
|
-
const create = () => createFieldsFromReport(dummyPlatformClient(), {
|
110
|
-
fields,
|
111
|
-
inconsistencies,
|
112
|
-
});
|
113
|
-
await expect(() => create()).rejects.toThrow(errors_1.FieldTypeInconsistencyError);
|
114
|
-
});
|
115
|
-
});
|
116
|
-
});
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
jest.mock('@coveo/platform-client');
|
4
|
+
const platform_client_1 = require("@coveo/platform-client");
|
5
|
+
const inconsistencies_1 = require("./inconsistencies");
|
6
|
+
const errors_1 = require("../errors");
|
7
|
+
const Utils = require("./fieldUtils");
|
8
|
+
const { createFields, listAllFieldsFromOrg, createFieldsFromReport } = Utils;
|
9
|
+
const mockedPlatformClient = jest.mocked(platform_client_1.default);
|
10
|
+
const mockedCreateField = jest.fn();
|
11
|
+
const mockedListFields = jest.fn();
|
12
|
+
const mockEvaluate = jest.fn();
|
13
|
+
const dummyPlatformClient = () => {
|
14
|
+
return new platform_client_1.default({ accessToken: 'xxx' });
|
15
|
+
};
|
16
|
+
const doMockPlatformClient = () => {
|
17
|
+
mockedPlatformClient.mockImplementation(() => ({
|
18
|
+
privilegeEvaluator: { evaluate: mockEvaluate },
|
19
|
+
field: {
|
20
|
+
createFields: mockedCreateField,
|
21
|
+
list: mockedListFields,
|
22
|
+
},
|
23
|
+
}));
|
24
|
+
};
|
25
|
+
describe('fieldUtils', () => {
|
26
|
+
let client;
|
27
|
+
beforeAll(() => {
|
28
|
+
doMockPlatformClient();
|
29
|
+
});
|
30
|
+
beforeEach(async () => {
|
31
|
+
client = dummyPlatformClient();
|
32
|
+
mockEvaluate.mockResolvedValue({ approved: true });
|
33
|
+
});
|
34
|
+
describe('when listing fields', () => {
|
35
|
+
beforeEach(async () => {
|
36
|
+
mockedListFields
|
37
|
+
.mockReturnValueOnce({
|
38
|
+
items: [{ name: 'brand' }, { name: 'category' }],
|
39
|
+
totalPages: 2,
|
40
|
+
})
|
41
|
+
.mockReturnValueOnce({
|
42
|
+
items: [{ name: 'type' }],
|
43
|
+
totalPages: 2,
|
44
|
+
});
|
45
|
+
await listAllFieldsFromOrg(client);
|
46
|
+
});
|
47
|
+
it('should list all fields from org', async () => {
|
48
|
+
expect(mockedListFields).toHaveBeenCalledTimes(2);
|
49
|
+
});
|
50
|
+
});
|
51
|
+
describe('when creating fields', () => {
|
52
|
+
const fields = [
|
53
|
+
{ name: 'field1' },
|
54
|
+
{ name: 'field2' },
|
55
|
+
{ name: 'field3' },
|
56
|
+
{ name: 'field4' },
|
57
|
+
{ name: 'field5' },
|
58
|
+
{ name: 'field6' },
|
59
|
+
];
|
60
|
+
it.each([
|
61
|
+
{
|
62
|
+
batchLimit: 4,
|
63
|
+
batches: [
|
64
|
+
['field1', 'field2', 'field3', 'field4'],
|
65
|
+
['field5', 'field6'],
|
66
|
+
],
|
67
|
+
},
|
68
|
+
{
|
69
|
+
batchLimit: 6,
|
70
|
+
batches: [['field1', 'field2', 'field3', 'field4', 'field5', 'field6']],
|
71
|
+
},
|
72
|
+
{
|
73
|
+
batchLimit: 999,
|
74
|
+
batches: [['field1', 'field2', 'field3', 'field4', 'field5', 'field6']],
|
75
|
+
},
|
76
|
+
])('should split fields into smaller batches', async ({ batchLimit, batches }) => {
|
77
|
+
await createFields(client, fields, batchLimit);
|
78
|
+
expect(mockedCreateField).toHaveBeenCalledTimes(batches.length);
|
79
|
+
batches.forEach((batch, index) => {
|
80
|
+
const field = batch.map((f) => ({
|
81
|
+
name: f,
|
82
|
+
}));
|
83
|
+
expect(mockedCreateField).toHaveBeenNthCalledWith(index + 1, field);
|
84
|
+
});
|
85
|
+
});
|
86
|
+
});
|
87
|
+
describe('when creating fields from report', () => {
|
88
|
+
const fields = [
|
89
|
+
{ name: 'field1' },
|
90
|
+
{ name: 'field2' },
|
91
|
+
{ name: 'field3' },
|
92
|
+
];
|
93
|
+
it('should call #createFields', async () => {
|
94
|
+
const spy = jest.spyOn(Utils, 'createFields');
|
95
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
96
|
+
await createFieldsFromReport(dummyPlatformClient(), {
|
97
|
+
fields,
|
98
|
+
inconsistencies,
|
99
|
+
});
|
100
|
+
expect(spy).toHaveBeenCalledWith(client, [
|
101
|
+
{ name: 'field1' },
|
102
|
+
{ name: 'field2' },
|
103
|
+
{ name: 'field3' },
|
104
|
+
]);
|
105
|
+
});
|
106
|
+
it('should throw if inconsistencies', async () => {
|
107
|
+
const inconsistencies = new inconsistencies_1.Inconsistencies();
|
108
|
+
inconsistencies.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.DOUBLE]);
|
109
|
+
const create = () => createFieldsFromReport(dummyPlatformClient(), {
|
110
|
+
fields,
|
111
|
+
inconsistencies,
|
112
|
+
});
|
113
|
+
await expect(() => create()).rejects.toThrow(errors_1.FieldTypeInconsistencyError);
|
114
|
+
});
|
115
|
+
});
|
116
|
+
});
|
117
117
|
//# sourceMappingURL=fieldsUtils.spec.js.map
|
@@ -1,15 +1,15 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.Inconsistencies = void 0;
|
4
|
-
class Inconsistencies extends Map {
|
5
|
-
constructor() {
|
6
|
-
super();
|
7
|
-
}
|
8
|
-
add(fieldName, types) {
|
9
|
-
const fieldTypeSet = this.get(fieldName) || [];
|
10
|
-
this.set(fieldName, new Set([...fieldTypeSet, ...types]));
|
11
|
-
return this;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
exports.Inconsistencies = Inconsistencies;
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Inconsistencies = void 0;
|
4
|
+
class Inconsistencies extends Map {
|
5
|
+
constructor() {
|
6
|
+
super();
|
7
|
+
}
|
8
|
+
add(fieldName, types) {
|
9
|
+
const fieldTypeSet = this.get(fieldName) || [];
|
10
|
+
this.set(fieldName, new Set([...fieldTypeSet, ...types]));
|
11
|
+
return this;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
exports.Inconsistencies = Inconsistencies;
|
15
15
|
//# sourceMappingURL=inconsistencies.js.map
|
@@ -1,41 +1,41 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
const platform_client_1 = require("@coveo/platform-client");
|
4
|
-
const inconsistencies_1 = require("./inconsistencies");
|
5
|
-
describe('Inconsistencies', () => {
|
6
|
-
const insconsitencies = new inconsistencies_1.Inconsistencies();
|
7
|
-
beforeAll(() => {
|
8
|
-
insconsitencies
|
9
|
-
.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.VECTOR])
|
10
|
-
.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.LONG_64])
|
11
|
-
.add('bar', [platform_client_1.FieldTypes.LONG, platform_client_1.FieldTypes.STRING]);
|
12
|
-
});
|
13
|
-
it('should return the inconsistencies count', () => {
|
14
|
-
expect(insconsitencies.size).toEqual(2);
|
15
|
-
});
|
16
|
-
it('should retrieve a specific inconsistency', () => {
|
17
|
-
const set = new Set([
|
18
|
-
platform_client_1.FieldTypes.STRING,
|
19
|
-
platform_client_1.FieldTypes.VECTOR,
|
20
|
-
platform_client_1.FieldTypes.LONG_64,
|
21
|
-
]);
|
22
|
-
expect(insconsitencies.get('foo')).toEqual(set);
|
23
|
-
});
|
24
|
-
it('should return undefined when retrieving invalid inconsistencies key', () => {
|
25
|
-
expect(insconsitencies.get('invalid')).toBeUndefined();
|
26
|
-
});
|
27
|
-
it('should loop through inconsistencies', () => {
|
28
|
-
const types = [];
|
29
|
-
const fields = [];
|
30
|
-
insconsitencies.forEach((typeSet, field) => {
|
31
|
-
types.push(typeSet);
|
32
|
-
fields.push(field);
|
33
|
-
});
|
34
|
-
expect(types).toStrictEqual([
|
35
|
-
new Set([platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.VECTOR, platform_client_1.FieldTypes.LONG_64]),
|
36
|
-
new Set([platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.LONG]),
|
37
|
-
]);
|
38
|
-
expect(fields).toStrictEqual(['foo', 'bar']);
|
39
|
-
});
|
40
|
-
});
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const platform_client_1 = require("@coveo/platform-client");
|
4
|
+
const inconsistencies_1 = require("./inconsistencies");
|
5
|
+
describe('Inconsistencies', () => {
|
6
|
+
const insconsitencies = new inconsistencies_1.Inconsistencies();
|
7
|
+
beforeAll(() => {
|
8
|
+
insconsitencies
|
9
|
+
.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.VECTOR])
|
10
|
+
.add('foo', [platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.LONG_64])
|
11
|
+
.add('bar', [platform_client_1.FieldTypes.LONG, platform_client_1.FieldTypes.STRING]);
|
12
|
+
});
|
13
|
+
it('should return the inconsistencies count', () => {
|
14
|
+
expect(insconsitencies.size).toEqual(2);
|
15
|
+
});
|
16
|
+
it('should retrieve a specific inconsistency', () => {
|
17
|
+
const set = new Set([
|
18
|
+
platform_client_1.FieldTypes.STRING,
|
19
|
+
platform_client_1.FieldTypes.VECTOR,
|
20
|
+
platform_client_1.FieldTypes.LONG_64,
|
21
|
+
]);
|
22
|
+
expect(insconsitencies.get('foo')).toEqual(set);
|
23
|
+
});
|
24
|
+
it('should return undefined when retrieving invalid inconsistencies key', () => {
|
25
|
+
expect(insconsitencies.get('invalid')).toBeUndefined();
|
26
|
+
});
|
27
|
+
it('should loop through inconsistencies', () => {
|
28
|
+
const types = [];
|
29
|
+
const fields = [];
|
30
|
+
insconsitencies.forEach((typeSet, field) => {
|
31
|
+
types.push(typeSet);
|
32
|
+
fields.push(field);
|
33
|
+
});
|
34
|
+
expect(types).toStrictEqual([
|
35
|
+
new Set([platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.VECTOR, platform_client_1.FieldTypes.LONG_64]),
|
36
|
+
new Set([platform_client_1.FieldTypes.STRING, platform_client_1.FieldTypes.LONG]),
|
37
|
+
]);
|
38
|
+
expect(fields).toStrictEqual(['foo', 'bar']);
|
39
|
+
});
|
40
|
+
});
|
41
41
|
//# sourceMappingURL=inconsistencies.spec.js.map
|
@@ -1,62 +1,62 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getGuessedTypeFromValue = exports.getMostEnglobingType = void 0;
|
4
|
-
const platform_client_1 = require("@coveo/platform-client");
|
5
|
-
const acceptedNumericalTypeEvolutions = [
|
6
|
-
platform_client_1.FieldTypes.LONG,
|
7
|
-
platform_client_1.FieldTypes.LONG_64,
|
8
|
-
platform_client_1.FieldTypes.DOUBLE,
|
9
|
-
];
|
10
|
-
const acceptedAllTypeEvolutions = [
|
11
|
-
...acceptedNumericalTypeEvolutions,
|
12
|
-
platform_client_1.FieldTypes.STRING,
|
13
|
-
];
|
14
|
-
function getMostEnglobingType(possibleType1, possibleType2, acceptedTypeEvolution = acceptedNumericalTypeEvolutions) {
|
15
|
-
if (possibleType1 === possibleType2) {
|
16
|
-
return possibleType1;
|
17
|
-
}
|
18
|
-
if (acceptedTypeEvolution.includes(possibleType1) &&
|
19
|
-
acceptedTypeEvolution.includes(possibleType2)) {
|
20
|
-
const idx1 = acceptedTypeEvolution.indexOf(possibleType1);
|
21
|
-
const idx2 = acceptedTypeEvolution.indexOf(possibleType2);
|
22
|
-
return acceptedTypeEvolution[Math.max(idx1, idx2)];
|
23
|
-
}
|
24
|
-
return null;
|
25
|
-
}
|
26
|
-
exports.getMostEnglobingType = getMostEnglobingType;
|
27
|
-
function getGuessedTypeFromValue(obj) {
|
28
|
-
if (typeof obj === 'object') {
|
29
|
-
return getGuessedTypeFromObject(obj);
|
30
|
-
}
|
31
|
-
return getGuessedTypeFromPrimitive(obj);
|
32
|
-
}
|
33
|
-
exports.getGuessedTypeFromValue = getGuessedTypeFromValue;
|
34
|
-
function getGuessedTypeFromPrimitive(obj) {
|
35
|
-
switch (typeof obj) {
|
36
|
-
case 'number':
|
37
|
-
return getSpecificNumericType(obj);
|
38
|
-
case 'string':
|
39
|
-
return platform_client_1.FieldTypes.STRING;
|
40
|
-
default:
|
41
|
-
return platform_client_1.FieldTypes.STRING;
|
42
|
-
}
|
43
|
-
}
|
44
|
-
function getGuessedTypeFromObject(obj) {
|
45
|
-
const initialType = acceptedAllTypeEvolutions[0];
|
46
|
-
const fallbackType = platform_client_1.FieldTypes.STRING;
|
47
|
-
if (obj === null) {
|
48
|
-
return fallbackType;
|
49
|
-
}
|
50
|
-
const array = Array.isArray(obj) ? obj : Object.values(obj);
|
51
|
-
return (array.reduce((previous, current) => getMostEnglobingType(previous, getGuessedTypeFromPrimitive(current), acceptedAllTypeEvolutions), initialType) || fallbackType);
|
52
|
-
}
|
53
|
-
function getSpecificNumericType(number) {
|
54
|
-
const is32BitInteger = (x) => (x | 0) === x;
|
55
|
-
if (Number.isInteger(number)) {
|
56
|
-
return is32BitInteger(number) ? platform_client_1.FieldTypes.LONG : platform_client_1.FieldTypes.LONG_64;
|
57
|
-
}
|
58
|
-
else {
|
59
|
-
return platform_client_1.FieldTypes.DOUBLE;
|
60
|
-
}
|
61
|
-
}
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getGuessedTypeFromValue = exports.getMostEnglobingType = void 0;
|
4
|
+
const platform_client_1 = require("@coveo/platform-client");
|
5
|
+
const acceptedNumericalTypeEvolutions = [
|
6
|
+
platform_client_1.FieldTypes.LONG,
|
7
|
+
platform_client_1.FieldTypes.LONG_64,
|
8
|
+
platform_client_1.FieldTypes.DOUBLE,
|
9
|
+
];
|
10
|
+
const acceptedAllTypeEvolutions = [
|
11
|
+
...acceptedNumericalTypeEvolutions,
|
12
|
+
platform_client_1.FieldTypes.STRING,
|
13
|
+
];
|
14
|
+
function getMostEnglobingType(possibleType1, possibleType2, acceptedTypeEvolution = acceptedNumericalTypeEvolutions) {
|
15
|
+
if (possibleType1 === possibleType2) {
|
16
|
+
return possibleType1;
|
17
|
+
}
|
18
|
+
if (acceptedTypeEvolution.includes(possibleType1) &&
|
19
|
+
acceptedTypeEvolution.includes(possibleType2)) {
|
20
|
+
const idx1 = acceptedTypeEvolution.indexOf(possibleType1);
|
21
|
+
const idx2 = acceptedTypeEvolution.indexOf(possibleType2);
|
22
|
+
return acceptedTypeEvolution[Math.max(idx1, idx2)];
|
23
|
+
}
|
24
|
+
return null;
|
25
|
+
}
|
26
|
+
exports.getMostEnglobingType = getMostEnglobingType;
|
27
|
+
function getGuessedTypeFromValue(obj) {
|
28
|
+
if (typeof obj === 'object') {
|
29
|
+
return getGuessedTypeFromObject(obj);
|
30
|
+
}
|
31
|
+
return getGuessedTypeFromPrimitive(obj);
|
32
|
+
}
|
33
|
+
exports.getGuessedTypeFromValue = getGuessedTypeFromValue;
|
34
|
+
function getGuessedTypeFromPrimitive(obj) {
|
35
|
+
switch (typeof obj) {
|
36
|
+
case 'number':
|
37
|
+
return getSpecificNumericType(obj);
|
38
|
+
case 'string':
|
39
|
+
return platform_client_1.FieldTypes.STRING;
|
40
|
+
default:
|
41
|
+
return platform_client_1.FieldTypes.STRING;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
function getGuessedTypeFromObject(obj) {
|
45
|
+
const initialType = acceptedAllTypeEvolutions[0];
|
46
|
+
const fallbackType = platform_client_1.FieldTypes.STRING;
|
47
|
+
if (obj === null) {
|
48
|
+
return fallbackType;
|
49
|
+
}
|
50
|
+
const array = Array.isArray(obj) ? obj : Object.values(obj);
|
51
|
+
return (array.reduce((previous, current) => getMostEnglobingType(previous, getGuessedTypeFromPrimitive(current), acceptedAllTypeEvolutions), initialType) || fallbackType);
|
52
|
+
}
|
53
|
+
function getSpecificNumericType(number) {
|
54
|
+
const is32BitInteger = (x) => (x | 0) === x;
|
55
|
+
if (Number.isInteger(number)) {
|
56
|
+
return is32BitInteger(number) ? platform_client_1.FieldTypes.LONG : platform_client_1.FieldTypes.LONG_64;
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
return platform_client_1.FieldTypes.DOUBLE;
|
60
|
+
}
|
61
|
+
}
|
62
62
|
//# sourceMappingURL=typeUtils.js.map
|