@dolittle/sdk.projections
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
65 lines • 4.93 kB
JavaScript
;
// Copyright (c) Dolittle. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.isCollectionName = exports.CollectionName = void 0;
const concepts_1 = require("@dolittle/concepts");
const InvalidCollectionName_1 = require("./InvalidCollectionName");
/**
* Represents the name of a Collection in MongoDB.
*/
class CollectionName extends concepts_1.ConceptAs {
/**
* Initialises a new instance of the {@link CollectionName} class.
* @param {string} name - The name of the collection.
*/
constructor(name) {
super(name, '@dolittle/sdk.projections.Copies.MongoDB.CollectionName');
}
/**
* Checks if the collection name is considered a valid MongoDB collection name.
* @returns {[true] | [false, Error]} A value indicating whether or not the collection name is valid, and potentially an error describing why not.
*/
isValid() {
if (this.value === undefined || this.value === null || this.value.trim().length < 1) {
return [false, new InvalidCollectionName_1.InvalidCollectionName(this, 'must not be null or empty')];
}
if (new TextEncoder().encode(this.value).length >= 120) {
return [false, new InvalidCollectionName_1.InvalidCollectionName(this, 'must be at most 120 bytes long')];
}
if (this.value.includes('$')) {
return [false, new InvalidCollectionName_1.InvalidCollectionName(this, 'cannot contain the character "$"')];
}
if (this.value.includes('\0')) {
return [false, new InvalidCollectionName_1.InvalidCollectionName(this, 'cannot contain the null character')];
}
if (this.value.startsWith('system.')) {
return [false, new InvalidCollectionName_1.InvalidCollectionName(this, 'cannot start with "system."')];
}
return [true];
}
/**
* Gets the not set collection name.
*/
static get notSet() {
return CollectionName.from('Not Set');
}
/**
* Creates a {@link CollectionName} from a {@link string}.
* @param {CollectionNameLike} name - The name of the collection.
* @returns {CollectionName} The created collection name concept.
*/
static from(name) {
if ((0, exports.isCollectionName)(name))
return name;
return new CollectionName(name);
}
}
exports.CollectionName = CollectionName;
/**
* Checks whether or not an object is an instance of {@link CollectionName}.
* @param {any} object - The object to check.
* @returns {boolean} True if the object is an {@link CollectionName}, false if not.
*/
exports.isCollectionName = (0, concepts_1.createIsConceptAsString)(CollectionName, '@dolittle/sdk.projections.Copies.MongoDB.CollectionName');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvbk5hbWUuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJDb3BpZXMvTW9uZ29EQi9Db2xsZWN0aW9uTmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBRXJHLGlEQUF3RTtBQUV4RSxtRUFBZ0U7QUFPaEU7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxvQkFBNEU7SUFDNUc7OztPQUdHO0lBQ0gsWUFBWSxJQUFZO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLEVBQUUseURBQXlELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSw2Q0FBcUIsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtZQUNwRCxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztTQUNyRjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7U0FDdkY7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSw2Q0FBcUIsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxDQUFDO1NBQ3hGO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNsQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLDZCQUE2QixDQUFDLENBQUMsQ0FBQztTQUNsRjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLEtBQUssTUFBTTtRQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBd0I7UUFDaEMsSUFBSSxJQUFBLHdCQUFnQixFQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNKO0FBckRELHdDQXFEQztBQUVEOzs7O0dBSUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHLElBQUEsa0NBQXVCLEVBQUMsY0FBYyxFQUFFLHlEQUF5RCxDQUFDLENBQUMifQ==