Sentry-javascript: @ рд╕рдВрддрд░реА/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рд╕рд┐рддре░ 2018  ┬╖  69рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: getsentry/sentry-javascript

рдкреИрдХреЗрдЬ + рд╕рдВрд╕реНрдХрд░рдг

  • [рдПрдХреНрд╕] @sentry/browser
  • [ ] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(рдиреЛрдб рдХреЗ рд▓рд┐рдП рд░реЗрд╡реЗрди)_
  • [ ] рдЕрдиреНрдп:

рд╕рдВрд╕реНрдХрд░рдг:

4.0.2

рд╡рд┐рд╡рд░рдг

@ рд╕рдВрддрд░реА/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рд░реЗрд╡реЗрди-рдЬреЗрдПрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рджреЛрдЧреБрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдмрдбрд╝рд╛ рд╣реИ: 86 рдХреЗрдмреА рдмрдирд╛рдо 39 рдХреЗрдмреА (рдЫреЛрдЯрд╛)ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рди рд╣реЛрдиреЗ рдХрд╛ рдЧрдВрднреАрд░ рдХрд╛рд░рдг рд╣реИред

Discussion Improvement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рдореНрдкреАрдбрд┐рдд рдЫреЛрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдкрд╣рд▓реЗ gzip рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рднреА рдЙрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдореБрджреНрджреЗ рди рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред ~92kb рдХрд╛рдлреА рднрд╛рд░реА рд╣реИ рдФрд░ рдХрдо-рдЕрдВрдд рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ 1s рддрдХ рдкрд╛рд░реНрд╕ рд╕рдордп рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рд╕рд┐рд░реНрдл рдЗрд╕ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП!)ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк CDN'ed рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП < 1KB рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╣рд╛рдБ рд╕реЗ рд▓реЗрдВрдЧреЗред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬрдм рдореИрдВ https://browser.sentry-cdn.com/4.0.4/bundle.min.js рдЦреЛрд▓рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 22KB рдХрд╛ gzipped рдЖрдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрддрд░реА рдХрд╛ рдПрд╕рдбреАрдХреЗ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рд╕рдВрддрд░реА рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд░рд╣рд╛ рд╣реИред рд╡реЗрдм рдкреНрд░рджрд░реНрд╢рди рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рднрд╛рд╡реБрдХ рд╣реВрдВред ;)

рд╕рднреА 69 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрд░реЗ, рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЬрдмрдХрд┐ рд╣рдо рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд╕рд╣рдордд рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рдореНрдкреАрдбрд┐рдд рдЫреЛрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдкрд╣рд▓реЗ gzip рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:

@sentry/browser рд╣реИ 21.3799 KB
raven-js 13.44 рдХреЗрдмреА

рд╕рд╛рде рд╣реА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рднреА рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд╕реАрдбреАрдПрди рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред

рджреЗрдЦреЗрдВ: https://docs.sentry.io/quickstart/?platform=browser

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдкрдХреЗ рдкрдЧреЗрд▓реЛрдб рд╕рдордп рдкрд░ рдкрджрдЪрд┐рд╣реНрди рдФрд░ рдкреНрд░рднрд╛рд╡ <1KB gzipped рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░рдЦрддреЗ рд╣реБрдПред

рддреЛ рдЯреАрдПрд▓; рдбреЙ:
рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рдпрд╣ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рдореНрдкреАрдбрд┐рдд рдЫреЛрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдкрд╣рд▓реЗ gzip рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рднреА рдЙрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдореБрджреНрджреЗ рди рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред ~92kb рдХрд╛рдлреА рднрд╛рд░реА рд╣реИ рдФрд░ рдХрдо-рдЕрдВрдд рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ 1s рддрдХ рдкрд╛рд░реНрд╕ рд╕рдордп рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рд╕рд┐рд░реНрдл рдЗрд╕ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП!)ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк CDN'ed рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП < 1KB рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╣рд╛рдБ рд╕реЗ рд▓реЗрдВрдЧреЗред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬрдм рдореИрдВ https://browser.sentry-cdn.com/4.0.4/bundle.min.js рдЦреЛрд▓рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 22KB рдХрд╛ gzipped рдЖрдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрддрд░реА рдХрд╛ рдПрд╕рдбреАрдХреЗ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рд╕рдВрддрд░реА рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд░рд╣рд╛ рд╣реИред рд╡реЗрдм рдкреНрд░рджрд░реНрд╢рди рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рднрд╛рд╡реБрдХ рд╣реВрдВред ;)

@klaemo
рд╣реЗ, рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ

рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рдо рдЬрд╛рдЧрд░реВрдХ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд╣реЛред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирдП рдПрд╕рдбреАрдХреЗ рдХреЛ рд╢рд┐рдк рдХрд░рдирд╛ рдерд╛, рд╣рдо рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдФрд░ рднреА рдХрдИ рдХрджрдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: tslib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдорд┐рд▓рд╛рдПрдВ ...
рдЗрд╕рд▓рд┐рдП рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЧрд╣ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЬреЛ рд▓рд┐рдВрдХ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрд░рд╛рдирд╛ рд╣реИ
рдореИрдВ _Loader_ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛: https://docs.sentry.io/platforms/javascript/loader/
рдЬрдмрдХрд┐ _Loader_ рдХреА рднреА рдЗрд╕рдХреА рдПрд╕рд┐рдВрдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдПрд╕рдбреАрдХреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдпрд╣ рдПрд╕рд┐рдВрдХ рд╣реЛ) рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдерд╛ред

