ghost 5.19.1 → 5.19.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.
Files changed (81) hide show
  1. package/components/{tryghost-adapter-manager-5.19.1.tgz → tryghost-adapter-manager-5.19.2.tgz} +0 -0
  2. package/components/tryghost-api-framework-5.19.2.tgz +0 -0
  3. package/components/tryghost-api-version-compatibility-service-5.19.2.tgz +0 -0
  4. package/components/{tryghost-audience-feedback-5.19.1.tgz → tryghost-audience-feedback-5.19.2.tgz} +0 -0
  5. package/components/{tryghost-bootstrap-socket-5.19.1.tgz → tryghost-bootstrap-socket-5.19.2.tgz} +0 -0
  6. package/components/tryghost-constants-5.19.2.tgz +0 -0
  7. package/components/tryghost-custom-theme-settings-service-5.19.2.tgz +0 -0
  8. package/components/tryghost-domain-events-5.19.2.tgz +0 -0
  9. package/components/tryghost-email-analytics-provider-mailgun-5.19.2.tgz +0 -0
  10. package/components/{tryghost-email-analytics-service-5.19.1.tgz → tryghost-email-analytics-service-5.19.2.tgz} +0 -0
  11. package/components/tryghost-email-content-generator-5.19.2.tgz +0 -0
  12. package/components/tryghost-express-dynamic-redirects-5.19.2.tgz +0 -0
  13. package/components/{tryghost-extract-api-key-5.19.1.tgz → tryghost-extract-api-key-5.19.2.tgz} +0 -0
  14. package/components/tryghost-html-to-plaintext-5.19.2.tgz +0 -0
  15. package/components/{tryghost-job-manager-5.19.1.tgz → tryghost-job-manager-5.19.2.tgz} +0 -0
  16. package/components/{tryghost-link-redirects-5.19.1.tgz → tryghost-link-redirects-5.19.2.tgz} +0 -0
  17. package/components/tryghost-link-replacer-5.19.2.tgz +0 -0
  18. package/components/{tryghost-link-tracking-5.19.1.tgz → tryghost-link-tracking-5.19.2.tgz} +0 -0
  19. package/components/tryghost-magic-link-5.19.2.tgz +0 -0
  20. package/components/tryghost-mailgun-client-5.19.2.tgz +0 -0
  21. package/components/tryghost-member-analytics-service-5.19.2.tgz +0 -0
  22. package/components/tryghost-member-attribution-5.19.2.tgz +0 -0
  23. package/components/{tryghost-member-events-5.19.1.tgz → tryghost-member-events-5.19.2.tgz} +0 -0
  24. package/components/{tryghost-members-analytics-ingress-5.19.1.tgz → tryghost-members-analytics-ingress-5.19.2.tgz} +0 -0
  25. package/components/{tryghost-members-api-5.19.1.tgz → tryghost-members-api-5.19.2.tgz} +0 -0
  26. package/components/{tryghost-members-csv-5.19.1.tgz → tryghost-members-csv-5.19.2.tgz} +0 -0
  27. package/components/tryghost-members-events-service-5.19.2.tgz +0 -0
  28. package/components/tryghost-members-importer-5.19.2.tgz +0 -0
  29. package/components/{tryghost-members-offers-5.19.1.tgz → tryghost-members-offers-5.19.2.tgz} +0 -0
  30. package/components/{tryghost-members-payments-5.19.1.tgz → tryghost-members-payments-5.19.2.tgz} +0 -0
  31. package/components/{tryghost-members-ssr-5.19.1.tgz → tryghost-members-ssr-5.19.2.tgz} +0 -0
  32. package/components/{tryghost-members-stripe-service-5.19.1.tgz → tryghost-members-stripe-service-5.19.2.tgz} +0 -0
  33. package/components/tryghost-minifier-5.19.2.tgz +0 -0
  34. package/components/tryghost-mw-api-version-mismatch-5.19.2.tgz +0 -0
  35. package/components/tryghost-mw-cache-control-5.19.2.tgz +0 -0
  36. package/components/{tryghost-mw-error-handler-5.19.1.tgz → tryghost-mw-error-handler-5.19.2.tgz} +0 -0
  37. package/components/{tryghost-mw-session-from-token-5.19.1.tgz → tryghost-mw-session-from-token-5.19.2.tgz} +0 -0
  38. package/components/tryghost-mw-update-user-last-seen-5.19.2.tgz +0 -0
  39. package/components/tryghost-mw-vhost-5.19.2.tgz +0 -0
  40. package/components/{tryghost-oembed-service-5.19.1.tgz → tryghost-oembed-service-5.19.2.tgz} +0 -0
  41. package/components/{tryghost-package-json-5.19.1.tgz → tryghost-package-json-5.19.2.tgz} +0 -0
  42. package/components/tryghost-referrers-5.19.2.tgz +0 -0
  43. package/components/{tryghost-security-5.19.1.tgz → tryghost-security-5.19.2.tgz} +0 -0
  44. package/components/{tryghost-session-service-5.19.1.tgz → tryghost-session-service-5.19.2.tgz} +0 -0
  45. package/components/{tryghost-settings-path-manager-5.19.1.tgz → tryghost-settings-path-manager-5.19.2.tgz} +0 -0
  46. package/components/{tryghost-staff-service-5.19.1.tgz → tryghost-staff-service-5.19.2.tgz} +0 -0
  47. package/components/tryghost-stats-service-5.19.2.tgz +0 -0
  48. package/components/{tryghost-update-check-service-5.19.1.tgz → tryghost-update-check-service-5.19.2.tgz} +0 -0
  49. package/components/{tryghost-verification-trigger-5.19.1.tgz → tryghost-verification-trigger-5.19.2.tgz} +0 -0
  50. package/components/{tryghost-version-notifications-data-service-5.19.1.tgz → tryghost-version-notifications-data-service-5.19.2.tgz} +0 -0
  51. package/core/built/admin/assets/{chunk.143.af6972210ca7d2bfdcff.js → chunk.143.8078863bc263cc4f6733.js} +5 -5
  52. package/core/built/admin/assets/{chunk.178.6f68a314b66338b41c62.js → chunk.178.9fefc93ddb2cc6df6d29.js} +4 -4
  53. package/core/built/admin/index.html +1 -1
  54. package/core/server/api/endpoints/utils/serializers/output/mappers/emails.js +1 -1
  55. package/core/server/services/bulk-email/bulk-email-processor.js +4 -8
  56. package/core/server/services/mega/email-preview.js +1 -1
  57. package/core/server/services/mega/post-email-serializer.js +26 -12
  58. package/package.json +94 -94
  59. package/components/tryghost-api-framework-5.19.1.tgz +0 -0
  60. package/components/tryghost-api-version-compatibility-service-5.19.1.tgz +0 -0
  61. package/components/tryghost-constants-5.19.1.tgz +0 -0
  62. package/components/tryghost-custom-theme-settings-service-5.19.1.tgz +0 -0
  63. package/components/tryghost-domain-events-5.19.1.tgz +0 -0
  64. package/components/tryghost-email-analytics-provider-mailgun-5.19.1.tgz +0 -0
  65. package/components/tryghost-email-content-generator-5.19.1.tgz +0 -0
  66. package/components/tryghost-express-dynamic-redirects-5.19.1.tgz +0 -0
  67. package/components/tryghost-html-to-plaintext-5.19.1.tgz +0 -0
  68. package/components/tryghost-link-replacer-5.19.1.tgz +0 -0
  69. package/components/tryghost-magic-link-5.19.1.tgz +0 -0
  70. package/components/tryghost-mailgun-client-5.19.1.tgz +0 -0
  71. package/components/tryghost-member-analytics-service-5.19.1.tgz +0 -0
  72. package/components/tryghost-member-attribution-5.19.1.tgz +0 -0
  73. package/components/tryghost-members-events-service-5.19.1.tgz +0 -0
  74. package/components/tryghost-members-importer-5.19.1.tgz +0 -0
  75. package/components/tryghost-minifier-5.19.1.tgz +0 -0
  76. package/components/tryghost-mw-api-version-mismatch-5.19.1.tgz +0 -0
  77. package/components/tryghost-mw-cache-control-5.19.1.tgz +0 -0
  78. package/components/tryghost-mw-update-user-last-seen-5.19.1.tgz +0 -0
  79. package/components/tryghost-mw-vhost-5.19.1.tgz +0 -0
  80. package/components/tryghost-referrers-5.19.1.tgz +0 -0
  81. package/components/tryghost-stats-service-5.19.1.tgz +0 -0
