UNPKG

@app-masters/js-lib

Version:
157 lines (148 loc) 8.97 kB
"use strict"; 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;