feat(loader): Add new dynamic cdn options to js loader#44876
feat(loader): Add new dynamic cdn options to js loader#44876AbhiPrasad merged 10 commits intomasterfrom
Conversation
| settings.JS_SDK_LOADER_DEFAULT_SDK_URL = "https://browser.sentry-cdn.com/%s/bundle%s.min.js" | ||
| settings.JS_SDK_LOADER_SDK_VERSION = "7.32.0" | ||
|
|
||
| for data, expected in [ |
There was a problem hiding this comment.
couldn't make @mock.patch and pytest.mark.parametrize play nicely with each other, so elected for the manual for loop.
There was a problem hiding this comment.
Yeah pytest.parametrize and unittest.TestCase don't play nice either.
| # def setUp(self): | ||
| # self.project = self.create_project() | ||
| # self.project_key = self.create_project_key(project=self.project) |
There was a problem hiding this comment.
l: Do we still need these comments? If not let's remove them
| {% load sentry_helpers %}(function(c,w,C,q,r,k,D,E,x,l){function t(a){if(!y){y=!0;var f=w.scripts[0],d=w.createElement(C);d.src=E;d.crossOrigin="anonymous";d.addEventListener("load",function(){try{c[q]=u;c[r]=v;c.SENTRY_SDK_SOURCE="loader";var b=c[k],g=b.init;b.init=function(e){for(var h in e)Object.prototype.hasOwnProperty.call(e,h)&&(x[h]=e[h]);g(x)};F(a,b)}catch(e){console.error(e)}});f.parentNode.insertBefore(d,f)}}function F(a,f){try{for(var d=m.data,b=0;b<a.length;b++)if("function"===typeof a[b])a[b](); | ||
| var g=!1,e=c.__SENTRY__;"undefined"!==typeof e&&e.hub&&e.hub.getClient()&&(g=!0);e=!1;for(b=0;b<d.length;b++)if(d[b].f){e=!0;var h=d[b];!1===g&&"init"!==h.f&&f.init();g=!0;f[h.f].apply(f,h.a)}!1===g&&!1===e&&f.init();var z=c[q],A=c[r];for(b=0;b<d.length;b++)"e"in d[b]&&z?z.apply(c,d[b].e):"p"in d[b]&&A&&A.apply(c,[d[b].p])}catch(G){console.error(G)}}var n=l,B=!1;for(l=0;l<document.scripts.length;l++)if(-1<document.scripts[l].src.indexOf(D)){n="no"!==document.scripts[l].getAttribute("data-lazy");break}var y= | ||
| !1,p=[],m=function(a){("e"in a||"p"in a||a.f&&-1<a.f.indexOf("capture")||a.f&&-1<a.f.indexOf("showReportDialog"))&&n&&t(p);m.data.push(a)};m.data=[];c[k]=c[k]||{};c[k].onLoad=function(a){p.push(a);n&&!B||t(p)};c[k].forceLoad=function(){B=!0;n&&setTimeout(function(){t(p)})};"init addBreadcrumb captureMessage captureException captureEvent configureScope withScope showReportDialog".split(" ").forEach(function(a){c[k][a]=function(){m({f:a,a:arguments})}});var u=c[q];c[q]=function(a,f,d,b,g){m({e:[].slice.call(arguments)}); | ||
| u&&u.apply(c,arguments)};var v=c[r];c[r]=function(a){m({p:"reason"in a?a.reason:"detail"in a&&"reason"in a.detail?a.detail.reason:a});v&&v.apply(c,arguments)};n||setTimeout(function(){t(p)})})(window,document,"script","onerror","onunhandledrejection","Sentry","{{ publicKey|safe }}","{{ jsSdkUrl|safe }}",{{ config|to_json|safe }},{{ isLazy|safe }}); |
There was a problem hiding this comment.
m: Not sure if we're missing something but do we actually need these lines? Seems like we have the two versions of the minified loader template in this file and we should have only one, right?
markstory
left a comment
There was a problem hiding this comment.
Changes look good to me from an API conventions point of view.
| settings.JS_SDK_LOADER_DEFAULT_SDK_URL = "https://browser.sentry-cdn.com/%s/bundle%s.min.js" | ||
| settings.JS_SDK_LOADER_SDK_VERSION = "7.32.0" | ||
|
|
||
| for data, expected in [ |
There was a problem hiding this comment.
Yeah pytest.parametrize and unittest.TestCase don't play nice either.
|
@markstory Thanks for taking a look :) |
resolves #44225
Building off of #44496, we add the new project settings to the js sdk loader. Currently this should have 0 impact on any existing users, as the options under
DynamicSdkLoaderOptionshould never be set for them.As per @mitsuhiko's recommendation, we remove the new dynamic loader endpoint in #44346, in favor of putting all the functionality in the original loader.