@@ -9,8 +9,8 @@ return Array.isArray(e.tiers)&&(s=e.tiers.map((e=>e.name)).join(",")),{id:e.id,e
9
9
  return s.unparse(t,{columns:r})}},96616:(e,r,t)=>{var n={"./af":21516,"./af.js":21516,"./ar":14874,"./ar-dz":83760,"./ar-dz.js":83760,"./ar-kw":73410,"./ar-kw.js":73410,"./ar-ly":27521,"./ar-ly.js":27521,"./ar-ma":54215,"./ar-ma.js":54215,"./ar-sa":67839,"./ar-sa.js":67839,"./ar-tn":15676,"./ar-tn.js":15676,"./ar.js":14874,"./az":90189,"./az.js":90189,"./be":97510,"./be.js":97510,"./bg":49715,"./bg.js":49715,"./bm":53263,"./bm.js":53263,"./bn":86751,"./bn.js":86751,"./bo":22257,"./bo.js":22257,"./br":66699,"./br.js":66699,"./bs":46338,"./bs.js":46338,"./ca":75498,"./ca.js":75498,"./cs":36471,"./cs.js":36471,"./cv":12500,"./cv.js":12500,"./cy":621,"./cy.js":621,"./da":82493,"./da.js":82493,"./de":56272,"./de-at":70500,"./de-at.js":70500,"./de-ch":71393,"./de-ch.js":71393,"./de.js":56272,"./dv":90967,"./dv.js":90967,"./el":85716,"./el.js":85716,"./en-SG":72902,"./en-SG.js":72902,"./en-au":32645,"./en-au.js":32645,"./en-ca":10280,"./en-ca.js":10280,"./en-gb":31961,"./en-gb.js":31961,"./en-ie":19065,"./en-ie.js":19065,"./en-il":5628,"./en-il.js":5628,"./en-nz":81286,"./en-nz.js":81286,"./eo":37600,"./eo.js":37600,"./es":62109,"./es-do":94611,"./es-do.js":94611,"./es-us":86896,"./es-us.js":86896,"./es.js":62109,"./et":2962,"./et.js":2962,"./eu":30384,"./eu.js":30384,"./fa":35676,"./fa.js":35676,"./fi":18080,"./fi.js":18080,"./fo":99493,"./fo.js":99493,"./fr":59714,"./fr-ca":29035,"./fr-ca.js":29035,"./fr-ch":47594,"./fr-ch.js":47594,"./fr.js":59714,"./fy":10798,"./fy.js":10798,"./ga":62396,"./ga.js":62396,"./gd":95213,"./gd.js":95213,"./gl":85410,"./gl.js":85410,"./gom-latn":88448,"./gom-latn.js":88448,"./gu":97920,"./gu.js":97920,"./he":21797,"./he.js":21797,"./hi":35546,"./hi.js":35546,"./hr":17034,"./hr.js":17034,"./hu":80081,"./hu.js":80081,"./hy-am":2143,"./hy-am.js":2143,"./id":84909,"./id.js":84909,"./is":8002,"./is.js":8002,"./it":59658,"./it-ch":19126,"./it-ch.js":19126,"./it.js":59658,"./ja":47e3,"./ja.js":47e3,"./jv":97205,"./jv.js":97205,"./ka":31706,"./ka.js":31706,"./kk":34894,"./kk.js":34894,"./km":34679,"./km.js":34679,"./kn":89203,"./kn.js":89203,"./ko":87538,"./ko.js":87538,"./ku":62808,"./ku.js":62808,"./ky":95378,"./ky.js":95378,"./lb":12396,"./lb.js":12396,"./lo":90732,"./lo.js":90732,"./lt":59313,"./lt.js":59313,"./lv":8909,"./lv.js":8909,"./me":75539,"./me.js":75539,"./mi":7384,"./mi.js":7384,"./mk":75114,"./mk.js":75114,"./ml":12586,"./ml.js":12586,"./mn":66423,"./mn.js":66423,"./mr":27128,"./mr.js":27128,"./ms":45547,"./ms-my":38106,"./ms-my.js":38106,"./ms.js":45547,"./mt":20114,"./mt.js":20114,"./my":11573,"./my.js":11573,"./nb":49022,"./nb.js":49022,"./ne":88212,"./ne.js":88212,"./nl":47862,"./nl-be":19116,"./nl-be.js":19116,"./nl.js":47862,"./nn":34010,"./nn.js":34010,"./pa-in":80815,"./pa-in.js":80815,"./pl":18099,"./pl.js":18099,"./pt":14527,"./pt-br":81180,"./pt-br.js":81180,"./pt.js":14527,"./ro":74683,"./ro.js":74683,"./ru":41760,"./ru.js":41760,"./sd":79717,"./sd.js":79717,"./se":84167,"./se.js":84167,"./si":72568,"./si.js":72568,"./sk":13702,"./sk.js":13702,"./sl":49968,"./sl.js":49968,"./sq":77303,"./sq.js":77303,"./sr":4993,"./sr-cyrl":98961,"./sr-cyrl.js":98961,"./sr.js":4993,"./ss":6870,"./ss.js":6870,"./sv":92034,"./sv.js":92034,"./sw":51481,"./sw.js":51481,"./ta":208,"./ta.js":208,"./te":36006,"./te.js":36006,"./tet":68816,"./tet.js":68816,"./tg":77378,"./tg.js":77378,"./th":69125,"./th.js":69125,"./tl-ph":43406,"./tl-ph.js":43406,"./tlh":53361,"./tlh.js":53361,"./tr":84119,"./tr.js":84119,"./tzl":47778,"./tzl.js":47778,"./tzm":12617,"./tzm-latn":97187,"./tzm-latn.js":97187,"./tzm.js":12617,"./ug-cn":10438,"./ug-cn.js":10438,"./uk":38128,"./uk.js":38128,"./ur":15367,"./ur.js":15367,"./uz":51582,"./uz-latn":70009,"./uz-latn.js":70009,"./uz.js":51582,"./vi":49036,"./vi.js":49036,"./x-pseudo":11950,"./x-pseudo.js":11950,"./yo":48249,"./yo.js":48249,"./zh-cn":39512,"./zh-cn.js":39512,"./zh-hk":74792,"./zh-hk.js":74792,"./zh-tw":23931,"./zh-tw.js":23931}
10
10
  function s(e){var r=o(e)
11
11
  return t(r)}function o(e){if(!t.o(n,e)){var r=new Error("Cannot find module '"+e+"'")
12
- throw r.code="MODULE_NOT_FOUND",r}return n[e]}s.keys=function(){return Object.keys(n)},s.resolve=o,e.exports=s,s.id=96616},96601:(e,r,t)=>{var n,s
13
- e.exports=(n=_eai_d,s=_eai_r,window.emberAutoImportDynamic=function(e){return 1===arguments.length?s("_eai_dyn_"+e):s("_eai_dynt_"+e)(Array.prototype.slice.call(arguments,1))},window.emberAutoImportSync=function(e){return s("_eai_sync_"+e)(Array.prototype.slice.call(arguments,1))},n("@joeattardi/emoji-button",[],(function(){return t(28936)})),n("@sentry/browser",[],(function(){return t(85568)})),n("@sentry/utils",[],(function(){return t(59517)})),n("@tryghost/color-utils",[],(function(){return t(82485)})),n("@tryghost/helpers",[],(function(){return t(74752)})),n("@tryghost/kg-clean-basic-html",[],(function(){return t(89096)})),n("@tryghost/kg-parser-plugins",[],(function(){return t(3199)})),n("@tryghost/kg-parser-plugins/lib/cards/softReturn",[],(function(){return t(74557)})),n("@tryghost/limit-service",[],(function(){return t(12336)})),n("@tryghost/members-csv/lib/unparse",[],(function(){return t(91883)})),n("@tryghost/nql-lang",[],(function(){return t(75420)})),n("@tryghost/string",[],(function(){return t(57348)})),n("@tryghost/timezone-data",[],(function(){return t(28961)})),n("element-resize-detector",[],(function(){return t(87381)})),n("ember-css-transitions/modifiers/css-transition.js",[],(function(){return t(56112)})),n("ember-keyboard",[],(function(){return t(86771)})),n("ember-keyboard/helpers/if-key.js",[],(function(){return t(43481)})),n("ember-keyboard/helpers/on-key.js",[],(function(){return t(66415)})),n("ember-keyboard/modifiers/on-key.js",[],(function(){return t(4146)})),n("ember-keyboard/services/keyboard.js",[],(function(){return t(35466)})),n("ember-moment/helpers/-base.js",[],(function(){return t(76465)})),n("ember-moment/helpers/is-after.js",[],(function(){return t(876)})),n("ember-moment/helpers/is-before.js",[],(function(){return t(13971)})),n("ember-moment/helpers/is-between.js",[],(function(){return t(2063)})),n("ember-moment/helpers/is-same-or-after.js",[],(function(){return t(12915)})),n("ember-moment/helpers/is-same-or-before.js",[],(function(){return t(46102)})),n("ember-moment/helpers/is-same.js",[],(function(){return t(71465)})),n("ember-moment/helpers/moment-add.js",[],(function(){return t(64462)})),n("ember-moment/helpers/moment-calendar.js",[],(function(){return t(69021)})),n("ember-moment/helpers/moment-diff.js",[],(function(){return t(95198)})),n("ember-moment/helpers/moment-duration.js",[],(function(){return t(17216)})),n("ember-moment/helpers/moment-format.js",[],(function(){return t(99152)})),n("ember-moment/helpers/moment-from-now.js",[],(function(){return t(16396)})),n("ember-moment/helpers/moment-from.js",[],(function(){return t(48478)})),n("ember-moment/helpers/moment-subtract.js",[],(function(){return t(4647)})),n("ember-moment/helpers/moment-to-date.js",[],(function(){return t(18351)})),n("ember-moment/helpers/moment-to-now.js",[],(function(){return t(94612)})),n("ember-moment/helpers/moment-to.js",[],(function(){return t(91857)})),n("ember-moment/helpers/moment.js",[],(function(){return t(26852)})),n("ember-moment/helpers/now.js",[],(function(){return t(67842)})),n("ember-moment/helpers/unix.js",[],(function(){return t(29700)})),n("ember-moment/helpers/utc.js",[],(function(){return t(71755)})),n("ember-moment/services/moment.js",[],(function(){return t(27475)})),n("fast-deep-equal",[],(function(){return t(64710)})),n("focus-trap",[],(function(){return t(10755)})),n("intersection-observer-admin",[],(function(){return t(77577)})),n("markdown-it",[],(function(){return t(77647)})),n("markdown-it-footnote",[],(function(){return t(41297)})),n("markdown-it-lazy-headers",[],(function(){return t(72553)})),n("markdown-it-mark",[],(function(){return t(76519)})),n("markdown-it-sub",[],(function(){return t(8830)})),n("markdown-it-sup",[],(function(){return t(55977)})),n("moment-timezone",[],(function(){return t(19127)})),n("papaparse",[],(function(){return t(99112)})),n("raf-pool",[],(function(){return t(42586)})),n("react",[],(function(){return t(36058)})),n("react-dom",[],(function(){return t(18971)})),n("react-dom/client",[],(function(){return t(79793)})),n("tooltip.js",[],(function(){return t(15028)})),n("validator",[],(function(){return t(2228)})),void n("_eai_dyn_@sentry/tracing",[],(function(){return t.e(174).then(t.bind(t,43174))})))},37974:function(e,r){window._eai_r=require,window._eai_d=define},25831:e=>{"use strict"
12
+ throw r.code="MODULE_NOT_FOUND",r}return n[e]}s.keys=function(){return Object.keys(n)},s.resolve=o,e.exports=s,s.id=96616},83515:(e,r,t)=>{var n,s
13
+ e.exports=(n=_eai_d,s=_eai_r,window.emberAutoImportDynamic=function(e){return 1===arguments.length?s("_eai_dyn_"+e):s("_eai_dynt_"+e)(Array.prototype.slice.call(arguments,1))},window.emberAutoImportSync=function(e){return s("_eai_sync_"+e)(Array.prototype.slice.call(arguments,1))},n("@joeattardi/emoji-button",[],(function(){return t(28936)})),n("@sentry/browser",[],(function(){return t(85568)})),n("@sentry/utils",[],(function(){return t(59517)})),n("@tryghost/color-utils",[],(function(){return t(82485)})),n("@tryghost/helpers",[],(function(){return t(74752)})),n("@tryghost/kg-clean-basic-html",[],(function(){return t(89096)})),n("@tryghost/kg-parser-plugins",[],(function(){return t(3199)})),n("@tryghost/kg-parser-plugins/lib/cards/softReturn",[],(function(){return t(74557)})),n("@tryghost/limit-service",[],(function(){return t(12336)})),n("@tryghost/members-csv/lib/unparse",[],(function(){return t(91883)})),n("@tryghost/nql-lang",[],(function(){return t(75420)})),n("@tryghost/string",[],(function(){return t(57348)})),n("@tryghost/timezone-data",[],(function(){return t(28961)})),n("element-resize-detector",[],(function(){return t(87381)})),n("ember-css-transitions/modifiers/css-transition.js",[],(function(){return t(56112)})),n("ember-keyboard",[],(function(){return t(86771)})),n("ember-keyboard/helpers/if-key.js",[],(function(){return t(43481)})),n("ember-keyboard/helpers/on-key.js",[],(function(){return t(66415)})),n("ember-keyboard/modifiers/on-key.js",[],(function(){return t(4146)})),n("ember-keyboard/services/keyboard.js",[],(function(){return t(35466)})),n("ember-moment/helpers/-base.js",[],(function(){return t(76465)})),n("ember-moment/helpers/is-after.js",[],(function(){return t(876)})),n("ember-moment/helpers/is-before.js",[],(function(){return t(13971)})),n("ember-moment/helpers/is-between.js",[],(function(){return t(2063)})),n("ember-moment/helpers/is-same-or-after.js",[],(function(){return t(12915)})),n("ember-moment/helpers/is-same-or-before.js",[],(function(){return t(46102)})),n("ember-moment/helpers/is-same.js",[],(function(){return t(71465)})),n("ember-moment/helpers/moment-add.js",[],(function(){return t(64462)})),n("ember-moment/helpers/moment-calendar.js",[],(function(){return t(69021)})),n("ember-moment/helpers/moment-diff.js",[],(function(){return t(95198)})),n("ember-moment/helpers/moment-duration.js",[],(function(){return t(17216)})),n("ember-moment/helpers/moment-format.js",[],(function(){return t(99152)})),n("ember-moment/helpers/moment-from-now.js",[],(function(){return t(16396)})),n("ember-moment/helpers/moment-from.js",[],(function(){return t(48478)})),n("ember-moment/helpers/moment-subtract.js",[],(function(){return t(4647)})),n("ember-moment/helpers/moment-to-date.js",[],(function(){return t(18351)})),n("ember-moment/helpers/moment-to-now.js",[],(function(){return t(94612)})),n("ember-moment/helpers/moment-to.js",[],(function(){return t(91857)})),n("ember-moment/helpers/moment.js",[],(function(){return t(26852)})),n("ember-moment/helpers/now.js",[],(function(){return t(67842)})),n("ember-moment/helpers/unix.js",[],(function(){return t(29700)})),n("ember-moment/helpers/utc.js",[],(function(){return t(71755)})),n("ember-moment/services/moment.js",[],(function(){return t(27475)})),n("fast-deep-equal",[],(function(){return t(64710)})),n("focus-trap",[],(function(){return t(10755)})),n("intersection-observer-admin",[],(function(){return t(77577)})),n("markdown-it",[],(function(){return t(77647)})),n("markdown-it-footnote",[],(function(){return t(41297)})),n("markdown-it-lazy-headers",[],(function(){return t(72553)})),n("markdown-it-mark",[],(function(){return t(76519)})),n("markdown-it-sub",[],(function(){return t(8830)})),n("markdown-it-sup",[],(function(){return t(55977)})),n("moment-timezone",[],(function(){return t(19127)})),n("papaparse",[],(function(){return t(99112)})),n("raf-pool",[],(function(){return t(42586)})),n("react",[],(function(){return t(36058)})),n("react-dom",[],(function(){return t(18971)})),n("react-dom/client",[],(function(){return t(79793)})),n("tooltip.js",[],(function(){return t(15028)})),n("validator",[],(function(){return t(2228)})),void n("_eai_dyn_@sentry/tracing",[],(function(){return t.e(174).then(t.bind(t,43174))})))},59678:function(e,r){window._eai_r=require,window._eai_d=define},25831:e=>{"use strict"
14
14
  e.exports=require("ember-modifier")},11975:()=>{}},s={}
