feature.js 973 B

1234567891011121314151617181920212223242526272829
  1. const isProd = process.env.NODE_ENV !== 'development'
  2. const isStaging = process.env.ENV === 'staging'
  3. function isEnable (feature) {
  4. return !isProd || process.env[feature] === 'enabled'
  5. }
  6. function createFeature (feature) {
  7. return { [feature]: isEnable(feature) }
  8. }
  9. function getTimestamp () {
  10. const now = new Date()
  11. return `${now.getFullYear()}${(now.getMonth() + 1).toString().padStart(2, '0')}${now.getDate().toString().padStart(2, '0')}${now.getHours().toString().padStart(2, '0')}${now.getMinutes().toString().padStart(2, '0')}${now.getSeconds().toString().padStart(2, '0')}`
  12. }
  13. module.exports = {
  14. isProd,
  15. isStaging,
  16. logger: isStaging || isEnable('LOGGER'),
  17. features: {
  18. __VERSION__: JSON.stringify(`v${require('./package.json').version}.${getTimestamp()}`),
  19. __DEV__: !isProd,
  20. __STAGING__: !isProd || isStaging,
  21. ...createFeature('__PLACEHOLDER__'),
  22. ...createFeature('__DEVICE_DASHBARD__'),
  23. ...createFeature('__TAKEOVER__')
  24. }
  25. }