octoblu-device-schema-transmogrifier
Version:
Transmogrifies message and device schemas from version NULL to v1.0.0 for meshblu devices
56 lines (46 loc) • 1.72 kB
text/coffeescript
# This weirdness is to support octoblu/bower-octoblu-device-schema-transmogrifier
module.exports = (_) =>
class OctobluDeviceSchemaTransmogrifier
constructor: () ->
throw new Error('Someone tried to transmogrify an undefined device! Stop doing that.') unless ?
transmogrify: =>
return _.cloneDeep if _.get(, 'schemas.version') == '1.0.0'
return _.cloneDeep if _.get(, 'schemas.version') == '2.0.0'
device =
return _.omit device, 'messageSchema', 'messageFormSchema', 'optionsSchema'
migratedSchemas: (device) =>
device = _.cloneDeep device
_.assign device, {
schemas:
version: '1.0.0'
message:
configure:
form:
}
_getConfigureSchema: (device) =>
return {} if _.isEmpty device.optionsSchema
return {
default:
type: 'object'
properties:
options: device.optionsSchema
}
_getFormSchema: (device) =>
return {} if _.isEmpty device.messageFormSchema
return {
message:
default:
angular: device.messageFormSchema
}
_getMessageSchema: (device) =>
return {} if _.isEmpty device.messageSchema
return {
default: _.assign({}, device.messageSchema, )
}
_getFormMessageSchemaPortion: (device) =>
return {} unless device.messageFormSchema
return {
'x-form-schema':
angular: 'message.default.angular'
}
return OctobluDeviceSchemaTransmogrifier