@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
|
@@ -8,6 +8,7 @@ const caseInsensitiveDocument_1 = require("./caseInsensitiveDocument");
|
|
|
8
8
|
const knownKey_1 = require("./knownKey");
|
|
9
9
|
const validatorErrors_1 = require("../errors/validatorErrors");
|
|
10
10
|
const requiredKeyValidator_1 = require("./requiredKeyValidator");
|
|
11
|
+
const parsePermissions_1 = require("./parsePermissions");
|
|
11
12
|
const parseAndGetDocumentBuilderFromJSONDocument = async (documentPath, options) => {
|
|
12
13
|
ensureFileIntegrity(documentPath);
|
|
13
14
|
const fileContent = safeJSONParse(documentPath);
|
|
@@ -46,12 +47,12 @@ const processDocument = (fileContent, documentPath, options) => {
|
|
|
46
47
|
const documentBuilder = validateRequiredKeysAndGetDocumentBuilder(caseInsensitiveDoc, documentPath);
|
|
47
48
|
try {
|
|
48
49
|
processKnownKeys(caseInsensitiveDoc, documentBuilder);
|
|
49
|
-
|
|
50
|
+
(0, parsePermissions_1.processPermissionList)(caseInsensitiveDoc, documentBuilder, documentPath);
|
|
50
51
|
processMetadata(caseInsensitiveDoc, documentBuilder, options);
|
|
51
52
|
}
|
|
52
53
|
catch (error) {
|
|
53
54
|
if (typeof error === 'string') {
|
|
54
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, error);
|
|
55
|
+
throw new validatorErrors_1.InvalidDocument(documentPath, caseInsensitiveDoc.originalDocument, error);
|
|
55
56
|
}
|
|
56
57
|
throw error;
|
|
57
58
|
}
|
|
@@ -60,76 +61,48 @@ const processDocument = (fileContent, documentPath, options) => {
|
|
|
60
61
|
const validateRequiredKeysAndGetDocumentBuilder = (caseInsensitiveDoc, documentPath) => {
|
|
61
62
|
const requiredDocumentId = new requiredKeyValidator_1.RequiredKeyValidator(['documentid', 'uri'], caseInsensitiveDoc, new bueno_1.StringValue({ required: true, emptyAllowed: false }));
|
|
62
63
|
if (!requiredDocumentId.isValid) {
|
|
63
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, requiredDocumentId.explanation);
|
|
64
|
+
throw new validatorErrors_1.InvalidDocument(documentPath, caseInsensitiveDoc.originalDocument, requiredDocumentId.explanation);
|
|
64
65
|
}
|
|
65
66
|
const requiredDocumentTitle = new requiredKeyValidator_1.RequiredKeyValidator('title', caseInsensitiveDoc, new bueno_1.StringValue({ required: true, emptyAllowed: false }));
|
|
66
67
|
if (!requiredDocumentTitle.isValid) {
|
|
67
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, requiredDocumentTitle.explanation);
|
|
68
|
+
throw new validatorErrors_1.InvalidDocument(documentPath, caseInsensitiveDoc.originalDocument, requiredDocumentTitle.explanation);
|
|
68
69
|
}
|
|
69
|
-
|
|
70
|
-
delete caseInsensitiveDoc.documentRecord['uri'];
|
|
71
|
-
delete caseInsensitiveDoc.documentRecord['title'];
|
|
70
|
+
caseInsensitiveDoc.remove('documentid', 'uri', 'title');
|
|
72
71
|
return new __1.DocumentBuilder(requiredDocumentId.value, requiredDocumentTitle.value);
|
|
73
72
|
};
|
|
74
73
|
const processKnownKeys = (caseInsensitiveDoc, documentBuilder) => {
|
|
75
74
|
new knownKey_1.KnownKeys('author', caseInsensitiveDoc).whenExists((author) => {
|
|
76
75
|
documentBuilder.withAuthor(author);
|
|
77
|
-
|
|
76
|
+
caseInsensitiveDoc.remove('author');
|
|
78
77
|
});
|
|
79
78
|
new knownKey_1.KnownKeys('clickableuri', caseInsensitiveDoc).whenExists((clickuri) => {
|
|
80
79
|
documentBuilder.withClickableUri(clickuri);
|
|
81
|
-
|
|
80
|
+
caseInsensitiveDoc.remove('clickableuri');
|
|
82
81
|
});
|
|
83
82
|
new knownKey_1.KnownKeys('data', caseInsensitiveDoc).whenExists((data) => {
|
|
84
83
|
documentBuilder.withData(data);
|
|
85
|
-
|
|
84
|
+
caseInsensitiveDoc.remove('data');
|
|
86
85
|
});
|
|
87
86
|
new knownKey_1.KnownKeys('date', caseInsensitiveDoc).whenExists((date) => {
|
|
88
87
|
documentBuilder.withDate(date);
|
|
89
|
-
|
|
88
|
+
caseInsensitiveDoc.remove('date');
|
|
90
89
|
});
|
|
91
90
|
new knownKey_1.KnownKeys('modifieddate', caseInsensitiveDoc).whenExists((modifiedDate) => {
|
|
92
91
|
documentBuilder.withModifiedDate(modifiedDate);
|
|
93
|
-
|
|
92
|
+
caseInsensitiveDoc.remove('modifieddate');
|
|
94
93
|
});
|
|
95
94
|
new knownKey_1.KnownKeys('fileextension', caseInsensitiveDoc).whenExists((fileExtension) => {
|
|
96
95
|
documentBuilder.withFileExtension(fileExtension);
|
|
97
|
-
|
|
96
|
+
caseInsensitiveDoc.remove('fileextension');
|
|
98
97
|
});
|
|
99
98
|
new knownKey_1.KnownKeys('permanentid', caseInsensitiveDoc).whenExists((permanentId) => {
|
|
100
99
|
documentBuilder.withPermanentId(permanentId);
|
|
101
|
-
|
|
102
|
-
});
|
|
103
|
-
};
|
|
104
|
-
const processSecurityIdentities = (caseInsensitiveDoc, documentBuilder, documentPath) => {
|
|
105
|
-
new knownKey_1.KnownKeys('permissions', caseInsensitiveDoc).whenExists((permissions) => {
|
|
106
|
-
var _a, _b;
|
|
107
|
-
const caseInsensitivePermissions = new caseInsensitiveDocument_1.CaseInsensitiveDocument(permissions);
|
|
108
|
-
const requiredAllowAnonymous = new requiredKeyValidator_1.RequiredKeyValidator('allowanonymous', caseInsensitivePermissions, new bueno_1.BooleanValue({ required: true }));
|
|
109
|
-
if (!requiredAllowAnonymous.isValid) {
|
|
110
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, requiredAllowAnonymous.explanation);
|
|
111
|
-
}
|
|
112
|
-
const requiredAllowedPermissions = new requiredKeyValidator_1.RequiredKeyValidator('allowedpermissions', caseInsensitivePermissions, getSecurityIdentitySchemaValidation());
|
|
113
|
-
if (!requiredAllowedPermissions.isValid) {
|
|
114
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, requiredAllowedPermissions.explanation);
|
|
115
|
-
}
|
|
116
|
-
const requiredDeniedPermissions = new requiredKeyValidator_1.RequiredKeyValidator('deniedpermissions', caseInsensitivePermissions, getSecurityIdentitySchemaValidation());
|
|
117
|
-
if (!requiredDeniedPermissions.isValid) {
|
|
118
|
-
throw new validatorErrors_1.InvalidDocument(documentPath, requiredDeniedPermissions.explanation);
|
|
119
|
-
}
|
|
120
|
-
documentBuilder.withAllowAnonymousUsers(permissions.allowAnonymous);
|
|
121
|
-
(_a = permissions === null || permissions === void 0 ? void 0 : permissions.allowedPermissions) === null || _a === void 0 ? void 0 : _a.forEach((p) => {
|
|
122
|
-
documentBuilder.withAllowedPermissions(new __1.AnySecurityIdentityBuilder(p.identityType, p.identity, p.securityProvider));
|
|
123
|
-
});
|
|
124
|
-
(_b = permissions === null || permissions === void 0 ? void 0 : permissions.deniedPermissions) === null || _b === void 0 ? void 0 : _b.forEach((p) => {
|
|
125
|
-
documentBuilder.withDeniedPermissions(new __1.AnySecurityIdentityBuilder(p.identityType, p.identity, p.securityProvider));
|
|
126
|
-
});
|
|
127
|
-
delete caseInsensitiveDoc.documentRecord['permissions'];
|
|
100
|
+
caseInsensitiveDoc.remove('permanentid');
|
|
128
101
|
});
|
|
129
102
|
};
|
|
130
103
|
const processMetadata = (caseInsensitiveDoc, documentBuilder, options) => {
|
|
131
104
|
const metadata = {};
|
|
132
|
-
Object.entries(caseInsensitiveDoc.
|
|
105
|
+
Object.entries(caseInsensitiveDoc.remainingRecord).forEach(([k, v]) => {
|
|
133
106
|
metadata[k] = v;
|
|
134
107
|
});
|
|
135
108
|
documentBuilder.withMetadata(metadata, options === null || options === void 0 ? void 0 : options.fieldNameTransformer);
|
|
@@ -145,23 +118,4 @@ const isFile = (p) => {
|
|
|
145
118
|
}
|
|
146
119
|
return (0, fs_1.lstatSync)(p).isFile();
|
|
147
120
|
};
|
|
148
|
-
const getSecurityIdentitySchemaValidation = () => {
|
|
149
|
-
return new bueno_1.ArrayValue({
|
|
150
|
-
required: true,
|
|
151
|
-
each: new bueno_1.RecordValue({
|
|
152
|
-
values: {
|
|
153
|
-
identity: new bueno_1.StringValue({ required: true, emptyAllowed: false }),
|
|
154
|
-
identityType: new bueno_1.StringValue({
|
|
155
|
-
constrainTo: ['UNKNOWN', 'USER', 'GROUP', 'VIRTUAL_GROUP'],
|
|
156
|
-
required: true,
|
|
157
|
-
emptyAllowed: false,
|
|
158
|
-
}),
|
|
159
|
-
securityProvider: new bueno_1.StringValue({
|
|
160
|
-
emptyAllowed: false,
|
|
161
|
-
required: true,
|
|
162
|
-
}),
|
|
163
|
-
},
|
|
164
|
-
}),
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
121
|
//# sourceMappingURL=parseFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseFile.js","sourceRoot":"","sources":["../../src/validation/parseFile.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"parseFile.js","sourceRoot":"","sources":["../../src/validation/parseFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,14 @@ const path_1 = require("path");
|
|
|
4
4
|
const process_1 = require("process");
|
|
5
5
|
const parseFile_1 = require("./parseFile");
|
|
6
6
|
const validatorErrors_1 = require("../errors/validatorErrors");
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const stripFilePathFromSnapshot = () => {
|
|
9
|
+
const fileJsonFileErrorRegex = new RegExp(/^.*?(\w+\.json)(?= is not a valid JSON)/m);
|
|
10
|
+
expect.addSnapshotSerializer({
|
|
11
|
+
test: (val) => Boolean(val.match(fileJsonFileErrorRegex)),
|
|
12
|
+
print: (val) => `${val}`.replace(fileJsonFileErrorRegex, '$1'),
|
|
13
|
+
});
|
|
14
|
+
};
|
|
7
15
|
describe('parseFile', () => {
|
|
8
16
|
const pathToStub = (0, path_1.join)((0, process_1.cwd)(), 'src', '__stub__');
|
|
9
17
|
const parse = (file) => () => (0, parseFile_1.parseAndGetDocumentBuilderFromJSONDocument)(file);
|
|
@@ -40,15 +48,46 @@ describe('parseFile', () => {
|
|
|
40
48
|
{
|
|
41
49
|
title: 'should fail on identityType with an invalid value',
|
|
42
50
|
fileName: 'identityTypeInvalidValue.json',
|
|
43
|
-
error: 'allowedpermissions: value
|
|
51
|
+
error: 'allowedpermissions: value did not match provided regex /Unknown|User|Group|VirtualGroup/i',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: 'should fail on permission not being an array',
|
|
55
|
+
fileName: 'notAPermissionArray.json',
|
|
56
|
+
error: 'permissions: value is not an array',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: 'should fail on permission not being an array',
|
|
60
|
+
fileName: 'notAPermissionArray.json',
|
|
61
|
+
error: 'permissions: value is not an array',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: 'should fail on permission not being an array',
|
|
65
|
+
fileName: 'notAPermissionArray.json',
|
|
66
|
+
error: 'permissions: value is not an array',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: 'should fail on permission not being an array',
|
|
70
|
+
fileName: 'notAPermissionArray.json',
|
|
71
|
+
error: 'permissions: value is not an array',
|
|
44
72
|
},
|
|
45
73
|
])('$title', async ({ fileName, error }) => {
|
|
46
74
|
const file = (0, path_1.join)(pathToStub, 'jsondocuments', fileName);
|
|
47
|
-
|
|
75
|
+
const fileContent = (0, fs_1.readFileSync)(file).toString();
|
|
76
|
+
await expect(parse(file)).rejects.toThrow(new validatorErrors_1.InvalidDocument(file, JSON.parse(fileContent), `Document contains an invalid value for ${error}`));
|
|
77
|
+
});
|
|
78
|
+
it('should not throw if allowedPermissions or deniedPermissions are omitted', async () => {
|
|
79
|
+
const file = (0, path_1.join)(pathToStub, 'jsondocuments', 'limitedPermissionSet.json');
|
|
80
|
+
await expect((0, parseFile_1.parseAndGetDocumentBuilderFromJSONDocument)(file)).resolves.not.toThrow();
|
|
48
81
|
});
|
|
49
82
|
it('should fail on reserved keyword', async () => {
|
|
50
83
|
const file = (0, path_1.join)(pathToStub, 'jsondocuments', 'reservedKeyword.json');
|
|
51
|
-
|
|
84
|
+
const fileContent = (0, fs_1.readFileSync)(file).toString();
|
|
85
|
+
await expect(parse(file)).rejects.toThrow(new validatorErrors_1.InvalidDocument(file, JSON.parse(fileContent), 'Cannot use parentid as a metadata key: It is a reserved key name. See https://docs.coveo.com/en/78/index-content/push-api-reference#json-document-reserved-key-names'));
|
|
86
|
+
});
|
|
87
|
+
it('should fail on reserved keyword', async () => {
|
|
88
|
+
const file = (0, path_1.join)(pathToStub, 'jsondocuments', 'brokenBatch.json');
|
|
89
|
+
stripFilePathFromSnapshot();
|
|
90
|
+
await expect(parse(file)).rejects.toThrowErrorMatchingSnapshot();
|
|
52
91
|
});
|
|
53
92
|
it('should fail on unsupported metadata key', async () => {
|
|
54
93
|
const file = (0, path_1.join)(pathToStub, 'jsondocuments', 'invalidFields.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseFile.spec.js","sourceRoot":"","sources":["../../src/validation/parseFile.spec.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAC1B,qCAA4B;AAC5B,2CAAuE;AACvE,+DAA0D;
|
|
1
|
+
{"version":3,"file":"parseFile.spec.js","sourceRoot":"","sources":["../../src/validation/parseFile.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processPermissionList = void 0;
|
|
4
|
+
const bueno_1 = require("@coveo/bueno");
|
|
5
|
+
const securityIdentityBuilder_1 = require("../securityIdentityBuilder");
|
|
6
|
+
const caseInsensitiveDocument_1 = require("./caseInsensitiveDocument");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const knownKey_1 = require("./knownKey");
|
|
9
|
+
const permissionSetBuilder_1 = require("../permissionSetBuilder");
|
|
10
|
+
const requiredKeyValidator_1 = require("./requiredKeyValidator");
|
|
11
|
+
const platform_client_1 = require("@coveo/platform-client");
|
|
12
|
+
class PermissionParser {
|
|
13
|
+
constructor(caseInsensitiveDoc, documentBuilder, documentPath) {
|
|
14
|
+
this.caseInsensitiveDoc = caseInsensitiveDoc;
|
|
15
|
+
this.documentBuilder = documentBuilder;
|
|
16
|
+
this.documentPath = documentPath;
|
|
17
|
+
this.processPermissionSet = (permissionSet) => {
|
|
18
|
+
const permissionSetBuilder = this.validateRequiredPermissionSetKeysAndGetPermissionSetBuilder(permissionSet);
|
|
19
|
+
this.documentBuilder.withPermissionSet(permissionSetBuilder);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
processPermissionList() {
|
|
23
|
+
this.ensurePermissionArray();
|
|
24
|
+
new knownKey_1.KnownKeys('permissions', this.caseInsensitiveDoc).whenExists((permissions) => {
|
|
25
|
+
permissions.forEach((permission) => {
|
|
26
|
+
const caseInsensitivePermission = new caseInsensitiveDocument_1.CaseInsensitiveDocument(permission);
|
|
27
|
+
new knownKey_1.KnownKeys('permissionsets', caseInsensitivePermission)
|
|
28
|
+
.whenExists((permissionLevel) => this.processPermissionLevel(permissionLevel))
|
|
29
|
+
.whenDoesNotExist((permissionSet) => this.processPermissionSet(permissionSet));
|
|
30
|
+
});
|
|
31
|
+
this.caseInsensitiveDoc.remove('permissions');
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
processPermissionLevel(permission) {
|
|
35
|
+
// TODO: require at least some permissions
|
|
36
|
+
const permissionSetBuilders = permission.permissionSets.map((permissionSet) => {
|
|
37
|
+
const caseInsensitivePermissions = new caseInsensitiveDocument_1.CaseInsensitiveDocument(permission);
|
|
38
|
+
const { isValid, explanation } = new requiredKeyValidator_1.RequiredKeyValidator('name', caseInsensitivePermissions, new bueno_1.StringValue({ required: true, emptyAllowed: false }));
|
|
39
|
+
if (!isValid) {
|
|
40
|
+
this.throwInvalidDocumentError(explanation);
|
|
41
|
+
}
|
|
42
|
+
return this.validateRequiredPermissionSetKeysAndGetPermissionSetBuilder(permissionSet);
|
|
43
|
+
});
|
|
44
|
+
// TODO: prevent empty permission set
|
|
45
|
+
this.documentBuilder.withPermissionLevel(permission.name, permissionSetBuilders);
|
|
46
|
+
}
|
|
47
|
+
validateAllowAnonymous(caseInsensitivePermissions) {
|
|
48
|
+
const { isValid, explanation, value } = new requiredKeyValidator_1.RequiredKeyValidator('allowanonymous', caseInsensitivePermissions, new bueno_1.BooleanValue({ required: true }));
|
|
49
|
+
if (!isValid) {
|
|
50
|
+
this.throwInvalidDocumentError(explanation);
|
|
51
|
+
}
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
validatePermission(permissionLogic, caseInsensitivePermissions) {
|
|
55
|
+
const { isValid, explanation, value } = new requiredKeyValidator_1.RequiredKeyValidator(permissionLogic, caseInsensitivePermissions, this.getSecurityIdentitySchemaValidation());
|
|
56
|
+
if (!isValid) {
|
|
57
|
+
this.throwInvalidDocumentError(explanation);
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
validateRequiredPermissionSetKeysAndGetPermissionSetBuilder(permission) {
|
|
62
|
+
const caseInsensitivePermissions = new caseInsensitiveDocument_1.CaseInsensitiveDocument(permission);
|
|
63
|
+
const allowAnonymous = this.validateAllowAnonymous(caseInsensitivePermissions);
|
|
64
|
+
const allowedPermissions = this.validatePermission('allowedpermissions', caseInsensitivePermissions);
|
|
65
|
+
const deniedPermissions = this.validatePermission('deniedpermissions', caseInsensitivePermissions);
|
|
66
|
+
const permissionSetBuilder = new permissionSetBuilder_1.PermissionSetBuilder(allowAnonymous);
|
|
67
|
+
allowedPermissions === null || allowedPermissions === void 0 ? void 0 : allowedPermissions.forEach(({ identity, identityType, securityProvider }) => {
|
|
68
|
+
permissionSetBuilder.withAllowedPermissions(new securityIdentityBuilder_1.AnySecurityIdentityBuilder(identityType, identity, securityProvider));
|
|
69
|
+
});
|
|
70
|
+
deniedPermissions === null || deniedPermissions === void 0 ? void 0 : deniedPermissions.forEach(({ identity, identityType, securityProvider }) => {
|
|
71
|
+
permissionSetBuilder.withDeniedPermissions(new securityIdentityBuilder_1.AnySecurityIdentityBuilder(identityType, identity, securityProvider));
|
|
72
|
+
});
|
|
73
|
+
return permissionSetBuilder;
|
|
74
|
+
}
|
|
75
|
+
get identityTypeRegex() {
|
|
76
|
+
const identityTypesValues = Object.values(platform_client_1.PermissionIdentityType);
|
|
77
|
+
return new RegExp(identityTypesValues.join('|'), 'i');
|
|
78
|
+
}
|
|
79
|
+
getSecurityIdentitySchemaValidation() {
|
|
80
|
+
return new bueno_1.ArrayValue({
|
|
81
|
+
required: false,
|
|
82
|
+
each: new bueno_1.RecordValue({
|
|
83
|
+
values: {
|
|
84
|
+
identity: new bueno_1.StringValue({ required: true, emptyAllowed: false }),
|
|
85
|
+
identityType: new bueno_1.StringValue({
|
|
86
|
+
regex: this.identityTypeRegex,
|
|
87
|
+
required: true,
|
|
88
|
+
emptyAllowed: false,
|
|
89
|
+
}),
|
|
90
|
+
securityProvider: new bueno_1.StringValue({
|
|
91
|
+
emptyAllowed: true,
|
|
92
|
+
required: false,
|
|
93
|
+
}),
|
|
94
|
+
},
|
|
95
|
+
}),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
ensurePermissionArray() {
|
|
99
|
+
const validator = (schema) => new requiredKeyValidator_1.RequiredKeyValidator('permissions', this.caseInsensitiveDoc, schema);
|
|
100
|
+
const { isValid, explanation } = validator(new bueno_1.ArrayValue({ required: false }));
|
|
101
|
+
const requiredAtLeastOnePermission = validator(new bueno_1.ArrayValue({ min: 1 }));
|
|
102
|
+
if (!isValid) {
|
|
103
|
+
this.throwInvalidDocumentError(explanation);
|
|
104
|
+
}
|
|
105
|
+
if (!requiredAtLeastOnePermission.isValid) {
|
|
106
|
+
// simply discard empty array permission instead of throwing
|
|
107
|
+
this.caseInsensitiveDoc.remove('permissions');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
throwInvalidDocumentError(explanation) {
|
|
111
|
+
throw new errors_1.InvalidDocument(this.documentPath, this.caseInsensitiveDoc.originalDocument, explanation);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const processPermissionList = (caseInsensitiveDoc, documentBuilder, documentPath) => {
|
|
115
|
+
const parser = new PermissionParser(caseInsensitiveDoc, documentBuilder, documentPath);
|
|
116
|
+
return parser.processPermissionList();
|
|
117
|
+
};
|
|
118
|
+
exports.processPermissionList = processPermissionList;
|
|
119
|
+
//# sourceMappingURL=parsePermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePermissions.js","sourceRoot":"","sources":["../../src/validation/parsePermissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path_1 = require("path");
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const caseInsensitiveDocument_1 = require("./caseInsensitiveDocument");
|
|
6
|
+
const parsePermissions_1 = require("./parsePermissions");
|
|
7
|
+
describe('parsePermissions', () => {
|
|
8
|
+
let documentBuilder;
|
|
9
|
+
const dummyPath = (0, path_1.join)('dummy', 'path');
|
|
10
|
+
const publicPermissionsSet = {
|
|
11
|
+
allowAnonymous: true,
|
|
12
|
+
deniedpermissions: [
|
|
13
|
+
{
|
|
14
|
+
identity: 'foo@example.com',
|
|
15
|
+
identityType: 'USER',
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
const restrictedPermissionSet = {
|
|
20
|
+
allowAnonymous: false,
|
|
21
|
+
ALLOWEDPERMISSIONS: [
|
|
22
|
+
{
|
|
23
|
+
identity: 'asmith@example.com',
|
|
24
|
+
identityType: 'User',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
identity: 'bjones@example.com',
|
|
28
|
+
identityType: 'USER',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
const complexPermissionSet = {
|
|
33
|
+
aLLowAnonyMOUS: false,
|
|
34
|
+
deniedpermissions: [
|
|
35
|
+
{
|
|
36
|
+
identity: 'foo',
|
|
37
|
+
identityType: 'VirtualGroup',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
allowedPERMISSIONS: [
|
|
41
|
+
{
|
|
42
|
+
identity: 'Sample_group',
|
|
43
|
+
identityType: 'Group',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
identity: 'bjones@example.com',
|
|
47
|
+
identityType: 'user',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
documentBuilder = new __1.DocumentBuilder('https://foo.com', 'Some Document');
|
|
53
|
+
});
|
|
54
|
+
it('should not marhsal empty permssion when is empty array', () => {
|
|
55
|
+
const caseInsensitiveDoc = new caseInsensitiveDocument_1.CaseInsensitiveDocument({
|
|
56
|
+
permissions: [],
|
|
57
|
+
});
|
|
58
|
+
(0, parsePermissions_1.processPermissionList)(caseInsensitiveDoc, documentBuilder, dummyPath);
|
|
59
|
+
expect(documentBuilder.marshal()).not.toHaveProperty('permissions');
|
|
60
|
+
});
|
|
61
|
+
it('should marhsal denied permssion set', () => {
|
|
62
|
+
const caseInsensitiveDoc = new caseInsensitiveDocument_1.CaseInsensitiveDocument({
|
|
63
|
+
permissions: [publicPermissionsSet],
|
|
64
|
+
});
|
|
65
|
+
(0, parsePermissions_1.processPermissionList)(caseInsensitiveDoc, documentBuilder, dummyPath);
|
|
66
|
+
expect(documentBuilder.marshal().permissions).toMatchSnapshot();
|
|
67
|
+
});
|
|
68
|
+
it('should marhsal allowed permssion set', () => {
|
|
69
|
+
const caseInsensitiveDoc = new caseInsensitiveDocument_1.CaseInsensitiveDocument({
|
|
70
|
+
permissions: [restrictedPermissionSet],
|
|
71
|
+
});
|
|
72
|
+
(0, parsePermissions_1.processPermissionList)(caseInsensitiveDoc, documentBuilder, dummyPath);
|
|
73
|
+
expect(documentBuilder.marshal().permissions).toMatchSnapshot();
|
|
74
|
+
});
|
|
75
|
+
it('should marhsal combined permssion sets', () => {
|
|
76
|
+
const caseInsensitiveDoc = new caseInsensitiveDocument_1.CaseInsensitiveDocument({
|
|
77
|
+
permissions: [
|
|
78
|
+
publicPermissionsSet,
|
|
79
|
+
restrictedPermissionSet,
|
|
80
|
+
complexPermissionSet,
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
(0, parsePermissions_1.processPermissionList)(caseInsensitiveDoc, documentBuilder, dummyPath);
|
|
84
|
+
expect(documentBuilder.marshal().permissions).toMatchSnapshot();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=parsePermissions.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePermissions.spec.js","sourceRoot":"","sources":["../../src/validation/parsePermissions.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ class RequiredKeyValidator {
|
|
|
16
16
|
}
|
|
17
17
|
doValidations() {
|
|
18
18
|
this.validations = this.keys.map((k) => {
|
|
19
|
-
const value = this.doc.
|
|
19
|
+
const value = this.doc.getRecordValue(k);
|
|
20
20
|
if (this.isValueCorrectType(value)) {
|
|
21
21
|
return { value, message: null };
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requiredKeyValidator.js","sourceRoot":"","sources":["../../src/validation/requiredKeyValidator.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAI/B,YACE,CAAoB,EACZ,GAA8C,EAC9C,MAAsB;QADtB,QAAG,GAAH,GAAG,CAA2C;QAC9C,WAAM,GAAN,MAAM,CAAgB;QALxB,gBAAW,GAAmD,EAAE,CAAC;QAOvE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"requiredKeyValidator.js","sourceRoot":"","sources":["../../src/validation/requiredKeyValidator.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAI/B,YACE,CAAoB,EACZ,GAA8C,EAC9C,MAAsB;QADtB,QAAG,GAAH,GAAG,CAA2C;QAC9C,WAAM,GAAN,MAAM,CAAgB;QALxB,gBAAW,GAAmD,EAAE,CAAC;QAOvE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;aAC/B;YACD,OAAO;gBACL,KAAK,EAAE,KAAgB;gBACvB,OAAO,EAAE,0CAA0C,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAChF,KAAK,CACN,EAAE;aACJ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,IAAW,KAAK;QACd,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAU,CAAC;SACxC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC;IACzC,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC9E,CAAC;IAEO,oBAAoB,CAAC,KAAuB;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAU,CAAC,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CAAC,KAAuB;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,iBAAiB,EAAE;YACrB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArED,oDAqEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveo/push-api-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Push API client",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -10,36 +10,38 @@
|
|
|
10
10
|
"types": "./dist/definitions/index.d.ts",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@coveo/bueno": "^0.43.0",
|
|
13
|
-
"@coveo/platform-client": "40.
|
|
14
|
-
"abortcontroller-polyfill": "^1.7.1",
|
|
15
|
-
"axios": "^1.2.0",
|
|
13
|
+
"@coveo/platform-client": "40.7.0",
|
|
16
14
|
"dayjs": "^1.10.4",
|
|
17
15
|
"exponential-backoff": "^3.1.0",
|
|
18
|
-
"
|
|
16
|
+
"fetch-undici-polyfill": "^1.1.2",
|
|
19
17
|
"zod": "^3.20.2"
|
|
20
18
|
},
|
|
21
19
|
"devDependencies": {
|
|
22
20
|
"@coveo/push-api-client": "file:.",
|
|
23
|
-
"@
|
|
24
|
-
"@
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
21
|
+
"@coveo/semantic-monorepo-tools": "1.5.21",
|
|
22
|
+
"@octokit/auth-action": "^2.0.3",
|
|
23
|
+
"@types/jest": "29.4.0",
|
|
24
|
+
"@types/node": "18.11.19",
|
|
25
|
+
"@typescript-eslint/eslint-plugin": "5.50.0",
|
|
26
|
+
"@typescript-eslint/parser": "5.50.0",
|
|
27
|
+
"conventional-changelog-angular": "5.0.13",
|
|
27
28
|
"cz-conventional-changelog": "3.3.0",
|
|
28
29
|
"detect-indent": "7.0.1",
|
|
29
30
|
"dotenv": "16.0.3",
|
|
30
|
-
"eslint": "8.
|
|
31
|
+
"eslint": "8.33.0",
|
|
31
32
|
"eslint-config-prettier": "8.6.0",
|
|
32
33
|
"gts": "3.1.1",
|
|
33
34
|
"husky": "8.0.3",
|
|
34
|
-
"jest": "29.
|
|
35
|
+
"jest": "29.4.1",
|
|
35
36
|
"lint-staged": "13.1.0",
|
|
36
37
|
"nodemon": "2.0.20",
|
|
38
|
+
"octokit": "2.0.14",
|
|
37
39
|
"prettier": "2.8.3",
|
|
38
|
-
"standard-version": "9.5.0",
|
|
39
40
|
"ts-jest": "29.0.5",
|
|
40
41
|
"ts-node": "10.9.1",
|
|
41
42
|
"typedoc": "0.23.24",
|
|
42
|
-
"typescript": "4.9.
|
|
43
|
+
"typescript": "4.9.5",
|
|
44
|
+
"undici": "^5.16.0"
|
|
43
45
|
},
|
|
44
46
|
"husky": {
|
|
45
47
|
"hooks": {
|
|
@@ -62,21 +64,20 @@
|
|
|
62
64
|
"**/*.ts": "eslint --fix"
|
|
63
65
|
},
|
|
64
66
|
"engines": {
|
|
65
|
-
"node": ">=
|
|
67
|
+
"node": ">=16.x"
|
|
66
68
|
},
|
|
67
69
|
"scripts": {
|
|
68
70
|
"build": "tsc",
|
|
69
71
|
"test": "jest",
|
|
70
72
|
"test:dev": "jest --watch",
|
|
71
73
|
"dev": "nodemon --watch \"src/**\" --ext \"ts,json\" --ignore \"src/**/*.spec.ts\" --exec \"ts-node src/localtest.ts\"",
|
|
72
|
-
"lint": "prettier --config ./.prettierrc.js --check
|
|
74
|
+
"lint": "prettier --config ./.prettierrc.js --check . && eslint .",
|
|
73
75
|
"lint:check": "eslint .",
|
|
74
76
|
"lint:fix": "eslint --fix .",
|
|
75
77
|
"prettier:check": "prettier .",
|
|
76
78
|
"prettier:fix": "prettier --write .",
|
|
77
79
|
"commit": "git-cz",
|
|
78
|
-
"release": "
|
|
79
|
-
"prepublishOnly": "npm run release && npm run doc",
|
|
80
|
+
"release": "node release.mjs && npm run doc",
|
|
80
81
|
"doc": "typedoc --out ./dist/docs ./src/index.ts"
|
|
81
82
|
},
|
|
82
83
|
"repository": {
|
package/dist/docs/.nojekyll
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|