@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
62 lines • 8.89 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Service for creating and manipulating branding versions.
*/
export class BrandingVersionService {
static { this.nameAndIterationSeparator = '-'; }
/**
* Creates the initial branding version for a given name.
* @param name The name of the branding.
* @returns The initial branding version.
*/
createInitialBrandingVersion(name) {
return `${name}${BrandingVersionService.nameAndIterationSeparator}${1}`;
}
/**
* Splits a branding version into its name and iteration.
* @param version The branding version to split.
* @returns The name and iteration of the branding version.
*
* Errors are thrown if the version is not in the expected format.
*/
splitBrandingIntoNameAndIteration(version) {
const splitted = version.split(BrandingVersionService.nameAndIterationSeparator);
if (splitted.length < 2) {
throw Error(`A valid version should at least conatin one '${BrandingVersionService.nameAndIterationSeparator}', this is not the case for '${version}'`);
}
const lastValueOfSplittedArray = splitted[splitted.length - 1];
if (lastValueOfSplittedArray === '' || !/[0-9]+/.test(lastValueOfSplittedArray)) {
throw Error(`The second part of the version should be a positive integer, this is not the case for '${lastValueOfSplittedArray}' from '${version}'`);
}
const iteration = Number.parseInt(lastValueOfSplittedArray);
if (Number.isNaN(iteration) && iteration <= 0) {
throw Error(`The second part of the version should be a positive integer, this is not the case for '${iteration}' from '${version}'`);
}
const name = splitted.slice(0, -1).join(BrandingVersionService.nameAndIterationSeparator);
if (!name) {
throw Error(`The first part of the version should not be empty, this is the case for '${name}' from '${version}'`);
}
return { iteration, name };
}
/**
* Bumps the iteration of a branding version.
* @param version The branding version to bump.
* @returns The bumped branding version.
*
* Errors are thrown if the version is not in the expected format.
*/
bumpBrandingIteration(version) {
const { name, iteration } = this.splitBrandingIntoNameAndIteration(version);
return `${name}${BrandingVersionService.nameAndIterationSeparator}${iteration + 1}`;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BrandingVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BrandingVersionService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BrandingVersionService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmctdmVyc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2RhdGEvYnJhbmRpbmctdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjthQUNqQiw4QkFBeUIsR0FBRyxHQUFHLEFBQU4sQ0FBTztJQUVoRDs7OztPQUlHO0lBQ0gsNEJBQTRCLENBQW1CLElBQU87UUFDcEQsT0FBTyxHQUFHLElBQUksR0FBRyxzQkFBc0IsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLEVBQVcsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUNBQWlDLENBQUMsT0FBZTtRQUMvQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDakYsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxDQUNULGdEQUFnRCxzQkFBc0IsQ0FBQyx5QkFBeUIsZ0NBQWdDLE9BQU8sR0FBRyxDQUMzSSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSx3QkFBd0IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUNoRixNQUFNLEtBQUssQ0FDVCwwRkFBMEYsd0JBQXdCLFdBQVcsT0FBTyxHQUFHLENBQ3hJLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxLQUFLLENBQ1QsMEZBQTBGLFNBQVMsV0FBVyxPQUFPLEdBQUcsQ0FDekgsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sS0FBSyxDQUNULDRFQUE0RSxJQUFJLFdBQVcsT0FBTyxHQUFHLENBQ3RHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gscUJBQXFCLENBQUMsT0FBZTtRQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RSxPQUFPLEdBQUcsSUFBSSxHQUFHLHNCQUFzQixDQUFDLHlCQUF5QixHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQVcsQ0FBQztJQUMvRixDQUFDOytHQTdEVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgYnJhbmRpbmcgdmVyc2lvbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJyYW5kaW5nVmVyc2lvblNlcnZpY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgbmFtZUFuZEl0ZXJhdGlvblNlcGFyYXRvciA9ICctJztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgaW5pdGlhbCBicmFuZGluZyB2ZXJzaW9uIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBicmFuZGluZy5cbiAgICogQHJldHVybnMgVGhlIGluaXRpYWwgYnJhbmRpbmcgdmVyc2lvbi5cbiAgICovXG4gIGNyZWF0ZUluaXRpYWxCcmFuZGluZ1ZlcnNpb248VCBleHRlbmRzIHN0cmluZz4obmFtZTogVCkge1xuICAgIHJldHVybiBgJHtuYW1lfSR7QnJhbmRpbmdWZXJzaW9uU2VydmljZS5uYW1lQW5kSXRlcmF0aW9uU2VwYXJhdG9yfSR7MX1gIGFzIGNvbnN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhIGJyYW5kaW5nIHZlcnNpb24gaW50byBpdHMgbmFtZSBhbmQgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgYnJhbmRpbmcgdmVyc2lvbiB0byBzcGxpdC5cbiAgICogQHJldHVybnMgVGhlIG5hbWUgYW5kIGl0ZXJhdGlvbiBvZiB0aGUgYnJhbmRpbmcgdmVyc2lvbi5cbiAgICpcbiAgICogRXJyb3JzIGFyZSB0aHJvd24gaWYgdGhlIHZlcnNpb24gaXMgbm90IGluIHRoZSBleHBlY3RlZCBmb3JtYXQuXG4gICAqL1xuICBzcGxpdEJyYW5kaW5nSW50b05hbWVBbmRJdGVyYXRpb24odmVyc2lvbjogc3RyaW5nKTogeyBuYW1lOiBzdHJpbmc7IGl0ZXJhdGlvbjogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHNwbGl0dGVkID0gdmVyc2lvbi5zcGxpdChCcmFuZGluZ1ZlcnNpb25TZXJ2aWNlLm5hbWVBbmRJdGVyYXRpb25TZXBhcmF0b3IpO1xuICAgIGlmIChzcGxpdHRlZC5sZW5ndGggPCAyKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYEEgdmFsaWQgdmVyc2lvbiBzaG91bGQgYXQgbGVhc3QgY29uYXRpbiBvbmUgJyR7QnJhbmRpbmdWZXJzaW9uU2VydmljZS5uYW1lQW5kSXRlcmF0aW9uU2VwYXJhdG9yfScsIHRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciAnJHt2ZXJzaW9ufSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3RWYWx1ZU9mU3BsaXR0ZWRBcnJheSA9IHNwbGl0dGVkW3NwbGl0dGVkLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0VmFsdWVPZlNwbGl0dGVkQXJyYXkgPT09ICcnIHx8ICEvWzAtOV0rLy50ZXN0KGxhc3RWYWx1ZU9mU3BsaXR0ZWRBcnJheSkpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciAnJHtsYXN0VmFsdWVPZlNwbGl0dGVkQXJyYXl9JyBmcm9tICcke3ZlcnNpb259J2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlcmF0aW9uID0gTnVtYmVyLnBhcnNlSW50KGxhc3RWYWx1ZU9mU3BsaXR0ZWRBcnJheSk7XG4gICAgaWYgKE51bWJlci5pc05hTihpdGVyYXRpb24pICYmIGl0ZXJhdGlvbiA8PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYFRoZSBzZWNvbmQgcGFydCBvZiB0aGUgdmVyc2lvbiBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCB0aGlzIGlzIG5vdCB0aGUgY2FzZSBmb3IgJyR7aXRlcmF0aW9ufScgZnJvbSAnJHt2ZXJzaW9ufSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBzcGxpdHRlZC5zbGljZSgwLCAtMSkuam9pbihCcmFuZGluZ1ZlcnNpb25TZXJ2aWNlLm5hbWVBbmRJdGVyYXRpb25TZXBhcmF0b3IpO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBUaGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBzaG91bGQgbm90IGJlIGVtcHR5LCB0aGlzIGlzIHRoZSBjYXNlIGZvciAnJHtuYW1lfScgZnJvbSAnJHt2ZXJzaW9ufSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGl0ZXJhdGlvbiwgbmFtZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1bXBzIHRoZSBpdGVyYXRpb24gb2YgYSBicmFuZGluZyB2ZXJzaW9uLlxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgYnJhbmRpbmcgdmVyc2lvbiB0byBidW1wLlxuICAgKiBAcmV0dXJucyBUaGUgYnVtcGVkIGJyYW5kaW5nIHZlcnNpb24uXG4gICAqXG4gICAqIEVycm9ycyBhcmUgdGhyb3duIGlmIHRoZSB2ZXJzaW9uIGlzIG5vdCBpbiB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuICAgKi9cbiAgYnVtcEJyYW5kaW5nSXRlcmF0aW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGNvbnN0IHsgbmFtZSwgaXRlcmF0aW9uIH0gPSB0aGlzLnNwbGl0QnJhbmRpbmdJbnRvTmFtZUFuZEl0ZXJhdGlvbih2ZXJzaW9uKTtcbiAgICByZXR1cm4gYCR7bmFtZX0ke0JyYW5kaW5nVmVyc2lvblNlcnZpY2UubmFtZUFuZEl0ZXJhdGlvblNlcGFyYXRvcn0ke2l0ZXJhdGlvbiArIDF9YCBhcyBjb25zdDtcbiAgfVxufVxuIl19