@HazAT рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рджреЛрд╕реНрддреЛрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреА рддрд╛рд░реАрдЦ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, #рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдмрджрд▓рд╛рд╡ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡рд╣ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣рд╛ рд╣реИ рдХрд┐ 4x рд╕рдВрд╕реНрдХрд░рдг рд╣рд╛рд▓рд╛рдВрдХрд┐ Angular5+ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

@rayzru рдиреЗ рдЕрднреА-рдЕрднреА 4.0.5 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд╕реНрдЯ рд░рдЦреЗрдВред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рди рд╣реЛрдиреЗ рдХрд╛ рдЧрдВрднреАрд░ рдХрд╛рд░рдг рд╣реИред

ЁЯТп рдореИрдВ рддрдм рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╣реА рд╡рд╛рд▓рд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛:

capture d ecran 2018-10-03 a 15 07 27

рдХрдо рд╕реЗ рдХрдо рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдВрдбрд▓ рдореЗрдВ я╕П +10 KB gzipped JavaScript рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рдо рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ :)

@HazAT рдХреНрдпрд╛ esm рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡реЗрдмрдкреИрдХ рдХреЛ рд╕рдВрдпреЛрдЬрди рдФрд░ рдкреЗрдбрд╝ рдХреЗ рдЭрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ CI рдЯреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 100 рдХреЗрдмреА рддрдХ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ, рджреЗрдЦреЗрдВ https://bundlephobia.com/result?p=@sentry/browser @4.3.0

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ https://github.com/siddharthkp/bundlesize

рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдмрдЬрдЯ 250 kb рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдорд┐рд▓реЗред 100 kb рд╕рдВрддрд░реА рдЙрд╕ рдмрдЬрдЯ рдХрд╛ рдХрд╛рдлреА рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдбреЗрдЯ рд░рдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИ, рдпрд╛ рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд┐рдирд╛ рдЖрдХрд╛рд░ рдХреЗ рдмрдЬрдЯ рдХреЗ рдмрдврд╝рддрд╛ рд░рд╣реЗрдЧрд╛ред

рд╣рдо рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рднреБрдЧрддрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмреИрдХрдПрдВрдб, рдиреЗрдЯрд┐рд╡ рдФрд░ рд╡реЗрдм рджреЛрдиреЛрдВ рдкрд░ рд╕рдВрддрд░реА рдореЗрдВ рднрд╛рд░реА рдирд┐рд╡реЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ 3x рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЕрдкрдЧреНрд░реЗрдб (рд░реЗрд╡реЗрди-рдЬреЗрдПрд╕@3.23.1 31 рдХреЗрдмреА рд╣реИ) рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрдЪрд┐рдд рдард╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред

@jacobrask рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо https://www.onepixel.com/ рдкрд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
dont-confuse-motion-with-progress

@jacobrask рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рд╣реИ рдФрд░ рд╣рдо рдпрд╣ рднреА рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдХрдо рд▓рдЯрдХрдиреЗ рд╡рд╛рд▓реЗ рдлрд▓ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╢рд╛рдпрдж рдЙрдореНрдореАрдж рд╕реЗ рдЬрд▓реНрдж рд╣реА рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд▓реЗрдВрдЧреЗред

@рд╣рдЬрд╝рдд
рд╕рдВрддрд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрд╕рдбреАрдХреЗ рд░реЛрд▓рдЕрдк рдмрдВрдбрд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрдВрдбрд▓ рдорд┐рдирдЯ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдХрдИ tslib рдХреЛрдб рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ __рдЬрдирд░реЗрдЯрд░, __рдЕрд╕рд╛рдЗрдиред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдирд╡реА рдореЗрдВ, рдПрдХ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рдирдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ gzip рдХрд╛ рдЖрдХрд╛рд░ 23K рд╕реЗ рдШрдЯрд╛рдХрд░ 16K рдХрд░ рджреЗрдВред

рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ 4.3.2 . рдореЗрдВ рд╕рдорд╛рди рд╣реИ
https://bundlephobia.com/result?p=@sentry/browser @4.3.2 рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛
https://github.com/getsentry/sentry-javascript/pull/1738 :(

@vkrol рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо npm рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП @gaterking рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рджреВрд╕рд░реА рдУрд░ рд╕реАрдбреАрдПрди рдкрд░ рдмрдВрдбрд▓ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП tslib рдкрд░ рдПрдХ рдбрд┐рдкреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереА, рдЯреВрдЯ рдЧрдИ рдереАред

@ рд╣рдЬрд╝рдд рдареАрдХ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред

