@edx/frontend-platform 8.1.0 → 8.1.2
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.
- package/analytics/SegmentAnalyticsService.js.map +1 -1
- package/auth/AxiosCsrfTokenService.js +1 -1
- package/auth/AxiosCsrfTokenService.js.map +1 -1
- package/auth/AxiosJwtAuthService.js +3 -3
- package/auth/AxiosJwtAuthService.js.map +1 -1
- package/auth/AxiosJwtTokenService.js +2 -2
- package/auth/AxiosJwtTokenService.js.map +1 -1
- package/auth/LocalForageCache.js +4 -4
- package/auth/LocalForageCache.js.map +1 -1
- package/auth/MockAuthService.js.map +1 -1
- package/auth/interceptors/createCsrfTokenProviderInterceptor.js +1 -1
- package/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -1
- package/auth/interceptors/createJwtTokenProviderInterceptor.js +1 -1
- package/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -1
- package/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +1 -1
- package/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -1
- package/auth/interceptors/createRetryInterceptor.js +6 -6
- package/auth/interceptors/createRetryInterceptor.js.map +1 -1
- package/auth/interface.js +3 -3
- package/auth/interface.js.map +1 -1
- package/i18n/injectIntlWithShim.js.map +1 -1
- package/i18n/scripts/intl-imports.js.map +1 -1
- package/initialize.js +7 -7
- package/initialize.js.map +1 -1
- package/logging/NewRelicLoggingService.js.map +1 -1
- package/package.json +7 -9
- package/react/ErrorBoundary.js.map +1 -1
- package/scripts/GoogleAnalyticsLoader.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewRelicLoggingService.js","names":["MAX_ERROR_LENGTH","fixErrorLength","error","message","length","processedError","Object","create","substring","pageActionNameInfo","pageActionNameIgnoredError","sendPageAction","actionName","customAttributes","process","env","NODE_ENV","console","log","window","newrelic","addPageAction","_objectSpread","sendError","noticeError","setCustomAttribute","name","value","NewRelicLoggingService","options","_classCallCheck","config","undefined","ignoredErrorRegexes","IGNORED_ERROR_REGEX","_createClass","key","logInfo","infoStringOrErrorObject","arguments","customAttrs","_typeof","infoCustomAttributes","logError","errorStringOrObject","errorCustomAttributes","allCustomAttributes","keys","errorMessage","match","default"],"sources":["../../src/logging/NewRelicLoggingService.js"],"sourcesContent":["/**\n * NewRelic will not log an error if it is too long.\n *\n * @ignore\n */\nexport const MAX_ERROR_LENGTH = 4000;\n\nfunction fixErrorLength(error) {\n if (error.message && error.message.length > MAX_ERROR_LENGTH) {\n const processedError = Object.create(error);\n processedError.message = processedError.message.substring(0, MAX_ERROR_LENGTH);\n return processedError;\n }\n if (typeof error === 'string' && error.length > MAX_ERROR_LENGTH) {\n return error.substring(0, MAX_ERROR_LENGTH);\n }\n return error;\n}\n\n/* Constants used as New Relic page action names. */\nconst pageActionNameInfo = 'INFO';\nconst pageActionNameIgnoredError = 'IGNORED_ERROR';\n\nfunction sendPageAction(actionName, message, customAttributes) {\n if (process.env.NODE_ENV === 'development') {\n console.log(actionName, message, customAttributes); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/addpageaction/\n window.newrelic.addPageAction(actionName, { message, ...customAttributes });\n }\n}\n\nfunction sendError(error, customAttributes) {\n if (process.env.NODE_ENV === 'development') {\n console.error(error, customAttributes); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/noticeerror/\n window.newrelic.noticeError(fixErrorLength(error), customAttributes);\n }\n}\n\nfunction setCustomAttribute(name, value) {\n if (process.env.NODE_ENV === 'development') {\n console.log(name, value); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/setcustomattribute/\n window.newrelic.setCustomAttribute(name, value);\n }\n}\n\n/**\n * The NewRelicLoggingService is a concrete implementation of the logging service interface that\n * sends messages to NewRelic that can be seen in NewRelic Browser and NewRelic Insights. When in\n * development mode, all messages will instead be sent to the console.\n *\n * When you use `logError`, your errors will be checked to see if they're ignored *or* not.\n * Not-ignored errors will appear under \"JS errors\" for your Browser application.\n *\n * ```\n * SELECT * from JavaScriptError WHERE errorStatus is not null SINCE 10 days ago\n * ```\n *\n * Ignored errors will appear in New Relic Insights as page actions, which can be queried:\n *\n * ```\n * SELECT * from PageAction WHERE actionName = 'IGNORED_ERROR' SINCE 1 hour ago\n * ```\n *\n * When using `logInfo`, these only appear in New Relic Insights when querying for page actions as\n * follows:\n *\n * ```\n * SELECT * from PageAction WHERE actionName = 'INFO' SINCE 1 hour ago\n * ```\n *\n * You can also add your own custom metrics as an additional argument, or see the code to find\n * other standard custom attributes. By default, userId is added (via setCustomAttribute) for logged\n * in users via the auth service (AuthAxiosJwtService).\n *\n * Requires the NewRelic Browser JavaScript snippet.\n *\n * @implements {LoggingService}\n * @memberof module:Logging\n */\nexport default class NewRelicLoggingService {\n constructor(options) {\n const config = options ? options.config : undefined;\n /*\n String which is an explicit error message regex. If an error message matches the regex, the error\n is considered an *ignored* error and submitted to New Relic as a page action - not an error.\n\n Ignored error regexes are configured per frontend application (MFE).\n\n The regex for all ignored errors are represented in the .env files as a single string. If you need to\n ignore multiple errors, use the standard `|` regex syntax.\n\n For example, here's a .env line which ignores two specific errors:\n\n IGNORED_ERROR_REGEX='^\\\\[frontend-auth\\\\] Unimportant Error|Specific non-critical error #[\\\\d]+'\n\n This example would ignore errors with the following messages:\n\n [frontend-app-generic] - Specific non-critical error #45678 happened.\n [frontend-app-generic] - Specific non-critical error #93475 happened.\n [frontend-auth] Unimportant Error: Browser strangeness occurred.\n\n To test your regex additions, use a JS CLI environment (such as node) and run code like this:\n\n x = new RegExp('^\\\\[frontend-auth\\\\] Unimportant Error|Specific non-critical error #[\\\\d]+');\n '[frontend-app-generic] - Specific non-critical error #45678 happened.'.match(x);\n '[frontend-auth] Unimportant Error: Browser strangeness occurred.'.match(x);\n 'This error should not match anything!'.match(x);\n\n For edx.org, add new error message regexes in edx-internal YAML as needed.\n */\n this.ignoredErrorRegexes = config ? config.IGNORED_ERROR_REGEX : undefined;\n }\n\n /**\n *\n *\n * @param {*} infoStringOrErrorObject\n * @param {*} [customAttributes={}]\n * @memberof NewRelicLoggingService\n */\n logInfo(infoStringOrErrorObject, customAttributes = {}) {\n let message = infoStringOrErrorObject;\n let customAttrs = customAttributes;\n if (typeof infoStringOrErrorObject === 'object' && 'message' in infoStringOrErrorObject) {\n /* Caller has passed in an error object to be logged as a page action. */\n /* Extract the attributes and the message. */\n const infoCustomAttributes = infoStringOrErrorObject.customAttributes || {};\n customAttrs = { ...infoCustomAttributes, ...customAttributes };\n message = infoStringOrErrorObject.message;\n }\n sendPageAction(pageActionNameInfo, message, customAttrs);\n }\n\n /**\n *\n *\n * @param {*} errorStringOrObject\n * @param {*} [customAttributes={}]\n * @memberof NewRelicLoggingService\n */\n logError(errorStringOrObject, customAttributes = {}) {\n const errorCustomAttributes = errorStringOrObject.customAttributes || {};\n let allCustomAttributes = { ...errorCustomAttributes, ...customAttributes };\n if (Object.keys(allCustomAttributes).length === 0) {\n // noticeError expects undefined if there are no custom attributes.\n allCustomAttributes = undefined;\n }\n\n /*\n Separate the errors into ignored errors and other errors.\n Ignored errors are logged via adding a page action.\n Other errors are logged via noticeError and count as \"JS Errors\" for the application.\n */\n const errorMessage = errorStringOrObject.message || (typeof errorStringOrObject === 'string' ? errorStringOrObject : '');\n if (this.ignoredErrorRegexes && errorMessage.match(this.ignoredErrorRegexes)) {\n /* ignored error */\n sendPageAction(pageActionNameIgnoredError, errorMessage, allCustomAttributes);\n } else {\n /* error! */\n sendError(errorStringOrObject, allCustomAttributes);\n }\n }\n\n /**\n * Sets a custom attribute that will be included with all subsequent log messages.\n *\n * @param {string} name\n * @param {string|number|null} value\n */\n setCustomAttribute(name, value) {\n setCustomAttribute(name, value);\n }\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMA,gBAAgB,GAAG,IAAI;AAEpC,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7B,IAAIA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACC,OAAO,CAACC,MAAM,GAAGJ,gBAAgB,EAAE;IAC5D,IAAMK,cAAc,GAAGC,MAAM,CAACC,MAAM,CAACL,KAAK,CAAC;IAC3CG,cAAc,CAACF,OAAO,GAAGE,cAAc,CAACF,OAAO,CAACK,SAAS,CAAC,CAAC,EAAER,gBAAgB,CAAC;IAC9E,OAAOK,cAAc;EACvB;EACA,IAAI,OAAOH,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,GAAGJ,gBAAgB,EAAE;IAChE,OAAOE,KAAK,CAACM,SAAS,CAAC,CAAC,EAAER,gBAAgB,CAAC;EAC7C;EACA,OAAOE,KAAK;AACd;;AAEA;AACA,IAAMO,kBAAkB,GAAG,MAAM;AACjC,IAAMC,0BAA0B,GAAG,eAAe;AAElD,SAASC,cAAcA,CAACC,UAAU,EAAET,OAAO,EAAEU,gBAAgB,EAAE;EAC7D,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1CC,OAAO,CAACC,GAAG,CAACN,UAAU,EAAET,OAAO,EAAEU,gBAAgB,CAAC,CAAC,CAAC;EACtD;EACA,IAAIM,MAAM,IAAI,OAAOA,MAAM,CAACC,QAAQ,KAAK,WAAW,EAAE;IACpD;IACAD,MAAM,CAACC,QAAQ,CAACC,aAAa,CAACT,UAAU,EAAAU,aAAA;MAAInB,OAAO,EAAPA;IAAO,GAAKU,gBAAgB,CAAE,CAAC;EAC7E;AACF;AAEA,SAASU,SAASA,CAACrB,KAAK,EAAEW,gBAAgB,EAAE;EAC1C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1CC,OAAO,CAACf,KAAK,CAACA,KAAK,EAAEW,gBAAgB,CAAC,CAAC,CAAC;EAC1C;EACA,IAAIM,MAAM,IAAI,OAAOA,MAAM,CAACC,QAAQ,KAAK,WAAW,EAAE;IACpD;IACAD,MAAM,CAACC,QAAQ,CAACI,WAAW,CAACvB,cAAc,CAACC,KAAK,CAAC,EAAEW,gBAAgB,CAAC;EACtE;AACF;AAEA,SAASY,mBAAkBA,CAACC,IAAI,EAAEC,KAAK,EAAE;EACvC,IAAIb,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1CC,OAAO,CAACC,GAAG,CAACQ,IAAI,EAAEC,KAAK,CAAC,CAAC,CAAC;EAC5B;EACA,IAAIR,MAAM,IAAI,OAAOA,MAAM,CAACC,QAAQ,KAAK,WAAW,EAAE;IACpD;IACAD,MAAM,CAACC,QAAQ,CAACK,kBAAkB,CAACC,IAAI,EAAEC,KAAK,CAAC;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjCA,IAkCqBC,sBAAsB;EACzC,SAAAA,uBAAYC,OAAO,EAAE;IAAAC,eAAA,OAAAF,sBAAA;IACnB,IAAMG,MAAM,GAAGF,OAAO,GAAGA,OAAO,CAACE,MAAM,GAAGC,SAAS;IACnD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAUI,IAAI,CAACC,mBAAmB,GAAGF,MAAM,GAAGA,MAAM,CAACG,mBAAmB,GAAGF,SAAS;EAC5E;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,OAAAG,YAAA,CAAAP,sBAAA;IAAAQ,GAAA;IAAAT,KAAA,EAOA,SAAAU,QAAQC,uBAAuB,EAAyB;MAAA,IAAvBzB,gBAAgB,GAAA0B,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,CAAC,CAAC;MACpD,IAAIpC,OAAO,GAAGmC,uBAAuB;MACrC,IAAIE,WAAW,GAAG3B,gBAAgB;MAClC,IAAI4B,OAAA,CAAOH,uBAAuB,MAAK,QAAQ,IAAI,SAAS,IAAIA,uBAAuB,EAAE;QACvF;QACA;QACA,IAAMI,oBAAoB,GAAGJ,uBAAuB,CAACzB,gBAAgB,IAAI,CAAC,CAAC;QAC3E2B,WAAW,GAAAlB,aAAA,CAAAA,aAAA,KAAQoB,oBAAoB,GAAK7B,gBAAgB,CAAE;QAC9DV,OAAO,GAAGmC,uBAAuB,CAACnC,OAAO;MAC3C;MACAQ,cAAc,CAACF,kBAAkB,EAAEN,OAAO,EAAEqC,WAAW,CAAC;IAC1D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAJ,GAAA;IAAAT,KAAA,EAOA,SAAAgB,SAASC,mBAAmB,EAAyB;MAAA,IAAvB/B,gBAAgB,GAAA0B,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,CAAC,CAAC;MACjD,IAAMM,qBAAqB,GAAGD,mBAAmB,CAAC/B,gBAAgB,IAAI,CAAC,CAAC;MACxE,IAAIiC,mBAAmB,GAAAxB,aAAA,CAAAA,aAAA,KAAQuB,qBAAqB,GAAKhC,gBAAgB,CAAE;MAC3E,IAAIP,MAAM,CAACyC,IAAI,CAACD,mBAAmB,CAAC,CAAC1C,MAAM,KAAK,CAAC,EAAE;QACjD;QACA0C,mBAAmB,GAAGd,SAAS;MACjC;;MAEA;AACJ;AACA;AACA;AACA;MACI,IAAMgB,YAAY,GAAGJ,mBAAmB,CAACzC,OAAO,KAAK,OAAOyC,mBAAmB,KAAK,QAAQ,GAAGA,mBAAmB,GAAG,EAAE,CAAC;MACxH,IAAI,IAAI,CAACX,mBAAmB,IAAIe,YAAY,CAACC,KAAK,CAAC,IAAI,CAAChB,mBAAmB,CAAC,EAAE;QAC5E;QACAtB,cAAc,CAACD,0BAA0B,EAAEsC,YAAY,EAAEF,mBAAmB,CAAC;MAC/E,CAAC,MAAM;QACL;QACAvB,SAAS,CAACqB,mBAAmB,EAAEE,mBAAmB,CAAC;MACrD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAV,GAAA;IAAAT,KAAA,EAMA,SAAAF,mBAAmBC,IAAI,EAAEC,KAAK,EAAE;MAC9BF,mBAAkB,CAACC,IAAI,EAAEC,KAAK,CAAC;IACjC;EAAC;AAAA;AAAA,SA5FkBC,sBAAsB,IAAAsB,OAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NewRelicLoggingService.js","names":["MAX_ERROR_LENGTH","fixErrorLength","error","message","length","processedError","Object","create","substring","pageActionNameInfo","pageActionNameIgnoredError","sendPageAction","actionName","customAttributes","process","env","NODE_ENV","console","log","window","newrelic","addPageAction","_objectSpread","sendError","noticeError","setCustomAttribute","name","value","NewRelicLoggingService","options","_classCallCheck","config","undefined","ignoredErrorRegexes","IGNORED_ERROR_REGEX","_createClass","key","logInfo","infoStringOrErrorObject","arguments","customAttrs","_typeof","infoCustomAttributes","logError","errorStringOrObject","errorCustomAttributes","allCustomAttributes","keys","errorMessage","match","default"],"sources":["../../src/logging/NewRelicLoggingService.js"],"sourcesContent":["/**\n * NewRelic will not log an error if it is too long.\n *\n * @ignore\n */\nexport const MAX_ERROR_LENGTH = 4000;\n\nfunction fixErrorLength(error) {\n if (error.message && error.message.length > MAX_ERROR_LENGTH) {\n const processedError = Object.create(error);\n processedError.message = processedError.message.substring(0, MAX_ERROR_LENGTH);\n return processedError;\n }\n if (typeof error === 'string' && error.length > MAX_ERROR_LENGTH) {\n return error.substring(0, MAX_ERROR_LENGTH);\n }\n return error;\n}\n\n/* Constants used as New Relic page action names. */\nconst pageActionNameInfo = 'INFO';\nconst pageActionNameIgnoredError = 'IGNORED_ERROR';\n\nfunction sendPageAction(actionName, message, customAttributes) {\n if (process.env.NODE_ENV === 'development') {\n console.log(actionName, message, customAttributes); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/addpageaction/\n window.newrelic.addPageAction(actionName, { message, ...customAttributes });\n }\n}\n\nfunction sendError(error, customAttributes) {\n if (process.env.NODE_ENV === 'development') {\n console.error(error, customAttributes); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/noticeerror/\n window.newrelic.noticeError(fixErrorLength(error), customAttributes);\n }\n}\n\nfunction setCustomAttribute(name, value) {\n if (process.env.NODE_ENV === 'development') {\n console.log(name, value); // eslint-disable-line\n }\n if (window && typeof window.newrelic !== 'undefined') {\n // https://docs.newrelic.com/docs/browser/new-relic-browser/browser-apis/setcustomattribute/\n window.newrelic.setCustomAttribute(name, value);\n }\n}\n\n/**\n * The NewRelicLoggingService is a concrete implementation of the logging service interface that\n * sends messages to NewRelic that can be seen in NewRelic Browser and NewRelic Insights. When in\n * development mode, all messages will instead be sent to the console.\n *\n * When you use `logError`, your errors will be checked to see if they're ignored *or* not.\n * Not-ignored errors will appear under \"JS errors\" for your Browser application.\n *\n * ```\n * SELECT * from JavaScriptError WHERE errorStatus is not null SINCE 10 days ago\n * ```\n *\n * Ignored errors will appear in New Relic Insights as page actions, which can be queried:\n *\n * ```\n * SELECT * from PageAction WHERE actionName = 'IGNORED_ERROR' SINCE 1 hour ago\n * ```\n *\n * When using `logInfo`, these only appear in New Relic Insights when querying for page actions as\n * follows:\n *\n * ```\n * SELECT * from PageAction WHERE actionName = 'INFO' SINCE 1 hour ago\n * ```\n *\n * You can also add your own custom metrics as an additional argument, or see the code to find\n * other standard custom attributes. By default, userId is added (via setCustomAttribute) for logged\n * in users via the auth service (AuthAxiosJwtService).\n *\n * Requires the NewRelic Browser JavaScript snippet.\n *\n * @implements {LoggingService}\n * @memberof module:Logging\n */\nexport default class NewRelicLoggingService {\n constructor(options) {\n const config = options ? options.config : undefined;\n /*\n String which is an explicit error message regex. If an error message matches the regex, the error\n is considered an *ignored* error and submitted to New Relic as a page action - not an error.\n\n Ignored error regexes are configured per frontend application (MFE).\n\n The regex for all ignored errors are represented in the .env files as a single string. If you need to\n ignore multiple errors, use the standard `|` regex syntax.\n\n For example, here's a .env line which ignores two specific errors:\n\n IGNORED_ERROR_REGEX='^\\\\[frontend-auth\\\\] Unimportant Error|Specific non-critical error #[\\\\d]+'\n\n This example would ignore errors with the following messages:\n\n [frontend-app-generic] - Specific non-critical error #45678 happened.\n [frontend-app-generic] - Specific non-critical error #93475 happened.\n [frontend-auth] Unimportant Error: Browser strangeness occurred.\n\n To test your regex additions, use a JS CLI environment (such as node) and run code like this:\n\n x = new RegExp('^\\\\[frontend-auth\\\\] Unimportant Error|Specific non-critical error #[\\\\d]+');\n '[frontend-app-generic] - Specific non-critical error #45678 happened.'.match(x);\n '[frontend-auth] Unimportant Error: Browser strangeness occurred.'.match(x);\n 'This error should not match anything!'.match(x);\n\n For edx.org, add new error message regexes in edx-internal YAML as needed.\n */\n this.ignoredErrorRegexes = config ? config.IGNORED_ERROR_REGEX : undefined;\n }\n\n /**\n *\n *\n * @param {*} infoStringOrErrorObject\n * @param {*} [customAttributes={}]\n * @memberof NewRelicLoggingService\n */\n logInfo(infoStringOrErrorObject, customAttributes = {}) {\n let message = infoStringOrErrorObject;\n let customAttrs = customAttributes;\n if (typeof infoStringOrErrorObject === 'object' && 'message' in infoStringOrErrorObject) {\n /* Caller has passed in an error object to be logged as a page action. */\n /* Extract the attributes and the message. */\n const infoCustomAttributes = infoStringOrErrorObject.customAttributes || {};\n customAttrs = { ...infoCustomAttributes, ...customAttributes };\n message = infoStringOrErrorObject.message;\n }\n sendPageAction(pageActionNameInfo, message, customAttrs);\n }\n\n /**\n *\n *\n * @param {*} errorStringOrObject\n * @param {*} [customAttributes={}]\n * @memberof NewRelicLoggingService\n */\n logError(errorStringOrObject, customAttributes = {}) {\n const errorCustomAttributes = errorStringOrObject.customAttributes || {};\n let allCustomAttributes = { ...errorCustomAttributes, ...customAttributes };\n if (Object.keys(allCustomAttributes).length === 0) {\n // noticeError expects undefined if there are no custom attributes.\n allCustomAttributes = undefined;\n }\n\n /*\n Separate the errors into ignored errors and other errors.\n Ignored errors are logged via adding a page action.\n Other errors are logged via noticeError and count as \"JS Errors\" for the application.\n */\n const errorMessage = errorStringOrObject.message || (typeof errorStringOrObject === 'string' ? errorStringOrObject : '');\n if (this.ignoredErrorRegexes && errorMessage.match(this.ignoredErrorRegexes)) {\n /* ignored error */\n sendPageAction(pageActionNameIgnoredError, errorMessage, allCustomAttributes);\n } else {\n /* error! */\n sendError(errorStringOrObject, allCustomAttributes);\n }\n }\n\n /**\n * Sets a custom attribute that will be included with all subsequent log messages.\n *\n * @param {string} name\n * @param {string|number|null} value\n */\n setCustomAttribute(name, value) {\n setCustomAttribute(name, value);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edx/frontend-platform",
|
|
3
|
-
"version": "8.1.
|
|
3
|
+
"version": "8.1.2",
|
|
4
4
|
"description": "Foundational application framework for Open edX micro-frontend applications.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -35,24 +35,22 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@edx/brand": "npm:@openedx/brand-openedx@^1.2.2",
|
|
37
37
|
"@edx/browserslist-config": "1.2.0",
|
|
38
|
-
"@openedx/frontend-build": "14.
|
|
39
|
-
"@openedx/paragon": "22.
|
|
40
|
-
"@testing-library/jest-dom": "6.
|
|
38
|
+
"@openedx/frontend-build": "14.1.5",
|
|
39
|
+
"@openedx/paragon": "22.8.1",
|
|
40
|
+
"@testing-library/jest-dom": "6.5.0",
|
|
41
41
|
"@testing-library/react": "12.1.5",
|
|
42
42
|
"@testing-library/react-hooks": "^8.0.1",
|
|
43
43
|
"axios-mock-adapter": "^1.22.0",
|
|
44
|
-
"core-js": "3.37.1",
|
|
45
44
|
"husky": "8.0.3",
|
|
46
45
|
"jest-environment-jsdom": "29.7.0",
|
|
47
46
|
"jsdoc": "^4.0.0",
|
|
48
|
-
"nodemon": "3.1.
|
|
47
|
+
"nodemon": "3.1.7",
|
|
49
48
|
"prop-types": "15.8.1",
|
|
50
49
|
"react": "17.0.2",
|
|
51
50
|
"react-dom": "17.0.2",
|
|
52
51
|
"react-redux": "^8.1.1",
|
|
53
52
|
"react-router-dom": "^6.6.1",
|
|
54
|
-
"redux": "4.2.1"
|
|
55
|
-
"regenerator-runtime": "0.14.1"
|
|
53
|
+
"redux": "4.2.1"
|
|
56
54
|
},
|
|
57
55
|
"dependencies": {
|
|
58
56
|
"@cospired/i18n-iso-languages": "4.2.0",
|
|
@@ -72,7 +70,7 @@
|
|
|
72
70
|
"lodash.merge": "4.6.2",
|
|
73
71
|
"lodash.snakecase": "4.1.1",
|
|
74
72
|
"pubsub-js": "1.9.4",
|
|
75
|
-
"react-intl": "6.
|
|
73
|
+
"react-intl": "6.7.0",
|
|
76
74
|
"universal-cookie": "4.0.4"
|
|
77
75
|
},
|
|
78
76
|
"peerDependencies": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","names":["React","Component","PropTypes","logError","ErrorPage","ErrorBoundary","_Component","props","_this","_classCallCheck","_callSuper","state","hasError","_inherits","_createClass","key","value","componentDidCatch","error","info","stack","componentStack","render","fallbackComponent","createElement","children","getDerivedStateFromError","propTypes","node","defaultProps","undefined"],"sources":["../../src/react/ErrorBoundary.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { logError } from '../logging';\n\nimport ErrorPage from './ErrorPage';\n\n/**\n * Error boundary component used to log caught errors and display the error page.\n *\n * @memberof module:React\n * @extends {Component}\n */\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, info) {\n logError(error, { stack: info.componentStack });\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallbackComponent || <ErrorPage />;\n }\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node,\n fallbackComponent: PropTypes.node,\n};\n\nErrorBoundary.defaultProps = {\n children: null,\n fallbackComponent: undefined,\n};\n\nexport default ErrorBoundary;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,QAAQ,QAAQ,YAAY;AAErC,OAAOC,SAAS,MAAM,aAAa;;AAEnC;AACA;AACA;AACA;AACA;AACA;AALA,IAMMC,aAAa,0BAAAC,UAAA;EACjB,SAAAD,cAAYE,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAJ,aAAA;IACjBG,KAAA,GAAAE,UAAA,OAAAL,aAAA,GAAME,KAAK;IACXC,KAAA,CAAKG,KAAK,GAAG;MAAEC,QAAQ,EAAE;IAAM,CAAC;IAAC,OAAAJ,KAAA;EACnC;EAACK,SAAA,CAAAR,aAAA,EAAAC,UAAA;EAAA,OAAAQ,YAAA,CAAAT,aAAA;IAAAU,GAAA;IAAAC,KAAA,EAOD,SAAAC,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","names":["React","Component","PropTypes","logError","ErrorPage","ErrorBoundary","_Component","props","_this","_classCallCheck","_callSuper","state","hasError","_inherits","_createClass","key","value","componentDidCatch","error","info","stack","componentStack","render","fallbackComponent","createElement","children","getDerivedStateFromError","propTypes","node","defaultProps","undefined"],"sources":["../../src/react/ErrorBoundary.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { logError } from '../logging';\n\nimport ErrorPage from './ErrorPage';\n\n/**\n * Error boundary component used to log caught errors and display the error page.\n *\n * @memberof module:React\n * @extends {Component}\n */\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, info) {\n logError(error, { stack: info.componentStack });\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallbackComponent || <ErrorPage />;\n }\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node,\n fallbackComponent: PropTypes.node,\n};\n\nErrorBoundary.defaultProps = {\n children: null,\n fallbackComponent: undefined,\n};\n\nexport default ErrorBoundary;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,QAAQ,QAAQ,YAAY;AAErC,OAAOC,SAAS,MAAM,aAAa;;AAEnC;AACA;AACA;AACA;AACA;AACA;AALA,IAMMC,aAAa,0BAAAC,UAAA;EACjB,SAAAD,cAAYE,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAJ,aAAA;IACjBG,KAAA,GAAAE,UAAA,OAAAL,aAAA,GAAME,KAAK;IACXC,KAAA,CAAKG,KAAK,GAAG;MAAEC,QAAQ,EAAE;IAAM,CAAC;IAAC,OAAAJ,KAAA;EACnC;EAACK,SAAA,CAAAR,aAAA,EAAAC,UAAA;EAAA,OAAAQ,YAAA,CAAAT,aAAA;IAAAU,GAAA;IAAAC,KAAA,EAOD,SAAAC,iBAAiBA,CAACC,KAAK,EAAEC,IAAI,EAAE;MAC7BhB,QAAQ,CAACe,KAAK,EAAE;QAAEE,KAAK,EAAED,IAAI,CAACE;MAAe,CAAC,CAAC;IACjD;EAAC;IAAAN,GAAA;IAAAC,KAAA,EAED,SAAAM,MAAMA,CAAA,EAAG;MACP,IAAI,IAAI,CAACX,KAAK,CAACC,QAAQ,EAAE;QACvB,OAAO,IAAI,CAACL,KAAK,CAACgB,iBAAiB,iBAAIvB,KAAA,CAAAwB,aAAA,CAACpB,SAAS,MAAE,CAAC;MACtD;MACA,OAAO,IAAI,CAACG,KAAK,CAACkB,QAAQ;IAC5B;EAAC;IAAAV,GAAA;IAAAC,KAAA,EAdD,SAAOU,wBAAwBA,CAAA,EAAG;MAChC;MACA,OAAO;QAAEd,QAAQ,EAAE;MAAK,CAAC;IAC3B;EAAC;AAAA,EATyBX,SAAS;AAuBrCI,aAAa,CAACsB,SAAS,GAAG;EACxBF,QAAQ,EAAEvB,SAAS,CAAC0B,IAAI;EACxBL,iBAAiB,EAAErB,SAAS,CAAC0B;AAC/B,CAAC;AAEDvB,aAAa,CAACwB,YAAY,GAAG;EAC3BJ,QAAQ,EAAE,IAAI;EACdF,iBAAiB,EAAEO;AACrB,CAAC;AAED,eAAezB,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleAnalyticsLoader.js","names":["GoogleAnalyticsLoader","_ref","config","_classCallCheck","analyticsId","GOOGLE_ANALYTICS_4_ID","_createClass","key","value","loadScript","global","googleAnalytics","_global","invoked","load","options","scriptSrc","document","createElement","type","async","src","concat","scriptGtag","innerHTML","first","getElementsByTagName","parentNode","insertBefore","_loadOptions"],"sources":["../../src/scripts/GoogleAnalyticsLoader.js"],"sourcesContent":["/**\n * @implements {GoogleAnalyticsLoader}\n * @memberof module:GoogleAnalytics\n */\nclass GoogleAnalyticsLoader {\n constructor({ config }) {\n this.analyticsId = config.GOOGLE_ANALYTICS_4_ID;\n }\n\n loadScript() {\n if (!this.analyticsId) {\n return;\n }\n\n global.googleAnalytics = global.googleAnalytics || [];\n const { googleAnalytics } = global;\n\n // If the snippet was invoked do nothing.\n if (googleAnalytics.invoked) {\n return;\n }\n\n // Invoked flag, to make sure the snippet\n // is never invoked twice.\n googleAnalytics.invoked = true;\n\n googleAnalytics.load = (key, options) => {\n const scriptSrc = document.createElement('script');\n scriptSrc.type = 'text/javascript';\n scriptSrc.async = true;\n scriptSrc.src = `https://www.googletagmanager.com/gtag/js?id=${key}`;\n\n const scriptGtag = document.createElement('script');\n scriptGtag.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${key}');\n `;\n\n // Insert our scripts next to the first script element.\n const first = document.getElementsByTagName('script')[0];\n first.parentNode.insertBefore(scriptSrc, first);\n first.parentNode.insertBefore(scriptGtag, first);\n googleAnalytics._loadOptions = options; // eslint-disable-line no-underscore-dangle\n };\n\n // Load GoogleAnalytics with your key.\n googleAnalytics.load(this.analyticsId);\n }\n}\n\nexport default GoogleAnalyticsLoader;\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAIMA,qBAAqB;EACzB,SAAAA,sBAAAC,IAAA,EAAwB;IAAA,IAAVC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAAC,eAAA,OAAAH,qBAAA;IAClB,IAAI,CAACI,WAAW,GAAGF,MAAM,CAACG,qBAAqB;EACjD;EAAC,OAAAC,YAAA,CAAAN,qBAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAC,
|
|
1
|
+
{"version":3,"file":"GoogleAnalyticsLoader.js","names":["GoogleAnalyticsLoader","_ref","config","_classCallCheck","analyticsId","GOOGLE_ANALYTICS_4_ID","_createClass","key","value","loadScript","global","googleAnalytics","_global","invoked","load","options","scriptSrc","document","createElement","type","async","src","concat","scriptGtag","innerHTML","first","getElementsByTagName","parentNode","insertBefore","_loadOptions"],"sources":["../../src/scripts/GoogleAnalyticsLoader.js"],"sourcesContent":["/**\n * @implements {GoogleAnalyticsLoader}\n * @memberof module:GoogleAnalytics\n */\nclass GoogleAnalyticsLoader {\n constructor({ config }) {\n this.analyticsId = config.GOOGLE_ANALYTICS_4_ID;\n }\n\n loadScript() {\n if (!this.analyticsId) {\n return;\n }\n\n global.googleAnalytics = global.googleAnalytics || [];\n const { googleAnalytics } = global;\n\n // If the snippet was invoked do nothing.\n if (googleAnalytics.invoked) {\n return;\n }\n\n // Invoked flag, to make sure the snippet\n // is never invoked twice.\n googleAnalytics.invoked = true;\n\n googleAnalytics.load = (key, options) => {\n const scriptSrc = document.createElement('script');\n scriptSrc.type = 'text/javascript';\n scriptSrc.async = true;\n scriptSrc.src = `https://www.googletagmanager.com/gtag/js?id=${key}`;\n\n const scriptGtag = document.createElement('script');\n scriptGtag.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${key}');\n `;\n\n // Insert our scripts next to the first script element.\n const first = document.getElementsByTagName('script')[0];\n first.parentNode.insertBefore(scriptSrc, first);\n first.parentNode.insertBefore(scriptGtag, first);\n googleAnalytics._loadOptions = options; // eslint-disable-line no-underscore-dangle\n };\n\n // Load GoogleAnalytics with your key.\n googleAnalytics.load(this.analyticsId);\n }\n}\n\nexport default GoogleAnalyticsLoader;\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAIMA,qBAAqB;EACzB,SAAAA,sBAAAC,IAAA,EAAwB;IAAA,IAAVC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAAC,eAAA,OAAAH,qBAAA;IAClB,IAAI,CAACI,WAAW,GAAGF,MAAM,CAACG,qBAAqB;EACjD;EAAC,OAAAC,YAAA,CAAAN,qBAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAC,UAAUA,CAAA,EAAG;MACX,IAAI,CAAC,IAAI,CAACL,WAAW,EAAE;QACrB;MACF;MAEAM,MAAM,CAACC,eAAe,GAAGD,MAAM,CAACC,eAAe,IAAI,EAAE;MACrD,IAAAC,OAAA,GAA4BF,MAAM;QAA1BC,eAAe,GAAAC,OAAA,CAAfD,eAAe;;MAEvB;MACA,IAAIA,eAAe,CAACE,OAAO,EAAE;QAC3B;MACF;;MAEA;MACA;MACAF,eAAe,CAACE,OAAO,GAAG,IAAI;MAE9BF,eAAe,CAACG,IAAI,GAAG,UAACP,GAAG,EAAEQ,OAAO,EAAK;QACvC,IAAMC,SAAS,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QAClDF,SAAS,CAACG,IAAI,GAAG,iBAAiB;QAClCH,SAAS,CAACI,KAAK,GAAG,IAAI;QACtBJ,SAAS,CAACK,GAAG,kDAAAC,MAAA,CAAkDf,GAAG,CAAE;QAEpE,IAAMgB,UAAU,GAAGN,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QACnDK,UAAU,CAACC,SAAS,0KAAAF,MAAA,CAIAf,GAAG,gBACtB;;QAED;QACA,IAAMkB,KAAK,GAAGR,QAAQ,CAACS,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxDD,KAAK,CAACE,UAAU,CAACC,YAAY,CAACZ,SAAS,EAAES,KAAK,CAAC;QAC/CA,KAAK,CAACE,UAAU,CAACC,YAAY,CAACL,UAAU,EAAEE,KAAK,CAAC;QAChDd,eAAe,CAACkB,YAAY,GAAGd,OAAO,CAAC,CAAC;MAC1C,CAAC;;MAED;MACAJ,eAAe,CAACG,IAAI,CAAC,IAAI,CAACV,WAAW,CAAC;IACxC;EAAC;AAAA;AAGH,eAAeJ,qBAAqB","ignoreList":[]}
|