@coveo/push-api-client 2.8.13 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/dist/APICore.js +18 -13
- package/dist/APICore.js.map +1 -1
- package/dist/definitions/APICore.d.ts +12 -5
- package/dist/definitions/document.d.ts +2 -45
- package/dist/definitions/documentBuilder.d.ts +32 -59
- package/dist/definitions/errors/validatorErrors.d.ts +2 -1
- package/dist/definitions/help/fileConsumer.d.ts +3 -3
- package/dist/definitions/help/fileContainer.d.ts +2 -3
- package/dist/definitions/help/fileContainer.spec.d.ts +1 -1
- package/dist/definitions/index.d.ts +1 -1
- package/dist/definitions/interfaces.d.ts +3 -3
- package/dist/definitions/permissionSetBuilder.d.ts +34 -0
- package/dist/definitions/permissionSetBuilder.spec.d.ts +1 -0
- package/dist/definitions/securityIdentityBuilder.d.ts +33 -24
- package/dist/definitions/securityIdentityBuilder.spec.d.ts +1 -0
- package/dist/definitions/source/catalog.d.ts +2 -1
- package/dist/definitions/source/documentUploader.d.ts +3 -3
- package/dist/definitions/source/push.d.ts +8 -37
- package/dist/definitions/source/securityIdenty.d.ts +1 -0
- package/dist/definitions/uploadStrategy/fileContainerStrategy.d.ts +1 -1
- package/dist/definitions/uploadStrategy/strategy.d.ts +2 -2
- package/dist/definitions/uploadStrategy/streamChunkStrategy.d.ts +1 -1
- package/dist/definitions/validation/caseInsensitiveDocument.d.ts +10 -1
- package/dist/definitions/validation/knownKey.d.ts +2 -1
- package/dist/definitions/validation/parsePermissions.d.ts +5 -0
- package/dist/definitions/validation/parsePermissions.spec.d.ts +1 -0
- package/dist/documentBuilder.js +28 -46
- package/dist/documentBuilder.js.map +1 -1
- package/dist/documentBuilder.spec.js +55 -74
- package/dist/documentBuilder.spec.js.map +1 -1
- package/dist/errors/validatorErrors.js +4 -1
- package/dist/errors/validatorErrors.js.map +1 -1
- package/dist/help/fileConsumer.js +1 -1
- package/dist/help/fileConsumer.js.map +1 -1
- package/dist/help/fileConsumer.spec.js +2 -3
- package/dist/help/fileConsumer.spec.js.map +1 -1
- package/dist/help/fileContainer.js +41 -24
- package/dist/help/fileContainer.js.map +1 -1
- package/dist/help/fileContainer.spec.js +38 -33
- package/dist/help/fileContainer.spec.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/localtest.js +10 -8
- package/dist/localtest.js.map +1 -1
- package/dist/permissionSetBuilder.js +59 -0
- package/dist/permissionSetBuilder.js.map +1 -0
- package/dist/permissionSetBuilder.spec.js +69 -0
- package/dist/permissionSetBuilder.spec.js.map +1 -0
- package/dist/securityIdentityBuilder.js +34 -27
- package/dist/securityIdentityBuilder.js.map +1 -1
- package/dist/securityIdentityBuilder.spec.js +51 -0
- package/dist/securityIdentityBuilder.spec.js.map +1 -0
- package/dist/source/catalog.js +1 -2
- package/dist/source/catalog.js.map +1 -1
- package/dist/source/documentUploader.js +1 -1
- package/dist/source/documentUploader.js.map +1 -1
- package/dist/source/documentUploader.spec.js +5 -5
- package/dist/source/documentUploader.spec.js.map +1 -1
- package/dist/source/push.js +6 -47
- package/dist/source/push.js.map +1 -1
- package/dist/source/push.spec.js +3 -3
- package/dist/source/push.spec.js.map +1 -1
- package/dist/source/securityIdenty.js +1 -2
- package/dist/source/securityIdenty.js.map +1 -1
- package/dist/uploadStrategy/fileContainerStrategy.js +2 -2
- package/dist/uploadStrategy/fileContainerStrategy.js.map +1 -1
- package/dist/uploadStrategy/fileContainerStrategy.spec.js +2 -2
- package/dist/uploadStrategy/fileContainerStrategy.spec.js.map +1 -1
- package/dist/uploadStrategy/streamChunkStrategy.js +4 -4
- package/dist/uploadStrategy/streamChunkStrategy.js.map +1 -1
- package/dist/uploadStrategy/streamChunkStrategy.spec.js +8 -12
- package/dist/uploadStrategy/streamChunkStrategy.spec.js.map +1 -1
- package/dist/validation/caseInsensitiveDocument.js +21 -2
- package/dist/validation/caseInsensitiveDocument.js.map +1 -1
- package/dist/validation/knownKey.js +13 -4
- package/dist/validation/knownKey.js.map +1 -1
- package/dist/validation/parseFile.js +14 -60
- package/dist/validation/parseFile.js.map +1 -1
- package/dist/validation/parseFile.spec.js +42 -3
- package/dist/validation/parseFile.spec.js.map +1 -1
- package/dist/validation/parsePermissions.js +119 -0
- package/dist/validation/parsePermissions.js.map +1 -0
- package/dist/validation/parsePermissions.spec.js +87 -0
- package/dist/validation/parsePermissions.spec.js.map +1 -0
- package/dist/validation/requiredKeyValidator.js +1 -1
- package/dist/validation/requiredKeyValidator.js.map +1 -1
- package/package.json +18 -17
- package/dist/definitions/source/source.d.ts +0 -5
- package/dist/docs/.nojekyll +0 -1
- package/dist/docs/assets/highlight.css +0 -71
- package/dist/docs/assets/main.js +0 -58
- package/dist/docs/assets/search.js +0 -1
- package/dist/docs/assets/style.css +0 -1280
- package/dist/docs/classes/AnySecurityIdentityBuilder.html +0 -125
- package/dist/docs/classes/CatalogSource.html +0 -327
- package/dist/docs/classes/DocumentBuilder.html +0 -509
- package/dist/docs/classes/FieldAnalyser.html +0 -203
- package/dist/docs/classes/GroupSecurityIdentityBuilder.html +0 -128
- package/dist/docs/classes/PushSource.html +0 -465
- package/dist/docs/classes/UserSecurityIdentityBuilder.html +0 -128
- package/dist/docs/classes/VirtualGroupSecurityIdentityBuilder.html +0 -128
- package/dist/docs/classes/errors.FieldTypeInconsistencyError.html +0 -170
- package/dist/docs/classes/errors.InvalidDocument.html +0 -172
- package/dist/docs/classes/errors.InvalidPermanentId.html +0 -170
- package/dist/docs/classes/errors.NotAFileError.html +0 -170
- package/dist/docs/classes/errors.NotAJsonFileError.html +0 -170
- package/dist/docs/classes/errors.PrivilegeError.html +0 -170
- package/dist/docs/classes/errors.UnsupportedAttribute.html +0 -172
- package/dist/docs/classes/errors.UnsupportedFieldError.html +0 -199
- package/dist/docs/enums/PlatformEnvironment.html +0 -86
- package/dist/docs/enums/Region.html +0 -79
- package/dist/docs/enums/SourceVisibility.html +0 -79
- package/dist/docs/functions/parseAndGetDocumentBuilderFromJSONDocument.html +0 -86
- package/dist/docs/index.html +0 -121
- package/dist/docs/interfaces/BatchUpdateDocuments.html +0 -76
- package/dist/docs/interfaces/Document.html +0 -236
- package/dist/docs/interfaces/SecurityIdentity.html +0 -105
- package/dist/docs/interfaces/SecurityIdentityBuilder.html +0 -82
- package/dist/docs/interfaces/UploadBatchCallbackData.html +0 -100
- package/dist/docs/modules/errors.html +0 -68
- package/dist/docs/modules.html +0 -122
- package/dist/docs/types/BatchUpdateDocumentsFromFiles.html +0 -75
- package/dist/docs/types/CompressionType.html +0 -77
- package/dist/docs/types/FailedUploadCallback.html +0 -90
- package/dist/docs/types/Metadata.html +0 -75
- package/dist/docs/types/MetadataValue.html +0 -75
- package/dist/docs/types/PlatformUrlOptions.html +0 -82
- package/dist/docs/types/SecurityIdentityType.html +0 -75
- package/dist/docs/types/SuccessfulUploadCallback.html +0 -88
- package/dist/docs/types/Transformer.html +0 -88
- package/dist/docs/variables/BuiltInTransformers.html +0 -75
- package/dist/docs/variables/Source.html +0 -78
- package/dist/source/source.js +0 -9
- package/dist/source/source.js.map +0 -1
@@ -1,32 +1,49 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
4
|
-
const
|
5
|
-
const url_1 = require("url");
|
3
|
+
exports.uploadContentToFileContainer = void 0;
|
4
|
+
const node_url_1 = require("node:url");
|
6
5
|
const uploadContentToFileContainer = async (fileContainer, batch) => {
|
7
|
-
const uploadURL = new
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
const uploadURL = new node_url_1.URL(fileContainer.uploadUri);
|
7
|
+
let response;
|
8
|
+
const errors = [];
|
9
|
+
try {
|
10
|
+
response = await fetch(uploadURL.toString(), {
|
11
|
+
method: 'PUT',
|
12
|
+
body: JSON.stringify({
|
13
|
+
addOrUpdate: batch.addOrUpdate.map((docBuilder) => docBuilder.marshal()),
|
14
|
+
delete: batch.delete,
|
15
|
+
}),
|
16
|
+
headers: fileContainer.requiredHeaders,
|
17
|
+
});
|
18
|
+
}
|
19
|
+
catch (error) {
|
20
|
+
errors.push(error);
|
21
|
+
}
|
22
|
+
finally {
|
23
|
+
if ((response === null || response === void 0 ? void 0 : response.ok) === false) {
|
24
|
+
if (isMaxBodyLengthExceededError(response)) {
|
25
|
+
addMaxBodyLengthError(errors, response);
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
addGenericFetchError(errors, response);
|
29
|
+
}
|
17
30
|
}
|
18
|
-
|
19
|
-
|
31
|
+
}
|
32
|
+
if (errors.length > 0) {
|
33
|
+
throw new AggregateError(errors);
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
return response;
|
37
|
+
}
|
20
38
|
};
|
21
39
|
exports.uploadContentToFileContainer = uploadContentToFileContainer;
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
};
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
return (err === null || err === void 0 ? void 0 : err.code) === 'ERR_FR_MAX_BODY_LENGTH_EXCEEDED';
|
40
|
+
function addGenericFetchError(errors, response) {
|
41
|
+
errors.push(new Error('Request failed', { cause: response }));
|
42
|
+
}
|
43
|
+
function addMaxBodyLengthError(errors, response) {
|
44
|
+
errors.push(new Error('File container size limit exceeded.\nSee <https://docs.coveo.com/en/63/index-content/push-api-limits#request-size-limits>.', { cause: response }));
|
45
|
+
}
|
46
|
+
function isMaxBodyLengthExceededError(response) {
|
47
|
+
return (response === null || response === void 0 ? void 0 : response.status) === 413;
|
31
48
|
}
|
32
49
|
//# sourceMappingURL=fileContainer.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fileContainer.js","sourceRoot":"","sources":["../../src/help/fileContainer.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"fileContainer.js","sourceRoot":"","sources":["../../src/help/fileContainer.ts"],"names":[],"mappings":";;;AACA,uCAA6B;AAStB,MAAM,4BAA4B,GAAG,KAAK,EAC/C,aAAoC,EACpC,KAA2B,EAC3B,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,cAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,QAA8B,CAAC;IACnC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI;QACF,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAChD,UAAU,CAAC,OAAO,EAAE,CACrB;gBACD,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;YACF,OAAO,EAAE,aAAa,CAAC,eAAe;SACvC,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;YAAS;QACR,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,MAAK,KAAK,EAAE;YAC1B,IAAI,4BAA4B,CAAC,QAAQ,CAAC,EAAE;gBAC1C,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aACzC;iBAAM;gBACL,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aACxC;SACF;KACF;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;KAClC;SAAM;QACL,OAAO,QAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAnCW,QAAA,4BAA4B,gCAmCvC;AAEF,SAAS,oBAAoB,CAC3B,MAAiB,EACjB,QAA8B;IAE9B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAiB,EACjB,QAA8B;IAE9B,MAAM,CAAC,IAAI,CACT,IAAI,KAAK,CACP,4HAA4H,EAC5H,EAAC,KAAK,EAAE,QAAQ,EAAC,CAClB,CACF,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,QAA8B;IAClE,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,GAAG,CAAC;AAClC,CAAC"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
jest.mock('
|
5
|
-
|
6
|
-
})
|
3
|
+
require("fetch-undici-polyfill");
|
4
|
+
jest.mock('fetch-undici-polyfill', () => {
|
5
|
+
Object.assign(global, { fetch: jest.fn() });
|
6
|
+
});
|
7
7
|
const __1 = require("..");
|
8
8
|
const fileContainer_1 = require("./fileContainer");
|
9
9
|
describe('#uploadContentToFileContainer', () => {
|
10
|
+
const fetchMocked = fetch;
|
10
11
|
const fileContainerResponse = {
|
11
12
|
uploadUri: 'https://fake.upload.url',
|
12
13
|
fileId: 'file_id',
|
@@ -16,51 +17,55 @@ describe('#uploadContentToFileContainer', () => {
|
|
16
17
|
addOrUpdate: [new __1.DocumentBuilder('http://some.url', 'Some document')],
|
17
18
|
delete: [],
|
18
19
|
};
|
19
|
-
const
|
20
|
-
|
20
|
+
const doMockFetch = () => {
|
21
|
+
fetchMocked.mockImplementation(() => Promise.resolve());
|
21
22
|
};
|
22
23
|
beforeEach(() => {
|
23
|
-
|
24
|
+
doMockFetch();
|
24
25
|
});
|
25
26
|
it('should perform an PUT request with the right params', async () => {
|
26
27
|
await (0, fileContainer_1.uploadContentToFileContainer)(fileContainerResponse, batch);
|
27
|
-
expect(
|
28
|
-
|
29
|
-
expect.objectContaining({
|
30
|
-
documentId: 'http://some.url',
|
31
|
-
}),
|
32
|
-
]),
|
33
|
-
delete: expect.arrayContaining([]),
|
34
|
-
}), {
|
35
|
-
headers: {
|
36
|
-
foo: 'bar',
|
37
|
-
},
|
38
|
-
maxBodyLength: 256e6,
|
39
|
-
});
|
28
|
+
expect(fetchMocked).toBeCalled();
|
29
|
+
expect(fetchMocked.mock.lastCall).toMatchSnapshot();
|
40
30
|
});
|
41
|
-
describe('when
|
31
|
+
describe('when the server respond with 413', () => {
|
42
32
|
beforeEach(() => {
|
43
|
-
|
33
|
+
fetchMocked.mockImplementationOnce(() => Promise.resolve({
|
34
|
+
ok: false,
|
35
|
+
status: 413,
|
36
|
+
}));
|
44
37
|
});
|
45
38
|
it('should give some info on how to fix it', async () => {
|
46
|
-
|
39
|
+
try {
|
40
|
+
await (0, fileContainer_1.uploadContentToFileContainer)(fileContainerResponse, batch);
|
41
|
+
}
|
42
|
+
catch (error) {
|
43
|
+
expect(error).toBeInstanceOf(AggregateError);
|
44
|
+
expect(error.errors).toMatchSnapshot(`
|
45
|
+
[
|
46
|
+
[Error: File container size limit exceeded.
|
47
|
+
See <https://docs.coveo.com/en/63/index-content/push-api-limits#request-size-limits>.],
|
48
|
+
]
|
49
|
+
`);
|
50
|
+
}
|
51
|
+
expect.assertions(2);
|
47
52
|
});
|
48
53
|
});
|
49
54
|
describe('when anything else than MaxBodyLengthExceededError is thrown', () => {
|
50
55
|
const thrownError = new Error();
|
51
56
|
beforeEach(() => {
|
52
|
-
|
57
|
+
fetchMocked.mockImplementationOnce(() => Promise.reject(thrownError));
|
53
58
|
});
|
54
|
-
it('should
|
55
|
-
|
59
|
+
it('should bubble up the error', async () => {
|
60
|
+
try {
|
61
|
+
await (0, fileContainer_1.uploadContentToFileContainer)(fileContainerResponse, batch);
|
62
|
+
}
|
63
|
+
catch (error) {
|
64
|
+
expect(error).toBeInstanceOf(AggregateError);
|
65
|
+
expect(error.errors).toContain(thrownError);
|
66
|
+
}
|
67
|
+
expect.assertions(2);
|
56
68
|
});
|
57
69
|
});
|
58
70
|
});
|
59
|
-
class FakeMaxBodyLengthExceededError extends Error {
|
60
|
-
constructor() {
|
61
|
-
super(...arguments);
|
62
|
-
this.code = 'ERR_FR_MAX_BODY_LENGTH_EXCEEDED';
|
63
|
-
this.message = 'some initial message';
|
64
|
-
}
|
65
|
-
}
|
66
71
|
//# sourceMappingURL=fileContainer.spec.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fileContainer.spec.js","sourceRoot":"","sources":["../../src/help/fileContainer.spec.ts"],"names":[],"mappings":";;AAAA,
|
1
|
+
{"version":3,"file":"fileContainer.spec.js","sourceRoot":"","sources":["../../src/help/fileContainer.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -14,12 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.parseAndGetDocumentBuilderFromJSONDocument = exports.SourceVisibility = exports.Region = exports.PlatformEnvironment = exports.DocumentBuilder = exports.FieldAnalyser = exports.CatalogSource = exports.PushSource = exports.
|
17
|
+
exports.parseAndGetDocumentBuilderFromJSONDocument = exports.PermissionSetBuilder = exports.SourceVisibility = exports.Region = exports.PlatformEnvironment = exports.DocumentBuilder = exports.FieldAnalyser = exports.CatalogSource = exports.PushSource = exports.errors = void 0;
|
18
18
|
__exportStar(require("./document"), exports);
|
19
19
|
__exportStar(require("./validation/transformers/transformer"), exports);
|
20
20
|
exports.errors = require("./errors");
|
21
|
-
var source_1 = require("./source/source");
|
22
|
-
Object.defineProperty(exports, "Source", { enumerable: true, get: function () { return source_1.Source; } });
|
23
21
|
var push_1 = require("./source/push");
|
24
22
|
Object.defineProperty(exports, "PushSource", { enumerable: true, get: function () { return push_1.PushSource; } });
|
25
23
|
var catalog_1 = require("./source/catalog");
|
@@ -34,6 +32,8 @@ Object.defineProperty(exports, "PlatformEnvironment", { enumerable: true, get: f
|
|
34
32
|
Object.defineProperty(exports, "Region", { enumerable: true, get: function () { return environment_1.Region; } });
|
35
33
|
var platform_client_1 = require("@coveo/platform-client");
|
36
34
|
Object.defineProperty(exports, "SourceVisibility", { enumerable: true, get: function () { return platform_client_1.SourceVisibility; } });
|
35
|
+
var permissionSetBuilder_1 = require("./permissionSetBuilder");
|
36
|
+
Object.defineProperty(exports, "PermissionSetBuilder", { enumerable: true, get: function () { return permissionSetBuilder_1.PermissionSetBuilder; } });
|
37
37
|
var parseFile_1 = require("./validation/parseFile");
|
38
38
|
Object.defineProperty(exports, "parseAndGetDocumentBuilderFromJSONDocument", { enumerable: true, get: function () { return parseFile_1.parseAndGetDocumentBuilderFromJSONDocument; } });
|
39
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,wEAAsD;AACtD,qCAAmC;AACnC,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,wEAAsD;AACtD,qCAAmC;AACnC,sCAAyC;AAAjC,kGAAA,UAAU,OAAA;AAClB,4CAA+C;AAAvC,wGAAA,aAAa,OAAA;AAUrB,+DAA4D;AAApD,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,4DAA0C;AAC1C,6CAA8E;AAAtE,kHAAA,mBAAmB,OAAA;AAAE,qGAAA,MAAM,OAAA;AACnC,0DAAwD;AAAhD,mHAAA,gBAAgB,OAAA;AACxB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,oDAAkF;AAA1E,uIAAA,0CAA0C,OAAA"}
|
package/dist/localtest.js
CHANGED
@@ -5,12 +5,19 @@ require("dotenv/config");
|
|
5
5
|
const documentBuilder_1 = require("./documentBuilder");
|
6
6
|
const securityIdentityBuilder_1 = require("./securityIdentityBuilder");
|
7
7
|
const push_1 = require("./source/push");
|
8
|
+
const permissionSetBuilder_1 = require("./permissionSetBuilder");
|
8
9
|
const API_KEY = process.env.API_KEY;
|
9
10
|
const ORG_ID = process.env.ORG_ID;
|
10
11
|
const SOURCE_ID = process.env.SOURCE_ID;
|
11
12
|
async function main() {
|
12
13
|
const source = new push_1.PushSource(API_KEY, ORG_ID);
|
13
14
|
await source.setSourceStatus(SOURCE_ID, 'REFRESH');
|
15
|
+
const allowedPermissionSet = new permissionSetBuilder_1.PermissionSetBuilder(false)
|
16
|
+
.withAllowedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder('olamothe@coveo.com'))
|
17
|
+
.withDeniedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder([
|
18
|
+
'ylakhdar@coveo.com',
|
19
|
+
'lbompart@coveo.com',
|
20
|
+
]));
|
14
21
|
const docBuilder = new documentBuilder_1.DocumentBuilder('https://perdu.com', 'hello world title')
|
15
22
|
.withAuthor('anonymous@coveo.com')
|
16
23
|
.withClickableUri('https://perdu.com/click')
|
@@ -18,11 +25,7 @@ async function main() {
|
|
18
25
|
.withMetadataValue('foo', 'bar')
|
19
26
|
.withDate('2000/01/01')
|
20
27
|
.withFileExtension('.html')
|
21
|
-
.
|
22
|
-
.withDeniedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder([
|
23
|
-
'ylakhdar@coveo.com',
|
24
|
-
'lbompart@coveo.com',
|
25
|
-
]));
|
28
|
+
.withPermissionSet(allowedPermissionSet);
|
26
29
|
const result = await source.addOrUpdateDocument(SOURCE_ID, docBuilder);
|
27
30
|
console.log('STATUS CREATE', result.status);
|
28
31
|
const resultDelete = await source.deleteDocument(SOURCE_ID, 'https://does.not.exists.com');
|
@@ -35,12 +38,11 @@ async function main() {
|
|
35
38
|
addOrUpdate: [],
|
36
39
|
delete: [],
|
37
40
|
};
|
41
|
+
const permissionSet = new permissionSetBuilder_1.PermissionSetBuilder(false).withAllowedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder('olamothe@coveo.com'));
|
38
42
|
for (let i = 0; i < 10; i++) {
|
39
43
|
const docID = `https://perdu.com/${i}`;
|
40
44
|
if (i < 8) {
|
41
|
-
batch.addOrUpdate.push(new documentBuilder_1.DocumentBuilder(docID, `Doc number ${i}`)
|
42
|
-
.withAllowAnonymousUsers(false)
|
43
|
-
.withAllowedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder('olamothe@coveo.com')));
|
45
|
+
batch.addOrUpdate.push(new documentBuilder_1.DocumentBuilder(docID, `Doc number ${i}`).withPermissionSet(permissionSet));
|
44
46
|
}
|
45
47
|
else {
|
46
48
|
batch.delete.push({ documentId: docID, deleteChildren: true });
|
package/dist/localtest.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"localtest.js","sourceRoot":"","sources":["../src/localtest.ts"],"names":[],"mappings":";;AAAA,sDAAsD;AACtD,yBAAuB;AACvB,uDAAkD;AAClD,uEAAsE;AAEtE,wCAAyC;AACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAiB,CAAC;AAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAgB,CAAC;AAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAmB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,iBAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,iCAAe,CACpC,mBAAmB,EACnB,mBAAmB,CACpB;SACE,UAAU,CAAC,qBAAqB,CAAC;SACjC,gBAAgB,CAAC,yBAAyB,CAAC;SAC3C,QAAQ,CAAC,6BAA6B,CAAC;SACvC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;SAC/B,QAAQ,CAAC,YAAY,CAAC;SACtB,iBAAiB,CAAC,OAAO,CAAC;SAC1B,
|
1
|
+
{"version":3,"file":"localtest.js","sourceRoot":"","sources":["../src/localtest.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PermissionSetBuilder = void 0;
|
4
|
+
class PermissionSetBuilder {
|
5
|
+
/**
|
6
|
+
* Builds a Permission Set Model
|
7
|
+
*
|
8
|
+
* See[Simple Permission Model Definition](https://docs.coveo.com/en/107/index-content/simple-permission-model-definition-examples)
|
9
|
+
* @param {boolean} allowAnonymous Whether to allow anonymous users in this permission set
|
10
|
+
*/
|
11
|
+
constructor(allowAnonymous) {
|
12
|
+
this.permissionSet = {
|
13
|
+
allowAnonymous,
|
14
|
+
allowedPermissions: [],
|
15
|
+
deniedPermissions: [],
|
16
|
+
};
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Set allowed identities on the document. See {@link PermissionSet}
|
20
|
+
*
|
21
|
+
* When the {@link PermissionsSetBuilder} class is instanciated with `allowAnonymous` property set to `true`, calling this method is redundant, and can therefore be omitted.
|
22
|
+
* @param securityIdentityBuilder The allowed security identities to add to the permission set
|
23
|
+
* @returns
|
24
|
+
*/
|
25
|
+
withAllowedPermissions(securityIdentityBuilder) {
|
26
|
+
this.setPermission(securityIdentityBuilder, 'allowedPermissions');
|
27
|
+
return this;
|
28
|
+
}
|
29
|
+
/**
|
30
|
+
* Set denied identities on the document. See {@link PermissionSet}
|
31
|
+
*
|
32
|
+
* @param securityIdentityBuilder The denied security identities to add to the permission set
|
33
|
+
* @returns
|
34
|
+
*/
|
35
|
+
withDeniedPermissions(securityIdentityBuilder) {
|
36
|
+
this.setPermission(securityIdentityBuilder, 'deniedPermissions');
|
37
|
+
return this;
|
38
|
+
}
|
39
|
+
/**
|
40
|
+
* Build and return the security identity or identities.
|
41
|
+
* @returns
|
42
|
+
*/
|
43
|
+
build() {
|
44
|
+
return this.permissionSet;
|
45
|
+
}
|
46
|
+
setPermission(securityIdentityBuilder, permissionSection) {
|
47
|
+
var _a, _b;
|
48
|
+
const identities = securityIdentityBuilder.build();
|
49
|
+
if (Array.isArray(identities)) {
|
50
|
+
this.permissionSet[permissionSection] =
|
51
|
+
(_a = this.permissionSet[permissionSection]) === null || _a === void 0 ? void 0 : _a.concat(identities);
|
52
|
+
}
|
53
|
+
else {
|
54
|
+
(_b = this.permissionSet[permissionSection]) === null || _b === void 0 ? void 0 : _b.push(identities);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
exports.PermissionSetBuilder = PermissionSetBuilder;
|
59
|
+
//# sourceMappingURL=permissionSetBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"permissionSetBuilder.js","sourceRoot":"","sources":["../src/permissionSetBuilder.ts"],"names":[],"mappings":";;;AAQA,MAAa,oBAAoB;IAG/B;;;;;OAKG;IACH,YAAmB,cAAuB;QACxC,IAAI,CAAC,aAAa,GAAG;YACnB,cAAc;YACd,kBAAkB,EAAE,EAAE;YACtB,iBAAiB,EAAE,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,sBAAsB,CAC3B,uBAAgD;QAEhD,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAC1B,uBAAgD;QAEhD,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,aAAa,CACnB,uBAAgD,EAChD,iBAAoC;;QAEpC,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;gBACnC,MAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,0CAAE,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7D;aAAM;YACL,MAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,0CAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACzD;IACH,CAAC;CACF;AAhED,oDAgEC"}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const permissionSetBuilder_1 = require("./permissionSetBuilder");
|
4
|
+
const securityIdentityBuilder_1 = require("./securityIdentityBuilder");
|
5
|
+
describe('PermissionSetBuilder', () => {
|
6
|
+
const bobUserIdentity = new securityIdentityBuilder_1.UserSecurityIdentityBuilder('bob@foo.com');
|
7
|
+
const multipleUsersIdentity = new securityIdentityBuilder_1.UserSecurityIdentityBuilder([
|
8
|
+
'max@foo.com',
|
9
|
+
'sue@foo.com',
|
10
|
+
]);
|
11
|
+
const groupIdentity = new securityIdentityBuilder_1.GroupSecurityIdentityBuilder('my_group');
|
12
|
+
const virtualGroupsIdentity = new securityIdentityBuilder_1.VirtualGroupSecurityIdentityBuilder([
|
13
|
+
'SampleGroup',
|
14
|
+
'SpecialGroup',
|
15
|
+
]);
|
16
|
+
let restrictedPermissionSet;
|
17
|
+
let openedPermissionSet;
|
18
|
+
beforeEach(() => {
|
19
|
+
restrictedPermissionSet = new permissionSetBuilder_1.PermissionSetBuilder(false);
|
20
|
+
openedPermissionSet = new permissionSetBuilder_1.PermissionSetBuilder(true);
|
21
|
+
});
|
22
|
+
it('should marshal allowAnonymous to false', () => {
|
23
|
+
expect(restrictedPermissionSet.build()).toEqual(expect.objectContaining({ allowAnonymous: false }));
|
24
|
+
});
|
25
|
+
it('should marshal allowAnonymous to true', () => {
|
26
|
+
expect(openedPermissionSet.build()).toEqual(expect.objectContaining({ allowAnonymous: true }));
|
27
|
+
});
|
28
|
+
it('should marshal allowedPermissions', () => {
|
29
|
+
restrictedPermissionSet.withAllowedPermissions(bobUserIdentity);
|
30
|
+
expect(restrictedPermissionSet.build()).toMatchObject({
|
31
|
+
allowedPermissions: expect.arrayContaining([
|
32
|
+
expect.objectContaining({ identity: 'bob@foo.com' }),
|
33
|
+
]),
|
34
|
+
});
|
35
|
+
});
|
36
|
+
it('should marshal allowedPermissions in multiple #withAllowedPermissions', () => {
|
37
|
+
restrictedPermissionSet
|
38
|
+
.withAllowedPermissions(multipleUsersIdentity)
|
39
|
+
.withAllowedPermissions(bobUserIdentity)
|
40
|
+
.withAllowedPermissions(virtualGroupsIdentity)
|
41
|
+
.withAllowedPermissions(groupIdentity);
|
42
|
+
expect(restrictedPermissionSet.build()).toMatchSnapshot();
|
43
|
+
});
|
44
|
+
it('should marshal deniedPermissions', () => {
|
45
|
+
restrictedPermissionSet.withDeniedPermissions(new securityIdentityBuilder_1.UserSecurityIdentityBuilder('bob@foo.com'));
|
46
|
+
expect(restrictedPermissionSet.build()).toMatchObject({
|
47
|
+
deniedPermissions: expect.arrayContaining([
|
48
|
+
expect.objectContaining({ identity: 'bob@foo.com' }),
|
49
|
+
]),
|
50
|
+
});
|
51
|
+
});
|
52
|
+
it('should marshal deniedPermissions in multiple #withDeniedPermissions', () => {
|
53
|
+
restrictedPermissionSet
|
54
|
+
.withDeniedPermissions(multipleUsersIdentity)
|
55
|
+
.withDeniedPermissions(bobUserIdentity)
|
56
|
+
.withDeniedPermissions(virtualGroupsIdentity)
|
57
|
+
.withDeniedPermissions(groupIdentity);
|
58
|
+
expect(restrictedPermissionSet.build()).toMatchSnapshot();
|
59
|
+
});
|
60
|
+
it('should marshal both allowed and denied permissions ', () => {
|
61
|
+
restrictedPermissionSet
|
62
|
+
.withDeniedPermissions(multipleUsersIdentity)
|
63
|
+
.withDeniedPermissions(bobUserIdentity)
|
64
|
+
.withAllowedPermissions(virtualGroupsIdentity)
|
65
|
+
.withAllowedPermissions(groupIdentity);
|
66
|
+
expect(restrictedPermissionSet.build()).toMatchSnapshot();
|
67
|
+
});
|
68
|
+
});
|
69
|
+
//# sourceMappingURL=permissionSetBuilder.spec.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"permissionSetBuilder.spec.js","sourceRoot":"","sources":["../src/permissionSetBuilder.spec.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAC5D,uEAImC;AAEnC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,MAAM,eAAe,GAAG,IAAI,qDAA2B,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,qBAAqB,GAAG,IAAI,qDAA2B,CAAC;QAC5D,aAAa;QACb,aAAa;KACd,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,sDAA4B,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,IAAI,6DAAmC,CAAC;QACpE,aAAa;QACb,cAAc;KACf,CAAC,CAAC;IACH,IAAI,uBAA6C,CAAC;IAClD,IAAI,mBAAyC,CAAC;IAE9C,UAAU,CAAC,GAAG,EAAE;QACd,uBAAuB,GAAG,IAAI,2CAAoB,CAAC,KAAK,CAAC,CAAC;QAC1D,mBAAmB,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAC7C,MAAM,CAAC,gBAAgB,CAAC,EAAC,cAAc,EAAE,KAAK,EAAC,CAAC,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CACzC,MAAM,CAAC,gBAAgB,CAAC,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC,CAChD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,uBAAuB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAEhE,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;YACpD,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC;gBACzC,MAAM,CAAC,gBAAgB,CAAC,EAAC,QAAQ,EAAE,aAAa,EAAC,CAAC;aACnD,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,uBAAuB;aACpB,sBAAsB,CAAC,qBAAqB,CAAC;aAC7C,sBAAsB,CAAC,eAAe,CAAC;aACvC,sBAAsB,CAAC,qBAAqB,CAAC;aAC7C,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAEzC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,uBAAuB,CAAC,qBAAqB,CAC3C,IAAI,qDAA2B,CAAC,aAAa,CAAC,CAC/C,CAAC;QAEF,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;YACpD,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC;gBACxC,MAAM,CAAC,gBAAgB,CAAC,EAAC,QAAQ,EAAE,aAAa,EAAC,CAAC;aACnD,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,uBAAuB;aACpB,qBAAqB,CAAC,qBAAqB,CAAC;aAC5C,qBAAqB,CAAC,eAAe,CAAC;aACtC,qBAAqB,CAAC,qBAAqB,CAAC;aAC5C,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAExC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,uBAAuB;aACpB,qBAAqB,CAAC,qBAAqB,CAAC;aAC5C,qBAAqB,CAAC,eAAe,CAAC;aACtC,sBAAsB,CAAC,qBAAqB,CAAC;aAC7C,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAEzC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.VirtualGroupSecurityIdentityBuilder = exports.GroupSecurityIdentityBuilder = exports.UserSecurityIdentityBuilder = exports.AnySecurityIdentityBuilder = void 0;
|
4
|
+
const platform_client_1 = require("@coveo/platform-client");
|
4
5
|
/**
|
5
|
-
* Build any {@link
|
6
|
+
* Build any {@link PermissionIdentityType}.
|
6
7
|
*
|
7
8
|
* Instead of using this class directly, use one of:
|
8
9
|
* - {@link UserSecurityIdentityBuilder}
|
@@ -11,17 +12,23 @@ exports.VirtualGroupSecurityIdentityBuilder = exports.GroupSecurityIdentityBuild
|
|
11
12
|
*/
|
12
13
|
class AnySecurityIdentityBuilder {
|
13
14
|
/**
|
15
|
+
* @param identityType The type of the identity.
|
16
|
+
* Valid values:
|
17
|
+
* - `UNKNOWN`
|
18
|
+
* - `USER` : Defines a single user.
|
19
|
+
* - `GROUP` : Defines an existing group of identities within the indexed system. Individual members of this group can be of any valid identity Type (USER, GROUP, or VIRTUAL_GROUP).
|
20
|
+
* - `VIRTUAL_GROUP` : Defines a group that doesn't exist within the indexed system. Mechanically, a `VIRTUAL_GROUP` is identical to a `GROUP`.
|
14
21
|
*
|
15
|
-
* @param
|
16
|
-
*
|
17
|
-
* @
|
22
|
+
* @param identity The name of the security identity.
|
23
|
+
* Examples:
|
24
|
+
* - `asmith@example.com`
|
25
|
+
* - `SampleTeam2`
|
26
|
+
*
|
27
|
+
* @param securityProvider The security identity provider through which the security identity is updated. Defaults to the first security identity provider associated with the target source.
|
18
28
|
*/
|
19
29
|
constructor(identityType, identity, securityProvider) {
|
20
|
-
this.securityIdentity = {
|
21
|
-
|
22
|
-
identity,
|
23
|
-
securityProvider,
|
24
|
-
};
|
30
|
+
this.securityIdentity = Object.assign({ identityType,
|
31
|
+
identity }, (securityProvider && { securityProvider }));
|
25
32
|
}
|
26
33
|
/**
|
27
34
|
* Build and return the security identity.
|
@@ -35,15 +42,15 @@ exports.AnySecurityIdentityBuilder = AnySecurityIdentityBuilder;
|
|
35
42
|
/**
|
36
43
|
* Build a security identity of type `USER`.
|
37
44
|
*
|
38
|
-
* Typically used in conjunction with {@link
|
45
|
+
* Typically used in conjunction with {@link PermissionSetBuilder.withAllowedPermissions} or {@link PermissionSetBuilder.withDeniedPermissions}.
|
39
46
|
*
|
40
|
-
* See {@link
|
47
|
+
* See {@link Permission}.
|
41
48
|
*/
|
42
49
|
class UserSecurityIdentityBuilder {
|
43
50
|
/**
|
44
51
|
* Pass either a single user, or an array of user to create multiple identities.
|
45
|
-
* @param user
|
46
|
-
* @param securityProvider
|
52
|
+
* @param {(string | string[])} user The user identity or identities
|
53
|
+
* @param {string} [securityProvider='Email Security Provider'] The security identity provider through which the security identity is updated. Defaults to the first security identity provider associated with the target source.
|
47
54
|
*/
|
48
55
|
constructor(user, securityProvider = 'Email Security Provider') {
|
49
56
|
this.user = user;
|
@@ -55,24 +62,24 @@ class UserSecurityIdentityBuilder {
|
|
55
62
|
*/
|
56
63
|
build() {
|
57
64
|
if (Array.isArray(this.user)) {
|
58
|
-
return this.user.map((u) => new AnySecurityIdentityBuilder(
|
65
|
+
return this.user.map((u) => new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.User, u, this.securityProvider).build());
|
59
66
|
}
|
60
|
-
return new AnySecurityIdentityBuilder(
|
67
|
+
return new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.User, this.user, this.securityProvider).build();
|
61
68
|
}
|
62
69
|
}
|
63
70
|
exports.UserSecurityIdentityBuilder = UserSecurityIdentityBuilder;
|
64
71
|
/**
|
65
72
|
* Build a security identity of type `GROUP`.
|
66
73
|
*
|
67
|
-
* Typically used in conjunction with {@link
|
74
|
+
* Typically used in conjunction with {@link PermissionSetBuilder.withAllowedPermissions} or {@link PermissionSetBuilder.withDeniedPermissions}.
|
68
75
|
*
|
69
|
-
* See {@link
|
76
|
+
* See {@link Permission}.
|
70
77
|
*/
|
71
78
|
class GroupSecurityIdentityBuilder {
|
72
79
|
/**
|
73
80
|
* Pass either a single `group`, or an array of `group` to create multiple identities.
|
74
|
-
* @param group
|
75
|
-
* @param securityProvider
|
81
|
+
* @param {(string | string[])} group
|
82
|
+
* @param {string} [securityProvider] The security identity provider through which the security identity is updated. Defaults to the first security identity provider associated with the target source.
|
76
83
|
*/
|
77
84
|
constructor(group, securityProvider) {
|
78
85
|
this.group = group;
|
@@ -84,24 +91,24 @@ class GroupSecurityIdentityBuilder {
|
|
84
91
|
*/
|
85
92
|
build() {
|
86
93
|
if (Array.isArray(this.group)) {
|
87
|
-
return this.group.map((g) => new AnySecurityIdentityBuilder(
|
94
|
+
return this.group.map((g) => new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.Group, g, this.securityProvider).build());
|
88
95
|
}
|
89
|
-
return new AnySecurityIdentityBuilder(
|
96
|
+
return new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.Group, this.group, this.securityProvider).build();
|
90
97
|
}
|
91
98
|
}
|
92
99
|
exports.GroupSecurityIdentityBuilder = GroupSecurityIdentityBuilder;
|
93
100
|
/**
|
94
101
|
* Build a security identity of type `VIRTUAL_GROUP`.
|
95
102
|
*
|
96
|
-
* Typically used in conjunction with {@link
|
103
|
+
* Typically used in conjunction with {@link PermissionSetBuilder.withAllowedPermissions} or {@link PermissionSetBuilder.withDeniedPermissions}.
|
97
104
|
*
|
98
|
-
* See {@link
|
105
|
+
* See {@link Permission}.
|
99
106
|
*/
|
100
107
|
class VirtualGroupSecurityIdentityBuilder {
|
101
108
|
/**
|
102
109
|
* Pass either a single `virtualGroup`, or an array of `virtualGroup` to create multiple identities.
|
103
|
-
* @param
|
104
|
-
* @param securityProvider
|
110
|
+
* @param {(string | string[])} virtualGroup
|
111
|
+
* @param {string} [securityProvider] The security identity provider through which the security identity is updated. Defaults to the first security identity provider associated with the target source.
|
105
112
|
*/
|
106
113
|
constructor(virtualGroup, securityProvider) {
|
107
114
|
this.virtualGroup = virtualGroup;
|
@@ -113,9 +120,9 @@ class VirtualGroupSecurityIdentityBuilder {
|
|
113
120
|
*/
|
114
121
|
build() {
|
115
122
|
if (Array.isArray(this.virtualGroup)) {
|
116
|
-
return this.virtualGroup.map((vg) => new AnySecurityIdentityBuilder(
|
123
|
+
return this.virtualGroup.map((vg) => new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.VirtualGroup, vg, this.securityProvider).build());
|
117
124
|
}
|
118
|
-
return new AnySecurityIdentityBuilder(
|
125
|
+
return new AnySecurityIdentityBuilder(platform_client_1.PermissionIdentityType.VirtualGroup, this.virtualGroup, this.securityProvider).build();
|
119
126
|
}
|
120
127
|
}
|
121
128
|
exports.VirtualGroupSecurityIdentityBuilder = VirtualGroupSecurityIdentityBuilder;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"securityIdentityBuilder.js","sourceRoot":"","sources":["../src/securityIdentityBuilder.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"securityIdentityBuilder.js","sourceRoot":"","sources":["../src/securityIdentityBuilder.ts"],"names":[],"mappings":";;;AAEA,4DAA0E;AAS1E;;;;;;;GAOG;AACH,MAAa,0BAA0B;IAErC;;;;;;;;;;;;;;OAcG;IACH,YACE,YAAoC,EACpC,QAAgB,EAChB,gBAAyB;QAEzB,IAAI,CAAC,gBAAgB,mBACnB,YAAY;YACZ,QAAQ,IACL,CAAC,gBAAgB,IAAI,EAAC,gBAAgB,EAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AApCD,gEAoCC;AAED;;;;;;GAMG;AACH,MAAa,2BAA2B;IACtC;;;;OAIG;IACH,YACU,IAAuB,EACvB,mBAA2B,yBAAyB;QADpD,SAAI,GAAJ,IAAI,CAAmB;QACvB,qBAAgB,GAAhB,gBAAgB,CAAoC;IAC3D,CAAC;IAEJ;;;OAGG;IACI,KAAK;QACV,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,IAAI,0BAA0B,CAC5B,wCAAsB,CAAC,IAAI,EAC3B,CAAC,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CACV,CAAC;SACH;QACD,OAAO,IAAI,0BAA0B,CACnC,wCAAsB,CAAC,IAAI,EAC3B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;CACF;AA/BD,kEA+BC;AAED;;;;;;GAMG;AACH,MAAa,4BAA4B;IACvC;;;;OAIG;IACH,YACU,KAAwB,EACxB,gBAAyB;QADzB,UAAK,GAAL,KAAK,CAAmB;QACxB,qBAAgB,GAAhB,gBAAgB,CAAS;IAChC,CAAC;IAEJ;;;OAGG;IACI,KAAK;QACV,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,IAAI,0BAA0B,CAC5B,wCAAsB,CAAC,KAAK,EAC5B,CAAC,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CACV,CAAC;SACH;QACD,OAAO,IAAI,0BAA0B,CACnC,wCAAsB,CAAC,KAAK,EAC5B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;CACF;AA/BD,oEA+BC;AACD;;;;;;GAMG;AACH,MAAa,mCAAmC;IAG9C;;;;OAIG;IACH,YACU,YAA+B,EAC/B,gBAAyB;QADzB,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,qBAAgB,GAAhB,gBAAgB,CAAS;IAChC,CAAC;IAEJ;;;OAGG;IACI,KAAK;QACV,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,IAAI,0BAA0B,CAC5B,wCAAsB,CAAC,YAAY,EACnC,EAAE,EACF,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CACV,CAAC;SACH;QACD,OAAO,IAAI,0BAA0B,CACnC,wCAAsB,CAAC,YAAY,EACnC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CACtB,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;CACF;AAjCD,kFAiCC"}
|