@vkrol рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо npm рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП @gaterking рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рджреВрд╕рд░реА рдУрд░ рд╕реАрдбреАрдПрди рдкрд░ рдмрдВрдбрд▓ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП tslib рдкрд░ рдПрдХ рдбрд┐рдкреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереА, рдЯреВрдЯ рдЧрдИ рдереАред

рдЖрд╢рд╛ рд╣реИ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрджред

@gaterking @kamilogorek рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА https://github.com/getsentry/sentry-javascript/pull/1751 рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ
рд╣рдореЗрдВ рдмрд╕ рдПрдХ "рддрддреНрдХрд╛рд▓" рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреА рдереА рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред

рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдкреАрдЖрдИ рдореЗрдВ рдЬрдорд╛ рдХрд░реЗред

рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИ?

рдпрд╣ рд╕рдордЭрдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддреНрд░реБрдЯрд┐-рд░рд┐рдкреЛрд░реНрдЯрд░ рдХреЛ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдкрджрдЪрд┐рд╣реНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

@ рдорд╛рдЗрдВрдбрдкреНрд▓реЗ-рдбреАрдХреЗ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИрдВ ^^
рд╣рдореЗрдВ рдЯреВрдЯреЗ/рдЧрд▓рдд рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред
"рдмрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ" рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдп рднреА рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рдпрд╣ рд╕рдордЭрдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддреНрд░реБрдЯрд┐-рд░рд┐рдкреЛрд░реНрдЯрд░ рдХреЛ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдкрджрдЪрд┐рд╣реНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

@ рдорд╛рдЗрдВрдбрдкреНрд▓реЗ-рдбреАрдХреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/tracekit.ts

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдореА рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛, рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреАред рдореИрдВ

рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдУрдкреЗрд░рд╛ 10 рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рджрд┐рдЦрд╛рддреА рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдЯреНрд░реЗрд╕рдХрд┐рдЯ рднреА рд░реЗрд╡реЗрди рд╕реЗ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ) 2x рдЖрдХрд╛рд░ рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝рд╛ рдерд╛ред

рдХреБрдЫ рд╕реБрдЭрд╛рд╡:

  • рдПрдордбреА5 . рдирд┐рдХрд╛рд▓реЗрдВ
  • async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдХрд░реЗрдВ, рдпрд╣ ES5 рдХреЛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378 рдХреА рддреБрд▓рдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рд╕реЗ рдХрд░реЗрдВ (рдкреНрд░реЛрдбрдХреНрд╢рди рдмрдВрдбрд▓ рдореЗрдВ "рдкреНрд░реЛрд╕реЗрд╕рдЗрд╡реЗрдВрдЯ" рдЦреЛрдЬреЗрдВ)ред рд╡рд╣ рдкреВрд░реА рдлрд╛рдЗрд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдмрдВрдбрд▓ рдореЗрдВ рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдХреНрдпрд╛ рдкреИрдХреЗрдЬ/рдХреЛрд░ рдЬреИрд╕реЗ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рд╛рдЭрд╛ рдХреЛрдб ( app:///${base} rewriteframes.ts рдореЗрдВ) рд╣реИ? рд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред

@kamilogorek yikes, рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИрдВ ... рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рдерд╛ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдЦреЛрд▓рд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдореЗрдВ рд╕реНрдЯреИрдХ-рдирд┐рд╢рд╛рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЕрднреА - рдЕрднреАред рдУрд╣ред рдореИрдВ

рдХреЗрд╡рд▓ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдИрдПрд╕рдПрдо рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЖрдЬ рднреА рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИред

async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдХрд░реЗрдВ, рдпрд╣ ES5 рдХреЛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378 рдХреА рддреБрд▓рдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рд╕реЗ рдХрд░реЗрдВ (рдкреНрд░реЛрдбрдХреНрд╢рди рдмрдВрдбрд▓ рдореЗрдВ "рдкреНрд░реЛрд╕реЗрд╕рдЗрд╡реЗрдВрдЯ" рдЦреЛрдЬреЗрдВ)ред рд╡рд╣ рдкреВрд░реА рдлрд╛рдЗрд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдмрдВрдбрд▓ рдореЗрдВ рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдпрд╣ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИ, ES5 рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп 80.07% рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдЪрд╛рд╣рд┐рдП:
Async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдЬреЛ <script type="module"> (caniuse: esm , async ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд╡реИрд╕реЗ рднреА рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ)

рд╕рдмреВрдд:
160KB (es5, рдмрдВрдбрд▓) > 119KB (esm, рдкреНрд▓реЗрди рдлрд╝рд╛рдЗрд▓реЗрдВ)

рддреЛ рдХреГрдкрдпрд╛ esm рдлрд╝рд╛рдЗрд▓ (рднреА) рдХреЛ рдмрдВрдбрд▓ рдХрд░реЗрдВ, рдпрд╣ module рдФрд░ target рдХреЛ /tsconfig.esm.json (рдЬреЛ tsconfig.build.json ) рд╕реЗ esnext рдореЗрдВ рдмрджрд▓рдирд╛ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИред tsconfig.esm.json рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдореЗрдВ tsconfig.build.json рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдорд╛рди рдЬреЛрдбрд╝рдХрд░, рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдФрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ package.json рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ

рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рд╡рд╣ @cromefire рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ :)

рдпрджрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рдФрд░ рдЖрдзреБрдирд┐рдХ рдореЛрдб рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛, рдЬреИрд╕реЗ рдХрд┐ рд╡реВ рдХреНрд▓реАред рдЬрд╣рд╛рдВ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрдо рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдЕрдЧрд░ рдпрд╣ рд╡реЗрдмрдкреИрдХ рдПрдирд╡реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХреЗред рдУрдПрдлрд╕реА, рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдкреЗрд╕реА рдлреАрдЪрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ :)

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдЙрддреНрдкрд╛рдж!

рдЙрд╕ рдирдП рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдЖрдк рдмреЗрдмреЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

@ рд╕рдВрддрд░реА/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рд░реЗрд╡реЗрди-рдЬреЗрдПрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рджреЛрдЧреБрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдмрдбрд╝рд╛ рд╣реИ: 86 рдХреЗрдмреА рдмрдирд╛рдо 39 рдХреЗрдмреА (рдЫреЛрдЯрд╛)ред

FYI рдХрд░реЗрдВ: @sentry/browser рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдХрд░ 91.8 kB рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрд░реЛрдд: https://bundlephobia.com/result?p=@sentry/browser @4.5.0ред

@cromefire рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рдЕрднреА v4.5.0 рд╕реЗ рдирдП esm рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рдЙрди рд╕рднреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ @sentry/utils/esm рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдирдП yarn install рдХреЗ рдмрд╛рдж node_modules рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдирд╣реАрдВ рдорд┐рд▓реЗред (рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВ)

рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рд╕реВрдЪреА

./node_modules/@sentry/core/esm/baseclient.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/async' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/backend.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/tracekit.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/helpers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/browser/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/baseclient.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/dsn.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/inboundfilters.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/extraerrordata.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/is' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/globalhandlers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/baseclient.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/basebackend.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/sdk.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integration.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/dedupe.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/sdkinformation.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/inboundfilters.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/hub/esm/hub.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/logger' рдХреЛ './node_modules/@sentry/hub/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/client.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/tracekit.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/useragent.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/trycatch.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/helpers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/pluggable/ember.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/transports/beacon.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/transports' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/transports/fetch.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/browser/esm/transports' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/baseclient.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/dedupe.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/inboundfilters.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/hub/esm/scope.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/hub/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/hub/esm/hub.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/misc' рдХреЛ './node_modules/@sentry/hub/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/parsers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/trycatch.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/helpers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/api.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/basebackend.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/dsn.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/hub/esm/scope.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/object' рдХреЛ './node_modules/@sentry/hub/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/pluggable/rewriteframes.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/path' рдХреЛ './node_modules/@sentry/core/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/parsers.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/string' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/string' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/baseclient.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/string' рдХреЛ './node_modules/@sentry/core/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/core/esm/integrations/inboundfilters.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/string' рдХреЛ './node_modules/@sentry/core/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/backend.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/supports' рдХреЛ './node_modules/@sentry/browser/esm' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/supports' рдХреЛ './node_modules/@sentry/browser/esm/integrations' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/supports' рдХреЛ './node_modules/@sentry/browser/esm/integrations/pluggable' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
./node_modules/@sentry/browser/esm/transports/fetch.js рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: '@sentry/utils/esm/supports' рдХреЛ './node_modules/@sentry/browser/esm/transports' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

screenshot 2019-01-10 at 4 37 45 pm

@pascaliske esm рдмрд┐рд▓реНрдб рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИ рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗред

@kamilogorek рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдмрд╕ рдЖрдкрдХреЛ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ

рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВ @pascaliske! рд╣рдо рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж ESM рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ :)

@pascaliske рдкрд╣рд▓реЗ yarn build рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

@cromefire рдирд╣реАрдВ, рдпрд╣ рдореБрдЭреЗ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рдЕрднреА рдкреИрдХреЗрдЬ рдХреЛ npm рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдореИрдВ

рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдереЛрдбрд╝реА рдЦреЛрдЬ рдХреА рдФрд░ @sentry/browser @sentry/utils рд╕реЗ рдХреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ: package/utils/tsconfig.build.json#L5 рдмрдирд╛рдо package/browser/tsconfig.build.json#L5 ред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ esm рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗ? рдореИрдВ

рдореЗрд░реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ browser рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдИрдПрд╕рдПрдо рджреЛрдиреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди utils рдкреИрдХреЗрдЬ рдореЗрдВ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рд░реА рд╣реЛ рдЪреБрдХрд╛ рд╣реИ?

рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдереЛрдбрд╝реА рдЦреЛрдЬ рдХреА рдФрд░ @sentry/рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рддреБрд▓рдирд╛ @sentry/utils рд╕реЗ рдХреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ: package/utils/tsconfig.build.json#L5 рдмрдирд╛рдо package/browser/tsconfig.build.json#L5ред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ esm рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗ? рдореИрдВ

