@edx/frontend-platform 7.1.3 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/analytics/MockAnalyticsService.js +2 -2
  2. package/analytics/MockAnalyticsService.js.map +1 -1
  3. package/analytics/SegmentAnalyticsService.js +2 -2
  4. package/analytics/SegmentAnalyticsService.js.map +1 -1
  5. package/analytics/index.js.map +1 -1
  6. package/analytics/interface.js.map +1 -1
  7. package/auth/AxiosCsrfTokenService.js +2 -2
  8. package/auth/AxiosCsrfTokenService.js.map +1 -1
  9. package/auth/AxiosJwtAuthService.js +8 -5
  10. package/auth/AxiosJwtAuthService.js.map +1 -1
  11. package/auth/AxiosJwtTokenService.js +2 -2
  12. package/auth/AxiosJwtTokenService.js.map +1 -1
  13. package/auth/LocalForageCache.js.map +1 -1
  14. package/auth/MockAuthService.js +2 -2
  15. package/auth/MockAuthService.js.map +1 -1
  16. package/auth/index.js.map +1 -1
  17. package/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -1
  18. package/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -1
  19. package/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -1
  20. package/auth/interceptors/createRetryInterceptor.js.map +1 -1
  21. package/auth/interface.js.map +1 -1
  22. package/auth/utils.js +2 -2
  23. package/auth/utils.js.map +1 -1
  24. package/config.js.map +1 -1
  25. package/constants.js.map +1 -1
  26. package/i18n/countries.js.map +1 -1
  27. package/i18n/index.js.map +1 -1
  28. package/i18n/injectIntlWithShim.js +7 -8
  29. package/i18n/injectIntlWithShim.js.map +1 -1
  30. package/i18n/languages.js.map +1 -1
  31. package/i18n/lib.js +0 -5
  32. package/i18n/lib.js.map +1 -1
  33. package/i18n/scripts/intl-imports.js +0 -1
  34. package/i18n/scripts/intl-imports.js.map +1 -1
  35. package/i18n/scripts/transifex-utils.js.map +1 -1
  36. package/index.js.map +1 -1
  37. package/initialize.js +2 -2
  38. package/initialize.js.map +1 -1
  39. package/logging/MockLoggingService.js +2 -2
  40. package/logging/MockLoggingService.js.map +1 -1
  41. package/logging/NewRelicLoggingService.js +2 -5
  42. package/logging/NewRelicLoggingService.js.map +1 -1
  43. package/logging/index.js.map +1 -1
  44. package/logging/interface.js.map +1 -1
  45. package/package.json +7 -7
  46. package/pubSub.js.map +1 -1
  47. package/react/AppContext.js.map +1 -1
  48. package/react/AppProvider.js.map +1 -1
  49. package/react/AuthenticatedPageRoute.js.map +1 -1
  50. package/react/ErrorBoundary.js +7 -8
  51. package/react/ErrorBoundary.js.map +1 -1
  52. package/react/ErrorPage.js.map +1 -1
  53. package/react/LoginRedirect.js.map +1 -1
  54. package/react/OptionalReduxProvider.js.map +1 -1
  55. package/react/PageWrap.js.map +1 -1
  56. package/react/hooks.js.map +1 -1
  57. package/react/index.js.map +1 -1
  58. package/scripts/GoogleAnalyticsLoader.js +2 -2
  59. package/scripts/GoogleAnalyticsLoader.js.map +1 -1
  60. package/scripts/index.js.map +1 -1
  61. package/testing/index.js.map +1 -1
  62. package/testing/initializeMockApp.js +2 -2
  63. package/testing/initializeMockApp.js.map +1 -1
  64. package/testing/mockMessages.js.map +1 -1
  65. package/utils.js +2 -2
  66. package/utils.js.map +1 -1
package/i18n/lib.js CHANGED
@@ -69,7 +69,6 @@ var supportedLocales = ['ar',
69
69
  // Thai
70
70
  'uk' // Ukrainian
71
71
  ];
72
-
73
72
  var rtlLocales = ['ar',
74
73
  // Arabic
75
74
  'he',
@@ -80,7 +79,6 @@ var rtlLocales = ['ar',
80
79
  // Farsi Iran
81
80
  'ur' // Urdu (not currently supported)
82
81
  ];
83
-
84
82
  var config = null;
85
83
  var loggingService = null;
86
84
  var messages = null;
@@ -252,7 +250,6 @@ var messagesShape = {
252
250
  // Thai
253
251
  uk: PropTypes.objectOf(PropTypes.string) // Ukrainian
254
252
  };
255
-
256
253
  var optionsShape = {
257
254
  config: PropTypes.object.isRequired,
258
255
  loggingService: PropTypes.shape({
@@ -299,14 +296,12 @@ export function configure(options) {
299
296
  console.warn("Unexpected locale: ".concat(key)); // eslint-disable-line no-console
300
297
  }
301
298
  });
302
-
303
299
  supportedLocales.forEach(function (key) {
304
300
  if (messages[key] === undefined) {
305
301
  console.warn("Missing locale: ".concat(key)); // eslint-disable-line no-console
306
302
  }
307
303
  });
308
304
  }
309
-
310
305
  handleRtl();
311
306
  }
312
307
  //# sourceMappingURL=lib.js.map
