UNPKG

@firebolt-js/sdk

Version:
60 lines (56 loc) 1.45 kB
import Transport from '../Transport/index.mjs' import Events from '../Events/index.mjs' import router from './Router.mjs' function prop( moduleName, key, params, callbackOrValue = undefined, immutable, readonly, contextParameterCount, ) { const numArgs = Object.values(params).length const type = router(params, callbackOrValue, contextParameterCount) if (type === 'getter') { return Transport.send(moduleName, key, params) } else if (type === 'subscriber') { // subscriber if (immutable) { throw new Error('Cannot subscribe to an immutable property') } return Events.listen( moduleName, key + 'Changed', ...Object.values(params), callbackOrValue, ) } else if (type === 'setter') { // setter if (immutable) { throw new Error('Cannot set a value to an immutable property') } if (readonly) { throw new Error('Cannot set a value to a readonly property') } return Transport.send( moduleName, 'set' + key[0].toUpperCase() + key.substring(1), Object.assign( { value: callbackOrValue, }, params, ), ) } else if (numArgs < contextParameterCount) { throw new Error( 'Cannot get a value without all required context parameters.', ) } else { throw new Error('Property accessed with unexpected number of parameters.') } } export default { prop: prop, }