рдирд╣реАрдВ, рдЖрдкрдХреЛ esm tsconfig . рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛

рдХрд▓ рджреЗрдЦ рд▓реЗрдВрдЧреЗ

рд╕рднреА рдХреЛ рдкреНрд░рдгрд╛рдо! рд╣рдо рд╕рдВрддрд░реА рдореЗрдВ рдХреБрдЫ рдмрдВрдбрд▓ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛: https://github.com/getsentry/sentry-javascript/blob/master/packages/minimal/package.json#L20

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдо рдХрд╛рд░реНрдпреЛрдВ (рдлреИрд▓рдиреЗ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ?

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ @sentry/types рдХреЛ _runtime_ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдФрд░ devDependencies рдореЗрдВ рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ ...

рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП @evocateur рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
(рд▓реЗрдХрд┐рди .d.ts рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)

@IanMitchell рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ esm рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

4.5.0 рдХреЗ рдмрдВрдбрд▓ рдЬреЗрдПрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдЧрдВрднреАрд░рддрд╛, htmlElementAsString, htmlElementAsString, uuid4, parseUrl рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!

рдРрд╕рд╛ рд╣реА рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ WebPack + Babel 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ import * as Sentry from '@sentry/browser'; (рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ 326kb рд╣реЛрддрд╛ рд╣реИред рджреЗрдЦреЗрдВ: рд╕рдВрддрд░реА.рдмрдВрдбрд▓. js.txt
рд╣рдо рдЕрдкрдиреЗ рдЕрдиреНрдп рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрддрд░реА рд╣реА рдПрдХрдорд╛рддреНрд░ рдмрдВрдбрд▓ рд╣реИред

рдмрдВрдбрд▓.рдорд┐рди.рдЬреЗрдПрд╕ рдХреЗ рдЕрдВрджрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдирд╣реАрдВ рд╣реИ , рдЬреЛ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рдХреЗ рд╣рд┐рд▓рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди import '@sentry/browser/build/bundle.min.js'; . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ

4.5.0 рдХреЗ рдмрдВрдбрд▓ рдЬреЗрдПрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдЧрдВрднреАрд░рддрд╛, htmlElementAsString, htmlElementAsString, uuid4, parseUrl рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ (рдпрд╛ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛рд░рдг рд╣реИ) esm рдмрд┐рд▓реНрдб рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдВрдбрд▓рд░ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░реАрдмрд┐рд▓реНрдб рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред (рдпрд╣ рдЕрднреА рдмреАрдЯрд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ)

рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдмрд╣реБрдд рдЫреЛрдЯрд╛ред

рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрдХ-рдирд┐рд╢рд╛рди рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрдм рддрдХ рдХреА рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рдЪреАрдЬ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рдФрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрджрдЪрд┐рд╣реНрди рдореВрд▓ рдврд╛рдВрдЪреЗ рд╕реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╡рд╣ рдиреЛрдб.рдЬреЗрдПрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдкрджрдЪрд┐рд╣реНрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдпрд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдЯреБрдХрдбрд╝рд╛ рд╣реИ - рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдоред

рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░, рдЗрд╕рдХрд╛ рдЬреНрдпрд╛рджрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рдореНрди-рд╕реНрддрд░ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╕реНрд░реЛрдд-рдХреЛрдб рд╕реБрдВрджрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рд╕рдм рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЗрди рдХреЗ рдиреАрдЪреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд╛рдЗрдЯреНрд╕ рдЦрд░реНрдЪ рдХрд░ рд░рд╣реА рд╣реИред

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП:

рдореИрдВ TrackJS рдореЗрдВ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ ~ 10KB рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдорд╛рди рдХреНрд╖рдорддрд╛рдПрдВ (рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреИрдХ-рдЯреНрд░реЗрд╕) рд╣реИрдВред

рдореВрд▓ TraceKit ~3KB рдорд┐рдирдЯ+gz рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓рд╛ рдЬреЛ рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░ рдмрд┐рдЯ (рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░) ~ 8 рдХреЗрдмреА рдорд┐рдирдЯ + рдЬреАрдЬреЗ рдпрд╛ ~ 10 рдХреЗрдмреА рдореЗрдВ рдПрдХреНрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХреБрдЫ рдмрд┐рдЯреНрд╕ рдПрдХрддреНрд░ рдХрд░рдиреЗ, рдЕрдкреЗрдХреНрд╖рд┐рдд JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ - рдЬреЛ рдХреБрдЫ KB рдорд┐рдирдЯ + gz рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛ рдЪрд╛рд╣рд┐рдП, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИред рдЕрдЧрд░ рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрди рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореБрдЭреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реБрдХ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ JSON рдкреЛрд╕реНрдЯ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд▓рдЧ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдЬреЗрдПрд╕ рдХреЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрдо рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдкрд░ рд╕рдЦреНрдд рд╕рд╛рдордЧреНрд░реА рдиреАрддрд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдкрд░ рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╢рд┐рдк рдХрд░реЗрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдЬреЗрдПрд╕ рдмрдЬрдЯ рдХреЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛ рддреНрд░реБрдЯрд┐ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛- рд▓реЙрдЧрд┐рдВрдЧ - рд╢рд╛рдпрдж 10% рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП ~ 15-20 KB рдЬреИрд╕рд╛ рдХреБрдЫ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рддреИрдирд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреИрдХрдЯреНрд░реИрдХ рдФрд░ рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд╕реМрдВрдкрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдХрд╛рд░ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ

рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреИрдХрдЯреНрд░реИрдХ рдФрд░ рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд╕реМрдВрдкрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдХрд╛рд░ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ

@cromefire рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣реА рд╣реИ рдЬреИрд╕реЗ рдЯреНрд░реИрдХрдЬреЗрдПрд╕ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ? (рдЙрдирдХрд╛ рдЧреНрд░рд╛рд╣рдХ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЫреЛрдЯрд╛ рд╕реНрд░реЛрдд рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рддрд╛рд░ рдкрд░ рдХреНрдпрд╛ рдпрд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИ ...)

рдпрд╣рд╛рдБ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдкреИрдХреЗрдЬ рд╣реИ: рд╕реНрд░реЛрдд-рдорд╛рдирдЪрд┐рддреНрд░-рд╕рдорд╛рдзрд╛рди ~2KB min+gz рдкрд░ ... рд╡рд╣ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рдмрд┐рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди (рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ ~ 10KB рд╣рд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рдмрд┐рдирд╛ рд╣реИ

рдкреЙрд▓реАрдлрд╝рд┐рд▓ esm рдмрд┐рд▓реНрдб рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдпрд╣ рднреА рдХрд╛рдо рдХрд░ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдмреИрдЪреЗрдВрдб рдореЗрдВ рдпрд╣ рдФрд░ рднреА рдХрдо рд╣реЛрдЧрд╛

@cromefire ESM рдмрд┐рд▓реНрдб рдЕрдм 4.5.1 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрднреА рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдпреБрджреНрдз-рдкрд░реАрдХреНрд╖рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВрдиреЗ рдмреЗрдмреЗрд▓ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдб рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХреБрдЫ рдмрд┐рдЯреНрд╕ рдПрдХрддреНрд░ рдХрд░рдиреЗ, рдЕрдкреЗрдХреНрд╖рд┐рдд JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ - рдЬреЛ рдХреБрдЫ KB рдорд┐рдирдЯ + gz рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

@ рдорд╛рдЗрдВрдбрдкреНрд▓реЗ-рдбреАрдХреЗ рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░ рдХреЛрдИ рд╕реНрдЯреИрдХ-рдЯреНрд░реЗрд╕ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:

  • рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╕реНрдЯрдо рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрддрд░реА рдХреЛ рднреЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд/рдлрд╝рд┐рд▓реНрдЯрд░/рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рд╕рднреА рджреЗрд╢реА рдПрдкреАрдЖрдИ рд░реИрдкрд┐рдВрдЧ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ
  • рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди, рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓, рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВ
  • рд▓рд┐рдВрдХ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВ, рддрд╛рдХрд┐ рдЖрдк рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рдмрд╣реБ-рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рдмрдирд╛ рд╕рдХреЗрдВ
  • рджреЛрдиреЛрдВ рд╡реИрд╢реНрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рд╕реБрдиреЗрдВ
  • рдПрдХрд╛рдзрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдорд┐рд▓ рд╕рдХреЗ
  • рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рджрд╕рд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддреНрд░реБрдЯрд┐ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрд╕реНрдЯрдо рд╡рд╛рд▓реЗ) рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ
  • рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛ рдЯреВрдЯреА рд╣реБрдИ рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд▓рдмреИрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
  • рдмрдлрд╝рд░ рдИрд╡реЗрдВрдЯ рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрддрд░реА рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдмрд╛рдврд╝ рди рджреЗрдВ рдпрд╛ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдореБрдлреНрдд рдИрд╡реЗрдВрдЯ рд╕реЗ рдмрд╛рд╣рд░ рди рдирд┐рдХрд▓реЗрдВ

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐, рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рднреЗрдЬреЗрдВ" рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐, рджрд╕рд┐рдпреЛрдВ рдЗрдирдкреБрдЯ рд╣реИрдВ, рджрд╕рд┐рдпреЛрдВ рд╕реНрд░реЛрдд рддреНрд░реБрдЯрд┐ (рдЬреЛ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рджрд╕рд┐рдпреЛрдВ рд╡рд╛рддрд╛рд╡рд░рдг рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕реЗ ~10-15kB рддрдХ рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЗрддрдиреЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ (рд▓реЛрдЧреЛрдВ/рд╕рдордп рдкрдврд╝реЗрдВ) рд╣рдо рдЕрднреА рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдЬреЗрдПрд╕ рдХреЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрдо рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдкрд░ рд╕рдЦреНрдд рд╕рд╛рдордЧреНрд░реА рдиреАрддрд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдкрд░ рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╢рд┐рдк рдХрд░реЗрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдЬреЗрдПрд╕ рдмрдЬрдЯ рдХреЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛ рддреНрд░реБрдЯрд┐ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛- рд▓реЙрдЧрд┐рдВрдЧ - рд╢рд╛рдпрдж 10% рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП ~ 15-20 KB рдЬреИрд╕рд╛ рдХреБрдЫ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдЖрдк рддрдм рд╣рдорд╛рд░реЗ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - https://docs.sentry.io/platforms/javascript/loader/ :)

рдЖрдк рддрдм рд╣рдорд╛рд░реЗ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - https://docs.sentry.io/platforms/javascript/loader/ :)

рд▓реЗрдХрд┐рди рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐, рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рднреЗрдЬреЗрдВ" рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ tc39 рдкрд░ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдЯреИрдХрдЯреНрд░реИрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреАрдХреГрдд рдПрдкреАрдЖрдИ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд╕рдХреЗ

рд▓реЗрдХрд┐рди рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдпрд╛рдд рдФрд░ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рддреНрд░реБрдЯрд┐ рдпрд╛ рдХреИрдкреНрдЪрд░ рдЕрдкрд╡рд╛рдж рдХреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдпрд╛рдд рдФрд░ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рддреНрд░реБрдЯрд┐ рдпрд╛ рдХреИрдкреНрдЪрд░ рдЕрдкрд╡рд╛рдж рдХреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВ?

рд╣рд╛рдВ, рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреБрдирд░реНрдХрдерди рдХрд░реВрдВ, рддреЛ рд▓реЛрдбрд░ рдХреЗрд╡рд▓ рд╕реАрдбреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ

@cromefire рд╣рд╛рдБ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╕реНрдирд┐рдкреЗрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/loader.js

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ esm рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рднреА рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЖ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ loader рдХреЗ рд╕рд╛рде minimal $0$#$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрдЧрд╛ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ kB рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рдПрдХ рд▓реЛрдбрд░ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ 1kb рд╕реЗ рдХрдо рдореЗрдВ рд▓реЛрдб рд╣реЛ, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ, рдореИрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛

рдПрдХ рдЪреАрдЬ рдЬреЛ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреБрдЫ рдХрд╛рд░реНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдиреНрдпреВрдирддрдо рдиреНрдпреВрдирддрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдореВрд▓ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ (рдкрд░рд╡рд╛рд╣ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ)
  • рдЙрдкрднреЛрдХреНрддрд╛ рдЕрднрд┐рдХрд░реНрддрд╛
  • TIMESTAMP
  • рдпреВрдЖрд░рдПрд▓
  • рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░реЗрдВ

рдХреЛрдИ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдРрдб рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рднреА рд╡рд┐рдЪрд┐рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╣рдордиреЗ рд╡реЗрдмрдкреИрдХ рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рд╕рдВрддрд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ред

sentry.js

import * as Sentry from '@sentry/browser';
Sentry.init({
  ...
  integrations: integrations => {
    return integrations.filter(integration => integration.name !== 'GlobalHandlers');
  },
});
export const logError = error => Sentry.captureException(error);

errors.js

const captureError = async error => {
 const { logError } await import(/* webpackChunkName: "sentry" */ './sentry');
 logError(error);
}
window.onerror = (message, url, line, column, error) => captureError(error);
window.onunhandledrejection = event => captureError(event.reason);

рд╣рдо рд╡рд╣рд╛рдВ рдХреБрдЫ рдФрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдирд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝рдирд╛, рдЯреИрдЧ рдЬреЛрдбрд╝рдирд╛ рдЖрджрд┐ред рд▓реЗрдХрд┐рди рд╕рдВрддрд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдмрдВрдбрд▓ рдХреЛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ #1846 . рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛

рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдореИрдВрдиреЗ рд╡реЗрдмрдкреИрдХ ( 4.29.5 ) рдХреЗ рд╕рд╛рде ESM рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

  • рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрдЬрд╛рдп ESM рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдмрдкреИрдХ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдирд╛ рдХреНрдпреЛрдВрдХрд┐ $#$ package.json $#$ рдореЗрдВ рдХреЛрдИ module рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рд╣реИ
resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': path.resolve(
            __dirname,
            'node_modules/@sentry/browser/esm',
        ),
    }
  • рд╣рдорд╛рд░реЗ babel-loader рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ sentry/.+/esm рдореЗрдВ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЬреЛрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ESM рдмрд┐рд▓реНрдб рдореЗрдВ ES2015 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
{
    test: /\.m?jsx?$/,
    loader: 'babel-loader',
    // compile sentry as the ESM build is new and ships modern features which break our supported browsers
    exclude: /(node_modules\/(?!(@sentry\/[^/]+\/esm))|bower_components)\//,
}

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

  • рд╣рдордиреЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ (рд╣рдо рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде lodash-es рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ)

