UNPKG

@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
"use strict"; // 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==