@app-masters/js-lib
Version:
157 lines (148 loc) • 8.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var moment = _interopRequireWildcard(require("moment"));
var _http = _interopRequireDefault(require("./http"));
var _rollbar = _interopRequireDefault(require("./rollbar"));
var _version = _interopRequireDefault(require("./version"));
var _httpErrorHandler = _interopRequireDefault(require("./httpErrorHandler"));
var _notification = _interopRequireDefault(require("./notification"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var AppBootstrap = /*#__PURE__*/function () {
function AppBootstrap() {
_classCallCheck(this, AppBootstrap);
}
_createClass(AppBootstrap, null, [{
key: "setup",
value: function setup(client, platform, version, envs, storage, callback, customEnv) {
// Validate parans
if (!client || ['web', 'mobile', 'admin'].indexOf(client) < 0) throw 'AppBootstrap.setup - Unrecognized or undefined client: ' + client;
if (client === 'web' && platform !== 'web') throw 'AppBootstrap.setup - Platform should be "web" when client is "web"';
if (!platform || ['web', 'android', 'ios'].indexOf(platform) < 0) throw 'AppBootstrap.setup - Unrecognized or undefined platform: ' + platform + ' - should be one of: web, android, ios';
if (client === 'mobile' && ['android', 'ios'].indexOf(platform) < 0) throw 'AppBootstrap.setup - Mobile platform should be one of: android, ios';
if (_typeof(version) === "object") throw 'AppBootstrap.setup - Version param should be just a string, like "1.2.3"';
// @todo Validate envs
// @todo Validate storage
if (!callback || !callback.onMinVersionNotSatifies || !callback.onNewVersion || !callback.onUncaughtError) throw 'AppBootstrap.setup - You must pass callback parameter, with onMinVersionNotSatisfies, onNewVersion and onUncaughtError methods.';
AppBootstrap.callbacks = callback;
var logs = [];
// 1 - Decide env
var nodeEnv = null;
if (customEnv) {
nodeEnv = customEnv;
logs.push('Custom environment provided: ' + customEnv);
} else {
nodeEnv = process.env.NODE_ENV;
}
var firebase;
var buildTime;
var buildTimeString;
if (client !== 'mobile') {
firebase = process.env.FIREBASE && process.env.FIREBASE === true;
if (process.env.BUILD_TIME) {
buildTime = new Date(process.env.BUILD_TIME);
buildTimeString = buildTime.toDateString() + ' ' + buildTime.toTimeString();
}
logs.push('CLIENT: ' + client + ' - ENV: ' + nodeEnv + ' - VERSION: ' + version + (process.env.APP_RELEASE ? ' - RELEASE DATE: ' + process.env.APP_RELEASE : '') + (buildTimeString ? ' - BUILD_TIME: ' + buildTimeString : '') + (firebase ? ' - FIREBASE: ' + firebase : ''));
} else if (__DEV__ !== undefined) {
logs.push('MOBILE CLIENT: ' + client + ' - ENV: ' + nodeEnv + ' - VERSION: ' + version);
}
var config;
if (nodeEnv === 'development' && firebase) {
config = envs['development_firebase'];
// logs.push('> firebase development <');
} else {
config = envs[nodeEnv];
}
// console.log(logs);
if (nodeEnv === 'development') {
// console.log('Loaded config', config);
if (config === undefined) {
throw new Error('No config for NODE_ENV "' + nodeEnv + '"');
}
}
AppBootstrap.config = config;
// 2 - Rollbar / bugsnag
if (config.rollbarToken && client !== 'mobile') {
_rollbar.default.setup(config.rollbarToken, client + '_' + nodeEnv, process.env.APP_VERSION, nodeEnv);
} else if (client === 'mobile') {
// Config of rollbar for native
// console.log('AppBootstrap is not configuring the Rollbar, please check if other source is configuring it.');
} else if (nodeEnv === 'development') {
// console.warn('Rollbar not set on dev. It\'s ok.');
} else {
throw new Error('You must have Rollbar on your app.');
}
// 3 - Http
_http.default.setBaseURL(config.baseUrl);
_http.default.setup(version, client, nodeEnv, 'application/json', callback);
// 4 - Moment
moment.updateLocale('pt-br', require('moment/locale/pt-br'));
// 5 - Version Check
_version.default.setCurrentVersion(client, platform, version);
_version.default.onMinVersionNotSatisfies(_http.default, callback.onMinVersionNotSatifies);
_version.default.onNewVersion(storage).then(callback.onNewVersion);
// // 6 - Capture errors onUncaught in AmActions
// AMActions.onUncaughtError((e) => {
// if (e.message === 'Network request failed') {
// console.log('Network request failed, maybe you are offline');
// } else {
// console.error(e);
// }
// });
// 7 - Mobile fixes
if (client === 'mobile') {
if (nodeEnv === 'production') {
// Remove logs on PROD (performance)
console.log = function () {};
console.info = function () {};
console.warn = function () {};
console.error = function () {};
console.debug = function () {};
console.clear = function () {};
}
console.disableYellowBox = true;
}
// 8 - Notification
if (config.notification) {
_notification.default.setup(config.notification);
}
return true;
}
}, {
key: "onUncaughtError",
value: function onUncaughtError() {
return AppBootstrap.callbacks.onUncaughtError;
}
}, {
key: "onMinVersionNotSatifies",
value: function onMinVersionNotSatifies() {
return AppBootstrap.callbacks.onMinVersionNotSatifies;
}
}, {
key: "onNewVersion",
value: function onNewVersion() {
return AppBootstrap.callbacks.onNewVersion;
}
}, {
key: "getConfig",
value: function getConfig() {
return AppBootstrap.config;
}
}]);
return AppBootstrap;
}();
AppBootstrap.callbacks = {};
AppBootstrap.config = null;
var _default = AppBootstrap;
exports.default = _default;