@рдиреАрдмреВ

рдЖрдк рдмрд╕ @sentry/browser/esm рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': '@sentry/browser/esm'
    }

рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ @sentry/browser/esm . рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ:

  • рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЗрдмреЗрд▓ рдореЗрдВ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╣реИрдВ:
{
    test: /other_things/,
    include: [/@sentry\/.+\/esm/],
    exclude: /node_modules/,
    // config
}
  • рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ:
{
    test: /@sentry\/.+\/esm/,
    exclude: /node_modules/,
    // config
}

рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рднреА рдпрд╛рдж рд░рдЦреЗрдВ: рдмреЗрдмреЗрд▓ рдбреЙрдХреНрд╕ , рдЕрдиреНрдпрдерд╛ рдпрд╣ esm рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ

рдЕрдкрдбреЗрдЯ: рд╣рдо рдЬрд▓реНрдж рд╣реА рдПрд╕рдбреАрдХреЗ рдХрд╛ рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

26.1 kB - https://bundlephobia.com/result?p=@sentry/browser @4.6.4
рдмрдирд╛рдо
17.2 kB - https://bundlephobia.com/result?p=@sentry/browser @5.0.0-rc.1

рд╣рдорд╛рд░реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд рд╕реАрдбреАрдПрди рд╕рдВрд╕реНрдХрд░рдг рднреА рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрдВрдбрд▓рдлреЛрдмрд┐рдпрд╛ рд╕рд╛рдорд╛рди рдХреЛ рдХреИрд╕реЗ рдорд╛рдкрддрд╛ рд╣реИ)

