UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

480 lines 42.7 kB
/** * Generated file. Do not edit */ import { isTapFirmwareVersionGreaterThanOrEqual, isTapFirmwareVersionLessThanOrEqual, } from '../util'; import { ConfigKeyNotSupportedByFirmwareVersion } from '../errors'; const ɵ0 = (context) => { return context.service.interface.getApplicationDataCall(); }, ɵ1 = (context) => { return context.service.interface.getAppNameCall(); }, ɵ2 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.113')) { return new ConfigKeyNotSupportedByFirmwareVersion('application.productCode', context.firmwareVersion, { minApiVersion: '1.113', maxApiVersion: undefined, }); } } return context.service.interface.getProductCodeCall(); }, ɵ3 = (context) => { return context.service.interface.getUniversalLinkCall(); }, ɵ4 = (context) => { return context.service.interface.getAppPathCall(); }, ɵ5 = (context) => { return context.service.cloud.getDataLogPublishTopicCall(); }, ɵ6 = (context) => { return context.service.cloud.getDataLogSubscribeTopicCall(); }, ɵ7 = (context) => { return context.service.cloud.getDataLogUploadPeriodCall(); }, ɵ8 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) { return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.brokerPort', context.firmwareVersion, { minApiVersion: undefined, maxApiVersion: '1.103', }); } } return context.service.cloud.getMqttBrokerPortCall(); }, ɵ9 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) { return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.clientId', context.firmwareVersion, { minApiVersion: undefined, maxApiVersion: '1.103', }); } } return context.service.cloud.getMqttClientIdCall(); }, ɵ10 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) { return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.password', context.firmwareVersion, { minApiVersion: undefined, maxApiVersion: '1.103', }); } } return context.service.cloud.getMqttPasswordCall(); }, ɵ11 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) { return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.username', context.firmwareVersion, { minApiVersion: undefined, maxApiVersion: '1.103', }); } } return context.service.cloud.getMqttUsernameCall(); }, ɵ12 = (context) => { return context.service.cloud.getPlatformCall(); }, ɵ13 = (context) => { return context.service.interface.getConfigFormatVersionCall(); }, ɵ14 = (context) => { return context.service.bundle.getDataLogCryptoGroupIdCall(context.param); }, ɵ15 = (context) => { return context.service.bundle.getDataLogPeriodCall(context.param); }, ɵ16 = (context) => { return context.service.bundle.getNameCall(context.param); }, ɵ17 = (context) => { return context.service.group.getAliasCall(context.param); }, ɵ18 = (context) => { return context.service.group.getSessionLifetimeCall(context.param); }, ɵ19 = (context) => { return context.service.group.getNameCall(context.param); }, ɵ20 = (context) => { return context.service.variable.getVariableAddressCall(context.param); }, ɵ21 = (context) => { return context.service.variable.getBundleIdCall(context.param); }, ɵ22 = (context) => { return context.service.variable.getNumberOfElementsCall(context.param); }, ɵ23 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.73')) { return new ConfigKeyNotSupportedByFirmwareVersion('data.variables[].meta', context.firmwareVersion, { minApiVersion: '1.73', maxApiVersion: undefined, }); } } return context.service.variable.getMetaCall(context.param); }, ɵ24 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.73')) { return new ConfigKeyNotSupportedByFirmwareVersion('data.variables[].rawMeta', context.firmwareVersion, { minApiVersion: '1.73', maxApiVersion: undefined, }); } } return context.service.variable.getRawMetaCall(context.param); }, ɵ25 = (context) => { return context.service.variable.getTypeCall(context.param); }, ɵ26 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.90')) { return new ConfigKeyNotSupportedByFirmwareVersion('jvm.codeSize', context.firmwareVersion, { minApiVersion: '1.90', maxApiVersion: undefined, }); } } return context.service.jvm.getCodeSizeCall(); }, ɵ27 = (context) => { return context.service.jvm.getProfileIdCall(); }, ɵ28 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) { return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.gatewayIp', context.firmwareVersion, { minApiVersion: '2.7', maxApiVersion: undefined, }); } } return context.service.ethernet.getGatewayIpCall(); }, ɵ29 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) { return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.ip', context.firmwareVersion, { minApiVersion: '2.7', maxApiVersion: undefined, }); } } return context.service.ethernet.getIpCall(); }, ɵ30 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) { return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.ipMask', context.firmwareVersion, { minApiVersion: '2.7', maxApiVersion: undefined, }); } } return context.service.ethernet.getIpMaskCall(); }, ɵ31 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.11')) { return new ConfigKeyNotSupportedByFirmwareVersion('tap.autoRebootTimeout', context.firmwareVersion, { minApiVersion: '2.11', maxApiVersion: undefined, }); } } return context.service.interface.getAutoRebootTimeoutCall(); }, ɵ32 = (context) => { return context.service.interface.getMaxLowPowerTimeCall(); }, ɵ33 = (context) => { return context.service.interface.getPowerOptimisationLevelCall(); }, ɵ34 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.15')) { return new ConfigKeyNotSupportedByFirmwareVersion('tap.powerOptimizationOptions', context.firmwareVersion, { minApiVersion: '2.15', maxApiVersion: undefined, }); } } return context.service.interface.getPowerOptimisationOptionsCall(); }, ɵ35 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.11')) { return new ConfigKeyNotSupportedByFirmwareVersion('tap.scram.hashIteration', context.firmwareVersion, { minApiVersion: '1.11', maxApiVersion: undefined, }); } } return context.service.scram.getHashIterationCall(); }, ɵ36 = (context) => { return context.service.interface.getSecurityOptionsCall(); }, ɵ37 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) { return new ConfigKeyNotSupportedByFirmwareVersion('tap.time.ntpServer', context.firmwareVersion, { minApiVersion: '1.107', maxApiVersion: undefined, }); } } return context.service.time.getNtpServerCall(); }, ɵ38 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) { return new ConfigKeyNotSupportedByFirmwareVersion('tap.time.zone', context.firmwareVersion, { minApiVersion: '1.107', maxApiVersion: undefined, }); } } return context.service.time.getTimeZoneCall(); }, ɵ39 = (context) => { return context.service.target.getFirmwareVersionCall(); }, ɵ40 = (context) => { return context.service.target.getModbusDefaultSlaveAddressCall(); }, ɵ41 = (context) => { return context.service.target.getProtocolCall(); }, ɵ42 = (context) => { return context.service.interface.getConfigVersionCall(); }, ɵ43 = (context) => { return context.service.interface.getAuthorizedHostProtocolCall(); }, ɵ44 = (context) => { return context.service.interface.getHostInactivityPeriodCall(); }, ɵ45 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.13')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.options.network', context.firmwareVersion, { minApiVersion: '2.13', maxApiVersion: undefined, }); } } return context.service.interface.getNetworkOptionsCall(); }, ɵ46 = (context) => { return context.service.interface.getPairingOptionsCall(); }, ɵ47 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.ethernet.dnsIp', context.firmwareVersion, { minApiVersion: '2.7', maxApiVersion: undefined, }); } } return context.service.ethernet.getDnsIpCall(); }, ɵ48 = (context) => { return context.service.lora.getConfigCall(); }, ɵ49 = (context) => { return context.service.lora.getIdsCall(); }, ɵ50 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.11')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.lte.applicationData', context.firmwareVersion, { minApiVersion: '2.11', maxApiVersion: undefined, }); } } return context.service.lte.getApplicationDataCall(); }, ɵ51 = (context) => { return context.service.mqtt.getBrokerHostnameCall(); }, ɵ52 = (context) => { return context.service.mqtt.getBrokerPortCall(); }, ɵ53 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.clientId', context.firmwareVersion, { minApiVersion: '1.86', maxApiVersion: undefined, }); } } return context.service.mqtt.getClientIdCall(); }, ɵ54 = (context) => { return context.service.mqtt.getPasswordCall(); }, ɵ55 = (context) => { return context.service.mqtt.getRelayNetKeyCall(); }, ɵ56 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.requestTopic', context.firmwareVersion, { minApiVersion: '1.86', maxApiVersion: undefined, }); } } return context.service.mqtt.getRequestTopicCall(); }, ɵ57 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.responseTopic', context.firmwareVersion, { minApiVersion: '1.107', maxApiVersion: undefined, }); } } return context.service.mqtt.getResponseTopicCall(); }, ɵ58 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.username', context.firmwareVersion, { minApiVersion: '1.86', maxApiVersion: undefined, }); } } return context.service.mqtt.getUsernameCall(); }, ɵ59 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.55')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.nfc.autoLogProfileId', context.firmwareVersion, { minApiVersion: '1.55', maxApiVersion: undefined, }); } } return context.service.interface.getNfcAutologProfileIdCall(); }, ɵ60 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.85')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.nfc.connectionPriority', context.firmwareVersion, { minApiVersion: '1.85', maxApiVersion: undefined, }); } } return context.service.interface.getNfcConnectionPriorityCall(); }, ɵ61 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.countryCode', context.firmwareVersion, { minApiVersion: '1.88', maxApiVersion: undefined, }); } } return context.service.wifi.getCountryCodeCall(); }, ɵ62 = (context) => { return context.service.wifi.getDnsIpCall(); }, ɵ63 = (context) => { return context.service.wifi.getGatewayIpCall(); }, ɵ64 = (context) => { return context.service.wifi.getIpCall(); }, ɵ65 = (context) => { return context.service.wifi.getKeyCall(); }, ɵ66 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.keyVisibility', context.firmwareVersion, { minApiVersion: '1.88', maxApiVersion: undefined, }); } } return context.service.wifi.getKeyVisibilityCall(); }, ɵ67 = (context) => { return context.service.wifi.getIpMaskCall(); }, ɵ68 = (context) => { return context.service.wifi.getModeCall(); }, ɵ69 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.13')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.networkMode', context.firmwareVersion, { minApiVersion: '2.13', maxApiVersion: undefined, }); } } return context.service.wifi.getNetworkModeCall(); }, ɵ70 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.protocol', context.firmwareVersion, { minApiVersion: '1.88', maxApiVersion: undefined, }); } } return context.service.wifi.getProtocolCall(); }, ɵ71 = (context) => { return context.service.wifi.getSSIDCall(); }, ɵ72 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.ssidVisibility', context.firmwareVersion, { minApiVersion: '1.88', maxApiVersion: undefined, }); } } return context.service.wifi.getSSIDVisibilityCall(); }, ɵ73 = (context) => { if (context.firmwareVersion) { if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) { return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.txPower', context.firmwareVersion, { minApiVersion: '1.88', maxApiVersion: undefined, }); } } return context.service.wifi.getTxPowerCall(); }; export const READ_CONFIGURATOR_CONFIG = { 'application.data': ɵ0, 'application.name': ɵ1, 'application.productCode': ɵ2, 'application.universalLink': ɵ3, 'application.uri': ɵ4, 'cloud.dataLog.mqttPublishTopic': ɵ5, 'cloud.dataLog.mqttSubscribeTopic': ɵ6, 'cloud.dataLog.uploadPeriod': ɵ7, 'cloud.mqtt.brokerPort': ɵ8, 'cloud.mqtt.clientId': ɵ9, 'cloud.mqtt.password': ɵ10, 'cloud.mqtt.username': ɵ11, 'cloud.platform': ɵ12, configFormatVersion: ɵ13, 'data.bundles[].dataLog.cryptoGroupId': ɵ14, 'data.bundles[].dataLog.period': ɵ15, 'data.bundles[].name': ɵ16, 'data.profiles[].alias': ɵ17, 'data.profiles[].lifeTime': ɵ18, 'data.profiles[].username': ɵ19, 'data.variables[].address': ɵ20, 'data.variables[].bundleId': ɵ21, 'data.variables[].length': ɵ22, 'data.variables[].meta': ɵ23, 'data.variables[].rawMeta': ɵ24, 'data.variables[].type': ɵ25, 'jvm.codeSize': ɵ26, 'jvm.profileId': ɵ27, 'ports.ethernet.gatewayIp': ɵ28, 'ports.ethernet.ip': ɵ29, 'ports.ethernet.ipMask': ɵ30, 'tap.autoRebootTimeout': ɵ31, 'tap.maxLowPowerTime': ɵ32, 'tap.powerOptimization': ɵ33, 'tap.powerOptimizationOptions': ɵ34, 'tap.scram.hashIteration': ɵ35, 'tap.security': ɵ36, 'tap.time.ntpServer': ɵ37, 'tap.time.zone': ɵ38, 'target.firmwareVersion': ɵ39, 'target.modbusDefaultSlaveAddress': ɵ40, 'target.protocol.type': ɵ41, version: ɵ42, 'wireless.options.authorizedProtocols': ɵ43, 'wireless.options.inactivityTimeout': ɵ44, 'wireless.options.network': ɵ45, 'wireless.options.pairing': ɵ46, 'wireless.protocols.ethernet.dnsIp': ɵ47, 'wireless.protocols.lora.config': ɵ48, 'wireless.protocols.lora.ids': ɵ49, 'wireless.protocols.lte.applicationData': ɵ50, 'wireless.protocols.mqtt.brokerHostname': ɵ51, 'wireless.protocols.mqtt.brokerPort': ɵ52, 'wireless.protocols.mqtt.clientId': ɵ53, 'wireless.protocols.mqtt.password': ɵ54, 'wireless.protocols.mqtt.relayNetKey': ɵ55, 'wireless.protocols.mqtt.requestTopic': ɵ56, 'wireless.protocols.mqtt.responseTopic': ɵ57, 'wireless.protocols.mqtt.username': ɵ58, 'wireless.protocols.nfc.autoLogProfileId': ɵ59, 'wireless.protocols.nfc.connectionPriority': ɵ60, 'wireless.protocols.wifi.countryCode': ɵ61, 'wireless.protocols.wifi.dnsIp': ɵ62, 'wireless.protocols.wifi.gatewayIp': ɵ63, 'wireless.protocols.wifi.ip': ɵ64, 'wireless.protocols.wifi.key': ɵ65, 'wireless.protocols.wifi.keyVisibility': ɵ66, 'wireless.protocols.wifi.mask': ɵ67, 'wireless.protocols.wifi.mode': ɵ68, 'wireless.protocols.wifi.networkMode': ɵ69, 'wireless.protocols.wifi.protocol': ɵ70, 'wireless.protocols.wifi.ssid': ɵ71, 'wireless.protocols.wifi.ssidVisibility': ɵ72, 'wireless.protocols.wifi.txPower': ɵ73, }; export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ15, ɵ16, ɵ17, ɵ18, ɵ19, ɵ20, ɵ21, ɵ22, ɵ23, ɵ24, ɵ25, ɵ26, ɵ27, ɵ28, ɵ29, ɵ30, ɵ31, ɵ32, ɵ33, ɵ34, ɵ35, ɵ36, ɵ37, ɵ38, ɵ39, ɵ40, ɵ41, ɵ42, ɵ43, ɵ44, ɵ45, ɵ46, ɵ47, ɵ48, ɵ49, ɵ50, ɵ51, ɵ52, ɵ53, ɵ54, ɵ55, ɵ56, ɵ57, ɵ58, ɵ59, ɵ60, ɵ61, ɵ62, ɵ63, ɵ64, ɵ65, ɵ66, ɵ67, ɵ68, ɵ69, ɵ70, ɵ71, ɵ72, ɵ73 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb25maWd1cmF0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlndXJhdG9yL3NyYy9saWIvZ2VuZXJhdGVkL3JlYWQtY29uZmlndXJhdG9yLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQXNDSCxPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG1DQUFtQyxHQUNwQyxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxXQUFXLENBQUM7V0FJN0MsQ0FDbEIsT0FBcUMsRUFDRixFQUFFO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUM1RCxDQUFDLE9BRW1CLENBQ2xCLE9BQXFDLEVBQ0YsRUFBRTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3BELENBQUMsT0FFMEIsQ0FDekIsT0FBcUMsRUFDRixFQUFFO0lBQ3JDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUMzQixJQUNFLENBQUMsc0NBQXNDLENBQ3JDLE9BQU8sQ0FBQyxlQUFlLEVBQ3ZCLE9BQU8sQ0FDUixFQUNEO1lBQ0EsT0FBTyxJQUFJLHNDQUFzQyxDQUMvQyx5QkFBeUIsRUFDekIsT0FBTyxDQUFDLGVBQWUsRUFDdkI7Z0JBQ0UsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGFBQWEsRUFBRSxTQUFTO2FBQ3pCLENBQ0YsQ0FBQztTQUNIO0tBQ0Y7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDeEQsQ0FBQyxPQUU0QixDQUMzQixPQUFxQyxFQUNGLEVBQUU7SUFDckMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQzFE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