package/i18n/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","names":["PropTypes","Cookies","merge","cookies","supportedLocales","rtlLocales","config","loggingService","messages","intlShape","object","getLoggingService","LOCALE_TOPIC","LOCALE_CHANGED","concat","getCookies","getPrimaryLanguageSubtag","code","split","findSupportedLocale","locale","undefined","getLocale","Error","cookieLangPref","get","LANGUAGE_PREFERENCE_COOKIE_NAME","toLowerCase","global","navigator","language","getMessages","arguments","length","isRtl","includes","handleRtl","document","getElementsByTagName","setAttribute","messagesShape","ar","objectOf","string","en","fr","ca","he","id","pl","ru","th","uk","optionsShape","isRequired","shape","logError","func","oneOfType","arrayOf","mergeMessages","newMessages","msgs","Array","isArray","apply","_toConsumableArray","configure","options","checkPropTypes","ENVIRONMENT","Object","keys","forEach","key","indexOf","console","warn"],"sources":["../../src/i18n/lib.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport Cookies from 'universal-cookie';\nimport merge from 'lodash.merge';\n\nimport '@formatjs/intl-pluralrules/polyfill';\nimport '@formatjs/intl-pluralrules/locale-data/ar';\nimport '@formatjs/intl-pluralrules/locale-data/en';\nimport '@formatjs/intl-pluralrules/locale-data/es';\nimport '@formatjs/intl-pluralrules/locale-data/fr';\nimport '@formatjs/intl-pluralrules/locale-data/zh';\nimport '@formatjs/intl-pluralrules/locale-data/ca';\nimport '@formatjs/intl-pluralrules/locale-data/he';\nimport '@formatjs/intl-pluralrules/locale-data/id';\nimport '@formatjs/intl-pluralrules/locale-data/ko';\nimport '@formatjs/intl-pluralrules/locale-data/pl';\nimport '@formatjs/intl-pluralrules/locale-data/pt';\nimport '@formatjs/intl-pluralrules/locale-data/ru';\nimport '@formatjs/intl-pluralrules/locale-data/th';\nimport '@formatjs/intl-pluralrules/locale-data/uk';\n\nimport '@formatjs/intl-relativetimeformat/polyfill';\nimport '@formatjs/intl-relativetimeformat/locale-data/ar';\nimport '@formatjs/intl-relativetimeformat/locale-data/en';\nimport '@formatjs/intl-relativetimeformat/locale-data/es';\nimport '@formatjs/intl-relativetimeformat/locale-data/fr';\nimport '@formatjs/intl-relativetimeformat/locale-data/zh';\nimport '@formatjs/intl-relativetimeformat/locale-data/ca';\nimport '@formatjs/intl-relativetimeformat/locale-data/he';\nimport '@formatjs/intl-relativetimeformat/locale-data/id';\nimport '@formatjs/intl-relativetimeformat/locale-data/ko';\nimport '@formatjs/intl-relativetimeformat/locale-data/pl';\nimport '@formatjs/intl-relativetimeformat/locale-data/pt';\nimport '@formatjs/intl-relativetimeformat/locale-data/ru';\nimport '@formatjs/intl-relativetimeformat/locale-data/th';\nimport '@formatjs/intl-relativetimeformat/locale-data/uk';\n\nconst cookies = new Cookies();\nconst supportedLocales = [\n 'ar', // Arabic\n // NOTE: 'en' is not included in this list intentionally, since it's the fallback.\n 'es-419', // Spanish, Latin American\n 'fa', // Farsi\n 'fa-ir', // Farsi, Iran\n 'fr', // French\n 'zh-cn', // Chinese, Simplified\n 'ca', // Catalan\n 'he', // Hebrew\n 'id', // Indonesian\n 'ko-kr', // Korean (Korea)\n 'pl', // Polish\n 'pt-br', // Portuguese (Brazil)\n 'ru', // Russian\n 'th', // Thai\n 'uk', // Ukrainian\n];\nconst rtlLocales = [\n 'ar', // Arabic\n 'he', // Hebrew\n 'fa', // Farsi (not currently supported)\n 'fa-ir', // Farsi Iran\n 'ur', // Urdu (not currently supported)\n];\n\nlet config = null;\nlet loggingService = null;\nlet messages = null;\n\n/**\n * @memberof module:Internationalization\n *\n * Prior versions of react-intl (our primary implementation of the i18n service) included a\n * PropTypes-based 'shape' for its `intl` object. This has since been removed. For legacy\n * compatibility, we include an `intlShape` export that is set to PropTypes.object. Usage of this\n * export is deprecated.\n *\n * @deprecated\n */\nexport const intlShape = PropTypes.object;\n\n/**\n *\n * @ignore\n * @returns {LoggingService}\n */\nexport const getLoggingService = () => loggingService;\n\n/**\n * @memberof module:Internationalization\n */\nexport const LOCALE_TOPIC = 'LOCALE';\n\n/**\n * @memberof module:Internationalization\n */\nexport const LOCALE_CHANGED = `${LOCALE_TOPIC}.CHANGED`;\n\n/**\n *\n * @memberof module:Internationalization\n * @returns {Cookies}\n */\nexport function getCookies() {\n return cookies;\n}\n\n/**\n * Some of our dependencies function on primary language subtags, rather than full locales.\n * This function strips a locale down to that first subtag. Depending on the code, this\n * may be 2 or more characters.\n *\n * @param {string} code\n * @memberof module:Internationalization\n */\nexport function getPrimaryLanguageSubtag(code) {\n return code.split('-')[0];\n}\n\n/**\n * Finds the closest supported locale to the one provided. This is done in three steps:\n *\n * 1. Returning the locale itself if its exact language code is supported.\n * 2. Returning the primary language subtag of the language code if it is supported (ar for ar-eg,\n * for instance).\n * 3. Returning 'en' if neither of the above produce a supported locale.\n *\n * @param {string} locale\n * @returns {string}\n * @memberof module:Internationalization\n */\nexport function findSupportedLocale(locale) {\n if (messages[locale] !== undefined) {\n return locale;\n }\n\n if (messages[getPrimaryLanguageSubtag(locale)] !== undefined) {\n return getPrimaryLanguageSubtag(locale);\n }\n\n return 'en';\n}\n\n/**\n * Get the locale from the cookie or, failing that, the browser setting.\n * Gracefully fall back to a more general primary language subtag or to English (en)\n * if we don't support that language.\n *\n * @param {string} locale If a locale is provided, returns the closest supported locale. Optional.\n * @throws An error if i18n has not yet been configured.\n * @returns {string}\n * @memberof module:Internationalization\n */\nexport function getLocale(locale) {\n if (messages === null) {\n throw new Error('getLocale called before configuring i18n. Call configure with messages first.');\n }\n // 1. Explicit application request\n if (locale !== undefined) {\n return findSupportedLocale(locale);\n }\n // 2. User setting in cookie\n const cookieLangPref = cookies\n .get(config.LANGUAGE_PREFERENCE_COOKIE_NAME);\n if (cookieLangPref) {\n return findSupportedLocale(cookieLangPref.toLowerCase());\n }\n // 3. Browser language (default)\n // Note that some browers prefer upper case for the region part of the locale, while others don't.\n // Thus the toLowerCase, for consistency.\n // https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/language\n return findSupportedLocale(global.navigator.language.toLowerCase());\n}\n\n/**\n * Returns messages for the provided locale, or the user's preferred locale if no argument is\n * provided.\n *\n * @param {string} [locale=getLocale()]\n * @memberof module:Internationalization\n */\nexport function getMessages(locale = getLocale()) {\n return messages[locale];\n}\n\n/**\n * Determines if the provided locale is a right-to-left language.\n *\n * @param {string} locale\n * @memberof module:Internationalization\n */\nexport function isRtl(locale) {\n return rtlLocales.includes(locale);\n}\n\n/**\n * Handles applying the RTL stylesheet and \"dir=rtl\" attribute to the html tag if the current locale\n * is a RTL language.\n *\n * @memberof module:Internationalization\n */\nexport function handleRtl() {\n if (isRtl(getLocale())) {\n global.document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');\n } else {\n global.document.getElementsByTagName('html')[0].setAttribute('dir', 'ltr');\n }\n}\n\nconst messagesShape = {\n ar: PropTypes.objectOf(PropTypes.string), // Arabic\n en: PropTypes.objectOf(PropTypes.string),\n 'es-419': PropTypes.objectOf(PropTypes.string), // Spanish, Latin American\n fr: PropTypes.objectOf(PropTypes.string), // French\n 'zh-cn': PropTypes.objectOf(PropTypes.string), // Chinese, Simplified\n ca: PropTypes.objectOf(PropTypes.string), // Catalan\n he: PropTypes.objectOf(PropTypes.string), // Hebrew\n id: PropTypes.objectOf(PropTypes.string), // Indonesian\n 'ko-kr': PropTypes.objectOf(PropTypes.string), // Korean (Korea)\n pl: PropTypes.objectOf(PropTypes.string), // Polish\n 'pt-br': PropTypes.objectOf(PropTypes.string), // Portuguese (Brazil)\n ru: PropTypes.objectOf(PropTypes.string), // Russian\n th: PropTypes.objectOf(PropTypes.string), // Thai\n uk: PropTypes.objectOf(PropTypes.string), // Ukrainian\n};\n\nconst optionsShape = {\n config: PropTypes.object.isRequired,\n loggingService: PropTypes.shape({\n logError: PropTypes.func.isRequired,\n }).isRequired,\n messages: PropTypes.oneOfType([\n PropTypes.shape(messagesShape),\n PropTypes.arrayOf(PropTypes.shape(messagesShape)),\n ]).isRequired,\n};\n\n/**\n *\n *\n * @param {Object} newMessages\n * @returns {Object}\n * @memberof module:Internationalization\n */\nexport function mergeMessages(newMessages) {\n const msgs = Array.isArray(newMessages) ? merge({}, ...newMessages) : newMessages;\n messages = merge(messages, msgs);\n\n return messages;\n}\n\n/**\n * Configures the i18n library with messages for your application.\n *\n * Logs a warning if it detects a locale it doesn't expect (as defined by the supportedLocales list\n * above), or if an expected locale is not provided.\n *\n * @param {Object} options\n * @param {LoggingService} options.loggingService\n * @param {Object} options.config\n * @param {Object} options.messages\n * @memberof module:Internationalization\n */\nexport function configure(options) {\n PropTypes.checkPropTypes(optionsShape, options, 'property', 'i18n');\n // eslint-disable-next-line prefer-destructuring\n loggingService = options.loggingService;\n // eslint-disable-next-line prefer-destructuring\n config = options.config;\n messages = Array.isArray(options.messages) ? merge({}, ...options.messages) : options.messages;\n\n if (config.ENVIRONMENT !== 'production') {\n Object.keys(messages).forEach((key) => {\n if (supportedLocales.indexOf(key) < 0) {\n console.warn(`Unexpected locale: ${key}`); // eslint-disable-line no-console\n }\n });\n\n supportedLocales.forEach((key) => {\n if (messages[key] === undefined) {\n console.warn(`Missing locale: ${key}`); // eslint-disable-line no-console\n }\n });\n }\n\n handleRtl();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","names":["PropTypes","Cookies","merge","cookies","supportedLocales","rtlLocales","config","loggingService","messages","intlShape","object","getLoggingService","LOCALE_TOPIC","LOCALE_CHANGED","concat","getCookies","getPrimaryLanguageSubtag","code","split","findSupportedLocale","locale","undefined","getLocale","Error","cookieLangPref","get","LANGUAGE_PREFERENCE_COOKIE_NAME","toLowerCase","global","navigator","language","getMessages","arguments","length","isRtl","includes","handleRtl","document","getElementsByTagName","setAttribute","messagesShape","ar","objectOf","string","en","fr","ca","he","id","pl","ru","th","uk","optionsShape","isRequired","shape","logError","func","oneOfType","arrayOf","mergeMessages","newMessages","msgs","Array","isArray","apply","_toConsumableArray","configure","options","checkPropTypes","ENVIRONMENT","Object","keys","forEach","key","indexOf","console","warn"],"sources":["../../src/i18n/lib.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport Cookies from 'universal-cookie';\nimport merge from 'lodash.merge';\n\nimport '@formatjs/intl-pluralrules/polyfill';\nimport '@formatjs/intl-pluralrules/locale-data/ar';\nimport '@formatjs/intl-pluralrules/locale-data/en';\nimport '@formatjs/intl-pluralrules/locale-data/es';\nimport '@formatjs/intl-pluralrules/locale-data/fr';\nimport '@formatjs/intl-pluralrules/locale-data/zh';\nimport '@formatjs/intl-pluralrules/locale-data/ca';\nimport '@formatjs/intl-pluralrules/locale-data/he';\nimport '@formatjs/intl-pluralrules/locale-data/id';\nimport '@formatjs/intl-pluralrules/locale-data/ko';\nimport '@formatjs/intl-pluralrules/locale-data/pl';\nimport '@formatjs/intl-pluralrules/locale-data/pt';\nimport '@formatjs/intl-pluralrules/locale-data/ru';\nimport '@formatjs/intl-pluralrules/locale-data/th';\nimport '@formatjs/intl-pluralrules/locale-data/uk';\n\nimport '@formatjs/intl-relativetimeformat/polyfill';\nimport '@formatjs/intl-relativetimeformat/locale-data/ar';\nimport '@formatjs/intl-relativetimeformat/locale-data/en';\nimport '@formatjs/intl-relativetimeformat/locale-data/es';\nimport '@formatjs/intl-relativetimeformat/locale-data/fr';\nimport '@formatjs/intl-relativetimeformat/locale-data/zh';\nimport '@formatjs/intl-relativetimeformat/locale-data/ca';\nimport '@formatjs/intl-relativetimeformat/locale-data/he';\nimport '@formatjs/intl-relativetimeformat/locale-data/id';\nimport '@formatjs/intl-relativetimeformat/locale-data/ko';\nimport '@formatjs/intl-relativetimeformat/locale-data/pl';\nimport '@formatjs/intl-relativetimeformat/locale-data/pt';\nimport '@formatjs/intl-relativetimeformat/locale-data/ru';\nimport '@formatjs/intl-relativetimeformat/locale-data/th';\nimport '@formatjs/intl-relativetimeformat/locale-data/uk';\n\nconst cookies = new Cookies();\nconst supportedLocales = [\n 'ar', // Arabic\n // NOTE: 'en' is not included in this list intentionally, since it's the fallback.\n 'es-419', // Spanish, Latin American\n 'fa', // Farsi\n 'fa-ir', // Farsi, Iran\n 'fr', // French\n 'zh-cn', // Chinese, Simplified\n 'ca', // Catalan\n 'he', // Hebrew\n 'id', // Indonesian\n 'ko-kr', // Korean (Korea)\n 'pl', // Polish\n 'pt-br', // Portuguese (Brazil)\n 'ru', // Russian\n 'th', // Thai\n 'uk', // Ukrainian\n];\nconst rtlLocales = [\n 'ar', // Arabic\n 'he', // Hebrew\n 'fa', // Farsi (not currently supported)\n 'fa-ir', // Farsi Iran\n 'ur', // Urdu (not currently supported)\n];\n\nlet config = null;\nlet loggingService = null;\nlet messages = null;\n\n/**\n * @memberof module:Internationalization\n *\n * Prior versions of react-intl (our primary implementation of the i18n service) included a\n * PropTypes-based 'shape' for its `intl` object. This has since been removed. For legacy\n * compatibility, we include an `intlShape` export that is set to PropTypes.object. Usage of this\n * export is deprecated.\n *\n * @deprecated\n */\nexport const intlShape = PropTypes.object;\n\n/**\n *\n * @ignore\n * @returns {LoggingService}\n */\nexport const getLoggingService = () => loggingService;\n\n/**\n * @memberof module:Internationalization\n */\nexport const LOCALE_TOPIC = 'LOCALE';\n\n/**\n * @memberof module:Internationalization\n */\nexport const LOCALE_CHANGED = `${LOCALE_TOPIC}.CHANGED`;\n\n/**\n *\n * @memberof module:Internationalization\n * @returns {Cookies}\n */\nexport function getCookies() {\n return cookies;\n}\n\n/**\n * Some of our dependencies function on primary language subtags, rather than full locales.\n * This function strips a locale down to that first subtag. Depending on the code, this\n * may be 2 or more characters.\n *\n * @param {string} code\n * @memberof module:Internationalization\n */\nexport function getPrimaryLanguageSubtag(code) {\n return code.split('-')[0];\n}\n\n/**\n * Finds the closest supported locale to the one provided. This is done in three steps:\n *\n * 1. Returning the locale itself if its exact language code is supported.\n * 2. Returning the primary language subtag of the language code if it is supported (ar for ar-eg,\n * for instance).\n * 3. Returning 'en' if neither of the above produce a supported locale.\n *\n * @param {string} locale\n * @returns {string}\n * @memberof module:Internationalization\n */\nexport function findSupportedLocale(locale) {\n if (messages[locale] !== undefined) {\n return locale;\n }\n\n if (messages[getPrimaryLanguageSubtag(locale)] !== undefined) {\n return getPrimaryLanguageSubtag(locale);\n }\n\n return 'en';\n}\n\n/**\n * Get the locale from the cookie or, failing that, the browser setting.\n * Gracefully fall back to a more general primary language subtag or to English (en)\n * if we don't support that language.\n *\n * @param {string} locale If a locale is provided, returns the closest supported locale. Optional.\n * @throws An error if i18n has not yet been configured.\n * @returns {string}\n * @memberof module:Internationalization\n */\nexport function getLocale(locale) {\n if (messages === null) {\n throw new Error('getLocale called before configuring i18n. Call configure with messages first.');\n }\n // 1. Explicit application request\n if (locale !== undefined) {\n return findSupportedLocale(locale);\n }\n // 2. User setting in cookie\n const cookieLangPref = cookies\n .get(config.LANGUAGE_PREFERENCE_COOKIE_NAME);\n if (cookieLangPref) {\n return findSupportedLocale(cookieLangPref.toLowerCase());\n }\n // 3. Browser language (default)\n // Note that some browers prefer upper case for the region part of the locale, while others don't.\n // Thus the toLowerCase, for consistency.\n // https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/language\n return findSupportedLocale(global.navigator.language.toLowerCase());\n}\n\n/**\n * Returns messages for the provided locale, or the user's preferred locale if no argument is\n * provided.\n *\n * @param {string} [locale=getLocale()]\n * @memberof module:Internationalization\n */\nexport function getMessages(locale = getLocale()) {\n return messages[locale];\n}\n\n/**\n * Determines if the provided locale is a right-to-left language.\n *\n * @param {string} locale\n * @memberof module:Internationalization\n */\nexport function isRtl(locale) {\n return rtlLocales.includes(locale);\n}\n\n/**\n * Handles applying the RTL stylesheet and \"dir=rtl\" attribute to the html tag if the current locale\n * is a RTL language.\n *\n * @memberof module:Internationalization\n */\nexport function handleRtl() {\n if (isRtl(getLocale())) {\n global.document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');\n } else {\n global.document.getElementsByTagName('html')[0].setAttribute('dir', 'ltr');\n }\n}\n\nconst messagesShape = {\n ar: PropTypes.objectOf(PropTypes.string), // Arabic\n en: PropTypes.objectOf(PropTypes.string),\n 'es-419': PropTypes.objectOf(PropTypes.string), // Spanish, Latin American\n fr: PropTypes.objectOf(PropTypes.string), // French\n 'zh-cn': PropTypes.objectOf(PropTypes.string), // Chinese, Simplified\n ca: PropTypes.objectOf(PropTypes.string), // Catalan\n he: PropTypes.objectOf(PropTypes.string), // Hebrew\n id: PropTypes.objectOf(PropTypes.string), // Indonesian\n 'ko-kr': PropTypes.objectOf(PropTypes.string), // Korean (Korea)\n pl: PropTypes.objectOf(PropTypes.string), // Polish\n 'pt-br': PropTypes.objectOf(PropTypes.string), // Portuguese (Brazil)\n ru: PropTypes.objectOf(PropTypes.string), // Russian\n th: PropTypes.objectOf(PropTypes.string), // Thai\n uk: PropTypes.objectOf(PropTypes.string), // Ukrainian\n};\n\nconst optionsShape = {\n config: PropTypes.object.isRequired,\n loggingService: PropTypes.shape({\n logError: PropTypes.func.isRequired,\n }).isRequired,\n messages: PropTypes.oneOfType([\n PropTypes.shape(messagesShape),\n PropTypes.arrayOf(PropTypes.shape(messagesShape)),\n ]).isRequired,\n};\n\n/**\n *\n *\n * @param {Object} newMessages\n * @returns {Object}\n * @memberof module:Internationalization\n */\nexport function mergeMessages(newMessages) {\n const msgs = Array.isArray(newMessages) ? merge({}, ...newMessages) : newMessages;\n messages = merge(messages, msgs);\n\n return messages;\n}\n\n/**\n * Configures the i18n library with messages for your application.\n *\n * Logs a warning if it detects a locale it doesn't expect (as defined by the supportedLocales list\n * above), or if an expected locale is not provided.\n *\n * @param {Object} options\n * @param {LoggingService} options.loggingService\n * @param {Object} options.config\n * @param {Object} options.messages\n * @memberof module:Internationalization\n */\nexport function configure(options) {\n PropTypes.checkPropTypes(optionsShape, options, 'property', 'i18n');\n // eslint-disable-next-line prefer-destructuring\n loggingService = options.loggingService;\n // eslint-disable-next-line prefer-destructuring\n config = options.config;\n messages = Array.isArray(options.messages) ? merge({}, ...options.messages) : options.messages;\n\n if (config.ENVIRONMENT !== 'production') {\n Object.keys(messages).forEach((key) => {\n if (supportedLocales.indexOf(key) < 0) {\n console.warn(`Unexpected locale: ${key}`); // eslint-disable-line no-console\n }\n });\n\n supportedLocales.forEach((key) => {\n if (messages[key] === undefined) {\n console.warn(`Missing locale: ${key}`); // eslint-disable-line no-console\n }\n });\n }\n\n handleRtl();\n}\n"],"mappings":";;;;;;AAAA,OAAOA,SAAS,MAAM,YAAY;AAClC,OAAOC,OAAO,MAAM,kBAAkB;AACtC,OAAOC,KAAK,MAAM,cAAc;AAEhC,OAAO,qCAAqC;AAC5C,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAClD,OAAO,2CAA2C;AAElD,OAAO,4CAA4C;AACnD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AACzD,OAAO,kDAAkD;AAEzD,IAAMC,OAAO,GAAG,IAAIF,OAAO,CAAC,CAAC;AAC7B,IAAMG,gBAAgB,GAAG,CACvB,IAAI;AAAE;AACN;AACA,QAAQ;AAAE;AACV,IAAI;AAAE;AACN,OAAO;AAAE;AACT,IAAI;AAAE;AACN,OAAO;AAAE;AACT,IAAI;AAAE;AACN,IAAI;AAAE;AACN,IAAI;AAAE;AACN,OAAO;AAAE;AACT,IAAI;AAAE;AACN,OAAO;AAAE;AACT,IAAI;AAAE;AACN,IAAI;AAAE;AACN,IAAI,CAAE;AAAA,CACP;AACD,IAAMC,UAAU,GAAG,CACjB,IAAI;AAAE;AACN,IAAI;AAAE;AACN,IAAI;AAAE;AACN,OAAO;AAAE;AACT,IAAI,CAAE;AAAA,CACP;AAED,IAAIC,MAAM,GAAG,IAAI;AACjB,IAAIC,cAAc,GAAG,IAAI;AACzB,IAAIC,QAAQ,GAAG,IAAI;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,SAAS,GAAGT,SAAS,CAACU,MAAM;;AAEzC;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA;EAAA,OAASJ,cAAc;AAAA;;AAErD;AACA;AACA;AACA,OAAO,IAAMK,YAAY,GAAG,QAAQ;;AAEpC;AACA;AACA;AACA,OAAO,IAAMC,cAAc,MAAAC,MAAA,CAAMF,YAAY,aAAU;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,UAAUA,CAAA,EAAG;EAC3B,OAAOZ,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASa,wBAAwBA,CAACC,IAAI,EAAE;EAC7C,OAAOA,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,MAAM,EAAE;EAC1C,IAAIZ,QAAQ,CAACY,MAAM,CAAC,KAAKC,SAAS,EAAE;IAClC,OAAOD,MAAM;EACf;EAEA,IAAIZ,QAAQ,CAACQ,wBAAwB,CAACI,MAAM,CAAC,CAAC,KAAKC,SAAS,EAAE;IAC5D,OAAOL,wBAAwB,CAACI,MAAM,CAAC;EACzC;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,SAASA,CAACF,MAAM,EAAE;EAChC,IAAIZ,QAAQ,KAAK,IAAI,EAAE;IACrB,MAAM,IAAIe,KAAK,CAAC,+EAA+E,CAAC;EAClG;EACA;EACA,IAAIH,MAAM,KAAKC,SAAS,EAAE;IACxB,OAAOF,mBAAmB,CAACC,MAAM,CAAC;EACpC;EACA;EACA,IAAMI,cAAc,GAAGrB,OAAO,CAC3BsB,GAAG,CAACnB,MAAM,CAACoB,+BAA+B,CAAC;EAC9C,IAAIF,cAAc,EAAE;IAClB,OAAOL,mBAAmB,CAACK,cAAc,CAACG,WAAW,CAAC,CAAC,CAAC;EAC1D;EACA;EACA;EACA;EACA;EACA,OAAOR,mBAAmB,CAACS,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACH,WAAW,CAAC,CAAC,CAAC;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,WAAWA,CAAA,EAAuB;EAAA,IAAtBX,MAAM,GAAAY,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAX,SAAA,GAAAW,SAAA,MAAGV,SAAS,CAAC,CAAC;EAC9C,OAAOd,QAAQ,CAACY,MAAM,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,KAAKA,CAACd,MAAM,EAAE;EAC5B,OAAOf,UAAU,CAAC8B,QAAQ,CAACf,MAAM,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASgB,SAASA,CAAA,EAAG;EAC1B,IAAIF,KAAK,CAACZ,SAAS,CAAC,CAAC,CAAC,EAAE;IACtBM,MAAM,CAACS,QAAQ,CAACC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;EAC5E,CAAC,MAAM;IACLX,MAAM,CAACS,QAAQ,CAACC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;EAC5E;AACF;AAEA,IAAMC,aAAa,GAAG;EACpBC,EAAE,EAAEzC,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1CC,EAAE,EAAE5C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EACxC,QAAQ,EAAE3C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAChDE,EAAE,EAAE7C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1C,OAAO,EAAE3C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC/CG,EAAE,EAAE9C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1CI,EAAE,EAAE/C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1CK,EAAE,EAAEhD,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1C,OAAO,EAAE3C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC/CM,EAAE,EAAEjD,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1C,OAAO,EAAE3C,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC/CO,EAAE,EAAElD,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1CQ,EAAE,EAAEnD,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC;EAAE;EAC1CS,EAAE,EAAEpD,SAAS,CAAC0C,QAAQ,CAAC1C,SAAS,CAAC2C,MAAM,CAAC,CAAE;AAC5C,CAAC;AAED,IAAMU,YAAY,GAAG;EACnB/C,MAAM,EAAEN,SAAS,CAACU,MAAM,CAAC4C,UAAU;EACnC/C,cAAc,EAAEP,SAAS,CAACuD,KAAK,CAAC;IAC9BC,QAAQ,EAAExD,SAAS,CAACyD,IAAI,CAACH;EAC3B,CAAC,CAAC,CAACA,UAAU;EACb9C,QAAQ,EAAER,SAAS,CAAC0D,SAAS,CAAC,CAC5B1D,SAAS,CAACuD,KAAK,CAACf,aAAa,CAAC,EAC9BxC,SAAS,CAAC2D,OAAO,CAAC3D,SAAS,CAACuD,KAAK,CAACf,aAAa,CAAC,CAAC,CAClD,CAAC,CAACc;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,aAAaA,CAACC,WAAW,EAAE;EACzC,IAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,GAAG3D,KAAK,CAAA+D,KAAA,UAAC,CAAC,CAAC,EAAAnD,MAAA,CAAAoD,kBAAA,CAAKL,WAAW,GAAC,GAAGA,WAAW;EACjFrD,QAAQ,GAAGN,KAAK,CAACM,QAAQ,EAAEsD,IAAI,CAAC;EAEhC,OAAOtD,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS2D,SAASA,CAACC,OAAO,EAAE;EACjCpE,SAAS,CAACqE,cAAc,CAAChB,YAAY,EAAEe,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;EACnE;EACA7D,cAAc,GAAG6D,OAAO,CAAC7D,cAAc;EACvC;EACAD,MAAM,GAAG8D,OAAO,CAAC9D,MAAM;EACvBE,QAAQ,GAAGuD,KAAK,CAACC,OAAO,CAACI,OAAO,CAAC5D,QAAQ,CAAC,GAAGN,KAAK,CAAA+D,KAAA,UAAC,CAAC,CAAC,EAAAnD,MAAA,CAAAoD,kBAAA,CAAKE,OAAO,CAAC5D,QAAQ,GAAC,GAAG4D,OAAO,CAAC5D,QAAQ;EAE9F,IAAIF,MAAM,CAACgE,WAAW,KAAK,YAAY,EAAE;IACvCC,MAAM,CAACC,IAAI,CAAChE,QAAQ,CAAC,CAACiE,OAAO,CAAC,UAACC,GAAG,EAAK;MACrC,IAAItE,gBAAgB,CAACuE,OAAO,CAACD,GAAG,CAAC,GAAG,CAAC,EAAE;QACrCE,OAAO,CAACC,IAAI,uBAAA/D,MAAA,CAAuB4D,GAAG,CAAE,CAAC,CAAC,CAAC;MAC7C;IACF,CAAC,CAAC;IAEFtE,gBAAgB,CAACqE,OAAO,CAAC,UAACC,GAAG,EAAK;MAChC,IAAIlE,QAAQ,CAACkE,GAAG,CAAC,KAAKrD,SAAS,EAAE;QAC/BuD,OAAO,CAACC,IAAI,oBAAA/D,MAAA,CAAoB4D,GAAG,CAAE,CAAC,CAAC,CAAC;MAC1C;IACF,CAAC,CAAC;EACJ;EAEAtC,SAAS,CAAC,CAAC;AACb","ignoreList":[]}
@@ -68,7 +68,6 @@ function generateSubdirectoryMessageFile(_ref) {
68
68
  log("".concat(loggingPrefix, ": NOTICE: Skipping '").concat(directory, "/").concat(filename, "' due to error: ").concat(e, ".\n"));
69
69
  return; // Skip the language
70
70
  }
71
-
72
71
  counter.nonEmptyLanguages += 1;
73
72
  importLines.push("import ".concat(messagesCamelCaseVar, " from './").concat(filename, "';"));
74
73
  messagesLines.splice(1, 0, " '".concat(reactIntlLanguageCode, "': ").concat(messagesCamelCaseVar, ","));
@@ -1 +1 @@
1
- {"version":3,"file":"intl-imports.js","names":["scriptHelpDocument","fs","require","path","camelCase","loggingPrefix","basename","concat","__filename","filesCodeGeneratorNoticeHeader","generateSubdirectoryMessageFile","_ref","directory","log","writeFileSync","i18nDir","importLines","messagesLines","counter","nonEmptyLanguages","messagesDir","files","readdirSync","withFileTypes","sort","jsonFiles","filter","file","isFile","name","endsWith","length","isWritten","forEach","filename","languageCode","replace","reactIntlLanguageCode","toLowerCase","messagesCamelCaseVar","filePath","entries","JSON","parse","readFileSync","encoding","Object","keys","push","e","splice","messagesFileContent","join","generateMainMessagesFile","_ref2","processedDirectories","exportLines","processedDirectory","moduleCamelCaseVariableName","skipMessage","indexFileContent","main","_ref3","directories","pwd","includes","existsSync","lstatSync","isDirectory","map","module","process","argv","slice","text","stdout","write","env","PWD","exports"],"sources":["../../../src/i18n/scripts/intl-imports.js"],"sourcesContent":["#!/usr/bin/env node\n\nconst scriptHelpDocument = `\nNAME\n intl-imports.js — Script to generate the src/i18n/index.js file that exports messages from all the languages for Micro-frontends.\n\nSYNOPSIS\n intl-imports.js [DIRECTORY ...]\n\nDESCRIPTION\n This script is intended to run after 'atlas' has pulled the files.\n \n This expects to run inside a Micro-frontend root directory with the following structure:\n \n frontend-app-learning $ tree src/i18n/\n src/i18n/\n ├── index.js\n └── messages\n ├── frontend-app-example\n │ ├── ar.json\n │ ├── es_419.json\n │ └── zh_CN.json\n ├── frontend-component-footer\n │ ├── ar.json\n │ ├── es_419.json\n │ └── zh_CN.json\n └── frontend-component-header (empty directory)\n \n \n \n With the structure above it's expected to run with the following command in Makefile:\n \n \n $ node_modules/.bin/intl-imports.js frontend-component-footer frontend-component-header frontend-app-example\n \n \n It will generate two type of files:\n \n - Main src/i18n/index.js which overrides the Micro-frontend provided with a sample output of:\n \n \"\"\"\n import messagesFromFrontendComponentFooter from './messages/frontend-component-footer';\n // Skipped import due to missing './messages/frontend-component-footer/index.js' likely due to empty translations.\n import messagesFromFrontendAppExample from './messages/frontend-app-example';\n \n export default [\n messagesFromFrontendComponentFooter,\n messagesFromFrontendAppExample,\n ];\n \"\"\"\n \n - Each sub-directory has src/i18n/messages/frontend-component-header/index.js which is imported by the main file.:\n \n \"\"\"\n import messagesOfArLanguage from './ar.json';\n import messagesOfDeLanguage from './de.json';\n import messagesOfEs419Language from './es_419.json';\n export default {\n 'ar': messagesOfArLanguage,\n 'de': messagesOfDeLanguage,\n 'es-419': messagesOfEs419Language,\n };\n \"\"\"\n`;\n\nconst fs = require('fs');\nconst path = require('path');\nconst camelCase = require('lodash.camelcase');\n\nconst loggingPrefix = path.basename(`${__filename}`); // the name of this JS file\n\n// Header note for generated src/i18n/index.js file\nconst filesCodeGeneratorNoticeHeader = `// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n`;\n\n/**\n * Create frontend-app-example/index.js file with proper imports.\n *\n * @param directory - a directory name containing .json files from Transifex e.g. \"frontend-app-example\".\n * @param log - Mockable process.stdout.write\n * @param writeFileSync - Mockable fs.writeFileSync\n * @param i18nDir - Path to `src/i18n` directory\n *\n * @return object - An object containing directory name and whether its \"index.js\" file was successfully written.\n */\nfunction generateSubdirectoryMessageFile({\n directory,\n log,\n writeFileSync,\n i18nDir,\n}) {\n const importLines = [];\n const messagesLines = [];\n const counter = { nonEmptyLanguages: 0 };\n const messagesDir = `${i18nDir}/messages`; // The directory of Micro-frontend i18n messages\n\n try {\n const files = fs.readdirSync(`${messagesDir}/${directory}`, { withFileTypes: true });\n files.sort(); // Sorting ensures a consistent generated `index.js` order of imports cross-platforms.\n\n const jsonFiles = files.filter(file => file.isFile() && file.name.endsWith('.json'));\n\n if (!jsonFiles.length) {\n log(`${loggingPrefix}: Not creating '${directory}/index.js' because no .json translation files were found.\\n`);\n return {\n directory,\n isWritten: false,\n };\n }\n\n jsonFiles.forEach((file) => {\n const filename = file.name;\n // Gets `fr_CA` from `fr_CA.json`\n const languageCode = filename.replace(/\\.json$/, '');\n // React-friendly language code fr_CA --> fr-ca\n const reactIntlLanguageCode = languageCode.toLowerCase().replace(/_/g, '-');\n // camelCase variable name\n const messagesCamelCaseVar = camelCase(`messages_Of_${languageCode}_Language`);\n const filePath = `${messagesDir}/${directory}/${filename}`;\n\n try {\n const entries = JSON.parse(fs.readFileSync(filePath, { encoding: 'utf8' }));\n\n if (!Object.keys(entries).length) {\n importLines.push(`// Note: Skipped empty '${filename}' messages file.`);\n return; // Skip the language\n }\n } catch (e) {\n importLines.push(`// Error: unable to parse '${filename}' messages file.`);\n log(`${loggingPrefix}: NOTICE: Skipping '${directory}/${filename}' due to error: ${e}.\\n`);\n return; // Skip the language\n }\n\n counter.nonEmptyLanguages += 1;\n importLines.push(`import ${messagesCamelCaseVar} from './${filename}';`);\n messagesLines.splice(1, 0, ` '${reactIntlLanguageCode}': ${messagesCamelCaseVar},`);\n });\n\n if (counter.nonEmptyLanguages) {\n // See the help message above for sample output.\n const messagesFileContent = [\n filesCodeGeneratorNoticeHeader,\n importLines.join('\\n'),\n '\\nexport default {',\n messagesLines.join('\\n'),\n '};\\n',\n ].join('\\n');\n\n writeFileSync(`${messagesDir}/${directory}/index.js`, messagesFileContent);\n return {\n directory,\n isWritten: true,\n };\n }\n log(`${loggingPrefix}: Skipping '${directory}' because no languages were found.\\n`);\n } catch (e) {\n log(`${loggingPrefix}: NOTICE: Skipping '${directory}' due to error: ${e}.\\n`);\n }\n\n return {\n directory,\n isWritten: false,\n };\n}\n\n/**\n * Create main `src/i18n/index.js` messages import file.\n *\n *\n * @param processedDirectories - List of directories with a boolean flag whether its \"index.js\" file is written\n * The format is \"[\\{ directory: \"frontend-component-example\", isWritten: false \\}, ...]\"\n * @param log - Mockable process.stdout.write\n * @param writeFileSync - Mockable fs.writeFileSync\n * @param i18nDir` - Path to `src/i18n` directory\n */\nfunction generateMainMessagesFile({\n processedDirectories,\n log,\n writeFileSync,\n i18nDir,\n}) {\n const importLines = [];\n const exportLines = [];\n\n processedDirectories.forEach(processedDirectory => {\n const { directory, isWritten } = processedDirectory;\n if (isWritten) {\n const moduleCamelCaseVariableName = camelCase(`messages_from_${directory}`);\n importLines.push(`import ${moduleCamelCaseVariableName} from './messages/${directory}';`);\n exportLines.push(` ${moduleCamelCaseVariableName},`);\n } else {\n const skipMessage = `Skipped import due to missing '${directory}/index.js' likely due to empty translations.`;\n importLines.push(`// ${skipMessage}.`);\n log(`${loggingPrefix}: ${skipMessage}\\n`);\n }\n });\n\n // See the help message above for sample output.\n const indexFileContent = [\n filesCodeGeneratorNoticeHeader,\n importLines.join('\\n'),\n '\\nexport default [',\n exportLines.join('\\n'),\n '];\\n',\n ].join('\\n');\n\n writeFileSync(`${i18nDir}/index.js`, indexFileContent);\n}\n\n/*\n * Main function of the file.\n */\nfunction main({\n directories,\n log,\n writeFileSync,\n pwd,\n}) {\n const i18nDir = `${pwd}/src/i18n`; // The Micro-frontend i18n root directory\n\n if (directories.includes('--help') || directories.includes('-h')) {\n log(scriptHelpDocument);\n } else if (!directories.length) {\n log(scriptHelpDocument);\n log(`${loggingPrefix}: Error: A list of directories is required.\\n`);\n } else if (!fs.existsSync(i18nDir) || !fs.lstatSync(i18nDir).isDirectory()) {\n log(scriptHelpDocument);\n log(`${loggingPrefix}: Error: src/i18n directory was not found.\\n`);\n } else {\n const processedDirectories = directories.map(directory => generateSubdirectoryMessageFile({\n directory,\n log,\n writeFileSync,\n i18nDir,\n }));\n generateMainMessagesFile({\n processedDirectories,\n log,\n writeFileSync,\n i18nDir,\n });\n }\n}\n\nif (require.main === module) {\n // Run the main() function if called from the command line.\n main({\n directories: process.argv.slice(2),\n log: text => process.stdout.write(text),\n writeFileSync: fs.writeFileSync,\n pwd: process.env.PWD,\n });\n}\n\nmodule.exports.main = main; // Allow tests to use the main function.\n"],"mappings":"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"}
1
+ {"version":3,"file":"intl-imports.js","names":["scriptHelpDocument","fs","require","path","camelCase","loggingPrefix","basename","concat","__filename","filesCodeGeneratorNoticeHeader","generateSubdirectoryMessageFile","_ref","directory","log","writeFileSync","i18nDir","importLines","messagesLines","counter","nonEmptyLanguages","messagesDir","files","readdirSync","withFileTypes","sort","jsonFiles","filter","file","isFile","name","endsWith","length","isWritten","forEach","filename","languageCode","replace","reactIntlLanguageCode","toLowerCase","messagesCamelCaseVar","filePath","entries","JSON","parse","readFileSync","encoding","Object","keys","push","e","splice","messagesFileContent","join","generateMainMessagesFile","_ref2","processedDirectories","exportLines","processedDirectory","moduleCamelCaseVariableName","skipMessage","indexFileContent","main","_ref3","directories","pwd","includes","existsSync","lstatSync","isDirectory","map","module","process","argv","slice","text","stdout","write","env","PWD","exports"],"sources":["../../../src/i18n/scripts/intl-imports.js"],"sourcesContent":["#!/usr/bin/env node\n\nconst scriptHelpDocument = `\nNAME\n intl-imports.js — Script to generate the src/i18n/index.js file that exports messages from all the languages for Micro-frontends.\n\nSYNOPSIS\n intl-imports.js [DIRECTORY ...]\n\nDESCRIPTION\n This script is intended to run after 'atlas' has pulled the files.\n \n This expects to run inside a Micro-frontend root directory with the following structure:\n \n frontend-app-learning $ tree src/i18n/\n src/i18n/\n ├── index.js\n └── messages\n ├── frontend-app-example\n │ ├── ar.json\n │ ├── es_419.json\n │ └── zh_CN.json\n ├── frontend-component-footer\n │ ├── ar.json\n │ ├── es_419.json\n │ └── zh_CN.json\n └── frontend-component-header (empty directory)\n \n \n \n With the structure above it's expected to run with the following command in Makefile:\n \n \n $ node_modules/.bin/intl-imports.js frontend-component-footer frontend-component-header frontend-app-example\n \n \n It will generate two type of files:\n \n - Main src/i18n/index.js which overrides the Micro-frontend provided with a sample output of:\n \n \"\"\"\n import messagesFromFrontendComponentFooter from './messages/frontend-component-footer';\n // Skipped import due to missing './messages/frontend-component-footer/index.js' likely due to empty translations.\n import messagesFromFrontendAppExample from './messages/frontend-app-example';\n \n export default [\n messagesFromFrontendComponentFooter,\n messagesFromFrontendAppExample,\n ];\n \"\"\"\n \n - Each sub-directory has src/i18n/messages/frontend-component-header/index.js which is imported by the main file.:\n \n \"\"\"\n import messagesOfArLanguage from './ar.json';\n import messagesOfDeLanguage from './de.json';\n import messagesOfEs419Language from './es_419.json';\n export default {\n 'ar': messagesOfArLanguage,\n 'de': messagesOfDeLanguage,\n 'es-419': messagesOfEs419Language,\n };\n \"\"\"\n`;\n\nconst fs = require('fs');\nconst path = require('path');\nconst camelCase = require('lodash.camelcase');\n\nconst loggingPrefix = path.basename(`${__filename}`); // the name of this JS file\n\n// Header note for generated src/i18n/index.js file\nconst filesCodeGeneratorNoticeHeader = `// This file is generated by the openedx/frontend-platform's \"intl-import.js\" script.\n//\n// Refer to the i18n documents in https://docs.openedx.org/en/latest/developers/references/i18n.html to update\n// the file and use the Micro-frontend i18n pattern in new repositories.\n//\n`;\n\n/**\n * Create frontend-app-example/index.js file with proper imports.\n *\n * @param directory - a directory name containing .json files from Transifex e.g. \"frontend-app-example\".\n * @param log - Mockable process.stdout.write\n * @param writeFileSync - Mockable fs.writeFileSync\n * @param i18nDir - Path to `src/i18n` directory\n *\n * @return object - An object containing directory name and whether its \"index.js\" file was successfully written.\n */\nfunction generateSubdirectoryMessageFile({\n directory,\n log,\n writeFileSync,\n i18nDir,\n}) {\n const importLines = [];\n const messagesLines = [];\n const counter = { nonEmptyLanguages: 0 };\n const messagesDir = `${i18nDir}/messages`; // The directory of Micro-frontend i18n messages\n\n try {\n const files = fs.readdirSync(`${messagesDir}/${directory}`, { withFileTypes: true });\n files.sort(); // Sorting ensures a consistent generated `index.js` order of imports cross-platforms.\n\n const jsonFiles = files.filter(file => file.isFile() && file.name.endsWith('.json'));\n\n if (!jsonFiles.length) {\n log(`${loggingPrefix}: Not creating '${directory}/index.js' because no .json translation files were found.\\n`);\n return {\n directory,\n isWritten: false,\n };\n }\n\n jsonFiles.forEach((file) => {\n const filename = file.name;\n // Gets `fr_CA` from `fr_CA.json`\n const languageCode = filename.replace(/\\.json$/, '');\n // React-friendly language code fr_CA --> fr-ca\n const reactIntlLanguageCode = languageCode.toLowerCase().replace(/_/g, '-');\n // camelCase variable name\n const messagesCamelCaseVar = camelCase(`messages_Of_${languageCode}_Language`);\n const filePath = `${messagesDir}/${directory}/${filename}`;\n\n try {\n const entries = JSON.parse(fs.readFileSync(filePath, { encoding: 'utf8' }));\n\n if (!Object.keys(entries).length) {\n importLines.push(`// Note: Skipped empty '${filename}' messages file.`);\n return; // Skip the language\n }\n } catch (e) {\n importLines.push(`// Error: unable to parse '${filename}' messages file.`);\n log(`${loggingPrefix}: NOTICE: Skipping '${directory}/${filename}' due to error: ${e}.\\n`);\n return; // Skip the language\n }\n\n counter.nonEmptyLanguages += 1;\n importLines.push(`import ${messagesCamelCaseVar} from './${filename}';`);\n messagesLines.splice(1, 0, ` '${reactIntlLanguageCode}': ${messagesCamelCaseVar},`);\n });\n\n if (counter.nonEmptyLanguages) {\n // See the help message above for sample output.\n const messagesFileContent = [\n filesCodeGeneratorNoticeHeader,\n importLines.join('\\n'),\n '\\nexport default {',\n messagesLines.join('\\n'),\n '};\\n',\n ].join('\\n');\n\n writeFileSync(`${messagesDir}/${directory}/index.js`, messagesFileContent);\n return {\n directory,\n isWritten: true,\n };\n }\n log(`${loggingPrefix}: Skipping '${directory}' because no languages were found.\\n`);\n } catch (e) {\n log(`${loggingPrefix}: NOTICE: Skipping '${directory}' due to error: ${e}.\\n`);\n }\n\n return {\n directory,\n isWritten: false,\n };\n}\n\n/**\n * Create main `src/i18n/index.js` messages import file.\n *\n *\n * @param processedDirectories - List of directories with a boolean flag whether its \"index.js\" file is written\n * The format is \"[\\{ directory: \"frontend-component-example\", isWritten: false \\}, ...]\"\n * @param log - Mockable process.stdout.write\n * @param writeFileSync - Mockable fs.writeFileSync\n * @param i18nDir` - Path to `src/i18n` directory\n */\nfunction generateMainMessagesFile({\n processedDirectories,\n log,\n writeFileSync,\n i18nDir,\n}) {\n const importLines = [];\n const exportLines = [];\n\n processedDirectories.forEach(processedDirectory => {\n const { directory, isWritten } = processedDirectory;\n if (isWritten) {\n const moduleCamelCaseVariableName = camelCase(`messages_from_${directory}`);\n importLines.push(`import ${moduleCamelCaseVariableName} from './messages/${directory}';`);\n exportLines.push(` ${moduleCamelCaseVariableName},`);\n } else {\n const skipMessage = `Skipped import due to missing '${directory}/index.js' likely due to empty translations.`;\n importLines.push(`// ${skipMessage}.`);\n log(`${loggingPrefix}: ${skipMessage}\\n`);\n }\n });\n\n // See the help message above for sample output.\n const indexFileContent = [\n filesCodeGeneratorNoticeHeader,\n importLines.join('\\n'),\n '\\nexport default [',\n exportLines.join('\\n'),\n '];\\n',\n ].join('\\n');\n\n writeFileSync(`${i18nDir}/index.js`, indexFileContent);\n}\n\n/*\n * Main function of the file.\n */\nfunction main({\n directories,\n log,\n writeFileSync,\n pwd,\n}) {\n const i18nDir = `${pwd}/src/i18n`; // The Micro-frontend i18n root directory\n\n if (directories.includes('--help') || directories.includes('-h')) {\n log(scriptHelpDocument);\n } else if (!directories.length) {\n log(scriptHelpDocument);\n log(`${loggingPrefix}: Error: A list of directories is required.\\n`);\n } else if (!fs.existsSync(i18nDir) || !fs.lstatSync(i18nDir).isDirectory()) {\n log(scriptHelpDocument);\n log(`${loggingPrefix}: Error: src/i18n directory was not found.\\n`);\n } else {\n const processedDirectories = directories.map(directory => generateSubdirectoryMessageFile({\n directory,\n log,\n writeFileSync,\n i18nDir,\n }));\n generateMainMessagesFile({\n processedDirectories,\n log,\n writeFileSync,\n i18nDir,\n });\n }\n}\n\nif (require.main === module) {\n // Run the main() function if called from the command line.\n main({\n directories: process.argv.slice(2),\n log: text => process.stdout.write(text),\n writeFileSync: fs.writeFileSync,\n pwd: process.env.PWD,\n });\n}\n\nmodule.exports.main = main; // Allow tests to use the main function.\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"transifex-utils.js","names":["_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","iter","Symbol","iterator","isArray","len","length","i","arr2","fs","require","glob","path","gatherJson","dir","ret","files","sync","concat","forEach","filename","messages","JSON","parse","readFileSync","push","apply","escapeDots","messageId","replace","jsonDir","process","argv","messageObjects","exitCode","Error","loggingPrefix","basename","__filename","bashScriptsPath","hashFile","stdout","write","messageInfo","outputFile","writeFileSync","message","transifexFormatId","id","info","find","mi","key","appendFileSync","string_hash","description","output","defaultMessage","stringify"],"sources":["../../../src/i18n/scripts/transifex-utils.js"],"sourcesContent":["#!/usr/bin/env node\n\nconst fs = require('fs');\nconst glob = require('glob');\nconst path = require('path');\n\n/*\n * See the Makefile for how the required hash file is downloaded from Transifex.\n */\n\n/*\n * Expected input: a directory, possibly containing subdirectories, with .json files. Each .json\n * file is an array of translation triplets (id, description, defaultMessage).\n *\n *\n */\nfunction gatherJson(dir) {\n const ret = [];\n const files = glob.sync(`${dir}/**/*.json`);\n\n files.forEach((filename) => {\n const messages = JSON.parse(fs.readFileSync(filename));\n ret.push(...messages);\n });\n return ret;\n}\n\n// the hash file returns ids whose periods are \"escaped\" (sort of), like this:\n// \"key\": \"profile\\\\.sociallinks\\\\.social\\\\.links\"\n// so our regular messageIds won't match them out of the box\nfunction escapeDots(messageId) {\n return messageId.replace(/\\./g, '\\\\.');\n}\n\nconst jsonDir = process.argv[2];\nconst messageObjects = gatherJson(jsonDir);\n\nif (messageObjects.length === 0) {\n process.exitCode = 1;\n throw new Error('Found no messages');\n}\n\nif (process.argv[3] === '--comments') { // prepare to handle the translator notes\n const loggingPrefix = path.basename(`${__filename}`); // the name of this JS file\n const bashScriptsPath = (\n process.argv[4] && process.argv[4] === '--v3-scripts-path'\n ? './node_modules/@edx/reactifex/bash_scripts'\n : './node_modules/reactifex/bash_scripts');\n\n const hashFile = `${bashScriptsPath}/hashmap.json`;\n process.stdout.write(`${loggingPrefix}: reading hash file ${hashFile}\\n`);\n const messageInfo = JSON.parse(fs.readFileSync(hashFile));\n\n const outputFile = `${bashScriptsPath}/hashed_data.txt`;\n process.stdout.write(`${loggingPrefix}: writing to output file ${outputFile}\\n`);\n fs.writeFileSync(outputFile, '');\n\n messageObjects.forEach((message) => {\n const transifexFormatId = escapeDots(message.id);\n\n const info = messageInfo.find(mi => mi.key === transifexFormatId);\n if (info) {\n fs.appendFileSync(outputFile, `${info.string_hash}|${message.description}\\n`);\n } else {\n process.stdout.write(`${loggingPrefix}: string ${message.id} does not yet exist on transifex!\\n`);\n }\n });\n} else {\n const output = {};\n\n messageObjects.forEach((message) => {\n output[message.id] = message.defaultMessage;\n });\n fs.writeFileSync(process.argv[3], JSON.stringify(output, null, 2));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transifex-utils.js","names":["_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","iter","Symbol","iterator","isArray","len","length","i","arr2","fs","require","glob","path","gatherJson","dir","ret","files","sync","concat","forEach","filename","messages","JSON","parse","readFileSync","push","apply","escapeDots","messageId","replace","jsonDir","process","argv","messageObjects","exitCode","Error","loggingPrefix","basename","__filename","bashScriptsPath","hashFile","stdout","write","messageInfo","outputFile","writeFileSync","message","transifexFormatId","id","info","find","mi","key","appendFileSync","string_hash","description","output","defaultMessage","stringify"],"sources":["../../../src/i18n/scripts/transifex-utils.js"],"sourcesContent":["#!/usr/bin/env node\n\nconst fs = require('fs');\nconst glob = require('glob');\nconst path = require('path');\n\n/*\n * See the Makefile for how the required hash file is downloaded from Transifex.\n */\n\n/*\n * Expected input: a directory, possibly containing subdirectories, with .json files. Each .json\n * file is an array of translation triplets (id, description, defaultMessage).\n *\n *\n */\nfunction gatherJson(dir) {\n const ret = [];\n const files = glob.sync(`${dir}/**/*.json`);\n\n files.forEach((filename) => {\n const messages = JSON.parse(fs.readFileSync(filename));\n ret.push(...messages);\n });\n return ret;\n}\n\n// the hash file returns ids whose periods are \"escaped\" (sort of), like this:\n// \"key\": \"profile\\\\.sociallinks\\\\.social\\\\.links\"\n// so our regular messageIds won't match them out of the box\nfunction escapeDots(messageId) {\n return messageId.replace(/\\./g, '\\\\.');\n}\n\nconst jsonDir = process.argv[2];\nconst messageObjects = gatherJson(jsonDir);\n\nif (messageObjects.length === 0) {\n process.exitCode = 1;\n throw new Error('Found no messages');\n}\n\nif (process.argv[3] === '--comments') { // prepare to handle the translator notes\n const loggingPrefix = path.basename(`${__filename}`); // the name of this JS file\n const bashScriptsPath = (\n process.argv[4] && process.argv[4] === '--v3-scripts-path'\n ? './node_modules/@edx/reactifex/bash_scripts'\n : './node_modules/reactifex/bash_scripts');\n\n const hashFile = `${bashScriptsPath}/hashmap.json`;\n process.stdout.write(`${loggingPrefix}: reading hash file ${hashFile}\\n`);\n const messageInfo = JSON.parse(fs.readFileSync(hashFile));\n\n const outputFile = `${bashScriptsPath}/hashed_data.txt`;\n process.stdout.write(`${loggingPrefix}: writing to output file ${outputFile}\\n`);\n fs.writeFileSync(outputFile, '');\n\n messageObjects.forEach((message) => {\n const transifexFormatId = escapeDots(message.id);\n\n const info = messageInfo.find(mi => mi.key === transifexFormatId);\n if (info) {\n fs.appendFileSync(outputFile, `${info.string_hash}|${message.description}\\n`);\n } else {\n process.stdout.write(`${loggingPrefix}: string ${message.id} does not yet exist on transifex!\\n`);\n }\n });\n} else {\n const output = {};\n\n messageObjects.forEach((message) => {\n output[message.id] = message.defaultMessage;\n });\n fs.writeFileSync(process.argv[3], JSON.stringify(output, null, 2));\n}\n"],"mappings":"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","ignoreList":[]}
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["modifyObjectKeys","camelCaseObject","snakeCaseObject","convertKeyNames","getQueryParameters","ensureDefinedConfig","parseURL","getPath","APP_TOPIC","APP_PUBSUB_INITIALIZED","APP_CONFIG_INITIALIZED","APP_AUTH_INITIALIZED","APP_I18N_INITIALIZED","APP_LOGGING_INITIALIZED","APP_ANALYTICS_INITIALIZED","APP_READY","APP_INIT_ERROR","CONFIG_TOPIC","CONFIG_CHANGED","initialize","history","initError","auth","publish","subscribe","unsubscribe","getConfig","setConfig","mergeConfig","ensureConfig","initializeMockApp","mockMessages"],"sources":["../src/index.js"],"sourcesContent":["export {\n modifyObjectKeys,\n camelCaseObject,\n snakeCaseObject,\n convertKeyNames,\n getQueryParameters,\n ensureDefinedConfig,\n parseURL,\n getPath,\n} from './utils';\nexport {\n APP_TOPIC,\n APP_PUBSUB_INITIALIZED,\n APP_CONFIG_INITIALIZED,\n APP_AUTH_INITIALIZED,\n APP_I18N_INITIALIZED,\n APP_LOGGING_INITIALIZED,\n APP_ANALYTICS_INITIALIZED,\n APP_READY,\n APP_INIT_ERROR,\n CONFIG_TOPIC,\n CONFIG_CHANGED,\n} from './constants';\nexport {\n initialize,\n history,\n initError,\n auth,\n} from './initialize';\nexport {\n publish,\n subscribe,\n unsubscribe,\n} from './pubSub';\nexport {\n getConfig,\n setConfig,\n mergeConfig,\n ensureConfig,\n} from './config';\nexport {\n initializeMockApp,\n mockMessages,\n} from './testing';\n"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,eAAe,EACfC,kBAAkB,EAClBC,mBAAmB,EACnBC,QAAQ,EACRC,OAAO,QACF,SAAS;AAChB,SACEC,SAAS,EACTC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,yBAAyB,EACzBC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZC,cAAc,QACT,aAAa;AACpB,SACEC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,IAAI,QACC,cAAc;AACrB,SACEC,OAAO,EACPC,SAAS,EACTC,WAAW,QACN,UAAU;AACjB,SACEC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,YAAY,QACP,UAAU;AACjB,SACEC,iBAAiB,EACjBC,YAAY,QACP,WAAW"}
1
+ {"version":3,"file":"index.js","names":["modifyObjectKeys","camelCaseObject","snakeCaseObject","convertKeyNames","getQueryParameters","ensureDefinedConfig","parseURL","getPath","APP_TOPIC","APP_PUBSUB_INITIALIZED","APP_CONFIG_INITIALIZED","APP_AUTH_INITIALIZED","APP_I18N_INITIALIZED","APP_LOGGING_INITIALIZED","APP_ANALYTICS_INITIALIZED","APP_READY","APP_INIT_ERROR","CONFIG_TOPIC","CONFIG_CHANGED","initialize","history","initError","auth","publish","subscribe","unsubscribe","getConfig","setConfig","mergeConfig","ensureConfig","initializeMockApp","mockMessages"],"sources":["../src/index.js"],"sourcesContent":["export {\n modifyObjectKeys,\n camelCaseObject,\n snakeCaseObject,\n convertKeyNames,\n getQueryParameters,\n ensureDefinedConfig,\n parseURL,\n getPath,\n} from './utils';\nexport {\n APP_TOPIC,\n APP_PUBSUB_INITIALIZED,\n APP_CONFIG_INITIALIZED,\n APP_AUTH_INITIALIZED,\n APP_I18N_INITIALIZED,\n APP_LOGGING_INITIALIZED,\n APP_ANALYTICS_INITIALIZED,\n APP_READY,\n APP_INIT_ERROR,\n CONFIG_TOPIC,\n CONFIG_CHANGED,\n} from './constants';\nexport {\n initialize,\n history,\n initError,\n auth,\n} from './initialize';\nexport {\n publish,\n subscribe,\n unsubscribe,\n} from './pubSub';\nexport {\n getConfig,\n setConfig,\n mergeConfig,\n ensureConfig,\n} from './config';\nexport {\n initializeMockApp,\n mockMessages,\n} from './testing';\n"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,eAAe,EACfC,kBAAkB,EAClBC,mBAAmB,EACnBC,QAAQ,EACRC,OAAO,QACF,SAAS;AAChB,SACEC,SAAS,EACTC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,yBAAyB,EACzBC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZC,cAAc,QACT,aAAa;AACpB,SACEC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,IAAI,QACC,cAAc;AACrB,SACEC,OAAO,EACPC,SAAS,EACTC,WAAW,QACN,UAAU;AACjB,SACEC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,YAAY,QACP,UAAU;AACjB,SACEC,iBAAiB,EACjBC,YAAY,QACP,WAAW","ignoreList":[]}
package/initialize.js CHANGED
@@ -2,8 +2,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- 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); }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
8
8
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9
9
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
package/initialize.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.js","names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createBrowserHistory","createMemoryHistory","envConfig","getPath","publish","getConfig","mergeConfig","configure","configureLogging","getLoggingService","NewRelicLoggingService","logError","configureAnalytics","SegmentAnalyticsService","identifyAnonymousUser","identifyAuthenticatedUser","GoogleAnalyticsLoader","getAuthenticatedHttpClient","configureAuth","ensureAuthenticatedUser","fetchAuthenticatedUser","hydrateAuthenticatedUser","getAuthenticatedUser","AxiosJwtAuthService","configureI18n","APP_PUBSUB_INITIALIZED","APP_CONFIG_INITIALIZED","APP_AUTH_INITIALIZED","APP_I18N_INITIALIZED","APP_LOGGING_INITIALIZED","APP_ANALYTICS_INITIALIZED","APP_READY","APP_INIT_ERROR","configureCache","history","window","basename","PUBLIC_PATH","initError","_x","_initError","_callee2","_callee2$","_context2","auth","_x2","_x3","_auth","_callee3","requireUser","hydrateUser","_callee3$","_context3","global","location","href","jsFileConfig","_jsFileConfig","_callee4","config","_callee4$","_context4","runtimeConfig","_runtimeConfig","_callee5","_getConfig","MFE_CONFIG_API_URL","APP_ID","apiConfig","apiService","params","url","_yield$apiService$get","data","_callee5$","_context5","headers","accept","URLSearchParams","append","concat","toString","get","t0","console","message","loadExternalScripts","externalScripts","ExternalScript","script","loadScript","analytics","_analytics","_callee6","authenticatedUser","_callee6$","_context6","userId","applyOverrideHandlers","overrides","noOp","_ref","_callee","_callee$","_context","_objectSpread","pubSub","logging","i18n","ready","initialize","_x4","_initialize","_callee7","_ref2","_ref2$loggingService","loggingService","_ref2$analyticsServic","analyticsService","_ref2$authService","authService","_ref2$authMiddleware","authMiddleware","_ref2$externalScripts","_ref2$requireAuthenti","_ref2$hydrateAuthenti","messages","_ref2$handlers","overrideHandlers","handlers","loggingServiceImpl","analyticsServiceImpl","authServiceImpl","_callee7$","_context7","requireAuthenticatedUser","middleware","httpClient","isRedirecting"],"sources":["../src/initialize.js"],"sourcesContent":["/**\n * #### Import members from **@edx/frontend-platform**\n *\n * The initialization module provides a function for managing an application's initialization\n * lifecycle. It also provides constants and default handler implementations.\n *\n * ```\n * import {\n * initialize,\n * APP_INIT_ERROR,\n * APP_READY,\n * subscribe,\n * } from '@edx/frontend-platform';\n * import { AppProvider, ErrorPage, PageWrap } from '@edx/frontend-platform/react';\n * import React from 'react';\n * import ReactDOM from 'react-dom';\n * import { Routes, Route } from 'react-router-dom';\n *\n * subscribe(APP_READY, () => {\n * ReactDOM.render(\n * <AppProvider store={configureStore()}>\n * <Header />\n * <main>\n * <Routes>\n * <Route path=\"/\" element={<PageWrap><PaymentPage /></PageWrap>} />\n * </Routes>\n * </main>\n * <Footer />\n * </AppProvider>,\n * document.getElementById('root'),\n * );\n * });\n *\n * subscribe(APP_INIT_ERROR, (error) => {\n * ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));\n * });\n *\n * initialize({\n * messages: [appMessages],\n * requireAuthenticatedUser: true,\n * hydrateAuthenticatedUser: true,\n * });\n\n```\n * @module Initialization\n */\n\nimport { createBrowserHistory, createMemoryHistory } from 'history';\n/*\nThis 'env.config' package is a special 'magic' alias in our webpack configuration in frontend-build.\nIt points at an `env.config.js` file in the root of an MFE's repository if it exists and falls back\nto an empty object `{}` if the file doesn't exist. This acts like an 'optional' import, in a sense.\nNote that the env.config.js file in frontend-platform's root directory is NOT used by the actual\ninitialization code, it's just there for the test suite and example application.\n*/\nimport envConfig from 'env.config'; // eslint-disable-line import/no-unresolved\nimport { getPath } from './utils';\nimport {\n publish,\n} from './pubSub';\n// eslint-disable-next-line import/no-cycle\nimport {\n getConfig, mergeConfig,\n} from './config';\nimport {\n configure as configureLogging, getLoggingService, NewRelicLoggingService, logError,\n} from './logging';\nimport {\n configure as configureAnalytics, SegmentAnalyticsService, identifyAnonymousUser, identifyAuthenticatedUser,\n} from './analytics';\nimport { GoogleAnalyticsLoader } from './scripts';\nimport {\n getAuthenticatedHttpClient,\n configure as configureAuth,\n ensureAuthenticatedUser,\n fetchAuthenticatedUser,\n hydrateAuthenticatedUser,\n getAuthenticatedUser,\n AxiosJwtAuthService,\n} from './auth';\nimport { configure as configureI18n } from './i18n';\nimport {\n APP_PUBSUB_INITIALIZED,\n APP_CONFIG_INITIALIZED,\n APP_AUTH_INITIALIZED,\n APP_I18N_INITIALIZED,\n APP_LOGGING_INITIALIZED,\n APP_ANALYTICS_INITIALIZED,\n APP_READY, APP_INIT_ERROR,\n} from './constants';\nimport configureCache from './auth/LocalForageCache';\n\n/**\n * A browser history or memory history object created by the [history](https://github.com/ReactTraining/history)\n * package. Applications are encouraged to use this history object, rather than creating their own,\n * as behavior may be undefined when managing history via multiple mechanisms/instances. Note that\n * in environments where browser history may be inaccessible due to `window` being undefined, this\n * falls back to memory history.\n */\nexport const history = (typeof window !== 'undefined')\n ? createBrowserHistory({\n basename: getPath(getConfig().PUBLIC_PATH),\n }) : createMemoryHistory();\n\n/**\n * The string basename that is the root directory of this MFE.\n *\n * In devstack, this should always just return \"/\", because each MFE is in its own server/domain.\n *\n * In Tutor, all MFEs are deployed to a common server, each under a different top-level directory.\n * The basename is the root path for a given MFE, e.g. \"/library-authoring\". It is set by tutor-mfe\n * as an ENV variable in the Docker file, and we read it here from that configuration so that it\n * can be passed into a Router later.\n */\nexport const basename = getPath(getConfig().PUBLIC_PATH);\n\n/**\n * The default handler for the initialization lifecycle's `initError` phase. Logs the error to the\n * LoggingService using `logError`\n *\n * @see {@link module:frontend-platform/logging~logError}\n * @param {*} error\n */\nexport async function initError(error) {\n logError(error);\n}\n\n/**\n * The default handler for the initialization lifecycle's `auth` phase.\n *\n * The handler has several responsibilities:\n * - Determining the user's authentication state (authenticated or anonymous)\n * - Optionally redirecting to login if the application requires an authenticated user.\n * - Optionally loading additional user information via the application's user account data\n * endpoint.\n *\n * @param {boolean} requireUser Whether or not we should redirect to login if a user is not\n * authenticated.\n * @param {boolean} hydrateUser Whether or not we should fetch additional user account data.\n */\nexport async function auth(requireUser, hydrateUser) {\n if (requireUser) {\n await ensureAuthenticatedUser(global.location.href);\n } else {\n await fetchAuthenticatedUser();\n }\n\n if (hydrateUser && getAuthenticatedUser() !== null) {\n // We intentionally do not await the promise returned by hydrateAuthenticatedUser. All the\n // critical data is returned as part of fetch/ensureAuthenticatedUser above, and anything else\n // is a nice-to-have for application code.\n hydrateAuthenticatedUser();\n }\n}\n\n/**\n * Set or overrides configuration via an env.config.js file in the consuming application.\n * This env.config.js is loaded at runtime and must export one of two things:\n *\n * - An object which will be merged into the application config via `mergeConfig`.\n * - A function which returns an object which will be merged into the application config via\n * `mergeConfig`. This function can return a promise.\n */\nasync function jsFileConfig() {\n let config = {};\n if (typeof envConfig === 'function') {\n config = await envConfig();\n } else {\n config = envConfig;\n }\n\n mergeConfig(config);\n}\n\n/*\n * Set or overrides configuration through an API.\n * This method allows runtime configuration.\n * Set a basic configuration when an error happen and allow initError and display the ErrorPage.\n */\nasync function runtimeConfig() {\n try {\n const { MFE_CONFIG_API_URL, APP_ID } = getConfig();\n\n if (MFE_CONFIG_API_URL) {\n const apiConfig = { headers: { accept: 'application/json' } };\n const apiService = await configureCache();\n\n const params = new URLSearchParams();\n params.append('mfe', APP_ID);\n const url = `${MFE_CONFIG_API_URL}?${params.toString()}`;\n\n const { data } = await apiService.get(url, apiConfig);\n mergeConfig(data);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error with config API', error.message);\n }\n}\n\nexport function loadExternalScripts(externalScripts, data) {\n externalScripts.forEach(ExternalScript => {\n const script = new ExternalScript(data);\n script.loadScript();\n });\n}\n\n/**\n * The default handler for the initialization lifecycle's `analytics` phase.\n *\n * The handler is responsible for identifying authenticated and anonymous users with the analytics\n * service. This is a pre-requisite for sending analytics events, thus, we do it during the\n * initialization sequence so that analytics is ready once the application's UI code starts to load.\n *\n */\nexport async function analytics() {\n const authenticatedUser = getAuthenticatedUser();\n if (authenticatedUser && authenticatedUser.userId) {\n identifyAuthenticatedUser(authenticatedUser.userId);\n } else {\n await identifyAnonymousUser();\n }\n}\n\nfunction applyOverrideHandlers(overrides) {\n const noOp = async () => { };\n return {\n pubSub: noOp,\n config: noOp,\n logging: noOp,\n auth,\n analytics,\n i18n: noOp,\n ready: noOp,\n initError,\n ...overrides, // This will override any same-keyed handlers from above.\n };\n}\n\n/**\n * Invokes the application initialization sequence.\n *\n * The sequence proceeds through a number of lifecycle phases, during which pertinent services are\n * configured.\n *\n * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom\n * functionality. Note that while these override handlers _do_ replace the default handler\n * functionality for analytics, auth, and initError (the other phases have no default\n * functionality), they do _not_ override the configuration of the actual services that those\n * handlers leverage.\n *\n * Some services can be overridden via the loggingService and analyticsService options. The other\n * services (auth and i18n) cannot currently be overridden.\n *\n * The following lifecycle phases exist:\n *\n * - pubSub: A no-op by default.\n * - config: A no-op by default.\n * - logging: A no-op by default.\n * - auth: Uses the 'auth' handler defined above.\n * - analytics: Uses the 'analytics' handler defined above.\n * - i18n: A no-op by default.\n * - ready: A no-op by default.\n * - initError: Uses the 'initError' handler defined above.\n *\n * @param {Object} [options]\n * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation\n * to use.\n * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`\n * implementation to use.\n * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.\n * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.\n * By default added GoogleAnalyticsLoader.\n * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login\n * redirection for unauthenticated users. Defaults to false, meaning that by default the\n * application will allow anonymous/unauthenticated sessions.\n * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user\n * account endpoint (`${App.config.LMS_BASE_URL}/api/user/v1/accounts/${username}`) to fetch\n * detailed account information for the authenticated user. This data is merged into the return\n * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to\n * false, meaning that no additional account information will be loaded.\n * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If\n * an array is provided, duplicate keys are resolved with the last-one-in winning.\n * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the\n * default behavior of any part of the startup sequence. It can also be used to add additional\n * initialization behavior before or after the rest of the sequence.\n */\nexport async function initialize({\n loggingService = NewRelicLoggingService,\n analyticsService = SegmentAnalyticsService,\n authService = AxiosJwtAuthService,\n authMiddleware = [],\n externalScripts = [GoogleAnalyticsLoader],\n requireAuthenticatedUser: requireUser = false,\n hydrateAuthenticatedUser: hydrateUser = false,\n messages,\n handlers: overrideHandlers = {},\n}) {\n const handlers = applyOverrideHandlers(overrideHandlers);\n try {\n // Pub/Sub\n await handlers.pubSub();\n publish(APP_PUBSUB_INITIALIZED);\n\n // Configuration\n await handlers.config();\n await jsFileConfig();\n await runtimeConfig();\n publish(APP_CONFIG_INITIALIZED);\n\n loadExternalScripts(externalScripts, {\n config: getConfig(),\n });\n\n // This allows us to replace the implementations of the logging, analytics, and auth services\n // based on keys in the ConfigDocument. The JavaScript File Configuration method is the only\n // one capable of supplying an alternate implementation since it can import other modules.\n // If a service wasn't supplied we fall back to the default parameters on the initialize\n // function signature.\n const loggingServiceImpl = getConfig().loggingService || loggingService;\n const analyticsServiceImpl = getConfig().analyticsService || analyticsService;\n const authServiceImpl = getConfig().authService || authService;\n\n // Logging\n configureLogging(loggingServiceImpl, {\n config: getConfig(),\n });\n await handlers.logging();\n publish(APP_LOGGING_INITIALIZED);\n\n // Internationalization\n configureI18n({\n messages,\n config: getConfig(),\n loggingService: getLoggingService(),\n });\n await handlers.i18n();\n publish(APP_I18N_INITIALIZED);\n\n // Authentication\n configureAuth(authServiceImpl, {\n loggingService: getLoggingService(),\n config: getConfig(),\n middleware: authMiddleware,\n });\n\n await handlers.auth(requireUser, hydrateUser);\n publish(APP_AUTH_INITIALIZED);\n\n // Analytics\n configureAnalytics(analyticsServiceImpl, {\n config: getConfig(),\n loggingService: getLoggingService(),\n httpClient: getAuthenticatedHttpClient(),\n });\n await handlers.analytics();\n publish(APP_ANALYTICS_INITIALIZED);\n\n // Application Ready\n await handlers.ready();\n publish(APP_READY);\n } catch (error) {\n if (!error.isRedirecting) {\n // Initialization Error\n await handlers.initError(error);\n publish(APP_INIT_ERROR, error);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"initialize.js","names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createBrowserHistory","createMemoryHistory","envConfig","getPath","publish","getConfig","mergeConfig","configure","configureLogging","getLoggingService","NewRelicLoggingService","logError","configureAnalytics","SegmentAnalyticsService","identifyAnonymousUser","identifyAuthenticatedUser","GoogleAnalyticsLoader","getAuthenticatedHttpClient","configureAuth","ensureAuthenticatedUser","fetchAuthenticatedUser","hydrateAuthenticatedUser","getAuthenticatedUser","AxiosJwtAuthService","configureI18n","APP_PUBSUB_INITIALIZED","APP_CONFIG_INITIALIZED","APP_AUTH_INITIALIZED","APP_I18N_INITIALIZED","APP_LOGGING_INITIALIZED","APP_ANALYTICS_INITIALIZED","APP_READY","APP_INIT_ERROR","configureCache","history","window","basename","PUBLIC_PATH","initError","_x","_initError","_callee2","_callee2$","_context2","auth","_x2","_x3","_auth","_callee3","requireUser","hydrateUser","_callee3$","_context3","global","location","href","jsFileConfig","_jsFileConfig","_callee4","config","_callee4$","_context4","runtimeConfig","_runtimeConfig","_callee5","_getConfig","MFE_CONFIG_API_URL","APP_ID","apiConfig","apiService","params","url","_yield$apiService$get","data","_callee5$","_context5","headers","accept","URLSearchParams","append","concat","toString","get","t0","console","message","loadExternalScripts","externalScripts","ExternalScript","script","loadScript","analytics","_analytics","_callee6","authenticatedUser","_callee6$","_context6","userId","applyOverrideHandlers","overrides","noOp","_ref","_callee","_callee$","_context","_objectSpread","pubSub","logging","i18n","ready","initialize","_x4","_initialize","_callee7","_ref2","_ref2$loggingService","loggingService","_ref2$analyticsServic","analyticsService","_ref2$authService","authService","_ref2$authMiddleware","authMiddleware","_ref2$externalScripts","_ref2$requireAuthenti","_ref2$hydrateAuthenti","messages","_ref2$handlers","overrideHandlers","handlers","loggingServiceImpl","analyticsServiceImpl","authServiceImpl","_callee7$","_context7","requireAuthenticatedUser","middleware","httpClient","isRedirecting"],"sources":["../src/initialize.js"],"sourcesContent":["/**\n * #### Import members from **@edx/frontend-platform**\n *\n * The initialization module provides a function for managing an application's initialization\n * lifecycle. It also provides constants and default handler implementations.\n *\n * ```\n * import {\n * initialize,\n * APP_INIT_ERROR,\n * APP_READY,\n * subscribe,\n * } from '@edx/frontend-platform';\n * import { AppProvider, ErrorPage, PageWrap } from '@edx/frontend-platform/react';\n * import React from 'react';\n * import ReactDOM from 'react-dom';\n * import { Routes, Route } from 'react-router-dom';\n *\n * subscribe(APP_READY, () => {\n * ReactDOM.render(\n * <AppProvider store={configureStore()}>\n * <Header />\n * <main>\n * <Routes>\n * <Route path=\"/\" element={<PageWrap><PaymentPage /></PageWrap>} />\n * </Routes>\n * </main>\n * <Footer />\n * </AppProvider>,\n * document.getElementById('root'),\n * );\n * });\n *\n * subscribe(APP_INIT_ERROR, (error) => {\n * ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));\n * });\n *\n * initialize({\n * messages: [appMessages],\n * requireAuthenticatedUser: true,\n * hydrateAuthenticatedUser: true,\n * });\n\n```\n * @module Initialization\n */\n\nimport { createBrowserHistory, createMemoryHistory } from 'history';\n/*\nThis 'env.config' package is a special 'magic' alias in our webpack configuration in frontend-build.\nIt points at an `env.config.js` file in the root of an MFE's repository if it exists and falls back\nto an empty object `{}` if the file doesn't exist. This acts like an 'optional' import, in a sense.\nNote that the env.config.js file in frontend-platform's root directory is NOT used by the actual\ninitialization code, it's just there for the test suite and example application.\n*/\nimport envConfig from 'env.config'; // eslint-disable-line import/no-unresolved\nimport { getPath } from './utils';\nimport {\n publish,\n} from './pubSub';\n// eslint-disable-next-line import/no-cycle\nimport {\n getConfig, mergeConfig,\n} from './config';\nimport {\n configure as configureLogging, getLoggingService, NewRelicLoggingService, logError,\n} from './logging';\nimport {\n configure as configureAnalytics, SegmentAnalyticsService, identifyAnonymousUser, identifyAuthenticatedUser,\n} from './analytics';\nimport { GoogleAnalyticsLoader } from './scripts';\nimport {\n getAuthenticatedHttpClient,\n configure as configureAuth,\n ensureAuthenticatedUser,\n fetchAuthenticatedUser,\n hydrateAuthenticatedUser,\n getAuthenticatedUser,\n AxiosJwtAuthService,\n} from './auth';\nimport { configure as configureI18n } from './i18n';\nimport {\n APP_PUBSUB_INITIALIZED,\n APP_CONFIG_INITIALIZED,\n APP_AUTH_INITIALIZED,\n APP_I18N_INITIALIZED,\n APP_LOGGING_INITIALIZED,\n APP_ANALYTICS_INITIALIZED,\n APP_READY, APP_INIT_ERROR,\n} from './constants';\nimport configureCache from './auth/LocalForageCache';\n\n/**\n * A browser history or memory history object created by the [history](https://github.com/ReactTraining/history)\n * package. Applications are encouraged to use this history object, rather than creating their own,\n * as behavior may be undefined when managing history via multiple mechanisms/instances. Note that\n * in environments where browser history may be inaccessible due to `window` being undefined, this\n * falls back to memory history.\n */\nexport const history = (typeof window !== 'undefined')\n ? createBrowserHistory({\n basename: getPath(getConfig().PUBLIC_PATH),\n }) : createMemoryHistory();\n\n/**\n * The string basename that is the root directory of this MFE.\n *\n * In devstack, this should always just return \"/\", because each MFE is in its own server/domain.\n *\n * In Tutor, all MFEs are deployed to a common server, each under a different top-level directory.\n * The basename is the root path for a given MFE, e.g. \"/library-authoring\". It is set by tutor-mfe\n * as an ENV variable in the Docker file, and we read it here from that configuration so that it\n * can be passed into a Router later.\n */\nexport const basename = getPath(getConfig().PUBLIC_PATH);\n\n/**\n * The default handler for the initialization lifecycle's `initError` phase. Logs the error to the\n * LoggingService using `logError`\n *\n * @see {@link module:frontend-platform/logging~logError}\n * @param {*} error\n */\nexport async function initError(error) {\n logError(error);\n}\n\n/**\n * The default handler for the initialization lifecycle's `auth` phase.\n *\n * The handler has several responsibilities:\n * - Determining the user's authentication state (authenticated or anonymous)\n * - Optionally redirecting to login if the application requires an authenticated user.\n * - Optionally loading additional user information via the application's user account data\n * endpoint.\n *\n * @param {boolean} requireUser Whether or not we should redirect to login if a user is not\n * authenticated.\n * @param {boolean} hydrateUser Whether or not we should fetch additional user account data.\n */\nexport async function auth(requireUser, hydrateUser) {\n if (requireUser) {\n await ensureAuthenticatedUser(global.location.href);\n } else {\n await fetchAuthenticatedUser();\n }\n\n if (hydrateUser && getAuthenticatedUser() !== null) {\n // We intentionally do not await the promise returned by hydrateAuthenticatedUser. All the\n // critical data is returned as part of fetch/ensureAuthenticatedUser above, and anything else\n // is a nice-to-have for application code.\n hydrateAuthenticatedUser();\n }\n}\n\n/**\n * Set or overrides configuration via an env.config.js file in the consuming application.\n * This env.config.js is loaded at runtime and must export one of two things:\n *\n * - An object which will be merged into the application config via `mergeConfig`.\n * - A function which returns an object which will be merged into the application config via\n * `mergeConfig`. This function can return a promise.\n */\nasync function jsFileConfig() {\n let config = {};\n if (typeof envConfig === 'function') {\n config = await envConfig();\n } else {\n config = envConfig;\n }\n\n mergeConfig(config);\n}\n\n/*\n * Set or overrides configuration through an API.\n * This method allows runtime configuration.\n * Set a basic configuration when an error happen and allow initError and display the ErrorPage.\n */\nasync function runtimeConfig() {\n try {\n const { MFE_CONFIG_API_URL, APP_ID } = getConfig();\n\n if (MFE_CONFIG_API_URL) {\n const apiConfig = { headers: { accept: 'application/json' } };\n const apiService = await configureCache();\n\n const params = new URLSearchParams();\n params.append('mfe', APP_ID);\n const url = `${MFE_CONFIG_API_URL}?${params.toString()}`;\n\n const { data } = await apiService.get(url, apiConfig);\n mergeConfig(data);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error with config API', error.message);\n }\n}\n\nexport function loadExternalScripts(externalScripts, data) {\n externalScripts.forEach(ExternalScript => {\n const script = new ExternalScript(data);\n script.loadScript();\n });\n}\n\n/**\n * The default handler for the initialization lifecycle's `analytics` phase.\n *\n * The handler is responsible for identifying authenticated and anonymous users with the analytics\n * service. This is a pre-requisite for sending analytics events, thus, we do it during the\n * initialization sequence so that analytics is ready once the application's UI code starts to load.\n *\n */\nexport async function analytics() {\n const authenticatedUser = getAuthenticatedUser();\n if (authenticatedUser && authenticatedUser.userId) {\n identifyAuthenticatedUser(authenticatedUser.userId);\n } else {\n await identifyAnonymousUser();\n }\n}\n\nfunction applyOverrideHandlers(overrides) {\n const noOp = async () => { };\n return {\n pubSub: noOp,\n config: noOp,\n logging: noOp,\n auth,\n analytics,\n i18n: noOp,\n ready: noOp,\n initError,\n ...overrides, // This will override any same-keyed handlers from above.\n };\n}\n\n/**\n * Invokes the application initialization sequence.\n *\n * The sequence proceeds through a number of lifecycle phases, during which pertinent services are\n * configured.\n *\n * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom\n * functionality. Note that while these override handlers _do_ replace the default handler\n * functionality for analytics, auth, and initError (the other phases have no default\n * functionality), they do _not_ override the configuration of the actual services that those\n * handlers leverage.\n *\n * Some services can be overridden via the loggingService and analyticsService options. The other\n * services (auth and i18n) cannot currently be overridden.\n *\n * The following lifecycle phases exist:\n *\n * - pubSub: A no-op by default.\n * - config: A no-op by default.\n * - logging: A no-op by default.\n * - auth: Uses the 'auth' handler defined above.\n * - analytics: Uses the 'analytics' handler defined above.\n * - i18n: A no-op by default.\n * - ready: A no-op by default.\n * - initError: Uses the 'initError' handler defined above.\n *\n * @param {Object} [options]\n * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation\n * to use.\n * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`\n * implementation to use.\n * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.\n * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.\n * By default added GoogleAnalyticsLoader.\n * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login\n * redirection for unauthenticated users. Defaults to false, meaning that by default the\n * application will allow anonymous/unauthenticated sessions.\n * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user\n * account endpoint (`${App.config.LMS_BASE_URL}/api/user/v1/accounts/${username}`) to fetch\n * detailed account information for the authenticated user. This data is merged into the return\n * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to\n * false, meaning that no additional account information will be loaded.\n * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If\n * an array is provided, duplicate keys are resolved with the last-one-in winning.\n * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the\n * default behavior of any part of the startup sequence. It can also be used to add additional\n * initialization behavior before or after the rest of the sequence.\n */\nexport async function initialize({\n loggingService = NewRelicLoggingService,\n analyticsService = SegmentAnalyticsService,\n authService = AxiosJwtAuthService,\n authMiddleware = [],\n externalScripts = [GoogleAnalyticsLoader],\n requireAuthenticatedUser: requireUser = false,\n hydrateAuthenticatedUser: hydrateUser = false,\n messages,\n handlers: overrideHandlers = {},\n}) {\n const handlers = applyOverrideHandlers(overrideHandlers);\n try {\n // Pub/Sub\n await handlers.pubSub();\n publish(APP_PUBSUB_INITIALIZED);\n\n // Configuration\n await handlers.config();\n await jsFileConfig();\n await runtimeConfig();\n publish(APP_CONFIG_INITIALIZED);\n\n loadExternalScripts(externalScripts, {\n config: getConfig(),\n });\n\n // This allows us to replace the implementations of the logging, analytics, and auth services\n // based on keys in the ConfigDocument. The JavaScript File Configuration method is the only\n // one capable of supplying an alternate implementation since it can import other modules.\n // If a service wasn't supplied we fall back to the default parameters on the initialize\n // function signature.\n const loggingServiceImpl = getConfig().loggingService || loggingService;\n const analyticsServiceImpl = getConfig().analyticsService || analyticsService;\n const authServiceImpl = getConfig().authService || authService;\n\n // Logging\n configureLogging(loggingServiceImpl, {\n config: getConfig(),\n });\n await handlers.logging();\n publish(APP_LOGGING_INITIALIZED);\n\n // Internationalization\n configureI18n({\n messages,\n config: getConfig(),\n loggingService: getLoggingService(),\n });\n await handlers.i18n();\n publish(APP_I18N_INITIALIZED);\n\n // Authentication\n configureAuth(authServiceImpl, {\n loggingService: getLoggingService(),\n config: getConfig(),\n middleware: authMiddleware,\n });\n\n await handlers.auth(requireUser, hydrateUser);\n publish(APP_AUTH_INITIALIZED);\n\n // Analytics\n configureAnalytics(analyticsServiceImpl, {\n config: getConfig(),\n loggingService: getLoggingService(),\n httpClient: getAuthenticatedHttpClient(),\n });\n await handlers.analytics();\n publish(APP_ANALYTICS_INITIALIZED);\n\n // Application Ready\n await handlers.ready();\n publish(APP_READY);\n } catch (error) {\n if (!error.isRedirecting) {\n // Initialization Error\n await handlers.initError(error);\n publish(APP_INIT_ERROR, error);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,8 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
3
3
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4
4
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
- 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); }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
8
  /**
9
9
  * The MockLoggingService implements both logInfo and logError as jest mock functions via
10
10
  * jest.fn(). It has no other functionality.
@@ -1 +1 @@
1
- {"version":3,"file":"MockLoggingService.js","names":["MockLoggingService","_createClass","_classCallCheck","_defineProperty","jest","fn"],"sources":["../../src/logging/MockLoggingService.js"],"sourcesContent":["/**\n * The MockLoggingService implements both logInfo and logError as jest mock functions via\n * jest.fn(). It has no other functionality.\n *\n * @implements {LoggingService}\n * @memberof module:Logging\n */\nclass MockLoggingService {\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logInfo = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logError = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n setCustomAttribute = jest.fn();\n}\n\nexport default MockLoggingService;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMA,kBAAkB,gBAAAC,YAAA,UAAAD,mBAAA;EAAAE,eAAA,OAAAF,kBAAA;EACtB;AACF;AACA;AACA;AACA;EAJEG,eAAA,kBAKUC,IAAI,CAACC,EAAE,CAAC,CAAC;EAEnB;AACF;AACA;AACA;AACA;EAJEF,eAAA,mBAKWC,IAAI,CAACC,EAAE,CAAC,CAAC;EAEpB;AACF;AACA;AACA;AACA;EAJEF,eAAA,6BAKqBC,IAAI,CAACC,EAAE,CAAC,CAAC;AAAA;AAGhC,eAAeL,kBAAkB"}
1
+ {"version":3,"file":"MockLoggingService.js","names":["MockLoggingService","_createClass","_classCallCheck","_defineProperty","jest","fn"],"sources":["../../src/logging/MockLoggingService.js"],"sourcesContent":["/**\n * The MockLoggingService implements both logInfo and logError as jest mock functions via\n * jest.fn(). It has no other functionality.\n *\n * @implements {LoggingService}\n * @memberof module:Logging\n */\nclass MockLoggingService {\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logInfo = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logError = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n setCustomAttribute = jest.fn();\n}\n\nexport default MockLoggingService;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMA,kBAAkB,gBAAAC,YAAA,UAAAD,mBAAA;EAAAE,eAAA,OAAAF,kBAAA;EACtB;AACF;AACA;AACA;AACA;EAJEG,eAAA,kBAKUC,IAAI,CAACC,EAAE,CAAC,CAAC;EAEnB;AACF;AACA;AACA;AACA;EAJEF,eAAA,mBAKWC,IAAI,CAACC,EAAE,CAAC,CAAC;EAEpB;AACF;AACA;AACA;AACA;EAJEF,eAAA,6BAKqBC,IAAI,CAACC,EAAE,CAAC,CAAC;AAAA;AAGhC,eAAeL,kBAAkB","ignoreList":[]}
@@ -5,8 +5,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
7
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
9
- 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); }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
10
  /**
11
11
  * NewRelic will not log an error if it is too long.
12
12
  *
@@ -32,7 +32,6 @@ function sendPageAction(actionName, message, customAttributes) {
32
32
  if (process.env.NODE_ENV === 'development') {
33
33
  console.log(actionName, message, customAttributes); // eslint-disable-line
34
34
  }
35
-
36
35
  if (window && typeof window.newrelic !== 'undefined') {
37
36
  // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/addpageaction/
38
37
  window.newrelic.addPageAction(actionName, _objectSpread({
@@ -44,7 +43,6 @@ function sendError(error, customAttributes) {
44
43
  if (process.env.NODE_ENV === 'development') {
45
44
  console.error(error, customAttributes); // eslint-disable-line
46
45
  }
47
-
48
46
  if (window && typeof window.newrelic !== 'undefined') {
49
47
  // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/noticeerror/
50
48
  window.newrelic.noticeError(fixErrorLength(error), customAttributes);
@@ -54,7 +52,6 @@ function _setCustomAttribute(name, value) {
54
52
  if (process.env.NODE_ENV === 'development') {
55
53
  console.log(name, value); // eslint-disable-line
56
54
  }
57
-
58
55
  if (window && typeof window.newrelic !== 'undefined') {
59
56
  // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/setcustomattribute/
60
57
  window.newrelic.setCustomAttribute(name, value);