ES6:  14.3535 kB
ES5:  15.6846 kB

рд╡реИрд╕реЗ рднреА, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрднреА рднреА рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдФрд░ рдХрдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдХрджрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдиреНрдирдпрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдПрдХ рдмрдбрд╝реА рдЯрдХреНрдХрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдХрдИ рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВред рдЖрдкрдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ рд╕рдВрддрд░реА.io рдкрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рд░реЗрдлрд░реА: https://github.com/getsentry/sentry/pull/12492

рдЕрд╕реНрд╡реАрдХрд░рдг: рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрднреА рддрдХ 5.0.0-rc.x рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ

@HazAT рдЗрд╕реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдХрджрдо рд╣реИ - рдореИрдВ рдЗрд╕реЗ рдЕрдм рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ :-)

image

@kamilogorek рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░, рдХреНрдпрд╛ рдЖрдк 3.x рд╢рд╛рдЦрд╛ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрднреА рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдордиреЗ v4 рд╕реЗ v5 рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реБрдП рдЬреЛ рдХрдореА рдкреЗрд╢ рдХреА рд╣реИ рд╡рд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИред рд╣рдо рдЕрднреА рднреА рдЗрд╕реЗ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдЪреЗрдд рд░рд╣реЗрдВрдЧреЗред

рдПрдХ рддреНрд╡рд░рд┐рдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ "рдмрдВрдбрд▓" рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдорд╛рдЗрд▓реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдВрдбрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕реАрдбреАрдПрди рдмрдВрдбрд▓ рдирдВрдмрд░ рд╣рдо рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВ (рдкреЗрдб):