15
15
  function o(e){var r=s[e]
16
16
  if(void 0!==r)return r.exports
@@ -42,8 +42,8 @@ var r=(r,t)=>{var n,s,[i,u,a]=t,m=0
42
42
  if(i.some((r=>0!==e[r]))){for(n in u)o.o(u,n)&&(o.m[n]=u[n])
43
43
  if(a)var l=a(o)}for(r&&r(t);m<i.length;m++)s=i[m],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0
44
44
  return o.O(l)},t=globalThis.webpackChunk_ember_auto_import_=globalThis.webpackChunk_ember_auto_import_||[]
45
- t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),o.O(void 0,[613],(()=>o(o.s=37974)))
46
- var i=o.O(void 0,[613],(()=>o(o.s=96601)))
45
+ t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),o.O(void 0,[613],(()=>o(o.s=59678)))
46
+ var i=o.O(void 0,[613],(()=>o(o.s=83515)))
47
47
  i=o.O(i),__ember_auto_import__=i})()
48
48
 
49
- //# sourceMappingURL=chunk.143.af6972210ca7d2bfdcff.map
49
+ //# sourceMappingURL=chunk.143.8078863bc263cc4f6733.map
@@ -1,11 +1,11 @@
1
- var __ember_auto_import__;(()=>{var r={37974:function(r,e){window._eai_r=require,window._eai_d=define},40555:r=>{r.exports=function(){_eai_d
1
+ var __ember_auto_import__;(()=>{var r={59678:function(r,e){window._eai_r=require,window._eai_d=define},63192:r=>{r.exports=function(){_eai_d
2
2
  var r=_eai_r
3
3
  window.emberAutoImportDynamic=function(e){return 1===arguments.length?r("_eai_dyn_"+e):r("_eai_dynt_"+e)(Array.prototype.slice.call(arguments,1))},window.emberAutoImportSync=function(e){return r("_eai_sync_"+e)(Array.prototype.slice.call(arguments,1))}}()}},e={}
4
4
  function t(_){var o=e[_]
5
5
  if(void 0!==o)return o.exports
6
6
  var i=e[_]={exports:{}}
7
- return r[_].call(i.exports,i,i.exports,t),i.exports}t(37974)
8
- var _=t(40555)
7
+ return r[_].call(i.exports,i,i.exports,t),i.exports}t(59678)
8
+ var _=t(63192)
9
9
  __ember_auto_import__=_})()
10
10
 
11
- //# sourceMappingURL=chunk.178.6f68a314b66338b41c62.map
11
+ //# sourceMappingURL=chunk.178.9fefc93ddb2cc6df6d29.map
@@ -58,7 +58,7 @@
58
58
 
59
59
  <script src="assets/vendor-5c7d7063620bec13668c4370145cd4b4.js"></script>
60
60
  <script src="assets/chunk.613.f1d519ad47e7f9024263.js"></script>
61
- <script src="assets/chunk.143.af6972210ca7d2bfdcff.js"></script>
61
+ <script src="assets/chunk.143.8078863bc263cc4f6733.js"></script>
62
62
  <script src="assets/ghost-5ce6f5a730c83c91fc258b12c537ea35.js"></script>
63
63
  </body>
64
64
  </html>
@@ -8,7 +8,7 @@ module.exports = (model, frame) => {
8
8
  const replacements = mega.postEmailSerializer.parseReplacements(jsonModel);
9
9
  replacements.forEach((replacement) => {
10
10
  jsonModel[replacement.format] = jsonModel[replacement.format].replace(
11
- replacement.match,
11
+ replacement.regexp,
12
12
  replacement.fallback || ''
13
13
  );
14
14
  });
@@ -11,7 +11,6 @@ const debug = require('@tryghost/debug')('mega');
11
11
  const postEmailSerializer = require('../mega/post-email-serializer');
12
12
  const configService = require('../../../shared/config');
13
13
  const settingsCache = require('../../../shared/settings-cache');
14
- const labs = require('../../../shared/labs');
15
14
 
16
15
  const messages = {
17
16
  error: 'The email service received an error from mailgun and was unable to send.'
@@ -223,6 +222,10 @@ module.exports = {
223
222
  const startTime = Date.now();
224
223
  debug(`sending message to ${recipients.length} recipients`);
225
224
 
225
+ // Update email content for this segment before searching replacements
226
+ emailData = postEmailSerializer.renderEmailForSegment(emailData, memberSegment);
227
+
228
+ // Check all the used replacements in this email
226
229
  const replacements = postEmailSerializer.parseReplacements(emailData);
227
230
 
228
231
  // collate static and dynamic data for each recipient ready for provider
@@ -235,11 +238,6 @@ module.exports = {
235
238
  unsubscribe_url: postEmailSerializer.createUnsubscribeUrl(recipient.member_uuid, {newsletterUuid})
236
239
  };
237
240
 
238
- if (labs.isSet('audienceFeedback')) {
239
- // create unique urls for every recipient (for example, for feedback buttons)
240
- emailData = postEmailSerializer.createUserLinks(emailData, recipient.member_uuid);
241
- }
242
-
243
241
  // computed properties on recipients - TODO: better way of handling these
244
242
  recipient.member_first_name = (recipient.member_name || '').split(' ')[0];
245
243
 
@@ -251,8 +249,6 @@ module.exports = {
251
249
  recipientData[recipient.member_email] = data;
252
250
  });
253
251
 
254
- emailData = postEmailSerializer.renderEmailForSegment(emailData, memberSegment);
255
-
256
252
  try {
257
253
  const response = await mailgunClient.send(emailData, recipientData, replacements);
258
254
  debug(`sent message (${Date.now() - startTime}ms)`);
@@ -32,7 +32,7 @@ class EmailPreview {
32
32
 
33
33
  replacements.forEach((replacement) => {
34
34
  emailContent[replacement.format] = emailContent[replacement.format].replace(
35
- replacement.match,
35
+ replacement.regexp,
36
36
  replacement.fallback || ''
37
37
  );
38
38
  });
@@ -17,6 +17,7 @@ const linkReplacer = require('@tryghost/link-replacer');
17
17
  const linkTracking = require('../link-tracking');
18
18
  const memberAttribution = require('../member-attribution');
19
19
  const feedbackButtons = require('./feedback-buttons');
20
+ const labs = require('../../../shared/labs');
20
21
 
21
22
  const ALLOWED_REPLACEMENTS = ['first_name', 'uuid'];
22
23
 
@@ -109,20 +110,16 @@ const PostEmailSerializer = {
109
110
  },
110
111
 
111
112
  /**
112
- * createUserLinks
113
+ * replaceFeedbackLinks
113
114
  *
114
- * Generate personalised links for each user
115
+ * Replace the button template links with real links
115
116
  *
116
- * @param {string} memberUuid member uuid
117
- * @param {Object} email
117
+ * @param {string} html
118
+ * @param {string} postId (will be url encoded)
119
+ * @param {string} memberUuid member uuid to use in the URL (will be url encoded)
118
120
  */
119
- createUserLinks(email, memberUuid) {
120
- const result = {...email};
121
-
122
- result.html = feedbackButtons.generateLinks(result.post.id, memberUuid, result.html);
123
- result.plaintext = htmlToPlaintext.email(result.html);
124
-
125
- return result;
121
+ replaceFeedbackLinks(html, postId, memberUuid) {
122
+ return feedbackButtons.generateLinks(postId, memberUuid, html);
126
123
  },
127
124
 
128
125
  // NOTE: serialization is needed to make sure we do post transformations such as image URL transformation from relative to absolute
@@ -181,12 +178,21 @@ const PostEmailSerializer = {
181
178
  const EMAIL_REPLACEMENT_REGEX = /%%(\{.*?\})%%/g;
182
179
  const REPLACEMENT_STRING_REGEX = /\{(?<recipientProperty>\w*?)(?:,? *(?:"|&quot;)(?<fallback>.*?)(?:"|&quot;))?\}/;
183
180
 
181
+ function escapeRegExp(string) {
182
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
183
+ }
184
+
184
185
  const replacements = [];
185
186
 
186
187
  ['html', 'plaintext'].forEach((format) => {
187
188
  let result;
188
189
  while ((result = EMAIL_REPLACEMENT_REGEX.exec(email[format])) !== null) {
189
190
  const [replacementMatch, replacementStr] = result;
191
+
192
+ // Did we already found this match and added it to the replacements array?
193
+ if (replacements.find(r => r.match === replacementMatch && r.format === format)) {
194
+ continue;
195
+ }
190
196
  const match = replacementStr.match(REPLACEMENT_STRING_REGEX);
191
197
 
192
198
  if (match) {
@@ -199,6 +205,7 @@ const PostEmailSerializer = {
199
205
  format,
200
206
  id,
201
207
  match: replacementMatch,
208
+ regexp: new RegExp(escapeRegExp(replacementMatch), 'g'),
202
209
  recipientProperty: `member_${recipientProperty}`,
203
210
  fallback
204
211
  });
@@ -395,6 +402,14 @@ const PostEmailSerializer = {
395
402
  });
396
403
  }
397
404
 
405
+ // Add buttons
406
+ if (labs.isSet('audienceFeedback')) {
407
+ // create unique urls for every recipient (for example, for feedback buttons)
408
+ // Note, we need to use a different member uuid in the links because `%%{uuid}%%` would get escaped by the URL object when set as a search param
409
+ const urlSafeToken = '--' + new Date().getTime() + 'url-safe-uuid--';
410
+ result.html = this.replaceFeedbackLinks(result.html, post.id, urlSafeToken).replace(new RegExp(urlSafeToken, 'g'), '%%{uuid}%%');
411
+ }
412
+
398
413
  // Clean up any unknown replacements strings to get our final content
399
414
  const {html, plaintext} = this.normalizeReplacementStrings(result);
400
415
  const data = {
@@ -520,7 +535,6 @@ module.exports = {
520
535
  serialize: PostEmailSerializer.serialize.bind(PostEmailSerializer),
521
536
  createUnsubscribeUrl: PostEmailSerializer.createUnsubscribeUrl.bind(PostEmailSerializer),
522
537
  createPostSignupUrl: PostEmailSerializer.createPostSignupUrl.bind(PostEmailSerializer),
523
- createUserLinks: PostEmailSerializer.createUserLinks.bind(PostEmailSerializer),
524
538
  renderEmailForSegment: PostEmailSerializer.renderEmailForSegment.bind(PostEmailSerializer),
525
539
  parseReplacements: PostEmailSerializer.parseReplacements.bind(PostEmailSerializer),
526
540
  // Export for tests
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.19.1",
3
+ "version": "5.19.2",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -54,77 +54,77 @@
54
54
  "dependencies": {
55
55
  "@sentry/node": "7.15.0",
56
56
  "@tryghost/adapter-base-cache": "0.1.2",
57
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.19.1.tgz",
57
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.19.2.tgz",
58
58
  "@tryghost/admin-api-schema": "4.2.0",
59
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.19.1.tgz",
60
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.19.1.tgz",
61
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.19.1.tgz",
59
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.19.2.tgz",
60
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.19.2.tgz",
61
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.19.2.tgz",
62
62
  "@tryghost/bookshelf-plugins": "0.5.4",
63
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.19.1.tgz",
63
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.19.2.tgz",
64
64
  "@tryghost/color-utils": "0.1.21",
65
65
  "@tryghost/config-url-helpers": "1.0.3",
66
- "@tryghost/constants": "file:components/tryghost-constants-5.19.1.tgz",
67
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.19.1.tgz",
66
+ "@tryghost/constants": "file:components/tryghost-constants-5.19.2.tgz",
67
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.19.2.tgz",
68
68
  "@tryghost/database-info": "0.3.11",
69
69
  "@tryghost/debug": "0.1.18",
70
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.19.1.tgz",
71
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.19.1.tgz",
72
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.19.1.tgz",
73
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.19.1.tgz",
70
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.19.2.tgz",
71
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.19.2.tgz",
72
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.19.2.tgz",
73
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.19.2.tgz",
74
74
  "@tryghost/errors": "1.2.18",
75
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.19.1.tgz",
75
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.19.2.tgz",
76
76
  "@tryghost/helpers": "1.1.74",
77
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.19.1.tgz",
77
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.19.2.tgz",
78
78
  "@tryghost/http-cache-utils": "0.1.4",
79
79
  "@tryghost/image-transform": "1.2.2",
80
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.19.1.tgz",
80
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.19.2.tgz",
81
81
  "@tryghost/kg-card-factory": "3.1.5",
82
82
  "@tryghost/kg-default-atoms": "3.1.4",
83
83
  "@tryghost/kg-default-cards": "5.18.3",
84
84
  "@tryghost/kg-lexical-html-renderer": "0.0.8",
85
85
  "@tryghost/kg-mobiledoc-html-renderer": "5.3.7",
86
86
  "@tryghost/limit-service": "1.2.3",
87
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.19.1.tgz",
88
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.19.1.tgz",
89
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.19.1.tgz",
87
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.19.2.tgz",
88
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.19.2.tgz",
89
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.19.2.tgz",
90
90
  "@tryghost/logging": "2.3.2",
91
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.19.1.tgz",
92
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.19.1.tgz",
93
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.19.1.tgz",
94
- "@tryghost/member-events": "file:components/tryghost-member-events-5.19.1.tgz",
95
- "@tryghost/members-api": "file:components/tryghost-members-api-5.19.1.tgz",
96
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.19.1.tgz",
97
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.19.1.tgz",
98
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.19.1.tgz",
99
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.19.1.tgz",
100
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.19.1.tgz",
101
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.19.1.tgz",
91
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.19.2.tgz",
92
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.19.2.tgz",
93
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.19.2.tgz",
94
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.19.2.tgz",
95
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.19.2.tgz",
96
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.19.2.tgz",
97
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.19.2.tgz",
98
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.19.2.tgz",
99
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.19.2.tgz",
100
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.19.2.tgz",
101
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.19.2.tgz",
102
102
  "@tryghost/metrics": "1.0.16",
103
- "@tryghost/minifier": "file:components/tryghost-minifier-5.19.1.tgz",
104
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.19.1.tgz",
105
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.19.1.tgz",
106
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.19.1.tgz",
107
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.19.1.tgz",
108
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.19.1.tgz",
103
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.19.2.tgz",
104
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.19.2.tgz",
105
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.19.2.tgz",
106
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.19.2.tgz",
107
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.19.2.tgz",
108
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.19.2.tgz",
109
109
  "@tryghost/nodemailer": "0.3.29",
110
110
  "@tryghost/nql": "0.9.2",
111
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.19.1.tgz",
112
- "@tryghost/package-json": "file:components/tryghost-package-json-5.19.1.tgz",
111
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.19.2.tgz",
112
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.19.2.tgz",
113
113
  "@tryghost/pretty-cli": "1.2.31",
114
114
  "@tryghost/promise": "0.1.22",
115
115
  "@tryghost/request": "0.1.31",
116
- "@tryghost/security": "file:components/tryghost-security-5.19.1.tgz",
117
- "@tryghost/session-service": "file:components/tryghost-session-service-5.19.1.tgz",
118
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.19.1.tgz",
116
+ "@tryghost/security": "file:components/tryghost-security-5.19.2.tgz",
117
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.19.2.tgz",
118
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.19.2.tgz",
119
119
  "@tryghost/social-urls": "0.1.33",
120
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.19.1.tgz",
121
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.19.1.tgz",
120
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.19.2.tgz",
121
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.19.2.tgz",
122
122
  "@tryghost/string": "0.2.1",
123
123
  "@tryghost/tpl": "0.1.18",
124
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.19.1.tgz",
124
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.19.2.tgz",
125
125
  "@tryghost/url-utils": "4.2.0",
126
126
  "@tryghost/validator": "0.1.29",
127
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.19.1.tgz",
127
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.19.2.tgz",
128
128
  "@tryghost/version": "0.1.16",
129
129
  "@tryghost/zip": "1.1.29",
130
130
  "amperize": "0.6.1",
@@ -217,55 +217,55 @@
217
217
  "@tryghost/logging": "2.3.2",
218
218
  "moment": "2.24.0",
219
219
  "moment-timezone": "0.5.23",
220
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.19.1.tgz",
221
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.19.1.tgz",
222
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.19.1.tgz",
223
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.19.1.tgz",
224
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.19.1.tgz",
225
- "@tryghost/constants": "file:components/tryghost-constants-5.19.1.tgz",
226
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.19.1.tgz",
227
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.19.1.tgz",
228
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.19.1.tgz",
229
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.19.1.tgz",
230
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.19.1.tgz",
231
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.19.1.tgz",
232
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.19.1.tgz",
233
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.19.1.tgz",
234
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.19.1.tgz",
235
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.19.1.tgz",
236
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.19.1.tgz",
237
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.19.1.tgz",
238
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.19.1.tgz",
239
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.19.1.tgz",
240
- "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.19.1.tgz",
241
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.19.1.tgz",
242
- "@tryghost/member-events": "file:components/tryghost-member-events-5.19.1.tgz",
243
- "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.19.1.tgz",
244
- "@tryghost/members-api": "file:components/tryghost-members-api-5.19.1.tgz",
245
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.19.1.tgz",
246
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.19.1.tgz",
247
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.19.1.tgz",
248
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.19.1.tgz",
249
- "@tryghost/minifier": "file:components/tryghost-minifier-5.19.1.tgz",
250
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.19.1.tgz",
251
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.19.1.tgz",
252
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.19.1.tgz",
253
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.19.1.tgz",
254
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.19.1.tgz",
255
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.19.1.tgz",
256
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.19.1.tgz",
257
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.19.1.tgz",
258
- "@tryghost/package-json": "file:components/tryghost-package-json-5.19.1.tgz",
259
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.19.1.tgz",
260
- "@tryghost/referrers": "file:components/tryghost-referrers-5.19.1.tgz",
261
- "@tryghost/security": "file:components/tryghost-security-5.19.1.tgz",
262
- "@tryghost/session-service": "file:components/tryghost-session-service-5.19.1.tgz",
263
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.19.1.tgz",
264
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.19.1.tgz",
265
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.19.1.tgz",
266
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.19.1.tgz",
267
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.19.1.tgz",
268
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.19.1.tgz",
269
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.19.1.tgz"
220
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.19.2.tgz",
221
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.19.2.tgz",
222
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.19.2.tgz",
223
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.19.2.tgz",
224
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.19.2.tgz",
225
+ "@tryghost/constants": "file:components/tryghost-constants-5.19.2.tgz",
226
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.19.2.tgz",
227
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.19.2.tgz",
228
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.19.2.tgz",
229
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.19.2.tgz",
230
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.19.2.tgz",
231
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.19.2.tgz",
232
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.19.2.tgz",
233
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.19.2.tgz",
234
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.19.2.tgz",
235
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.19.2.tgz",
236
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.19.2.tgz",
237
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.19.2.tgz",
238
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.19.2.tgz",
239
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.19.2.tgz",
240
+ "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.19.2.tgz",
241
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.19.2.tgz",
242
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.19.2.tgz",
243
+ "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.19.2.tgz",
244
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.19.2.tgz",
245
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.19.2.tgz",
246
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.19.2.tgz",
247
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.19.2.tgz",
248
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.19.2.tgz",
249
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.19.2.tgz",
250
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.19.2.tgz",
251
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.19.2.tgz",
252
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.19.2.tgz",
253
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.19.2.tgz",
254
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.19.2.tgz",
255
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.19.2.tgz",
256
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.19.2.tgz",
257
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.19.2.tgz",
258
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.19.2.tgz",
259
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.19.2.tgz",
260
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.19.2.tgz",
261
+ "@tryghost/security": "file:components/tryghost-security-5.19.2.tgz",
262
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.19.2.tgz",
263
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.19.2.tgz",
264
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.19.2.tgz",
265
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.19.2.tgz",
266
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.19.2.tgz",
267
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.19.2.tgz",
268
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.19.2.tgz",
269
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.19.2.tgz"
270
270
  }
271
271
  }