@robotbas/robotcloud-client 0.0.5 → 0.0.6

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 CHANGED
@@ -16,7 +16,7 @@ import { clientConfig } from "@robotbas/robotcloud-client";
16
16
 
17
17
  const appConfigs = useRuntimeConfig().public; // Get aplication global configs
18
18
  // Configure Robotcloud API
19
- clientConfig.baseURL = appConfigs.robotCloudUrl
19
+ clientConfig.baseURL = appConfigs.robotcloudUrl
20
20
  clientConfig.checkToken = async () => {
21
21
  const token = await checkToken()
22
22
  if (!token) {
@@ -1 +1 @@
1
- export { s as RobotCloudPermissionsHelper, r as robotCloudPermissionsHelper } from '../index-Tc3Ol2py.mjs';
1
+ export { s as RobotCloudPermissionsHelper, r as robotCloudPermissionsHelper } from '../index-DBueovyV.mjs';
@@ -1 +1 @@
1
- export { s as RobotCloudPermissionsHelper, r as robotCloudPermissionsHelper } from '../index-Tc3Ol2py.js';
1
+ export { s as RobotCloudPermissionsHelper, r as robotCloudPermissionsHelper } from '../index-DBueovyV.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/index.ts","../../src/utils/logger.ts","../../src/robotCloudApi.ts","../../src/config.ts","../../src/robotCloudClient.ts","../../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["export { robotCloudPermissionsHelper } from \"helpers/robotCloudPermissionsHelper\";\n\nexport type * from \"../../types/helpers\";","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig, ServiceInstanceDataRequestParams, \n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":"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","names":["axios","logger"]}
1
+ {"version":3,"sources":["../../src/helpers/index.ts","../../src/utils/logger.ts","../../src/robotCloudApi.ts","../../src/config.ts","../../src/robotCloudClient.ts","../../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["export { robotCloudPermissionsHelper } from \"helpers/robotCloudPermissionsHelper\";\n\nexport type * from \"../../types/helpers\";","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig,\n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":"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","names":["axios","logger"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/logger.ts","../../src/robotCloudApi.ts","../../src/config.ts","../../src/robotCloudClient.ts","../../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig, ServiceInstanceDataRequestParams, \n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":";AAAA,SAAS,qBAAqB;AAGvB,SAAS,UAAW,KAAc,UAAmC,EAAE,OAAO,IAAK,GAAG;AACzF,SAAO,MAAM,cAAc,OAAO,EAAE,QAAQ,GAAG,IAAI,cAAc,OAAO;AAC5E;;;ACLA,OAAO,WAAW;;;ACEX,IAAM,yBAAN,MAA6B;AAAA,EAA7B;AAEH,SAAQ,cAAc,YAA6B;AAAE,aAAO;AAAA,IAAE;AAE9D,SAAO,oCAA4C;AAAA;AAAA,EAGnD,IAAI,QAAQ,OAAc;AACtB,0BAAc,SAAS,UAAU;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,UAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW,KAA4B;AACvC,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,IAAI,aAAoC;AACpC,WAAO,KAAK;AAAA,EAChB;AACJ;AAEA,IAAM,eAAe,IAAI,uBAAuB;AAChD,IAAO,iBAAQ;;;ADxBf,IAAM,SAAS,UAAU,gBAAgB;AAEzC,IAAM,gBAAgB,MAAM,OAAO;AAEnC,IAAI,oBAAwD;AAC5D,IAAM,eAAe,MAAM,oBAAoB;AAE/C,eAAe,aAAa,YAA+C;AACvE,QAAM,eAAe,MAAM,WAAW;AACtC,SAAO;AACX;AAIA,cAAc,aAAa,QAAQ;AAAA,EAC/B,OAAM,WAAU;AACZ,WAAO,KAAK,+BAA+B,OAAO,GAAG;AACrD,QAAI,CAAC,mBAAmB;AACpB,0BAAoB,aAAa,eAAa,UAAU,EAAE,QAAQ,YAAY;AAAA,IAClF;AAGA,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,gBAAgB,UAAU,KAAK;AAC9C,WAAO;AAAA,EACX;AAAA,EACA,WAAS;AACL,WAAO,MAAM,KAAK;AAClB,YAAQ,OAAO,KAAK;AAAA,EAC1B;AAAC;AAEH,IAAO,wBAAQ;;;AEpBf,IAAMA,UAAS,UAAU,mBAAmB;AAwCrC,IAAM,oBAAoB,CAC/B,OACA,WACqD;AACrD,SAAO,sBAAc,IAA8B,YAAY,KAAK,IAAI;AAAA,IACtE;AAAA,EACF,CAAC;AACH;;;ACrDA,IAAM,kCAAN,MAA6E;AAAA,EAEzE,MAAa,mBAAmB,OAAe,yBAA+D;AAE1G,UAAM,EAAE,MAAM,QAAO,IAAI,MAAuB,kBAAkB,KAAK;AACvE,QAAI,QAAQ,gBAAgB,yBAAyB;AACjD,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,eAAe,SAAS,uBAAuB;AAAA,EAC/D;AAAA,EAEO,eAAe,SAAmC,yBAA6C;AAElG,YAAQ,yBAAyB;AAAA,MAC7B,KAAK;AACD,eAAO,QAAQ,gBAAgB;AAAA,MACnC,KAAK;AACD,eAAO,QAAQ,gBAAgB,WAAW,QAAQ,gBAAgB;AAAA,MACtE,KAAK;AACD,eAAO,QAAQ,gBAAgB,gBAAgB,QAAQ,gBAAgB,WAC/D,QAAQ,gBAAgB;AAAA,MACpC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEO,kBAAkB,SAAmC,6BAAsD;AAC9G,YAAQ,6BAA6B;AAAA,MACjC,KAAK;AACD,eAAO,QAAQ,oBAAoB;AAAA,MACvC,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB;AAAA,MACjF,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,cACrE,QAAQ,oBAAoB;AAAA,MACxC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AAEO,IAAM,8BAA2D,IAAI,gCAAgC;","names":["logger"]}
1
+ {"version":3,"sources":["../../src/utils/logger.ts","../../src/robotCloudApi.ts","../../src/config.ts","../../src/robotCloudClient.ts","../../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig,\n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":";AAAA,SAAS,qBAAqB;AAGvB,SAAS,UAAW,KAAc,UAAmC,EAAE,OAAO,IAAK,GAAG;AACzF,SAAO,MAAM,cAAc,OAAO,EAAE,QAAQ,GAAG,IAAI,cAAc,OAAO;AAC5E;;;ACLA,OAAO,WAAW;;;ACEX,IAAM,yBAAN,MAA6B;AAAA,EAA7B;AAEH,SAAQ,cAAc,YAA6B;AAAE,aAAO;AAAA,IAAE;AAE9D,SAAO,oCAA4C;AAAA;AAAA,EAGnD,IAAI,QAAQ,OAAc;AACtB,0BAAc,SAAS,UAAU;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,UAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW,KAA4B;AACvC,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,IAAI,aAAoC;AACpC,WAAO,KAAK;AAAA,EAChB;AACJ;AAEA,IAAM,eAAe,IAAI,uBAAuB;AAChD,IAAO,iBAAQ;;;ADxBf,IAAM,SAAS,UAAU,gBAAgB;AAEzC,IAAM,gBAAgB,MAAM,OAAO;AAEnC,IAAI,oBAAwD;AAC5D,IAAM,eAAe,MAAM,oBAAoB;AAE/C,eAAe,aAAa,YAA+C;AACvE,QAAM,eAAe,MAAM,WAAW;AACtC,SAAO;AACX;AAIA,cAAc,aAAa,QAAQ;AAAA,EAC/B,OAAM,WAAU;AACZ,WAAO,KAAK,+BAA+B,OAAO,GAAG;AACrD,QAAI,CAAC,mBAAmB;AACpB,0BAAoB,aAAa,eAAa,UAAU,EAAE,QAAQ,YAAY;AAAA,IAClF;AAGA,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,gBAAgB,UAAU,KAAK;AAC9C,WAAO;AAAA,EACX;AAAA,EACA,WAAS;AACL,WAAO,MAAM,KAAK;AAClB,YAAQ,OAAO,KAAK;AAAA,EAC1B;AAAC;AAEH,IAAO,wBAAQ;;;AEpBf,IAAMA,UAAS,UAAU,mBAAmB;AAwCrC,IAAM,oBAAoB,CAC/B,OACA,WACqD;AACrD,SAAO,sBAAc,IAA8B,YAAY,KAAK,IAAI;AAAA,IACtE;AAAA,EACF,CAAC;AACH;;;ACrDA,IAAM,kCAAN,MAA6E;AAAA,EAEzE,MAAa,mBAAmB,OAAe,yBAA+D;AAE1G,UAAM,EAAE,MAAM,QAAO,IAAI,MAAuB,kBAAkB,KAAK;AACvE,QAAI,QAAQ,gBAAgB,yBAAyB;AACjD,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,eAAe,SAAS,uBAAuB;AAAA,EAC/D;AAAA,EAEO,eAAe,SAAmC,yBAA6C;AAElG,YAAQ,yBAAyB;AAAA,MAC7B,KAAK;AACD,eAAO,QAAQ,gBAAgB;AAAA,MACnC,KAAK;AACD,eAAO,QAAQ,gBAAgB,WAAW,QAAQ,gBAAgB;AAAA,MACtE,KAAK;AACD,eAAO,QAAQ,gBAAgB,gBAAgB,QAAQ,gBAAgB,WAC/D,QAAQ,gBAAgB;AAAA,MACpC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEO,kBAAkB,SAAmC,6BAAsD;AAC9G,YAAQ,6BAA6B;AAAA,MACjC,KAAK;AACD,eAAO,QAAQ,oBAAoB;AAAA,MACvC,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB;AAAA,MACjF,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,cACrE,QAAQ,oBAAoB;AAAA,MACxC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AAEO,IAAM,8BAA2D,IAAI,gCAAgC;","names":["logger"]}
@@ -1,6 +1,7 @@
1
1
  type TemperatureUnit = "CELSIUS" | "FAHRENHEIT"
2
2
  type RegimState = "COLD"|"HEAT"|"AUTO"
3
3
 
4
+ type OrganizationAccessLevel = "STAFF" | "STANDARD" | "ADMIN" | "SUPERUSER" | "MASTER"
4
5
  type ProjectAccessLevel = "BLOCKED" | "RESTRICTED" | "BASIC" | "ADVANCED"
5
6
  type AppAccessLevel = "BLOCKED" | "STANDARD" | "ADVANCED" | "ADMIN"
6
7
 
@@ -72,7 +73,7 @@ interface RobotCloudUserDetails {
72
73
  last_name: string;
73
74
  email: string;
74
75
  org_id: string;
75
- org_access: number;
76
+ org_access: OrganizationAccessLevel;
76
77
  }
77
78
 
78
79
 
@@ -147,4 +148,4 @@ interface RobotCloudPermissionsHelper {
147
148
 
148
149
  declare const robotCloudPermissionsHelper: RobotCloudPermissionsHelper;
149
150
 
150
- export { type AppAccessLevel as A, type FancoilSpeedState as F, type LocationServiceInstancesRequestParams as L, type PaginableRequestParams as P, type RobotCloudNamedItem as R, type SubsystemRequestParams as S, type TemperatureUnit as T, type ServiceInstanceDataRequestParams as a, type RobotCloudServiceType as b, type RobotCloudUserDetails as c, type ProjectRequestParams as d, type RobotCloudProject as e, type ProjectDetailsRequestParams as f, type RobotCloudProjectDetails as g, type ProjectLocationsRequestParams as h, type ServiceInstancesRequestParams as i, type ProjectTagRequestParams as j, type RobotCloudDeviceDetails as k, type RobotCloudServiceTypeDetails as l, type RoomGrouping1DataEventValue as m, type RoomGrouping1InstanceDeviceConfig as n, type RegimState as o, type RoomClime1AlertEventValue as p, type RoomConsumes1AlertEventValue as q, robotCloudPermissionsHelper as r, type RobotCloudPermissionsHelper as s, type ProjectAccessLevel as t, type ServiceInstanceDeviceConfig as u };
151
+ export { type AppAccessLevel as A, type FancoilSpeedState as F, type LocationServiceInstancesRequestParams as L, type OrganizationAccessLevel as O, type PaginableRequestParams as P, type RobotCloudNamedItem as R, type SubsystemRequestParams as S, type TemperatureUnit as T, type ServiceInstanceDataRequestParams as a, type RobotCloudServiceType as b, type RobotCloudUserDetails as c, type ProjectRequestParams as d, type RobotCloudProject as e, type ProjectDetailsRequestParams as f, type RobotCloudProjectDetails as g, type ProjectLocationsRequestParams as h, type ServiceInstancesRequestParams as i, type ProjectTagRequestParams as j, type RobotCloudDeviceDetails as k, type RobotCloudServiceTypeDetails as l, type RoomGrouping1DataEventValue as m, type RoomGrouping1InstanceDeviceConfig as n, type RegimState as o, type RoomClime1AlertEventValue as p, type RoomConsumes1AlertEventValue as q, robotCloudPermissionsHelper as r, type RobotCloudPermissionsHelper as s, type ProjectAccessLevel as t, type ServiceInstanceDeviceConfig as u };
@@ -1,6 +1,7 @@
1
1
  type TemperatureUnit = "CELSIUS" | "FAHRENHEIT"
2
2
  type RegimState = "COLD"|"HEAT"|"AUTO"
3
3
 
4
+ type OrganizationAccessLevel = "STAFF" | "STANDARD" | "ADMIN" | "SUPERUSER" | "MASTER"
4
5
  type ProjectAccessLevel = "BLOCKED" | "RESTRICTED" | "BASIC" | "ADVANCED"
5
6
  type AppAccessLevel = "BLOCKED" | "STANDARD" | "ADVANCED" | "ADMIN"
6
7
 
@@ -72,7 +73,7 @@ interface RobotCloudUserDetails {
72
73
  last_name: string;
73
74
  email: string;
74
75
  org_id: string;
75
- org_access: number;
76
+ org_access: OrganizationAccessLevel;
76
77
  }
77
78
 
78
79
 
@@ -147,4 +148,4 @@ interface RobotCloudPermissionsHelper {
147
148
 
148
149
  declare const robotCloudPermissionsHelper: RobotCloudPermissionsHelper;
149
150
 
150
- export { type AppAccessLevel as A, type FancoilSpeedState as F, type LocationServiceInstancesRequestParams as L, type PaginableRequestParams as P, type RobotCloudNamedItem as R, type SubsystemRequestParams as S, type TemperatureUnit as T, type ServiceInstanceDataRequestParams as a, type RobotCloudServiceType as b, type RobotCloudUserDetails as c, type ProjectRequestParams as d, type RobotCloudProject as e, type ProjectDetailsRequestParams as f, type RobotCloudProjectDetails as g, type ProjectLocationsRequestParams as h, type ServiceInstancesRequestParams as i, type ProjectTagRequestParams as j, type RobotCloudDeviceDetails as k, type RobotCloudServiceTypeDetails as l, type RoomGrouping1DataEventValue as m, type RoomGrouping1InstanceDeviceConfig as n, type RegimState as o, type RoomClime1AlertEventValue as p, type RoomConsumes1AlertEventValue as q, robotCloudPermissionsHelper as r, type RobotCloudPermissionsHelper as s, type ProjectAccessLevel as t, type ServiceInstanceDeviceConfig as u };
151
+ export { type AppAccessLevel as A, type FancoilSpeedState as F, type LocationServiceInstancesRequestParams as L, type OrganizationAccessLevel as O, type PaginableRequestParams as P, type RobotCloudNamedItem as R, type SubsystemRequestParams as S, type TemperatureUnit as T, type ServiceInstanceDataRequestParams as a, type RobotCloudServiceType as b, type RobotCloudUserDetails as c, type ProjectRequestParams as d, type RobotCloudProject as e, type ProjectDetailsRequestParams as f, type RobotCloudProjectDetails as g, type ProjectLocationsRequestParams as h, type ServiceInstancesRequestParams as i, type ProjectTagRequestParams as j, type RobotCloudDeviceDetails as k, type RobotCloudServiceTypeDetails as l, type RoomGrouping1DataEventValue as m, type RoomGrouping1InstanceDeviceConfig as n, type RegimState as o, type RoomClime1AlertEventValue as p, type RoomConsumes1AlertEventValue as q, robotCloudPermissionsHelper as r, type RobotCloudPermissionsHelper as s, type ProjectAccessLevel as t, type ServiceInstanceDeviceConfig as u };
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as axios from 'axios';
2
2
  import { AxiosResponse } from 'axios';
3
- import { R as RobotCloudNamedItem, P as PaginableRequestParams, S as SubsystemRequestParams, a as ServiceInstanceDataRequestParams, b as RobotCloudServiceType, L as LocationServiceInstancesRequestParams, c as RobotCloudUserDetails, d as ProjectRequestParams, e as RobotCloudProject, f as ProjectDetailsRequestParams, g as RobotCloudProjectDetails, h as ProjectLocationsRequestParams, i as ServiceInstancesRequestParams, j as ProjectTagRequestParams, k as RobotCloudDeviceDetails, l as RobotCloudServiceTypeDetails, m as RoomGrouping1DataEventValue, n as RoomGrouping1InstanceDeviceConfig, o as RegimState, T as TemperatureUnit, p as RoomClime1AlertEventValue, q as RoomConsumes1AlertEventValue } from './index-Tc3Ol2py.mjs';
4
- export { A as AppAccessLevel, F as FancoilSpeedState, t as ProjectAccessLevel, s as RobotCloudPermissionsHelper, u as ServiceInstanceDeviceConfig, r as robotCloudPermissionsHelper } from './index-Tc3Ol2py.mjs';
3
+ import { R as RobotCloudNamedItem, P as PaginableRequestParams, S as SubsystemRequestParams, a as ServiceInstanceDataRequestParams, b as RobotCloudServiceType, L as LocationServiceInstancesRequestParams, c as RobotCloudUserDetails, d as ProjectRequestParams, e as RobotCloudProject, f as ProjectDetailsRequestParams, g as RobotCloudProjectDetails, h as ProjectLocationsRequestParams, i as ServiceInstancesRequestParams, j as ProjectTagRequestParams, k as RobotCloudDeviceDetails, l as RobotCloudServiceTypeDetails, m as RoomGrouping1DataEventValue, n as RoomGrouping1InstanceDeviceConfig, o as RegimState, T as TemperatureUnit, p as RoomClime1AlertEventValue, q as RoomConsumes1AlertEventValue } from './index-DBueovyV.mjs';
4
+ export { A as AppAccessLevel, F as FancoilSpeedState, O as OrganizationAccessLevel, t as ProjectAccessLevel, s as RobotCloudPermissionsHelper, u as ServiceInstanceDeviceConfig, r as robotCloudPermissionsHelper } from './index-DBueovyV.mjs';
5
5
 
6
6
  declare const robotcloudApi: axios.AxiosInstance;
7
7
 
@@ -335,8 +335,8 @@ declare class AirQualityClient implements ServiceTypeClient<AirQuality1AlertEven
335
335
  getAlerts(prjId: string, params?: ServiceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>>;
336
336
  getData(prjId: string, params?: ServiceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
337
337
  getInstanceConfiguration<T>(prjId: string, instanceId: string): Promise<AxiosResponse<T>>;
338
- putInstanceConfiguration<T>(prjId: string, instanceId: string, data: T): Promise<AxiosResponse<T>>;
339
338
  getInstanceData(prjId: string, instanceId: string, params?: ServiceInstanceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>>;
339
+ putInstanceConfiguration<T>(prjId: string, instanceId: string, data: T): Promise<AxiosResponse<T>>;
340
340
  getInstanceHistoric(prjId: string, instanceId: string, startTime: Date, endTime: Date, params: ServiceInstanceHistoricParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
341
341
  getInstanceHistoricAggregate(prjId: string, instanceId: string, startTime: Date, endTime: Date, aggFunction: HistoricAggregateFunction, periode: string, params: ServiceInstanceHistoricAggregateParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
342
342
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as axios from 'axios';
2
2
  import { AxiosResponse } from 'axios';
3
- import { R as RobotCloudNamedItem, P as PaginableRequestParams, S as SubsystemRequestParams, a as ServiceInstanceDataRequestParams, b as RobotCloudServiceType, L as LocationServiceInstancesRequestParams, c as RobotCloudUserDetails, d as ProjectRequestParams, e as RobotCloudProject, f as ProjectDetailsRequestParams, g as RobotCloudProjectDetails, h as ProjectLocationsRequestParams, i as ServiceInstancesRequestParams, j as ProjectTagRequestParams, k as RobotCloudDeviceDetails, l as RobotCloudServiceTypeDetails, m as RoomGrouping1DataEventValue, n as RoomGrouping1InstanceDeviceConfig, o as RegimState, T as TemperatureUnit, p as RoomClime1AlertEventValue, q as RoomConsumes1AlertEventValue } from './index-Tc3Ol2py.js';
4
- export { A as AppAccessLevel, F as FancoilSpeedState, t as ProjectAccessLevel, s as RobotCloudPermissionsHelper, u as ServiceInstanceDeviceConfig, r as robotCloudPermissionsHelper } from './index-Tc3Ol2py.js';
3
+ import { R as RobotCloudNamedItem, P as PaginableRequestParams, S as SubsystemRequestParams, a as ServiceInstanceDataRequestParams, b as RobotCloudServiceType, L as LocationServiceInstancesRequestParams, c as RobotCloudUserDetails, d as ProjectRequestParams, e as RobotCloudProject, f as ProjectDetailsRequestParams, g as RobotCloudProjectDetails, h as ProjectLocationsRequestParams, i as ServiceInstancesRequestParams, j as ProjectTagRequestParams, k as RobotCloudDeviceDetails, l as RobotCloudServiceTypeDetails, m as RoomGrouping1DataEventValue, n as RoomGrouping1InstanceDeviceConfig, o as RegimState, T as TemperatureUnit, p as RoomClime1AlertEventValue, q as RoomConsumes1AlertEventValue } from './index-DBueovyV.js';
4
+ export { A as AppAccessLevel, F as FancoilSpeedState, O as OrganizationAccessLevel, t as ProjectAccessLevel, s as RobotCloudPermissionsHelper, u as ServiceInstanceDeviceConfig, r as robotCloudPermissionsHelper } from './index-DBueovyV.js';
5
5
 
6
6
  declare const robotcloudApi: axios.AxiosInstance;
7
7
 
@@ -335,8 +335,8 @@ declare class AirQualityClient implements ServiceTypeClient<AirQuality1AlertEven
335
335
  getAlerts(prjId: string, params?: ServiceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>>;
336
336
  getData(prjId: string, params?: ServiceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
337
337
  getInstanceConfiguration<T>(prjId: string, instanceId: string): Promise<AxiosResponse<T>>;
338
- putInstanceConfiguration<T>(prjId: string, instanceId: string, data: T): Promise<AxiosResponse<T>>;
339
338
  getInstanceData(prjId: string, instanceId: string, params?: ServiceInstanceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>>;
339
+ putInstanceConfiguration<T>(prjId: string, instanceId: string, data: T): Promise<AxiosResponse<T>>;
340
340
  getInstanceHistoric(prjId: string, instanceId: string, startTime: Date, endTime: Date, params: ServiceInstanceHistoricParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
341
341
  getInstanceHistoricAggregate(prjId: string, instanceId: string, startTime: Date, endTime: Date, aggFunction: HistoricAggregateFunction, periode: string, params: ServiceInstanceHistoricAggregateParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>>;
342
342
  }
package/dist/index.js CHANGED
@@ -321,7 +321,7 @@ var validateToken = async (access_token) => {
321
321
  return true;
322
322
  };
323
323
 
324
- // src/client/services/room-clime-1.ts
324
+ // src/client/services/room-clime-1.mock.ts
325
325
  var RoomClimeClient = class {
326
326
  getAlerts(prjId, params) {
327
327
  return robotCloudApi_default.get(
@@ -365,35 +365,27 @@ var RoomClimeClient = class {
365
365
  );
366
366
  }
367
367
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
368
- return robotCloudApi_default.get(
369
- `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data`,
370
- {
371
- params: {
372
- start_time: startTime,
373
- end_time: endTime,
374
- ...params
375
- }
376
- }
377
- );
368
+ return new Promise((resolve, reject) => {
369
+ fetch("./mock-historic-clime-data-sample.json").then((response) => response.json()).then(
370
+ (json) => resolve({
371
+ data: json
372
+ })
373
+ );
374
+ });
378
375
  }
379
376
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
380
- return robotCloudApi_default.get(
381
- `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data/aggregate`,
382
- {
383
- params: {
384
- start_time: startTime,
385
- end_time: endTime,
386
- function: aggFunction,
387
- periode,
388
- ...params
389
- }
390
- }
391
- );
377
+ return new Promise((resolve, reject) => {
378
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-clime-data-sample.json`).then((response) => response.json()).then(
379
+ (json) => resolve({
380
+ data: json
381
+ })
382
+ );
383
+ });
392
384
  }
393
385
  };
394
386
  var roomClimeClient = new RoomClimeClient();
395
387
 
396
- // src/client/services/room-guest-status-1.ts
388
+ // src/client/services/room-guest-status-1.mock.ts
397
389
  var RoomGuestStatusClient = class {
398
390
  constructor() {
399
391
  this.getInstanceData = (prjId, instanceId, params) => {
@@ -443,7 +435,7 @@ var RoomGuestStatusClient = class {
443
435
  }
444
436
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
445
437
  return new Promise((resolve, reject) => {
446
- fetch("./historic-guest-status-data-sample.json").then((response) => response.json()).then(
438
+ fetch("./mock-historic-guest-status-data-sample.json").then((response) => response.json()).then(
447
439
  (json) => resolve({
448
440
  data: json
449
441
  })
@@ -451,23 +443,18 @@ var RoomGuestStatusClient = class {
451
443
  });
452
444
  }
453
445
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
454
- return robotCloudApi_default.get(
455
- `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`,
456
- {
457
- params: {
458
- start_time: startTime,
459
- end_time: endTime,
460
- function: aggFunction,
461
- periode,
462
- ...params
463
- }
464
- }
465
- );
446
+ return new Promise((resolve, reject) => {
447
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-guest-status-data-sample.json`).then((response) => response.json()).then(
448
+ (json) => resolve({
449
+ data: json
450
+ })
451
+ );
452
+ });
466
453
  }
467
454
  };
468
455
  var roomGuestStatusClient = new RoomGuestStatusClient();
469
456
 
470
- // src/client/services/air-quality-1.ts
457
+ // src/client/services/air-quality-1.mock.ts
471
458
  var AirQualityClient = class {
472
459
  getAlerts(prjId, params) {
473
460
  return robotCloudApi_default.get(
@@ -494,9 +481,6 @@ var AirQualityClient = class {
494
481
  getInstanceConfiguration(prjId, instanceId) {
495
482
  throw Error("Not implemented method");
496
483
  }
497
- putInstanceConfiguration(prjId, instanceId, data) {
498
- throw Error("Not implemented method");
499
- }
500
484
  getInstanceData(prjId, instanceId, params) {
501
485
  return robotCloudApi_default.get(
502
486
  `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,
@@ -508,6 +492,9 @@ var AirQualityClient = class {
508
492
  }
509
493
  );
510
494
  }
495
+ putInstanceConfiguration(prjId, instanceId, data) {
496
+ throw Error("Not implemented method");
497
+ }
511
498
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
512
499
  return robotCloudApi_default.get(
513
500
  `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`,
@@ -521,7 +508,14 @@ var AirQualityClient = class {
521
508
  );
522
509
  }
523
510
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
524
- throw Error("Not implemented method");
511
+ return new Promise((resolve, reject) => {
512
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-air-quality-data-sample.json`).then((response) => response.json()).then(
513
+ (json) => resolve({
514
+ data: json,
515
+ status: 200
516
+ })
517
+ );
518
+ });
525
519
  }
526
520
  };
527
521
  var airQualityClient = new AirQualityClient();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/robotCloudApi.ts","../src/config.ts","../src/utils/logger.ts","../src/robotCloudClient.ts","../src/helpers/robotCloudToken.ts","../src/client/services/room-clime-1.ts","../src/client/services/room-guest-status-1.ts","../src/client/services/air-quality-1.ts","../src/client/services/room-consumes-1.ts","../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import robotcloudApi from \"robotCloudApi\"\nimport clientConfig from \"config\"\n\nexport * as robotcloudClient from \"robotCloudClient\"\nexport * as robotCloudToken from \"helpers/robotCloudToken\"\n\nexport * from \"client/services\"\nexport * from \"config\"\n\nexport * from \"helpers\"\nexport {\n robotcloudApi,\n clientConfig\n}\n\nexport type * from \"../types/ProjectClassifer\"\nexport type * from \"../types/ProjectTag\"\nexport type * from \"../types/RobotCloudClient\"\nexport type * from \"../types/services\"\nexport type * from \"../types/services-configuration\"\nexport type * from \"../types/services-data\"\nexport type * from \"../types/ServiceInstance\"\nexport type * from \"../types/ServiceInstanceRead\"\nexport type * from \"../types/Token\"\n","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig, ServiceInstanceDataRequestParams, \n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import axios from \"axios\";\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { CheckTokenResponse, RobotCloudJWTPayload } from \"../../types/Token\";\nimport clientConfig from \"config\";\n\nconst logger = useLogger(\"robotcloud-token\")\n\n\nfunction parseJwt(token: string) {\n if (!token) {\n return;\n }\n return JSON.parse(atob(token.split('.')[1])); \n}\n\nexport interface RobotCloudNewTokenResponse {\n access: string;\n renew: string;\n}\n\nexport const decodeToken = (token: string): RobotCloudJWTPayload | undefined => {\n const payload = parseJwt(token);\n if (!payload) {\n return undefined\n }\n\n return payload as RobotCloudJWTPayload;\n};\n\nexport const isTokenExpired = (payload: RobotCloudJWTPayload): boolean => {\n const expirationDate = new Date(payload.exp * 1000);\n expirationDate.setMinutes(\n expirationDate.getMinutes() - clientConfig.tokenMinutesBeforeExpirationRenew\n );\n const currentDate = new Date();\n return currentDate >= expirationDate;\n};\n\nexport const renewToken = async (\n renew_token: string\n): Promise<CheckTokenResponse> => {\n logger.debug(\"Renewing token ...\");\n const cloudUrl = robotcloudApi.defaults.baseURL\n const { data } = await axios.get(cloudUrl + \"login/renew\", {\n headers: {\n Authorization: `Bearer ${renew_token}`,\n },\n });\n\n return {\n renewed: true,\n access: data[\"access\"][\"token\"],\n renew: data[\"renew\"][\"token\"],\n } as CheckTokenResponse;\n};\n\nexport const validateToken = async (\n access_token: string\n): Promise<boolean> => {\n logger.debug(\"Validate token ...\");\n const payload = decodeToken(access_token)\n if (!payload) {\n return false\n }\n const cloudUrl = robotcloudApi.defaults.baseURL\n try {\n const { data } = await axios.get(\n cloudUrl + `users/${payload.sub}`,\n {\n headers: {\n Authorization: `Bearer ${access_token}`,\n },\n }\n ); \n } catch (error) {\n if (axios.isAxiosError(error)) {\n logger.warn(`${error.message}: ${error.response?.data?.message ?? ''}`)\n } else {\n logger.warn(error)\n }\n return false;\n }\n\n return true\n};\n","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n RoomClime1AlertEventValue,\n ServiceInstanceDataRequestParams,\n} from \"../../../types/RobotCloudClient\";\nimport { \n ServiceDataMeasurement, ServiceDataRequestParams, ServiceInstanceHistoricParams, ServiceTypeClient,\n HistoricAggregateFunction,\n ServiceInstanceHistoricAggregateParams\n} from \"../../../types/services\";\nimport { RoomClime1Data } from \"../../../types/services-data\";\nimport { RoomClimeConfigurationParams } from \"../../../types/services-configuration\";\n\n\nclass RoomClimeClient implements ServiceTypeClient< RoomClime1AlertEventValue, \n RoomClime1Data, \n RoomClimeConfigurationParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomClime_1/alert`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/data`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.get<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomClimeConfigurationParams\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.put<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>> (\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/data`,\n { \n params\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data/aggregate`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n function: aggFunction,\n periode,\n ...params\n }\n }\n )\n }\n}\n\n\nexport const roomClimeClient = new RoomClimeClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction,\n RoomGuestStatus1AlertEventValue,\n RoomGuestStatus1EventValue,\n RoomGuestStatusInstanceConfigParams,\n ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass RoomGuestStatusClient implements ServiceTypeClient< RoomGuestStatus1AlertEventValue, \n RoomGuestStatus1EventValue, \n RoomGuestStatusInstanceConfigParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.get<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomGuestStatusInstanceConfigParams\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.put<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n // return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n // `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data`, {\n // params: {\n // start_time: startTime,\n // end_time: endTime,\n // ...params\n // }\n // }\n // )\n return new Promise((resolve, reject) => {\n fetch('./historic-guest-status-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n function: aggFunction,\n periode,\n ...params\n }\n }\n )\n }\n}\n\nexport const roomGuestStatusClient = new RoomGuestStatusClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n AirQuality1AlertEventValue, AirQuality1DataEventValue, HistoricAggregateFunction, ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass AirQualityClient implements ServiceTypeClient<AirQuality1AlertEventValue, \n AirQuality1DataEventValue,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const airQualityClient = new AirQualityClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction, ServiceDataMeasurement, ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { \n RoomConsumes1AlertEventValue, ServiceInstanceDataRequestParams \n} from \"../../../types/RobotCloudClient\";\nimport { RoomConsumes1Data } from \"../../../types/services-data\";\n\nclass RoomConsumesClient implements ServiceTypeClient<RoomConsumes1AlertEventValue, \n RoomConsumes1Data,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const roomConsumesClient = new RoomConsumesClient()","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAkB;;;ACEX,IAAM,yBAAN,MAA6B;AAAA,EAA7B;AAEH,SAAQ,cAAc,YAA6B;AAAE,aAAO;AAAA,IAAE;AAE9D,SAAO,oCAA4C;AAAA;AAAA,EAGnD,IAAI,QAAQ,OAAc;AACtB,0BAAc,SAAS,UAAU;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,UAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW,KAA4B;AACvC,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,IAAI,aAAoC;AACpC,WAAO,KAAK;AAAA,EAChB;AACJ;AAEA,IAAM,eAAe,IAAI,uBAAuB;AAChD,IAAO,iBAAQ;;;AC5Bf,qBAA8B;AAGvB,SAAS,UAAW,KAAc,UAAmC,EAAE,OAAO,IAAK,GAAG;AACzF,SAAO,UAAM,8BAAc,OAAO,EAAE,QAAQ,GAAG,QAAI,8BAAc,OAAO;AAC5E;;;AFDA,IAAM,SAAS,UAAU,gBAAgB;AAEzC,IAAM,gBAAgB,aAAAA,QAAM,OAAO;AAEnC,IAAI,oBAAwD;AAC5D,IAAM,eAAe,MAAM,oBAAoB;AAE/C,eAAe,aAAa,YAA+C;AACvE,QAAM,eAAe,MAAM,WAAW;AACtC,SAAO;AACX;AAIA,cAAc,aAAa,QAAQ;AAAA,EAC/B,OAAM,WAAU;AACZ,WAAO,KAAK,+BAA+B,OAAO,GAAG;AACrD,QAAI,CAAC,mBAAmB;AACpB,0BAAoB,aAAa,eAAa,UAAU,EAAE,QAAQ,YAAY;AAAA,IAClF;AAGA,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,gBAAgB,UAAU,KAAK;AAC9C,WAAO;AAAA,EACX;AAAA,EACA,WAAS;AACL,WAAO,MAAM,KAAK;AAClB,YAAQ,OAAO,KAAK;AAAA,EAC1B;AAAC;AAEH,IAAO,wBAAQ;;;AGvCf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,IAAMC,UAAS,UAAU,mBAAmB;AAYrC,IAAM,8BAA8B,CACzC,OACA,OACA,cACA,WACwD;AACxD,SAAO,sBAAc,IAAiC,YAAY,KAAK,cAAc,KAAK,aAAa,YAAY,cAAc;AAAA,IAC/H;AAAA,EACF,CAAC;AACH;AAIO,IAAM,UAAU,CACnB,aACkD;AAClD,SAAO,sBAAc,IAA2B,SAAS,QAAQ,EAAE;AACrE;AAGK,IAAM,cAAc,CACzB,WACgD;AAChD,SAAO,sBAAc,IAAyB,YAAY;AAAA,IACxD;AAAA,EACF,CAAC;AACH;AAEO,IAAM,oBAAoB,CAC/B,OACA,WACqD;AACrD,SAAO,sBAAc,IAA8B,YAAY,KAAK,IAAI;AAAA,IACtE;AAAA,EACF,CAAC;AACH;AAIO,IAAM,sBAAsB,CACjC,OACA,aACG;AACH,SAAO,sBAAc,IAAyB,YAAY,KAAK,eAAe,QAAQ,EAAE;AAC1F;AAEO,IAAM,eAAe,CAC1B,OACA,WACkD;AAClD,SAAO,sBAAc,IAA2B,YAAY,KAAK,cAAc;AAAA,IAC7E;AAAA,EACF,CAAC;AACH;AAEO,IAAM,cAAc,CACzB,eACsD;AACtD,SAAO,sBAAc,IAA+B,aAAa,UAAU,IAAI,CAAE,CAAC;AACpF;AAEO,IAAM,sBAAsB,CACjC,OACA,cACA,WACwD;AACxD,SAAO,sBAAc,IAAiC,YAAY,KAAK,aAAa,YAAY,cAAc;AAAA,IAC5G;AAAA,EACF,CAAC;AACH;AAEO,IAAM,qBAAqB,CAChC,OACA,cACA,eACG;AACH,SAAO,sBAAc,IAA4B,YAAY,KAAK,aAAa,YAAY,cAAc,UAAU,EAAE;AACvH;AAEO,IAAM,wBAAwB,CACnC,OACA,WACyC;AACvC,EAAAA,QAAO,KAAK,eAAe,KAAK,cAAc;AAC9C,SAAO,sBAAc,IAAkB,YAAY,KAAK,gBAAgB;AAAA,IACpE;AAAA,EACJ,CAAC;AACL;AAEO,IAAM,gBAAgB,CAC3B,iBACG;AACH,SAAO,sBAAc,IAAuB,eAAe,YAAY,EAAE;AAC3E;AAEO,IAAM,UAAU,CACrB,OACA,WACyC;AACvC,EAAAA,QAAO,KAAK,eAAe,KAAK,OAAO;AACzC,SAAO,sBAAc,IAAkB,YAAY,KAAK,SAAS;AAAA,IAC/D;AAAA,EACF,CAAC;AACH;AAEO,IAAM,cAAc,OACzB,OACA,WAAmB,GACnB,WAC6B;AAC3B,EAAAA,QAAO,KAAK,eAAe,KAAK,YAAY;AAC9C,MAAI,CAAC,QAAQ;AACX,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,YAAY;AAEnB,QAAM,OAAO,MAAM,gBAAgB,OAAO,GAAG,QAAW,QAAW,QAAQ;AAC3E,SAAO,EAAC,MAAM,KAAI;AACpB;AAEO,IAAM,kBAAkB,OAC7B,OACA,QAAgB,GAChB,WACA,QACA,aACkC;AAChC,EAAAA,QAAO,MAAM,eAAe,KAAK,mBAAmB,SAAS,EAAE;AACjE,MAAI,CAAC,QAAQ;AACX,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,YAAY,CAAC;AACpB,SAAO,aAAa;AAEpB,QAAM,OAAO,MAAM,QAAQ,OAAO,MAAM;AACxC,MAAI,KAAK,KAAK,UAAU,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAiC,CAAC;AACxC,QAAM,WAAkB,CAAC;AACzB,WAASC,KAAI,GAAGA,KAAI,KAAK,KAAK,QAAQA,MAAK;AACzC,UAAM,UAAU,KAAK,KAAKA,EAAC;AAC3B,UAAM,OAAO;AAAA,MACX,KAAK;AAAA,IACP;AACA,aAAS,KAAK,IAAI;AAClB,QAAI,YAAY,QAAQ,UAAU;AAChC,eAAS;AAAA,QACP,gBAAgB,OAAO,QAAQ,GAAG,QAAQ,IAAI,QAAQ,QAAQ;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,QAAQ,IAAI,QAAQ;AAC5C,MAAI,IAAI;AACR,YAAU,QAAQ,aAAW;AAC3B,aAAS,CAAC,EAAE,WAAW;AACvB;AAAA,EACF,CAAC;AAED,SAAO;AAET;AAGO,IAAM,mBAAmB,CAC9B,aACoD;AACpD,SAAO,sBAAc,IAA6B,WAAW,QAAQ,EAAE;AACzE;AAGO,IAAM,yBAAyB,CAClC,OACA,WACyD;AACzD,SAAO,sBAAc,IAAoC,YAAY,KAAK,aAAa;AAAA,IACnF;AAAA,EACJ,CAAC;AACL;AAGO,IAAM,8BAA8B,CACzC,OACA,WACkF;AAClF,SAAO,sBAAc;AAAA,IACnB,aAAa,KAAK;AAAA,IAClB;AAAA,MACE;AAAA,MACA,SAAS;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACF;AAKO,IAAM,uCAAuC,CAClD,OACA,eAC8D;AAC9D,SAAO,sBAAc;AAAA,IACnB,aAAa,KAAK,sCAAsC,UAAU;AAAA,EACpE;AACF;;;AC/OA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,gBAAkB;AAMlB,IAAMC,UAAS,UAAU,kBAAkB;AAG3C,SAAS,SAAS,OAAe;AAC7B,MAAI,CAAC,OAAO;AACV;AAAA,EACF;AACA,SAAO,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/C;AAOO,IAAM,cAAc,CAAC,UAAoD;AAC9E,QAAM,UAAU,SAAS,KAAK;AAC9B,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,iBAAiB,CAAC,YAA2C;AACxE,QAAM,iBAAiB,IAAI,KAAK,QAAQ,MAAM,GAAI;AAClD,iBAAe;AAAA,IACb,eAAe,WAAW,IAAI,eAAa;AAAA,EAC7C;AACA,QAAM,cAAc,oBAAI,KAAK;AAC7B,SAAO,eAAe;AACxB;AAEO,IAAM,aAAa,OACxB,gBACgC;AAC9B,EAAAA,QAAO,MAAM,oBAAoB;AACjC,QAAM,WAAW,sBAAc,SAAS;AACxC,QAAM,EAAE,KAAK,IAAI,MAAM,cAAAC,QAAM,IAAI,WAAW,eAAe;AAAA,IACvD,SAAS;AAAA,MACL,eAAe,UAAU,WAAW;AAAA,IACxC;AAAA,EACJ,CAAC;AAEH,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ,KAAK,QAAQ,EAAE,OAAO;AAAA,IAC9B,OAAO,KAAK,OAAO,EAAE,OAAO;AAAA,EAC9B;AACF;AAEO,IAAM,gBAAgB,OACzB,iBACmB;AA3DvB;AA4DI,EAAAD,QAAO,MAAM,oBAAoB;AACjC,QAAM,UAAU,YAAY,YAAY;AACxC,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AACA,QAAM,WAAW,sBAAc,SAAS;AACxC,MAAI;AACA,UAAM,EAAE,KAAK,IAAI,MAAM,cAAAC,QAAM;AAAA,MACzB,WAAW,SAAS,QAAQ,GAAG;AAAA,MAC/B;AAAA,QACI,SAAS;AAAA,UACL,eAAe,UAAU,YAAY;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,SAAS,OAAO;AACZ,QAAI,cAAAA,QAAM,aAAa,KAAK,GAAG;AAC3B,MAAAD,QAAO,KAAK,GAAG,MAAM,OAAO,MAAK,uBAAM,aAAN,mBAAgB,SAAhB,mBAAsB,YAAtB,YAAiC,EAAE,EAAE;AAAA,IAC1E,OAAO;AACH,MAAAA,QAAO,KAAK,KAAK;AAAA,IACrB;AACA,WAAO;AAAA,EACX;AAEA,SAAO;AACX;;;ACrEA,IAAM,kBAAN,MAEkF;AAAA,EAE9E,UACI,OACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACI;AAAA,QACA,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QACI,OACA,QACgE;AAChE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACI;AAAA,QACA,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACoD;AACpD,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,IACnE;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACA,MACoD;AACpD,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAC/D;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,gBACI,OACA,YACA,QAC8D;AAC9D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAC/D;AAAA,QACI;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,oBACI,OACA,YACA,WACA,SACA,QACgE;AAChE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAAkB;AAAA,QAC7E,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QACgE;AAChE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAA4B;AAAA,QACvF,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,UAAU;AAAA,UACV;AAAA,UACA,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAGO,IAAM,kBAAkB,IAAI,gBAAgB;;;AC7GnD,IAAM,wBAAN,MAEiG;AAAA,EAFjG;AAsDI,2BAAkB,CACd,OACA,YACA,WAC6E;AAC7E,aAAO,sBAAc;AAAA,QACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,QAClE;AAAA,UACI;AAAA,UACA,SAAS;AAAA,YACL,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAhEA,UACI,OACA,QACiF;AACjF,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QAC4E;AAC5E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YAC2D;AAC3D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,yCAAyC,UAAU;AAAA,IACzE;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACA,MAC2D;AAC3D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,yCAAyC,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,EACN;AAAA,EAkBA,oBACI,OACA,YACA,WACA,SACA,QAC4E;AAU5E,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,0CAA0C,EAC3C,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,QACV,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QAC4E;AAC5E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,yCAAyC,UAAU;AAAA,MAA4B;AAAA,QAC7F,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,UAAU;AAAA,UACV;AAAA,UACA,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAEO,IAAM,wBAAwB,IAAI,sBAAsB;;;AC3H/D,IAAM,mBAAN,MAEyD;AAAA,EAErD,UACI,OACA,QAC4E;AAC5E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,yBACI,OACA,YACA,MACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,gBACI,OACA,YACA,QACyE;AACzE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,oCAAoC,UAAU;AAAA,MAChE;AAAA,QACI;AAAA,QACA,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,oBACI,OACA,YACA,WACA,SACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,oCAAoC,UAAU;AAAA,MAAkB;AAAA,QAC9E,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QAC2E;AAC3E,UAAM,MAAM,wBAAwB;AAAA,EACxC;AACJ;AAGO,IAAM,mBAAmB,IAAI,iBAAiB;;;AChGrD,IAAM,qBAAN,MAEyD;AAAA,EAFzD;AAiDI,2BAAkB,CACd,OACA,YACA,WACoE;AACpE,aAAO,sBAAc;AAAA,QACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,QAClE;AAAA,UACI;AAAA,UACA,SAAS;AAAA,YACL,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EA3DA,UACI,OACA,QAC8E;AAC9E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QACmE;AACnE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,yBACI,OACA,YACA,MACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAkBA,oBACI,OACA,YACA,WACA,SACA,QACmE;AACnE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,MAAkB;AAAA,QAChF,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QACmE;AACnE,UAAM,MAAM,wBAAwB;AAAA,EACxC;AACJ;AAGO,IAAM,qBAAqB,IAAI,mBAAmB;;;ACjGzD,IAAM,kCAAN,MAA6E;AAAA,EAEzE,MAAa,mBAAmB,OAAe,yBAA+D;AAE1G,UAAM,EAAE,MAAM,QAAO,IAAI,MAAuB,kBAAkB,KAAK;AACvE,QAAI,QAAQ,gBAAgB,yBAAyB;AACjD,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,eAAe,SAAS,uBAAuB;AAAA,EAC/D;AAAA,EAEO,eAAe,SAAmC,yBAA6C;AAElG,YAAQ,yBAAyB;AAAA,MAC7B,KAAK;AACD,eAAO,QAAQ,gBAAgB;AAAA,MACnC,KAAK;AACD,eAAO,QAAQ,gBAAgB,WAAW,QAAQ,gBAAgB;AAAA,MACtE,KAAK;AACD,eAAO,QAAQ,gBAAgB,gBAAgB,QAAQ,gBAAgB,WAC/D,QAAQ,gBAAgB;AAAA,MACpC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEO,kBAAkB,SAAmC,6BAAsD;AAC9G,YAAQ,6BAA6B;AAAA,MACjC,KAAK;AACD,eAAO,QAAQ,oBAAoB;AAAA,MACvC,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB;AAAA,MACjF,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,cACrE,QAAQ,oBAAoB;AAAA,MACxC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AAEO,IAAM,8BAA2D,IAAI,gCAAgC;","names":["axios","logger","i","import_axios","logger","axios"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/robotCloudApi.ts","../src/config.ts","../src/utils/logger.ts","../src/robotCloudClient.ts","../src/helpers/robotCloudToken.ts","../src/client/services/room-clime-1.mock.ts","../src/client/services/room-guest-status-1.mock.ts","../src/client/services/air-quality-1.mock.ts","../src/client/services/room-consumes-1.ts","../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import robotcloudApi from \"robotCloudApi\"\nimport clientConfig from \"config\"\n\nexport * as robotcloudClient from \"robotCloudClient\"\nexport * as robotCloudToken from \"helpers/robotCloudToken\"\n\nexport * from \"client/services\"\nexport * from \"config\"\n\nexport * from \"helpers\"\nexport {\n robotcloudApi,\n clientConfig\n}\n\nexport type * from \"../types/ProjectClassifer\"\nexport type * from \"../types/ProjectTag\"\nexport type * from \"../types/RobotCloudClient\"\nexport type * from \"../types/services\"\nexport type * from \"../types/services-configuration\"\nexport type * from \"../types/services-data\"\nexport type * from \"../types/ServiceInstance\"\nexport type * from \"../types/ServiceInstanceRead\"\nexport type * from \"../types/Token\"\n","import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig,\n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import axios from \"axios\";\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { CheckTokenResponse, RobotCloudJWTPayload } from \"../../types/Token\";\nimport clientConfig from \"config\";\n\nconst logger = useLogger(\"robotcloud-token\")\n\n\nfunction parseJwt(token: string) {\n if (!token) {\n return;\n }\n return JSON.parse(atob(token.split('.')[1])); \n}\n\nexport interface RobotCloudNewTokenResponse {\n access: string;\n renew: string;\n}\n\nexport const decodeToken = (token: string): RobotCloudJWTPayload | undefined => {\n const payload = parseJwt(token);\n if (!payload) {\n return undefined\n }\n\n return payload as RobotCloudJWTPayload;\n};\n\nexport const isTokenExpired = (payload: RobotCloudJWTPayload): boolean => {\n const expirationDate = new Date(payload.exp * 1000);\n expirationDate.setMinutes(\n expirationDate.getMinutes() - clientConfig.tokenMinutesBeforeExpirationRenew\n );\n const currentDate = new Date();\n return currentDate >= expirationDate;\n};\n\nexport const renewToken = async (\n renew_token: string\n): Promise<CheckTokenResponse> => {\n logger.debug(\"Renewing token ...\");\n const cloudUrl = robotcloudApi.defaults.baseURL\n const { data } = await axios.get(cloudUrl + \"login/renew\", {\n headers: {\n Authorization: `Bearer ${renew_token}`,\n },\n });\n\n return {\n renewed: true,\n access: data[\"access\"][\"token\"],\n renew: data[\"renew\"][\"token\"],\n } as CheckTokenResponse;\n};\n\nexport const validateToken = async (\n access_token: string\n): Promise<boolean> => {\n logger.debug(\"Validate token ...\");\n const payload = decodeToken(access_token)\n if (!payload) {\n return false\n }\n const cloudUrl = robotcloudApi.defaults.baseURL\n try {\n const { data } = await axios.get(\n cloudUrl + `users/${payload.sub}`,\n {\n headers: {\n Authorization: `Bearer ${access_token}`,\n },\n }\n ); \n } catch (error) {\n if (axios.isAxiosError(error)) {\n logger.warn(`${error.message}: ${error.response?.data?.message ?? ''}`)\n } else {\n logger.warn(error)\n }\n return false;\n }\n\n return true\n};\n","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n RoomClime1AlertEventValue,\n ServiceInstanceDataRequestParams, \n} from \"../../../types/RobotCloudClient\";\nimport { \n ServiceDataMeasurement, ServiceDataRequestParams, ServiceInstanceHistoricParams, ServiceTypeClient,\n HistoricAggregateFunction,\n ServiceInstanceHistoricAggregateParams\n} from \"../../../types/services\";\nimport { RoomClime1Data } from \"../../../types/services-data\";\nimport { RoomClimeConfigurationParams } from \"../../../types/services-configuration\";\n\n\nclass RoomClimeClient implements ServiceTypeClient< RoomClime1AlertEventValue, \n RoomClime1Data, \n RoomClimeConfigurationParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomClime_1/alert`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/data`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.get<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomClimeConfigurationParams\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.put<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`,\n data\n )\n }\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>> (\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/data`,\n { \n params\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return new Promise((resolve, reject) => {\n fetch('./mock-historic-clime-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-clime-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n}\n\n\nexport const roomClimeClient = new RoomClimeClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction,\n RoomGuestStatus1AlertEventValue,\n RoomGuestStatus1EventValue,\n RoomGuestStatusInstanceConfigParams,\n ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass RoomGuestStatusClient implements ServiceTypeClient< RoomGuestStatus1AlertEventValue, \n RoomGuestStatus1EventValue, \n RoomGuestStatusInstanceConfigParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.get<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomGuestStatusInstanceConfigParams\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.put<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return new Promise((resolve, reject) => {\n fetch('./mock-historic-guest-status-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n // return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n // `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`, {\n // params: {\n // start_time: startTime,\n // end_time: endTime,\n // function: aggFunction,\n // periode,\n // ...params\n // }\n // }\n // )\n\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-guest-status-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n}\n\nexport const roomGuestStatusClient = new RoomGuestStatusClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n AirQuality1AlertEventValue, AirQuality1DataEventValue, HistoricAggregateFunction, ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass AirQualityClient implements ServiceTypeClient<AirQuality1AlertEventValue, \n AirQuality1DataEventValue,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n \n getInstanceData(prjId: string, instanceId: string, params?: ServiceInstanceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n // throw Error(\"Not implemented method\")\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-air-quality-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json,\n status: 200\n } as AxiosResponse)\n );\n })\n }\n}\n\n\nexport const airQualityClient = new AirQualityClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction, ServiceDataMeasurement, ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { \n RoomConsumes1AlertEventValue, ServiceInstanceDataRequestParams \n} from \"../../../types/RobotCloudClient\";\nimport { RoomConsumes1Data } from \"../../../types/services-data\";\n\nclass RoomConsumesClient implements ServiceTypeClient<RoomConsumes1AlertEventValue, \n RoomConsumes1Data,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const roomConsumesClient = new RoomConsumesClient()","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":"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","names":["axios","logger","i","import_axios","logger","axios"]}
package/dist/index.mjs CHANGED
@@ -282,7 +282,7 @@ var validateToken = async (access_token) => {
282
282
  return true;
283
283
  };
284
284
 
285
- // src/client/services/room-clime-1.ts
285
+ // src/client/services/room-clime-1.mock.ts
286
286
  var RoomClimeClient = class {
287
287
  getAlerts(prjId, params) {
288
288
  return robotCloudApi_default.get(
@@ -326,35 +326,27 @@ var RoomClimeClient = class {
326
326
  );
327
327
  }
328
328
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
329
- return robotCloudApi_default.get(
330
- `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data`,
331
- {
332
- params: {
333
- start_time: startTime,
334
- end_time: endTime,
335
- ...params
336
- }
337
- }
338
- );
329
+ return new Promise((resolve, reject) => {
330
+ fetch("./mock-historic-clime-data-sample.json").then((response) => response.json()).then(
331
+ (json) => resolve({
332
+ data: json
333
+ })
334
+ );
335
+ });
339
336
  }
340
337
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
341
- return robotCloudApi_default.get(
342
- `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data/aggregate`,
343
- {
344
- params: {
345
- start_time: startTime,
346
- end_time: endTime,
347
- function: aggFunction,
348
- periode,
349
- ...params
350
- }
351
- }
352
- );
338
+ return new Promise((resolve, reject) => {
339
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-clime-data-sample.json`).then((response) => response.json()).then(
340
+ (json) => resolve({
341
+ data: json
342
+ })
343
+ );
344
+ });
353
345
  }
354
346
  };
355
347
  var roomClimeClient = new RoomClimeClient();
356
348
 
357
- // src/client/services/room-guest-status-1.ts
349
+ // src/client/services/room-guest-status-1.mock.ts
358
350
  var RoomGuestStatusClient = class {
359
351
  constructor() {
360
352
  this.getInstanceData = (prjId, instanceId, params) => {
@@ -404,7 +396,7 @@ var RoomGuestStatusClient = class {
404
396
  }
405
397
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
406
398
  return new Promise((resolve, reject) => {
407
- fetch("./historic-guest-status-data-sample.json").then((response) => response.json()).then(
399
+ fetch("./mock-historic-guest-status-data-sample.json").then((response) => response.json()).then(
408
400
  (json) => resolve({
409
401
  data: json
410
402
  })
@@ -412,23 +404,18 @@ var RoomGuestStatusClient = class {
412
404
  });
413
405
  }
414
406
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
415
- return robotCloudApi_default.get(
416
- `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`,
417
- {
418
- params: {
419
- start_time: startTime,
420
- end_time: endTime,
421
- function: aggFunction,
422
- periode,
423
- ...params
424
- }
425
- }
426
- );
407
+ return new Promise((resolve, reject) => {
408
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-guest-status-data-sample.json`).then((response) => response.json()).then(
409
+ (json) => resolve({
410
+ data: json
411
+ })
412
+ );
413
+ });
427
414
  }
428
415
  };
429
416
  var roomGuestStatusClient = new RoomGuestStatusClient();
430
417
 
431
- // src/client/services/air-quality-1.ts
418
+ // src/client/services/air-quality-1.mock.ts
432
419
  var AirQualityClient = class {
433
420
  getAlerts(prjId, params) {
434
421
  return robotCloudApi_default.get(
@@ -455,9 +442,6 @@ var AirQualityClient = class {
455
442
  getInstanceConfiguration(prjId, instanceId) {
456
443
  throw Error("Not implemented method");
457
444
  }
458
- putInstanceConfiguration(prjId, instanceId, data) {
459
- throw Error("Not implemented method");
460
- }
461
445
  getInstanceData(prjId, instanceId, params) {
462
446
  return robotCloudApi_default.get(
463
447
  `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,
@@ -469,6 +453,9 @@ var AirQualityClient = class {
469
453
  }
470
454
  );
471
455
  }
456
+ putInstanceConfiguration(prjId, instanceId, data) {
457
+ throw Error("Not implemented method");
458
+ }
472
459
  getInstanceHistoric(prjId, instanceId, startTime, endTime, params) {
473
460
  return robotCloudApi_default.get(
474
461
  `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`,
@@ -482,7 +469,14 @@ var AirQualityClient = class {
482
469
  );
483
470
  }
484
471
  getInstanceHistoricAggregate(prjId, instanceId, startTime, endTime, aggFunction, periode, params) {
485
- throw Error("Not implemented method");
472
+ return new Promise((resolve, reject) => {
473
+ fetch(`./mock-historic-agg-${periode}-${aggFunction}-air-quality-data-sample.json`).then((response) => response.json()).then(
474
+ (json) => resolve({
475
+ data: json,
476
+ status: 200
477
+ })
478
+ );
479
+ });
486
480
  }
487
481
  };
488
482
  var airQualityClient = new AirQualityClient();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/robotCloudApi.ts","../src/config.ts","../src/utils/logger.ts","../src/robotCloudClient.ts","../src/helpers/robotCloudToken.ts","../src/client/services/room-clime-1.ts","../src/client/services/room-guest-status-1.ts","../src/client/services/air-quality-1.ts","../src/client/services/room-consumes-1.ts","../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig, ServiceInstanceDataRequestParams, \n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import axios from \"axios\";\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { CheckTokenResponse, RobotCloudJWTPayload } from \"../../types/Token\";\nimport clientConfig from \"config\";\n\nconst logger = useLogger(\"robotcloud-token\")\n\n\nfunction parseJwt(token: string) {\n if (!token) {\n return;\n }\n return JSON.parse(atob(token.split('.')[1])); \n}\n\nexport interface RobotCloudNewTokenResponse {\n access: string;\n renew: string;\n}\n\nexport const decodeToken = (token: string): RobotCloudJWTPayload | undefined => {\n const payload = parseJwt(token);\n if (!payload) {\n return undefined\n }\n\n return payload as RobotCloudJWTPayload;\n};\n\nexport const isTokenExpired = (payload: RobotCloudJWTPayload): boolean => {\n const expirationDate = new Date(payload.exp * 1000);\n expirationDate.setMinutes(\n expirationDate.getMinutes() - clientConfig.tokenMinutesBeforeExpirationRenew\n );\n const currentDate = new Date();\n return currentDate >= expirationDate;\n};\n\nexport const renewToken = async (\n renew_token: string\n): Promise<CheckTokenResponse> => {\n logger.debug(\"Renewing token ...\");\n const cloudUrl = robotcloudApi.defaults.baseURL\n const { data } = await axios.get(cloudUrl + \"login/renew\", {\n headers: {\n Authorization: `Bearer ${renew_token}`,\n },\n });\n\n return {\n renewed: true,\n access: data[\"access\"][\"token\"],\n renew: data[\"renew\"][\"token\"],\n } as CheckTokenResponse;\n};\n\nexport const validateToken = async (\n access_token: string\n): Promise<boolean> => {\n logger.debug(\"Validate token ...\");\n const payload = decodeToken(access_token)\n if (!payload) {\n return false\n }\n const cloudUrl = robotcloudApi.defaults.baseURL\n try {\n const { data } = await axios.get(\n cloudUrl + `users/${payload.sub}`,\n {\n headers: {\n Authorization: `Bearer ${access_token}`,\n },\n }\n ); \n } catch (error) {\n if (axios.isAxiosError(error)) {\n logger.warn(`${error.message}: ${error.response?.data?.message ?? ''}`)\n } else {\n logger.warn(error)\n }\n return false;\n }\n\n return true\n};\n","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n RoomClime1AlertEventValue,\n ServiceInstanceDataRequestParams,\n} from \"../../../types/RobotCloudClient\";\nimport { \n ServiceDataMeasurement, ServiceDataRequestParams, ServiceInstanceHistoricParams, ServiceTypeClient,\n HistoricAggregateFunction,\n ServiceInstanceHistoricAggregateParams\n} from \"../../../types/services\";\nimport { RoomClime1Data } from \"../../../types/services-data\";\nimport { RoomClimeConfigurationParams } from \"../../../types/services-configuration\";\n\n\nclass RoomClimeClient implements ServiceTypeClient< RoomClime1AlertEventValue, \n RoomClime1Data, \n RoomClimeConfigurationParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomClime_1/alert`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/data`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.get<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomClimeConfigurationParams\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.put<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>> (\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/data`,\n { \n params\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/historic/data/aggregate`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n function: aggFunction,\n periode,\n ...params\n }\n }\n )\n }\n}\n\n\nexport const roomClimeClient = new RoomClimeClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction,\n RoomGuestStatus1AlertEventValue,\n RoomGuestStatus1EventValue,\n RoomGuestStatusInstanceConfigParams,\n ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass RoomGuestStatusClient implements ServiceTypeClient< RoomGuestStatus1AlertEventValue, \n RoomGuestStatus1EventValue, \n RoomGuestStatusInstanceConfigParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.get<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomGuestStatusInstanceConfigParams\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.put<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n // return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n // `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data`, {\n // params: {\n // start_time: startTime,\n // end_time: endTime,\n // ...params\n // }\n // }\n // )\n return new Promise((resolve, reject) => {\n fetch('./historic-guest-status-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n function: aggFunction,\n periode,\n ...params\n }\n }\n )\n }\n}\n\nexport const roomGuestStatusClient = new RoomGuestStatusClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n AirQuality1AlertEventValue, AirQuality1DataEventValue, HistoricAggregateFunction, ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass AirQualityClient implements ServiceTypeClient<AirQuality1AlertEventValue, \n AirQuality1DataEventValue,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const airQualityClient = new AirQualityClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction, ServiceDataMeasurement, ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { \n RoomConsumes1AlertEventValue, ServiceInstanceDataRequestParams \n} from \"../../../types/RobotCloudClient\";\nimport { RoomConsumes1Data } from \"../../../types/services-data\";\n\nclass RoomConsumesClient implements ServiceTypeClient<RoomConsumes1AlertEventValue, \n RoomConsumes1Data,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const roomConsumesClient = new RoomConsumesClient()","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":"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","names":["logger","i","axios","logger","axios"]}
1
+ {"version":3,"sources":["../src/robotCloudApi.ts","../src/config.ts","../src/utils/logger.ts","../src/robotCloudClient.ts","../src/helpers/robotCloudToken.ts","../src/client/services/room-clime-1.mock.ts","../src/client/services/room-guest-status-1.mock.ts","../src/client/services/air-quality-1.mock.ts","../src/client/services/room-consumes-1.ts","../src/helpers/robotCloudPermissionsHelper.ts"],"sourcesContent":["import axios from \"axios\"\nimport clientConfig from \"config\";\nimport { useLogger } from 'utils/logger';\n\nconst logger = useLogger(\"robotcloud-api\")\n\nconst robotcloudApi = axios.create();\n\nlet checkTokenPromise: Promise<string | undefined> | null = null;\nconst clearPromise = () => checkTokenPromise = null;\n\nasync function refreshToken(checkToken: () => Promise<string | undefined>) {\n const access_token = await checkToken();\n return access_token;\n}\n\n \n// Important to add interceptor once, inside a middleware are stacked in each request.\nrobotcloudApi.interceptors.request.use(\n async config => {\n logger.info(\"robotcloud api interceptor:\", config.url)\n if (!checkTokenPromise) {\n checkTokenPromise = refreshToken(clientConfig.checkToken).finally(clearPromise);\n }\n\n // When other request is checking token wait for it\n const token = await checkTokenPromise;\n if (!token) {\n return config\n }\n\n config.headers.authorization = `Bearer ${token}`;\n return config;\n },\n error => {\n logger.error(error)\n Promise.reject(error)\n });\n\nexport default robotcloudApi;\n","import robotcloudApi from \"robotCloudApi\";\n\nexport class RobotCloudClientConfig {\n private _baseUrl?: string;\n private _checkToken = async (): Promise<string> => { return ''}\n \n public tokenMinutesBeforeExpirationRenew: number = 20;\n \n\n set baseURL(value: string){\n robotcloudApi.defaults.baseURL = value\n this._baseUrl = value\n }\n \n get baseUrl(): string | undefined {\n return this._baseUrl\n }\n\n set checkToken(fun: () => Promise<string>) {\n this._checkToken = fun\n }\n\n get checkToken(): () => Promise<string> {\n return this._checkToken\n }\n}\n\nconst clientConfig = new RobotCloudClientConfig()\nexport default clientConfig","import { createConsola } from \"consola\";\nimport type { ConsolaOptions } from 'consola';\n\nexport function useLogger (tag?: string, options: Partial<ConsolaOptions> = { level: 1000 }) {\n return tag ? createConsola(options).withTag(tag) : createConsola(options)\n}","import type { AxiosResponse } from \"axios\";\n\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n LocationServiceInstancesRequestParams, ProjectDetailsRequestParams, ProjectLocationsRequestParams, \n ProjectRequestParams, ProjectTagRequestParams, RobotCloudDeviceDetails, RobotCloudNamedItem, \n RobotCloudProject, RobotCloudProjectDetails, RobotCloudServiceType, RobotCloudServiceTypeDetails, RobotCloudUserDetails, \n RoomGrouping1DataEventValue, \n RoomGrouping1InstanceDeviceConfig,\n ServiceInstancesRequestParams, \n SubsystemRequestParams\n} from \"../types/RobotCloudClient\";\nimport { RobotCloudServiceInstance, ServiceInstanceDetails } from \"../types/ServiceInstance\";\nimport { Classifier, ClassifierDetails, ProjectClassifiersRequestParams } from \"../types/ProjectClassifer\";\nimport { ProjectTag, ProjectTagTreeNode, ProjectTagsTree } from \"../types/ProjectTag\";\nimport { ServiceDataMeasurement, ServiceDataRequestParams } from \"../types/services\";\n\n\nconst logger = useLogger(\"robotcloud-client\")\n\n\n\ninterface RobotCloudLocationDetails {\n id: string;\n name: string;\n description: string;\n project: string;\n tags: string[]\n}\n\nexport const getLocationServiceInstances = (\n prjId: string,\n locId: string,\n service_type: RobotCloudServiceType,\n params?: LocationServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/locations/${locId}/services/${service_type}/instances`, {\n params,\n });\n}\n\n\n// USERS ENDPOINTS\nexport const getUser = (\n username: string\n ): Promise<AxiosResponse<RobotCloudUserDetails>> => {\n return robotcloudApi.get<RobotCloudUserDetails>(`users/${username}`);\n };\n\n// PROJECT ENDPOINTS\nexport const getProjects = (\n params?: ProjectRequestParams\n): Promise<AxiosResponse<RobotCloudProject[]>> => {\n return robotcloudApi.get<RobotCloudProject[]>(\"projects\", {\n params\n });\n};\n\nexport const getProjectDetails = (\n prjId: string,\n params?: ProjectDetailsRequestParams\n): Promise<AxiosResponse<RobotCloudProjectDetails>> => {\n return robotcloudApi.get<RobotCloudProjectDetails>(`projects/${prjId}`, {\n params,\n });\n};\n\n// PROJECT SUBSYSTEMS ENDPOINTS\n\nexport const getProjectSubsystem = (\n prjId: string,\n subsysId: string\n) => {\n return robotcloudApi.get<RobotCloudNamedItem>(`projects/${prjId}/subsystems/${subsysId}`);\n}\n\nexport const getLocations = (\n prjId: string,\n params?: ProjectLocationsRequestParams\n): Promise<AxiosResponse<RobotCloudNamedItem[]>> => {\n return robotcloudApi.get<RobotCloudNamedItem[]>(`projects/${prjId}/locations`, {\n params,\n });\n};\n\nexport const getLocation = (\n locationId: string\n): Promise<AxiosResponse<RobotCloudLocationDetails>> => {\n return robotcloudApi.get<RobotCloudLocationDetails>(`locations/${locationId}`, { });\n};\n\nexport const getServiceInstances = (\n prjId: string,\n service_type: string,\n params?: ServiceInstancesRequestParams\n): Promise<AxiosResponse<RobotCloudServiceInstance[]>> => {\n return robotcloudApi.get<RobotCloudServiceInstance[]>(`projects/${prjId}/services/${service_type}/instances`, {\n params,\n });\n}\n\nexport const getServiceInstance = (\n prjId: string,\n service_type: string,\n service_id: string\n) => {\n return robotcloudApi.get<ServiceInstanceDetails>(`projects/${prjId}/services/${service_type}/instances/${service_id}`);\n}\n\nexport const getProjectClassifiers = (\n prjId: string,\n params?: ProjectClassifiersRequestParams\n): Promise<AxiosResponse<Classifier[]>> => {\n logger.info(`Get project ${prjId} classifiers`)\n return robotcloudApi.get<Classifier[]>(`projects/${prjId}/classifiers`, {\n params,\n });\n}\n\nexport const getClassifier = (\n classifierId: string\n) => {\n return robotcloudApi.get<ClassifierDetails>(`classifiers/${classifierId}`);\n}\n\nexport const getTags = (\n prjId: string,\n params?: ProjectTagRequestParams\n): Promise<AxiosResponse<ProjectTag[]>> => {\n logger.info(`Get project ${prjId} tags`)\n return robotcloudApi.get<ProjectTag[]>(`projects/${prjId}/tags`, {\n params,\n });\n};\n\nexport const getTagsTree = async (\n prjId: string,\n maxDepth: number = 2,\n params?: ProjectTagRequestParams\n): Promise<ProjectTagsTree> => {\n logger.info(`Get project ${prjId} tags tree`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = true;\n\n const tags = await getTagsChildren(prjId, 0, undefined, undefined, maxDepth)\n return {root: tags} as ProjectTagsTree;\n};\n\nexport const getTagsChildren = async (\n prjId: string,\n level: number = 0,\n parent_id?: string,\n params?: ProjectTagRequestParams,\n maxDepth?: number\n): Promise<ProjectTagTreeNode[]> => {\n logger.debug(`Get project ${prjId} tags children: ${parent_id}`)\n if (!params) {\n params = {} as ProjectTagRequestParams \n }\n params.no_parent = !parent_id;\n params.parent_tag = parent_id;\n\n const tags = await getTags(prjId, params)\n if (tags.data.length == 0) {\n return [];\n }\n \n const response: ProjectTagTreeNode[] = []\n const requests: any[] = []\n for (let i = 0; i < tags.data.length; i++) {\n const element = tags.data[i]\n const node = {\n tag: element\n } as ProjectTagTreeNode;\n response.push(node)\n if (maxDepth && level < maxDepth) {\n requests.push(\n getTagsChildren(prjId, level + 1, element.id, params, maxDepth)\n )\n }\n }\n\n const responses = await Promise.all(requests)\n let i = 0;\n responses.forEach(element => {\n response[i].children = element\n i++\n });\n \n return response;\n\n}\n\n/* PROJECT DEVICES ENDPOINTS */\nexport const getDeviceDetails = (\n deviceId: string,\n): Promise<AxiosResponse<RobotCloudDeviceDetails>> => {\n return robotcloudApi.get<RobotCloudDeviceDetails>(`devices/${deviceId}`);\n}\n\n/* SERVICES ENDPOINTS */\nexport const getProjectServiceTypes = (\n prjId: string,\n params?: SubsystemRequestParams\n): Promise<AxiosResponse<RobotCloudServiceTypeDetails[]>> => {\n return robotcloudApi.get<RobotCloudServiceTypeDetails[]>(`projects/${prjId}/services`, {\n params,\n });\n}\n/* SERVICES INSTANCES DATA ENDPOINTS */\n\nexport const getRoomGrouping1ServiceData = (\n prjId: string,\n params?: ServiceDataRequestParams\n): Promise<AxiosResponse<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGrouping1DataEventValue>[]>(\n `/projects/${prjId}/services/RoomGrouping_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n}\n\n/* SERVICES INSTANCES DEVICE INGORMATION ENDPOINTS */\n\n\nexport const getRoomGrouping1InstanceDeviceConfig = (\n prjId: string,\n instanceId: string,\n): Promise<AxiosResponse<RoomGrouping1InstanceDeviceConfig>> => {\n return robotcloudApi.put<RoomGrouping1InstanceDeviceConfig>(\n `/projects/${prjId}/services/RoomGrouping_1/instances/${instanceId}/configuration`\n )\n}\n","import axios from \"axios\";\nimport { useLogger } from 'utils/logger';\nimport robotcloudApi from \"robotCloudApi\";\nimport { CheckTokenResponse, RobotCloudJWTPayload } from \"../../types/Token\";\nimport clientConfig from \"config\";\n\nconst logger = useLogger(\"robotcloud-token\")\n\n\nfunction parseJwt(token: string) {\n if (!token) {\n return;\n }\n return JSON.parse(atob(token.split('.')[1])); \n}\n\nexport interface RobotCloudNewTokenResponse {\n access: string;\n renew: string;\n}\n\nexport const decodeToken = (token: string): RobotCloudJWTPayload | undefined => {\n const payload = parseJwt(token);\n if (!payload) {\n return undefined\n }\n\n return payload as RobotCloudJWTPayload;\n};\n\nexport const isTokenExpired = (payload: RobotCloudJWTPayload): boolean => {\n const expirationDate = new Date(payload.exp * 1000);\n expirationDate.setMinutes(\n expirationDate.getMinutes() - clientConfig.tokenMinutesBeforeExpirationRenew\n );\n const currentDate = new Date();\n return currentDate >= expirationDate;\n};\n\nexport const renewToken = async (\n renew_token: string\n): Promise<CheckTokenResponse> => {\n logger.debug(\"Renewing token ...\");\n const cloudUrl = robotcloudApi.defaults.baseURL\n const { data } = await axios.get(cloudUrl + \"login/renew\", {\n headers: {\n Authorization: `Bearer ${renew_token}`,\n },\n });\n\n return {\n renewed: true,\n access: data[\"access\"][\"token\"],\n renew: data[\"renew\"][\"token\"],\n } as CheckTokenResponse;\n};\n\nexport const validateToken = async (\n access_token: string\n): Promise<boolean> => {\n logger.debug(\"Validate token ...\");\n const payload = decodeToken(access_token)\n if (!payload) {\n return false\n }\n const cloudUrl = robotcloudApi.defaults.baseURL\n try {\n const { data } = await axios.get(\n cloudUrl + `users/${payload.sub}`,\n {\n headers: {\n Authorization: `Bearer ${access_token}`,\n },\n }\n ); \n } catch (error) {\n if (axios.isAxiosError(error)) {\n logger.warn(`${error.message}: ${error.response?.data?.message ?? ''}`)\n } else {\n logger.warn(error)\n }\n return false;\n }\n\n return true\n};\n","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n RoomClime1AlertEventValue,\n ServiceInstanceDataRequestParams, \n} from \"../../../types/RobotCloudClient\";\nimport { \n ServiceDataMeasurement, ServiceDataRequestParams, ServiceInstanceHistoricParams, ServiceTypeClient,\n HistoricAggregateFunction,\n ServiceInstanceHistoricAggregateParams\n} from \"../../../types/services\";\nimport { RoomClime1Data } from \"../../../types/services-data\";\nimport { RoomClimeConfigurationParams } from \"../../../types/services-configuration\";\n\n\nclass RoomClimeClient implements ServiceTypeClient< RoomClime1AlertEventValue, \n RoomClime1Data, \n RoomClimeConfigurationParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomClime_1/alert`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>[]>(\n `/projects/${prjId}/services/RoomClime_1/data`,\n {\n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.get<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomClimeConfigurationParams\n ): Promise<AxiosResponse<RoomClimeConfigurationParams>> {\n return robotcloudApi.put<RoomClimeConfigurationParams>(\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/configuration`,\n data\n )\n }\n getInstanceData (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomClime1Data>> (\n `/projects/${prjId}/services/RoomClime_1/instances/${instanceId}/data`,\n { \n params\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return new Promise((resolve, reject) => {\n fetch('./mock-historic-clime-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomClime1Data>[]>> {\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-clime-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n}\n\n\nexport const roomClimeClient = new RoomClimeClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction,\n RoomGuestStatus1AlertEventValue,\n RoomGuestStatus1EventValue,\n RoomGuestStatusInstanceConfigParams,\n ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass RoomGuestStatusClient implements ServiceTypeClient< RoomGuestStatus1AlertEventValue, \n RoomGuestStatus1EventValue, \n RoomGuestStatusInstanceConfigParams> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n `/projects/${prjId}/services/RoomGuestStatus_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.get<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`\n )\n }\n\n putInstanceConfiguration (\n prjId: string,\n instanceId: string,\n data: RoomGuestStatusInstanceConfigParams\n ): Promise<AxiosResponse<RoomGuestStatusInstanceConfigParams>> {\n return robotcloudApi.put<RoomGuestStatusInstanceConfigParams>(\n `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/configuration`,\n data\n )\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n return new Promise((resolve, reject) => {\n fetch('./mock-historic-guest-status-data-sample.json')\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>> {\n // return robotcloudApi.get<ServiceDataMeasurement<RoomGuestStatus1EventValue>[]>(\n // `/projects/${prjId}/services/RoomGuestStatus_1/instances/${instanceId}/historic/data/aggregate`, {\n // params: {\n // start_time: startTime,\n // end_time: endTime,\n // function: aggFunction,\n // periode,\n // ...params\n // }\n // }\n // )\n\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-guest-status-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json\n } as AxiosResponse)\n );\n })\n }\n}\n\nexport const roomGuestStatusClient = new RoomGuestStatusClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n AirQuality1AlertEventValue, AirQuality1DataEventValue, HistoricAggregateFunction, ServiceDataMeasurement, \n ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, \n ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { ServiceInstanceDataRequestParams } from \"../../../types/RobotCloudClient\";\n\nclass AirQualityClient implements ServiceTypeClient<AirQuality1AlertEventValue, \n AirQuality1DataEventValue,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1AlertEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n \n getInstanceData(prjId: string, instanceId: string, params?: ServiceInstanceDataRequestParams): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<AirQuality1DataEventValue>[]>(\n `/projects/${prjId}/services/AirQuality_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<AirQuality1DataEventValue>[]>> {\n // throw Error(\"Not implemented method\")\n return new Promise((resolve, reject) => {\n fetch(`./mock-historic-agg-${periode}-${aggFunction}-air-quality-data-sample.json`)\n .then((response) => response.json())\n .then((json) => resolve({\n data: json,\n status: 200\n } as AxiosResponse)\n );\n })\n }\n}\n\n\nexport const airQualityClient = new AirQualityClient()","import type { AxiosResponse } from \"axios\";\n\nimport robotcloudApi from \"robotCloudApi\";\nimport { \n HistoricAggregateFunction, ServiceDataMeasurement, ServiceDataRequestParams, \n ServiceInstanceHistoricAggregateParams, ServiceInstanceHistoricParams, \n ServiceTypeClient \n} from \"../../../types/services\";\nimport { \n RoomConsumes1AlertEventValue, ServiceInstanceDataRequestParams \n} from \"../../../types/RobotCloudClient\";\nimport { RoomConsumes1Data } from \"../../../types/services-data\";\n\nclass RoomConsumesClient implements ServiceTypeClient<RoomConsumes1AlertEventValue, \n RoomConsumes1Data,\n any> {\n\n getAlerts(\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1AlertEventValue>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/alert`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getData (\n prjId: string,\n params?: ServiceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceConfiguration<T> (\n prjId: string,\n instanceId: string\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n putInstanceConfiguration<T> (\n prjId: string,\n instanceId: string,\n data: T\n ): Promise<AxiosResponse<T>> {\n throw Error(\"Not implemented method\")\n }\n\n getInstanceData = (\n prjId: string,\n instanceId: string,\n params?: ServiceInstanceDataRequestParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>>> => {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/data`,\n { \n params,\n headers: {\n \"Accept\": 'application/json'\n }\n }\n )\n }\n\n getInstanceHistoric(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n params: ServiceInstanceHistoricParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n return robotcloudApi.get<ServiceDataMeasurement<RoomConsumes1Data>[]>(\n `/projects/${prjId}/services/RoomConsumes_1/instances/${instanceId}/configuration`, {\n params: {\n start_time: startTime,\n end_time: endTime,\n ...params\n }\n }\n )\n }\n\n getInstanceHistoricAggregate(\n prjId: string,\n instanceId: string,\n startTime: Date,\n endTime: Date,\n aggFunction: HistoricAggregateFunction,\n periode: string,\n params: ServiceInstanceHistoricAggregateParams\n ): Promise<AxiosResponse<ServiceDataMeasurement<RoomConsumes1Data>[]>> {\n throw Error(\"Not implemented method\")\n }\n}\n\n\nexport const roomConsumesClient = new RoomConsumesClient()","import * as robotCloudClient from \"robotCloudClient\";\nimport { RobotCloudPermissionsHelper } from \"../../types/helpers\";\nimport { \n AppAccessLevel, \n ProjectAccessLevel, \n RobotCloudProjectDetails \n} from \"../../types/RobotCloudClient\";\n\n/**\n * Helper of robotcloud permissions\n * \n * > IMPORTANT! Don't place here any important logic. Only functions that might be used in frontend.\n */\nclass RobotCloudPermissionsHelperImpl implements RobotCloudPermissionsHelper {\n\n public async checkProjectAccess(prjId: string, required_project_access: ProjectAccessLevel): Promise<boolean> {\n\n const { data: project} = await robotCloudClient.getProjectDetails(prjId)\n if (project.access_level == required_project_access) {\n return true\n }\n \n return this.hasAccessLevel(project, required_project_access)\n }\n\n public hasAccessLevel(project: RobotCloudProjectDetails, required_project_access: ProjectAccessLevel) {\n\n switch (required_project_access) {\n case 'ADVANCED':\n return project.access_level == 'ADVANCED'\n case 'BASIC':\n return project.access_level == 'BASIC' || project.access_level == 'ADVANCED'\n case 'RESTRICTED':\n return project.access_level == 'RESTRICTED' || project.access_level == 'BASIC' || \n project.access_level == 'ADVANCED'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n\n public hasAppAccessLevel(project: RobotCloudProjectDetails, required_application_access: AppAccessLevel): boolean {\n switch (required_application_access) {\n case 'ADMIN':\n return project.app_access_level == 'ADMIN'\n case 'ADVANCED':\n return project.app_access_level == 'ADVANCED' || project.app_access_level == 'ADMIN'\n case 'STANDARD':\n return project.app_access_level == 'STANDARD' || project.app_access_level == 'ADVANCED' || \n project.app_access_level == 'ADMIN'\n case 'BLOCKED':\n return true \n default:\n return false\n }\n }\n}\n\nexport const robotCloudPermissionsHelper: RobotCloudPermissionsHelper = new RobotCloudPermissionsHelperImpl()"],"mappings":";;;;;;;AAAA,OAAO,WAAW;;;ACEX,IAAM,yBAAN,MAA6B;AAAA,EAA7B;AAEH,SAAQ,cAAc,YAA6B;AAAE,aAAO;AAAA,IAAE;AAE9D,SAAO,oCAA4C;AAAA;AAAA,EAGnD,IAAI,QAAQ,OAAc;AACtB,0BAAc,SAAS,UAAU;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,UAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW,KAA4B;AACvC,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,IAAI,aAAoC;AACpC,WAAO,KAAK;AAAA,EAChB;AACJ;AAEA,IAAM,eAAe,IAAI,uBAAuB;AAChD,IAAO,iBAAQ;;;AC5Bf,SAAS,qBAAqB;AAGvB,SAAS,UAAW,KAAc,UAAmC,EAAE,OAAO,IAAK,GAAG;AACzF,SAAO,MAAM,cAAc,OAAO,EAAE,QAAQ,GAAG,IAAI,cAAc,OAAO;AAC5E;;;AFDA,IAAM,SAAS,UAAU,gBAAgB;AAEzC,IAAM,gBAAgB,MAAM,OAAO;AAEnC,IAAI,oBAAwD;AAC5D,IAAM,eAAe,MAAM,oBAAoB;AAE/C,eAAe,aAAa,YAA+C;AACvE,QAAM,eAAe,MAAM,WAAW;AACtC,SAAO;AACX;AAIA,cAAc,aAAa,QAAQ;AAAA,EAC/B,OAAM,WAAU;AACZ,WAAO,KAAK,+BAA+B,OAAO,GAAG;AACrD,QAAI,CAAC,mBAAmB;AACpB,0BAAoB,aAAa,eAAa,UAAU,EAAE,QAAQ,YAAY;AAAA,IAClF;AAGA,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,gBAAgB,UAAU,KAAK;AAC9C,WAAO;AAAA,EACX;AAAA,EACA,WAAS;AACL,WAAO,MAAM,KAAK;AAClB,YAAQ,OAAO,KAAK;AAAA,EAC1B;AAAC;AAEH,IAAO,wBAAQ;;;AGvCf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,IAAMA,UAAS,UAAU,mBAAmB;AAYrC,IAAM,8BAA8B,CACzC,OACA,OACA,cACA,WACwD;AACxD,SAAO,sBAAc,IAAiC,YAAY,KAAK,cAAc,KAAK,aAAa,YAAY,cAAc;AAAA,IAC/H;AAAA,EACF,CAAC;AACH;AAIO,IAAM,UAAU,CACnB,aACkD;AAClD,SAAO,sBAAc,IAA2B,SAAS,QAAQ,EAAE;AACrE;AAGK,IAAM,cAAc,CACzB,WACgD;AAChD,SAAO,sBAAc,IAAyB,YAAY;AAAA,IACxD;AAAA,EACF,CAAC;AACH;AAEO,IAAM,oBAAoB,CAC/B,OACA,WACqD;AACrD,SAAO,sBAAc,IAA8B,YAAY,KAAK,IAAI;AAAA,IACtE;AAAA,EACF,CAAC;AACH;AAIO,IAAM,sBAAsB,CACjC,OACA,aACG;AACH,SAAO,sBAAc,IAAyB,YAAY,KAAK,eAAe,QAAQ,EAAE;AAC1F;AAEO,IAAM,eAAe,CAC1B,OACA,WACkD;AAClD,SAAO,sBAAc,IAA2B,YAAY,KAAK,cAAc;AAAA,IAC7E;AAAA,EACF,CAAC;AACH;AAEO,IAAM,cAAc,CACzB,eACsD;AACtD,SAAO,sBAAc,IAA+B,aAAa,UAAU,IAAI,CAAE,CAAC;AACpF;AAEO,IAAM,sBAAsB,CACjC,OACA,cACA,WACwD;AACxD,SAAO,sBAAc,IAAiC,YAAY,KAAK,aAAa,YAAY,cAAc;AAAA,IAC5G;AAAA,EACF,CAAC;AACH;AAEO,IAAM,qBAAqB,CAChC,OACA,cACA,eACG;AACH,SAAO,sBAAc,IAA4B,YAAY,KAAK,aAAa,YAAY,cAAc,UAAU,EAAE;AACvH;AAEO,IAAM,wBAAwB,CACnC,OACA,WACyC;AACvC,EAAAA,QAAO,KAAK,eAAe,KAAK,cAAc;AAC9C,SAAO,sBAAc,IAAkB,YAAY,KAAK,gBAAgB;AAAA,IACpE;AAAA,EACJ,CAAC;AACL;AAEO,IAAM,gBAAgB,CAC3B,iBACG;AACH,SAAO,sBAAc,IAAuB,eAAe,YAAY,EAAE;AAC3E;AAEO,IAAM,UAAU,CACrB,OACA,WACyC;AACvC,EAAAA,QAAO,KAAK,eAAe,KAAK,OAAO;AACzC,SAAO,sBAAc,IAAkB,YAAY,KAAK,SAAS;AAAA,IAC/D;AAAA,EACF,CAAC;AACH;AAEO,IAAM,cAAc,OACzB,OACA,WAAmB,GACnB,WAC6B;AAC3B,EAAAA,QAAO,KAAK,eAAe,KAAK,YAAY;AAC9C,MAAI,CAAC,QAAQ;AACX,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,YAAY;AAEnB,QAAM,OAAO,MAAM,gBAAgB,OAAO,GAAG,QAAW,QAAW,QAAQ;AAC3E,SAAO,EAAC,MAAM,KAAI;AACpB;AAEO,IAAM,kBAAkB,OAC7B,OACA,QAAgB,GAChB,WACA,QACA,aACkC;AAChC,EAAAA,QAAO,MAAM,eAAe,KAAK,mBAAmB,SAAS,EAAE;AACjE,MAAI,CAAC,QAAQ;AACX,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,YAAY,CAAC;AACpB,SAAO,aAAa;AAEpB,QAAM,OAAO,MAAM,QAAQ,OAAO,MAAM;AACxC,MAAI,KAAK,KAAK,UAAU,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAiC,CAAC;AACxC,QAAM,WAAkB,CAAC;AACzB,WAASC,KAAI,GAAGA,KAAI,KAAK,KAAK,QAAQA,MAAK;AACzC,UAAM,UAAU,KAAK,KAAKA,EAAC;AAC3B,UAAM,OAAO;AAAA,MACX,KAAK;AAAA,IACP;AACA,aAAS,KAAK,IAAI;AAClB,QAAI,YAAY,QAAQ,UAAU;AAChC,eAAS;AAAA,QACP,gBAAgB,OAAO,QAAQ,GAAG,QAAQ,IAAI,QAAQ,QAAQ;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,QAAQ,IAAI,QAAQ;AAC5C,MAAI,IAAI;AACR,YAAU,QAAQ,aAAW;AAC3B,aAAS,CAAC,EAAE,WAAW;AACvB;AAAA,EACF,CAAC;AAED,SAAO;AAET;AAGO,IAAM,mBAAmB,CAC9B,aACoD;AACpD,SAAO,sBAAc,IAA6B,WAAW,QAAQ,EAAE;AACzE;AAGO,IAAM,yBAAyB,CAClC,OACA,WACyD;AACzD,SAAO,sBAAc,IAAoC,YAAY,KAAK,aAAa;AAAA,IACnF;AAAA,EACJ,CAAC;AACL;AAGO,IAAM,8BAA8B,CACzC,OACA,WACkF;AAClF,SAAO,sBAAc;AAAA,IACnB,aAAa,KAAK;AAAA,IAClB;AAAA,MACE;AAAA,MACA,SAAS;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACF;AAKO,IAAM,uCAAuC,CAClD,OACA,eAC8D;AAC9D,SAAO,sBAAc;AAAA,IACnB,aAAa,KAAK,sCAAsC,UAAU;AAAA,EACpE;AACF;;;AC/OA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAOC,YAAW;AAMlB,IAAMC,UAAS,UAAU,kBAAkB;AAG3C,SAAS,SAAS,OAAe;AAC7B,MAAI,CAAC,OAAO;AACV;AAAA,EACF;AACA,SAAO,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/C;AAOO,IAAM,cAAc,CAAC,UAAoD;AAC9E,QAAM,UAAU,SAAS,KAAK;AAC9B,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,IAAM,iBAAiB,CAAC,YAA2C;AACxE,QAAM,iBAAiB,IAAI,KAAK,QAAQ,MAAM,GAAI;AAClD,iBAAe;AAAA,IACb,eAAe,WAAW,IAAI,eAAa;AAAA,EAC7C;AACA,QAAM,cAAc,oBAAI,KAAK;AAC7B,SAAO,eAAe;AACxB;AAEO,IAAM,aAAa,OACxB,gBACgC;AAC9B,EAAAA,QAAO,MAAM,oBAAoB;AACjC,QAAM,WAAW,sBAAc,SAAS;AACxC,QAAM,EAAE,KAAK,IAAI,MAAMC,OAAM,IAAI,WAAW,eAAe;AAAA,IACvD,SAAS;AAAA,MACL,eAAe,UAAU,WAAW;AAAA,IACxC;AAAA,EACJ,CAAC;AAEH,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ,KAAK,QAAQ,EAAE,OAAO;AAAA,IAC9B,OAAO,KAAK,OAAO,EAAE,OAAO;AAAA,EAC9B;AACF;AAEO,IAAM,gBAAgB,OACzB,iBACmB;AA3DvB;AA4DI,EAAAD,QAAO,MAAM,oBAAoB;AACjC,QAAM,UAAU,YAAY,YAAY;AACxC,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AACA,QAAM,WAAW,sBAAc,SAAS;AACxC,MAAI;AACA,UAAM,EAAE,KAAK,IAAI,MAAMC,OAAM;AAAA,MACzB,WAAW,SAAS,QAAQ,GAAG;AAAA,MAC/B;AAAA,QACI,SAAS;AAAA,UACL,eAAe,UAAU,YAAY;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,SAAS,OAAO;AACZ,QAAIA,OAAM,aAAa,KAAK,GAAG;AAC3B,MAAAD,QAAO,KAAK,GAAG,MAAM,OAAO,MAAK,uBAAM,aAAN,mBAAgB,SAAhB,mBAAsB,YAAtB,YAAiC,EAAE,EAAE;AAAA,IAC1E,OAAO;AACH,MAAAA,QAAO,KAAK,KAAK;AAAA,IACrB;AACA,WAAO;AAAA,EACX;AAEA,SAAO;AACX;;;ACrEA,IAAM,kBAAN,MAEkF;AAAA,EAE9E,UACI,OACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACI;AAAA,QACA,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QACI,OACA,QACgE;AAChE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACI;AAAA,QACA,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACoD;AACpD,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,IACnE;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACA,MACoD;AACpD,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAC/D;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,gBACI,OACA,YACA,QAC8D;AAC9D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,mCAAmC,UAAU;AAAA,MAC/D;AAAA,QACI;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,oBACI,OACA,YACA,WACA,SACA,QACgE;AAChE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,wCAAwC,EACzC,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,QACV,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QACgE;AAChE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,uBAAuB,OAAO,IAAI,WAAW,yBAAyB,EACvE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,QACV,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AACJ;AAGO,IAAM,kBAAkB,IAAI,gBAAgB;;;ACxGnD,IAAM,wBAAN,MAEiG;AAAA,EAFjG;AAsDI,2BAAkB,CACd,OACA,YACA,WAC6E;AAC7E,aAAO,sBAAc;AAAA,QACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,QAClE;AAAA,UACI;AAAA,UACA,SAAS;AAAA,YACL,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAhEA,UACI,OACA,QACiF;AACjF,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QAC4E;AAC5E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YAC2D;AAC3D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,yCAAyC,UAAU;AAAA,IACzE;AAAA,EACJ;AAAA,EAEA,yBACI,OACA,YACA,MAC2D;AAC3D,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,yCAAyC,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,EACN;AAAA,EAkBA,oBACI,OACA,YACA,WACA,SACA,QAC4E;AAC5E,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,+CAA+C,EAChD,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,QACV,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QAC4E;AAa5E,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,uBAAuB,OAAO,IAAI,WAAW,gCAAgC,EAC9E,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,QACV,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AACJ;AAEO,IAAM,wBAAwB,IAAI,sBAAsB;;;AC3H/D,IAAM,mBAAN,MAEyD;AAAA,EAErD,UACI,OACA,QAC4E;AAC5E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,gBAAgB,OAAe,YAAoB,QAAsH;AACvK,WAAO,sBAAc;AAAA,MACnB,aAAa,KAAK,oCAAoC,UAAU;AAAA,MAChE;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,yBACI,OACA,YACA,MACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,oBACI,OACA,YACA,WACA,SACA,QAC2E;AAC3E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,oCAAoC,UAAU;AAAA,MAAkB;AAAA,QAC9E,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QAC2E;AAE3E,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,uBAAuB,OAAO,IAAI,WAAW,+BAA+B,EAC7E,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC;AAAA,QAAK,CAAC,SAAS,QAAQ;AAAA,UAChB,MAAM;AAAA,UACN,QAAQ;AAAA,QACZ,CAAkB;AAAA,MACtB;AAAA,IACR,CAAC;AAAA,EACL;AACJ;AAGO,IAAM,mBAAmB,IAAI,iBAAiB;;;ACrGrD,IAAM,qBAAN,MAEyD;AAAA,EAFzD;AAiDI,2BAAkB,CACd,OACA,YACA,WACoE;AACpE,aAAO,sBAAc;AAAA,QACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,QAClE;AAAA,UACI;AAAA,UACA,SAAS;AAAA,YACL,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EA3DA,UACI,OACA,QAC8E;AAC9E,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,QACI,OACA,QACmE;AACnE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACN;AAAA,EAEA,yBACI,OACA,YACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAEA,yBACI,OACA,YACA,MACyB;AACzB,UAAM,MAAM,wBAAwB;AAAA,EACxC;AAAA,EAkBA,oBACI,OACA,YACA,WACA,SACA,QACmE;AACnE,WAAO,sBAAc;AAAA,MACjB,aAAa,KAAK,sCAAsC,UAAU;AAAA,MAAkB;AAAA,QAChF,QAAQ;AAAA,UACJ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,6BACI,OACA,YACA,WACA,SACA,aACA,SACA,QACmE;AACnE,UAAM,MAAM,wBAAwB;AAAA,EACxC;AACJ;AAGO,IAAM,qBAAqB,IAAI,mBAAmB;;;ACjGzD,IAAM,kCAAN,MAA6E;AAAA,EAEzE,MAAa,mBAAmB,OAAe,yBAA+D;AAE1G,UAAM,EAAE,MAAM,QAAO,IAAI,MAAuB,kBAAkB,KAAK;AACvE,QAAI,QAAQ,gBAAgB,yBAAyB;AACjD,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,eAAe,SAAS,uBAAuB;AAAA,EAC/D;AAAA,EAEO,eAAe,SAAmC,yBAA6C;AAElG,YAAQ,yBAAyB;AAAA,MAC7B,KAAK;AACD,eAAO,QAAQ,gBAAgB;AAAA,MACnC,KAAK;AACD,eAAO,QAAQ,gBAAgB,WAAW,QAAQ,gBAAgB;AAAA,MACtE,KAAK;AACD,eAAO,QAAQ,gBAAgB,gBAAgB,QAAQ,gBAAgB,WAC/D,QAAQ,gBAAgB;AAAA,MACpC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEO,kBAAkB,SAAmC,6BAAsD;AAC9G,YAAQ,6BAA6B;AAAA,MACjC,KAAK;AACD,eAAO,QAAQ,oBAAoB;AAAA,MACvC,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB;AAAA,MACjF,KAAK;AACD,eAAO,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,cACrE,QAAQ,oBAAoB;AAAA,MACxC,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AAEO,IAAM,8BAA2D,IAAI,gCAAgC;","names":["logger","i","axios","logger","axios"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robotbas/robotcloud-client",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "RobotCloud API client",
5
5
  "author": {
6
6
  "name": "Bernat Galmés Rubert",
@@ -1,6 +1,7 @@
1
1
  export type TemperatureUnit = "CELSIUS" | "FAHRENHEIT"
2
2
  export type RegimState = "COLD"|"HEAT"|"AUTO"
3
3
 
4
+ export type OrganizationAccessLevel = "STAFF" | "STANDARD" | "ADMIN" | "SUPERUSER" | "MASTER"
4
5
  export type ProjectAccessLevel = "BLOCKED" | "RESTRICTED" | "BASIC" | "ADVANCED"
5
6
  export type AppAccessLevel = "BLOCKED" | "STANDARD" | "ADVANCED" | "ADMIN"
6
7
 
@@ -72,7 +73,7 @@ export interface RobotCloudUserDetails {
72
73
  last_name: string;
73
74
  email: string;
74
75
  org_id: string;
75
- org_access: number;
76
+ org_access: OrganizationAccessLevel;
76
77
  }
77
78
 
78
79