| рдкреИрдХреЗрдЬ | рд╕рдВрд╕реНрдХрд░рдг | рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЖрдХрд╛рд░ | рдХреЗрдмреА рдореЗрдВ рдЖрдХрд╛рд░ | рд▓рд┐рдВрдХ |
|-----------------|------------|---------------|----- -------|------------------------------------------ ----------|
| рд░реЗрд╡реЗрди-рдЬреЗрдПрд╕ | 3.27.0 | 13741 рдмрд╛рдЗрдЯреНрд╕ | ~13.4kB | https://cdn.ravenjs.com/3.27.0/raven.min.js |
| @ рд╕рдВрддрд░реА/рдмреНрд░рд╛рдЙрдЬрд╝рд░ | 4.6.6 | 22607 рдмрд╛рдЗрдЯреНрд╕ | ~22.1 рдХреЗрдмреА | https://browser.sentry-cdn.com/4.6.6/bundle.min.js |
| @ рд╕рдВрддрд░реА/рдмреНрд░рд╛рдЙрдЬрд╝рд░ | 5.0.3 | 16059 рдмрд╛рдЗрдЯреНрд╕ | ~15.7kB | https://browser.sentry-cdn.com/5.0.3/bundle.min.js |

V5 рдХреЗ рд╕рд╛рде рд╣рдо рд╢рд┐рдк рднреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ esm рдмрд┐рд▓реНрдб рднреА рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдкрдереЛрдВ рдХреЛ рдЯреНрд░реАрд╢реЗрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

@HazAT @kamilogorek awesome!

@Limess рдХреНрдпрд╛ рдЖрдЬ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ: @sentry/browser/esm рдХреЗ рдмрдЬрд╛рдп @sentry/browser ?

рдЗрд╕реЗ import * as Sentry from "@sentry/browser/esm"; рдХреА рддрд░рд╣ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ webpack -p рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирдВрдЧреЗ webpack.config.js рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдпрд╛ рд▓реЛрдбрд░ рдирд╣реАрдВ рд╣реИред

@ 0xbkt рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдХрдо рд╕реЗ рдХрдо рдЕрдм рд░реЛрд▓рдЕрдк рдЯреВ рдмрдВрдбрд▓ рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rowlando picture rowlando  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

simllll picture simllll  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hinok picture hinok  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

THPubs picture THPubs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kamilogorek picture kamilogorek  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