UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

186 lines 11.3 kB
import { BaseError } from '@iotize/common/error'; import { InvalidConfigurationError } from './invalid-configuration-error'; import { IotizeBundleModel } from './iotize-bundle-model'; import { IotizeProfileModel } from './iotize-profile-model'; /** * */ export class BundleDoesNotExistError extends BaseError { // static CODE = 'BundleDoesNotExistError'; constructor(bundleId, config) { super('Bundle "' + bundleId + '" does not exist.'); this.bundleId = bundleId; this.config = config; } } /** * */ export class VariableDoesNotExistError extends BaseError { // static CODE = 'VariableDoesNotExistError'; constructor(variableId, config) { super(`Variable "${variableId}" does not exist.`); this.variableId = variableId; this.config = config; } } /** * Class representing an iotize studio configuration for a module */ export class IotizeConfigModel { constructor(data) { if (!data.IOTizeConfiguration) { //console.error('Trying to create an IotizeConfigModel with invalid data: ', data); throw new InvalidConfigurationError('Key IOTizeConfiguration must exists'); } if (!data.IOTizeConfiguration.IOTizeApp) { throw new InvalidConfigurationError('Key IOTizeConfiguration.IOTizeApp must exists'); } if (data.IOTizeConfiguration.IOTizeApp.length === 0 || !data.IOTizeConfiguration.IOTizeApp[0]['$']) { throw new InvalidConfigurationError('No IOTizeConfiguration.IOTizeApp defined in this configuration file'); } this.data = data; } toJson() { return this.data; } getAppConfig() { return this.data.IOTizeConfiguration.IOTizeApp[0]; } /** * Get application name */ appName() { if (!this.getAppConfig().$.Name) { throw new InvalidConfigurationError('Application Name is not set'); } return this.getAppConfig().$.Name; } /** * Get config version */ version() { if (!this.getAppConfig().$.Config) { throw new InvalidConfigurationError('App config version is not set'); } return this.getAppConfig().$.Config; } /** * Get module serial number */ id() { if (!this.getAppConfig().$.DevIoTizeSN) { throw new InvalidConfigurationError('Serial number is not set'); } return this.getAppConfig().$.DevIoTizeSN; } /** * Set module serial number * @param id */ setId(id) { this.getAppConfig().$.DevIoTizeSN = id; return this; } /** * Alias for this.id(); */ serialNumber() { return this.id(); } /** * Get an array of all bundles */ bundles() { if (!this.data.IOTizeConfiguration.IOTizeBundle) { return []; } let bundles = []; for (let bundle of this.data.IOTizeConfiguration.IOTizeBundle) { // TODO bug if only one bundle bundles.push(new IotizeBundleModel(bundle, this)); } return bundles; } /** * Array of bundles available for a specific profile */ bundleAvailableForProfileName(profileName) { return this.bundles().reduce((list, currentValue) => { if (currentValue.getACLGroup().hasRight(profileName, 'read')) { list.push(currentValue); } return list; }, []); } /** * Get an array of all variables */ variables() { if (!this.data.IOTizeConfiguration.IOTizeBundle) { return []; } let res = []; for (let bundle of this.data.IOTizeConfiguration.IOTizeBundle) { bundle = new IotizeBundleModel(bundle, this); res.push(...bundle.variables()); } return res; } /** * Get bundle by id, if it does not exist, throw BundleDoesNotExistError * @throws BundleDoesNotExistError * @param id */ bundle(id) { for (let bundle of this.bundles()) { if (bundle.id() === id) { return bundle; } } throw new BundleDoesNotExistError(id, this); } hasBundle(id) { for (let bundle of this.bundles()) { if (bundle.id() === id) { return bundle; } } return false; } /** * Get variable by id, if it does not exist, throw VariableDoesNotExistError * @throws VariableDoesNotExistError * @param id */ variable(variableId) { for (let variable of this.variables()) { if (variable.id() == variableId) { return variable; } } throw new VariableDoesNotExistError(variableId, this); } /** * Get an array of all profiles */ profiles() { if (!this.data.IOTizeConfiguration.IOTizeProfile) { return []; } let profiles = []; for (let profile of this.data.IOTizeConfiguration.IOTizeProfile) { // TODO bug if there is only one profile... profiles.push(new IotizeProfileModel(profile)); } return profiles; } description() { return this.getAppConfig().$.GUI_Description; } name() { return this.getAppConfig().$.GUI_Name; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90aXplLWNvbmZpZy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9pb3RpemUtc3R1ZGlvL3NyYy9saWIvbW9kZWwvaW90aXplLWNvbmZpZy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBUztJQUNwRCwyQ0FBMkM7SUFFM0MsWUFDUyxRQUFnQixFQUNoQixNQUF5QjtRQUVoQyxLQUFLLENBQ0gsVUFBVSxHQUFHLFFBQVEsR0FBRyxtQkFBbUIsQ0FFNUMsQ0FBQztRQU5LLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFNbEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsU0FBUztJQUN0RCw2Q0FBNkM7SUFFN0MsWUFDUyxVQUFrQixFQUNsQixNQUF5QjtRQUVoQyxLQUFLLENBQ0gsYUFBYSxVQUFVLG1CQUFtQixDQUUzQyxDQUFDO1FBTkssZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQU1sQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFBWSxJQUFTO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDN0IsbUZBQW1GO1lBQ25GLE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMscUNBQXFDLENB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