ghost 5.25.5 → 5.26.1

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 (104) hide show
  1. package/components/tryghost-adapter-manager-5.26.1.tgz +0 -0
  2. package/components/tryghost-api-framework-5.26.1.tgz +0 -0
  3. package/components/{tryghost-api-version-compatibility-service-5.25.5.tgz → tryghost-api-version-compatibility-service-5.26.1.tgz} +0 -0
  4. package/components/{tryghost-audience-feedback-5.25.5.tgz → tryghost-audience-feedback-5.26.1.tgz} +0 -0
  5. package/components/tryghost-bootstrap-socket-5.26.1.tgz +0 -0
  6. package/components/{tryghost-constants-5.25.5.tgz → tryghost-constants-5.26.1.tgz} +0 -0
  7. package/components/{tryghost-custom-theme-settings-service-5.25.5.tgz → tryghost-custom-theme-settings-service-5.26.1.tgz} +0 -0
  8. package/components/{tryghost-data-generator-5.25.5.tgz → tryghost-data-generator-5.26.1.tgz} +0 -0
  9. package/components/tryghost-domain-events-5.26.1.tgz +0 -0
  10. package/components/tryghost-email-analytics-provider-mailgun-5.26.1.tgz +0 -0
  11. package/components/{tryghost-email-analytics-service-5.25.5.tgz → tryghost-email-analytics-service-5.26.1.tgz} +0 -0
  12. package/components/tryghost-email-content-generator-5.26.1.tgz +0 -0
  13. package/components/tryghost-email-events-5.26.1.tgz +0 -0
  14. package/components/{tryghost-email-service-5.25.5.tgz → tryghost-email-service-5.26.1.tgz} +0 -0
  15. package/components/tryghost-email-suppression-list-5.26.1.tgz +0 -0
  16. package/components/{tryghost-express-dynamic-redirects-5.25.5.tgz → tryghost-express-dynamic-redirects-5.26.1.tgz} +0 -0
  17. package/components/tryghost-extract-api-key-5.26.1.tgz +0 -0
  18. package/components/{tryghost-html-to-plaintext-5.25.5.tgz → tryghost-html-to-plaintext-5.26.1.tgz} +0 -0
  19. package/components/tryghost-importer-revue-5.26.1.tgz +0 -0
  20. package/components/tryghost-job-manager-5.26.1.tgz +0 -0
  21. package/components/{tryghost-link-redirects-5.25.5.tgz → tryghost-link-redirects-5.26.1.tgz} +0 -0
  22. package/components/tryghost-link-replacer-5.26.1.tgz +0 -0
  23. package/components/{tryghost-link-tracking-5.25.5.tgz → tryghost-link-tracking-5.26.1.tgz} +0 -0
  24. package/components/{tryghost-magic-link-5.25.5.tgz → tryghost-magic-link-5.26.1.tgz} +0 -0
  25. package/components/{tryghost-mailgun-client-5.25.5.tgz → tryghost-mailgun-client-5.26.1.tgz} +0 -0
  26. package/components/{tryghost-member-attribution-5.25.5.tgz → tryghost-member-attribution-5.26.1.tgz} +0 -0
  27. package/components/{tryghost-member-events-5.25.5.tgz → tryghost-member-events-5.26.1.tgz} +0 -0
  28. package/components/tryghost-members-api-5.26.1.tgz +0 -0
  29. package/components/{tryghost-members-csv-5.25.5.tgz → tryghost-members-csv-5.26.1.tgz} +0 -0
  30. package/components/{tryghost-members-events-service-5.25.5.tgz → tryghost-members-events-service-5.26.1.tgz} +0 -0
  31. package/components/{tryghost-members-importer-5.25.5.tgz → tryghost-members-importer-5.26.1.tgz} +0 -0
  32. package/components/{tryghost-members-offers-5.25.5.tgz → tryghost-members-offers-5.26.1.tgz} +0 -0
  33. package/components/tryghost-members-payments-5.26.1.tgz +0 -0
  34. package/components/{tryghost-members-ssr-5.25.5.tgz → tryghost-members-ssr-5.26.1.tgz} +0 -0
  35. package/components/{tryghost-members-stripe-service-5.25.5.tgz → tryghost-members-stripe-service-5.26.1.tgz} +0 -0
  36. package/components/tryghost-minifier-5.26.1.tgz +0 -0
  37. package/components/tryghost-mw-api-version-mismatch-5.26.1.tgz +0 -0
  38. package/components/tryghost-mw-cache-control-5.26.1.tgz +0 -0
  39. package/components/tryghost-mw-error-handler-5.26.1.tgz +0 -0
  40. package/components/tryghost-mw-session-from-token-5.26.1.tgz +0 -0
  41. package/components/{tryghost-mw-update-user-last-seen-5.25.5.tgz → tryghost-mw-update-user-last-seen-5.26.1.tgz} +0 -0
  42. package/components/tryghost-mw-vhost-5.26.1.tgz +0 -0
  43. package/components/tryghost-oembed-service-5.26.1.tgz +0 -0
  44. package/components/tryghost-package-json-5.26.1.tgz +0 -0
  45. package/components/tryghost-referrers-5.26.1.tgz +0 -0
  46. package/components/tryghost-security-5.26.1.tgz +0 -0
  47. package/components/{tryghost-session-service-5.25.5.tgz → tryghost-session-service-5.26.1.tgz} +0 -0
  48. package/components/tryghost-settings-path-manager-5.26.1.tgz +0 -0
  49. package/components/{tryghost-staff-service-5.25.5.tgz → tryghost-staff-service-5.26.1.tgz} +0 -0
  50. package/components/tryghost-stats-service-5.26.1.tgz +0 -0
  51. package/components/{tryghost-tiers-5.25.5.tgz → tryghost-tiers-5.26.1.tgz} +0 -0
  52. package/components/{tryghost-update-check-service-5.25.5.tgz → tryghost-update-check-service-5.26.1.tgz} +0 -0
  53. package/components/{tryghost-verification-trigger-5.25.5.tgz → tryghost-verification-trigger-5.26.1.tgz} +0 -0
  54. package/components/{tryghost-version-notifications-data-service-5.25.5.tgz → tryghost-version-notifications-data-service-5.26.1.tgz} +0 -0
  55. package/content/themes/casper/assets/built/casper.js +1 -1
  56. package/content/themes/casper/assets/built/casper.js.map +1 -1
  57. package/content/themes/casper/assets/built/screen.css +1 -1
  58. package/content/themes/casper/assets/built/screen.css.map +1 -1
  59. package/content/themes/casper/assets/css/screen.css +36 -12
  60. package/content/themes/casper/assets/js/dropdown.js +3 -2
  61. package/content/themes/casper/default.hbs +3 -3
  62. package/content/themes/casper/package.json +1 -1
  63. package/core/built/admin/assets/{chunk.143.ce979d0e79756c847be1.js → chunk.143.71d8fe57c49a9c5b17b5.js} +5 -5
  64. package/core/built/admin/assets/{chunk.178.20fd180216b1dde2c738.js → chunk.178.3dd94acfb36b72a9f26d.js} +4 -4
  65. package/core/built/admin/assets/{chunk.613.7e15b585f6a677d191bb.js → chunk.613.25718fa355a25fc2a7c1.js} +8 -3
  66. package/core/built/admin/assets/{chunk.613.7e15b585f6a677d191bb.js.LICENSE.txt → chunk.613.25718fa355a25fc2a7c1.js.LICENSE.txt} +0 -0
  67. package/core/built/admin/assets/{ghost-04991abb5f64c0b3442a093dbfa55a67.js → ghost-5429d972966c85a0a24d766f93db999d.js} +3842 -2892
  68. package/core/built/admin/assets/{ghost-86cf21b24691d4fe9a73bcf84e5b36fe.css → ghost-830670d910cea64d98ab083aafd1dffd.css} +1 -1
  69. package/core/built/admin/assets/{ghost-dark-2e0bf27a167574e0b2ca9dce1c9ec188.css → ghost-dark-e9195020925a360d83163e1e87b514a6.css} +1 -1
  70. package/core/built/admin/assets/{vendor-a5908fe1facfc5cd41d8b915a996bfed.js → vendor-5aae14724f891e36c43786254980485c.js} +1447 -1158
  71. package/core/built/admin/index.html +6 -6
  72. package/core/server/data/importer/handlers/json.js +2 -0
  73. package/core/server/data/importer/handlers/revue.js +44 -0
  74. package/core/server/data/importer/import-manager.js +22 -10
  75. package/core/server/data/importer/importers/data/data-importer.js +4 -0
  76. package/core/server/data/importer/importers/data/posts.js +4 -0
  77. package/core/server/data/importer/importers/data/revue-subscriber.js +55 -0
  78. package/package.json +103 -101
  79. package/yarn.lock +59 -209
  80. package/components/tryghost-adapter-manager-5.25.5.tgz +0 -0
  81. package/components/tryghost-api-framework-5.25.5.tgz +0 -0
  82. package/components/tryghost-bootstrap-socket-5.25.5.tgz +0 -0
  83. package/components/tryghost-domain-events-5.25.5.tgz +0 -0
  84. package/components/tryghost-email-analytics-provider-mailgun-5.25.5.tgz +0 -0
  85. package/components/tryghost-email-content-generator-5.25.5.tgz +0 -0
  86. package/components/tryghost-email-events-5.25.5.tgz +0 -0
  87. package/components/tryghost-email-suppression-list-5.25.5.tgz +0 -0
  88. package/components/tryghost-extract-api-key-5.25.5.tgz +0 -0
  89. package/components/tryghost-job-manager-5.25.5.tgz +0 -0
  90. package/components/tryghost-link-replacer-5.25.5.tgz +0 -0
  91. package/components/tryghost-members-api-5.25.5.tgz +0 -0
  92. package/components/tryghost-members-payments-5.25.5.tgz +0 -0
  93. package/components/tryghost-minifier-5.25.5.tgz +0 -0
  94. package/components/tryghost-mw-api-version-mismatch-5.25.5.tgz +0 -0
  95. package/components/tryghost-mw-cache-control-5.25.5.tgz +0 -0
  96. package/components/tryghost-mw-error-handler-5.25.5.tgz +0 -0
  97. package/components/tryghost-mw-session-from-token-5.25.5.tgz +0 -0
  98. package/components/tryghost-mw-vhost-5.25.5.tgz +0 -0
  99. package/components/tryghost-oembed-service-5.25.5.tgz +0 -0
  100. package/components/tryghost-package-json-5.25.5.tgz +0 -0
  101. package/components/tryghost-referrers-5.25.5.tgz +0 -0
  102. package/components/tryghost-security-5.25.5.tgz +0 -0
  103. package/components/tryghost-settings-path-manager-5.25.5.tgz +0 -0
  104. package/components/tryghost-stats-service-5.25.5.tgz +0 -0
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.25%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.26%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -37,7 +37,7 @@
37
37
  </style>
38
38
 
39
39
  <link integrity="" rel="stylesheet" href="assets/vendor-3e6947aa681f0fb82b193090e520dc73.css">
40
- <link integrity="" rel="stylesheet" href="assets/ghost-86cf21b24691d4fe9a73bcf84e5b36fe.css" title="light">
40
+ <link integrity="" rel="stylesheet" href="assets/ghost-830670d910cea64d98ab083aafd1dffd.css" title="light">
41
41
 
42
42
 
43
43
  </head>
@@ -56,9 +56,9 @@
56
56
 
57
57
  <div id="ember-basic-dropdown-wormhole"></div>
58
58
 
59
- <script src="assets/vendor-a5908fe1facfc5cd41d8b915a996bfed.js"></script>
60
- <script src="assets/chunk.613.7e15b585f6a677d191bb.js"></script>
61
- <script src="assets/chunk.143.ce979d0e79756c847be1.js"></script>
62
- <script src="assets/ghost-04991abb5f64c0b3442a093dbfa55a67.js"></script>
59
+ <script src="assets/vendor-5aae14724f891e36c43786254980485c.js"></script>
60
+ <script src="assets/chunk.613.25718fa355a25fc2a7c1.js"></script>
61
+ <script src="assets/chunk.143.71d8fe57c49a9c5b17b5.js"></script>
62
+ <script src="assets/ghost-5429d972966c85a0a24d766f93db999d.js"></script>
63
63
  </body>
64
64
  </html>
@@ -2,6 +2,7 @@ const _ = require('lodash');
2
2
  const fs = require('fs-extra');
3
3
  const tpl = require('@tryghost/tpl');
4
4
  const errors = require('@tryghost/errors');
5
+ const debug = require('@tryghost/debug')('importer:handler:data');
5
6
 
6
7
  const messages = {
7
8
  invalidJsonFormat: 'Invalid JSON format, expected `{ db: [exportedData] }`',
@@ -17,6 +18,7 @@ JSONHandler = {
17
18
  directories: [],
18
19
 
19
20
  loadFile: async function (files, startDir) { // eslint-disable-line no-unused-vars
21
+ debug('loadFile', files);
20
22
  // @TODO: Handle multiple JSON files
21
23
  const filePath = files[0].path;
22
24
 
@@ -0,0 +1,44 @@
1
+ const _ = require('lodash');
2
+ const fs = require('fs-extra');
3
+ const debug = require('@tryghost/debug')('importer:handler:revue');
4
+
5
+ const hasIssuesCSV = (files) => {
6
+ return _.some(files, (file) => {
7
+ return file.name.match(/^issues.*?\.csv/);
8
+ });
9
+ };
10
+
11
+ const RevueHandler = {
12
+ type: 'revue',
13
+ extensions: ['.csv', '.json'],
14
+ contentTypes: ['application/octet-stream', 'application/json', 'text/plain'],
15
+ directories: [],
16
+
17
+ loadFile: function (files, startDir) {
18
+ debug('loadFile', files);
19
+ const startDirRegex = startDir ? new RegExp('^' + startDir + '/') : new RegExp('');
20
+ const idRegex = /_.*?\./;
21
+ const ops = [];
22
+ const revue = {};
23
+
24
+ if (!hasIssuesCSV(files)) {
25
+ return Promise.resolve();
26
+ }
27
+
28
+ _.each(files, function (file) {
29
+ ops.push(fs.readFile(file.path).then(function (content) {
30
+ // normalize the file name
31
+ file.name = file.name.replace(startDirRegex, '').replace(idRegex, '.');
32
+ const name = file.name.split('.')[0];
33
+
34
+ revue[name] = content.toString();
35
+ }));
36
+ });
37
+
38
+ return Promise.all(ops).then(() => {
39
+ return {meta: {revue: true}, revue};
40
+ });
41
+ }
42
+ };
43
+
44
+ module.exports = RevueHandler;
@@ -7,12 +7,15 @@ const uuid = require('uuid');
7
7
  const config = require('../../../shared/config');
8
8
  const {extract} = require('@tryghost/zip');
9
9
  const tpl = require('@tryghost/tpl');
10
+ const debug = require('@tryghost/debug')('import-manager');
10
11
  const logging = require('@tryghost/logging');
11
12
  const errors = require('@tryghost/errors');
12
13
  const ImageHandler = require('./handlers/image');
14
+ const RevueHandler = require('./handlers/revue');
13
15
  const JSONHandler = require('./handlers/json');
14
16
  const MarkdownHandler = require('./handlers/markdown');
15
17
  const ImageImporter = require('./importers/image');
18
+ const RevueImporter = require('@tryghost/importer-revue');
16
19
  const DataImporter = require('./importers/data');
17
20
  const urlUtils = require('../../../shared/url-utils');
18
21
  const {GhostMailer} = require('../../services/mail');
@@ -48,12 +51,12 @@ class ImportManager {
48
51
  /**
49
52
  * @type {Importer[]} importers
50
53
  */
51
- this.importers = [ImageImporter, DataImporter];
54
+ this.importers = [ImageImporter, RevueImporter, DataImporter];
52
55
 
53
56
  /**
54
57
  * @type {Handler[]}
55
58
  */
56
- this.handlers = [ImageHandler, JSONHandler, MarkdownHandler];
59
+ this.handlers = [ImageHandler, RevueHandler, JSONHandler, MarkdownHandler];
57
60
 
58
61
  // Keep track of file to cleanup at the end
59
62
  /**
@@ -240,6 +243,8 @@ class ImportManager {
240
243
  for (const handler of this.handlers) {
241
244
  const files = this.getFilesFromZip(handler, zipDirectory);
242
245
 
246
+ debug('handler', handler.type, files);
247
+
243
248
  if (files.length > 0) {
244
249
  if (Object.prototype.hasOwnProperty.call(importData, handler.type)) {
245
250
  // This limitation is here to reduce the complexity of the importer for now
@@ -271,17 +276,19 @@ class ImportManager {
271
276
  * @param {File} file
272
277
  * @returns {Promise<ImportData>}
273
278
  */
274
- processFile(file, ext) {
275
- const fileHandler = _.find(this.handlers, function (handler) {
279
+ async processFile(file, ext) {
280
+ const fileHandlers = _.filter(this.handlers, function (handler) {
276
281
  return _.includes(handler.extensions, ext);
277
282
  });
278
283
 
279
- return fileHandler.loadFile([_.pick(file, 'name', 'path')]).then(function (loadedData) {
280
- // normalize the returned data
281
- const importData = {};
282
- importData[fileHandler.type] = loadedData;
283
- return importData;
284
- });
284
+ const importData = {};
285
+
286
+ await Promise.all(fileHandlers.map(async (fileHandler) => {
287
+ debug('fileHandler', fileHandler.type);
288
+ importData[fileHandler.type] = await fileHandler.loadFile([_.pick(file, 'name', 'path')]);
289
+ }));
290
+
291
+ return importData;
285
292
  }
286
293
 
287
294
  /**
@@ -305,6 +312,7 @@ class ImportManager {
305
312
  * @returns {Promise<ImportData>}
306
313
  */
307
314
  async preProcess(importData) {
315
+ debug('preProcess');
308
316
  for (const importer of this.importers) {
309
317
  importData = importer.preProcess(importData);
310
318
  }
@@ -321,10 +329,12 @@ class ImportManager {
321
329
  * @returns {Promise<Object.<string, ImportResult>>} importResults
322
330
  */
323
331
  async doImport(importData, importOptions) {
332
+ debug('doImport', this.importers);
324
333
  importOptions = importOptions || {};
325
334
  const importResults = {};
326
335
 
327
336
  for (const importer of this.importers) {
337
+ debug('importer looking for', importer.type, 'in', Object.keys(importData));
328
338
  if (Object.prototype.hasOwnProperty.call(importData, importer.type)) {
329
339
  importResults[importer.type] = await importer.doImport(importData[importer.type], importOptions);
330
340
  }
@@ -411,6 +421,8 @@ class ImportManager {
411
421
  importData = await this.loadFile(file);
412
422
  }
413
423
 
424
+ debug('importFromFile completed file load', importData);
425
+
414
426
  const env = config.get('env');
415
427
  if (!env?.startsWith('testing') && !importOptions.runningInJob) {
416
428
  return jobManager.addJob({
@@ -14,6 +14,7 @@ const ProductsImporter = require('./products');
14
14
  const StripeProductsImporter = require('./stripe-products');
15
15
  const StripePricesImporter = require('./stripe-prices');
16
16
  const CustomThemeSettingsImporter = require('./custom-theme-settings');
17
+ const RevueSubscriberImporter = require('./revue-subscriber');
17
18
  const RolesImporter = require('./roles');
18
19
  const {slugify} = require('@tryghost/string/lib');
19
20
 
@@ -24,6 +25,7 @@ DataImporter = {
24
25
  type: 'data',
25
26
 
26
27
  preProcess: function preProcess(importData) {
28
+ debug('preProcess');
27
29
  importData.preProcessedByData = true;
28
30
  return importData;
29
31
  },
@@ -39,12 +41,14 @@ DataImporter = {
39
41
  importers.stripe_prices = new StripePricesImporter(importData.data);
40
42
  importers.posts = new PostsImporter(importData.data);
41
43
  importers.custom_theme_settings = new CustomThemeSettingsImporter(importData.data);
44
+ importers.revue_subscribers = new RevueSubscriberImporter(importData.data);
42
45
 
43
46
  return importData;
44
47
  },
45
48
 
46
49
  // Allow importing with an options object that is passed through the importer
47
50
  doImport: async function doImport(importData, importOptions) {
51
+ debug('doImport');
48
52
  importOptions = importOptions || {};
49
53
 
50
54
  if (importOptions.importTag && importData?.data?.posts) {
@@ -272,7 +272,11 @@ class PostsImporter extends BaseImporter {
272
272
 
273
273
  model.mobiledoc = JSON.stringify(mobiledoc);
274
274
  model.html = mobiledocLib.mobiledocHtmlRenderer.render(JSON.parse(model.mobiledoc));
275
+ } else if (model.html) {
276
+ model.mobiledoc = JSON.stringify(mobiledocLib.htmlToMobiledocConverter(model.html));
277
+ model.html = mobiledocLib.mobiledocHtmlRenderer.render(JSON.parse(model.mobiledoc));
275
278
  }
279
+
276
280
  this.sanitizePostsMeta(model);
277
281
  });
278
282
 
@@ -0,0 +1,55 @@
1
+ const debug = require('@tryghost/debug')('importer:revue-subscriber');
2
+ const BaseImporter = require('./base');
3
+
4
+ const papaparse = require('papaparse');
5
+ const path = require('path');
6
+ const fs = require('fs-extra');
7
+
8
+ const config = require('../../../../../shared/config');
9
+ const models = require('../../../../models');
10
+
11
+ class RevueSubscriberImporter extends BaseImporter {
12
+ constructor(allDataFromFile) {
13
+ super(allDataFromFile, {
14
+ modelName: 'Member',
15
+ dataKeyToImport: 'revue_subscribers'
16
+ });
17
+ }
18
+
19
+ beforeImport() {
20
+ debug('beforeImport');
21
+ return super.beforeImport();
22
+ }
23
+
24
+ async doImport(options, importOptions) {
25
+ debug('doImport', this.modelName, this.dataToImport.length);
26
+
27
+ // Don't do anything if there is no data to import
28
+ if (this.dataToImport.length === 0) {
29
+ return Promise.resolve();
30
+ }
31
+
32
+ // required here rather than top-level to avoid pulling in before it's initialized during boot
33
+ const membersService = require('../../../../services/members');
34
+
35
+ const importLabel = importOptions.importTag ? importOptions.importTag.replace(/^#/, '') : null;
36
+
37
+ const outputFileName = `Converted ${importLabel}.csv`;
38
+ const outputFilePath = path.join(config.getContentPath('data'), '/', outputFileName);
39
+ const csvData = papaparse.unparse(this.dataToImport);
40
+
41
+ const memberImporterOptions = {
42
+ pathToCSV: outputFilePath,
43
+ globalLabels: [{name: importLabel}],
44
+ importLabel: {name: importLabel},
45
+ LabelModel: models.Label,
46
+ forceInline: true
47
+ };
48
+
49
+ await fs.writeFile(outputFilePath, csvData);
50
+
51
+ return membersService.processImport(memberImporterOptions);
52
+ }
53
+ }
54
+
55
+ module.exports = RevueSubscriberImporter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.25.5",
3
+ "version": "5.26.1",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -58,33 +58,34 @@
58
58
  "dependencies": {
59
59
  "@sentry/node": "7.11.1",
60
60
  "@tryghost/adapter-base-cache": "0.1.3",
61
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.25.5.tgz",
61
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.26.1.tgz",
62
62
  "@tryghost/admin-api-schema": "4.2.1",
63
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.25.5.tgz",
64
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.25.5.tgz",
65
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.25.5.tgz",
63
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.26.1.tgz",
64
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.26.1.tgz",
65
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.26.1.tgz",
66
66
  "@tryghost/bookshelf-plugins": "0.6.2",
67
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.25.5.tgz",
67
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.26.1.tgz",
68
68
  "@tryghost/color-utils": "0.1.22",
69
69
  "@tryghost/config-url-helpers": "1.0.4",
70
- "@tryghost/constants": "file:components/tryghost-constants-5.25.5.tgz",
71
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.25.5.tgz",
72
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.25.5.tgz",
70
+ "@tryghost/constants": "file:components/tryghost-constants-5.26.1.tgz",
71
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.26.1.tgz",
72
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.26.1.tgz",
73
73
  "@tryghost/database-info": "0.3.13",
74
74
  "@tryghost/debug": "0.1.20",
75
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.25.5.tgz",
76
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.25.5.tgz",
77
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.25.5.tgz",
78
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.25.5.tgz",
79
- "@tryghost/email-service": "file:components/tryghost-email-service-5.25.5.tgz",
80
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.25.5.tgz",
75
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.26.1.tgz",
76
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.26.1.tgz",
77
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.26.1.tgz",
78
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.26.1.tgz",
79
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.26.1.tgz",
80
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.26.1.tgz",
81
81
  "@tryghost/errors": "1.2.19",
82
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.25.5.tgz",
82
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.26.1.tgz",
83
83
  "@tryghost/helpers": "1.1.75",
84
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.25.5.tgz",
84
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.26.1.tgz",
85
85
  "@tryghost/http-cache-utils": "0.1.5",
86
86
  "@tryghost/image-transform": "1.2.3",
87
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.25.5.tgz",
87
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.26.1.tgz",
88
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.26.1.tgz",
88
89
  "@tryghost/kg-card-factory": "3.1.9",
89
90
  "@tryghost/kg-default-atoms": "3.1.4",
90
91
  "@tryghost/kg-default-cards": "5.18.7",
@@ -92,48 +93,48 @@
92
93
  "@tryghost/kg-lexical-html-renderer": "0.0.11",
93
94
  "@tryghost/kg-mobiledoc-html-renderer": "5.3.11",
94
95
  "@tryghost/limit-service": "1.2.4",
95
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.25.5.tgz",
96
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.25.5.tgz",
97
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.25.5.tgz",
96
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.26.1.tgz",
97
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.26.1.tgz",
98
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.26.1.tgz",
98
99
  "@tryghost/logging": "2.3.5",
99
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.25.5.tgz",
100
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.25.5.tgz",
101
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.25.5.tgz",
102
- "@tryghost/member-events": "file:components/tryghost-member-events-5.25.5.tgz",
103
- "@tryghost/members-api": "file:components/tryghost-members-api-5.25.5.tgz",
104
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.25.5.tgz",
105
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.25.5.tgz",
106
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.25.5.tgz",
107
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.25.5.tgz",
108
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.25.5.tgz",
109
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.25.5.tgz",
100
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.26.1.tgz",
101
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.26.1.tgz",
102
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.26.1.tgz",
103
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.26.1.tgz",
104
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.26.1.tgz",
105
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.26.1.tgz",
106
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.26.1.tgz",
107
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.26.1.tgz",
108
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.26.1.tgz",
109
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.26.1.tgz",
110
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.26.1.tgz",
110
111
  "@tryghost/metrics": "1.0.19",
111
- "@tryghost/minifier": "file:components/tryghost-minifier-5.25.5.tgz",
112
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.25.5.tgz",
113
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.25.5.tgz",
114
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.25.5.tgz",
115
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.25.5.tgz",
116
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.25.5.tgz",
112
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.26.1.tgz",
113
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.26.1.tgz",
114
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.26.1.tgz",
115
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.26.1.tgz",
116
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.26.1.tgz",
117
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.26.1.tgz",
117
118
  "@tryghost/nodemailer": "0.3.30",
118
119
  "@tryghost/nql": "0.11.0",
119
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.25.5.tgz",
120
- "@tryghost/package-json": "file:components/tryghost-package-json-5.25.5.tgz",
120
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.26.1.tgz",
121
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.26.1.tgz",
121
122
  "@tryghost/pretty-cli": "1.2.32",
122
123
  "@tryghost/promise": "0.2.1",
123
124
  "@tryghost/request": "0.1.33",
124
- "@tryghost/security": "file:components/tryghost-security-5.25.5.tgz",
125
- "@tryghost/session-service": "file:components/tryghost-session-service-5.25.5.tgz",
126
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.25.5.tgz",
125
+ "@tryghost/security": "file:components/tryghost-security-5.26.1.tgz",
126
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.26.1.tgz",
127
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.26.1.tgz",
127
128
  "@tryghost/social-urls": "0.1.34",
128
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.25.5.tgz",
129
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.25.5.tgz",
129
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.26.1.tgz",
130
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.26.1.tgz",
130
131
  "@tryghost/string": "0.2.2",
131
- "@tryghost/tiers": "file:components/tryghost-tiers-5.25.5.tgz",
132
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.26.1.tgz",
132
133
  "@tryghost/tpl": "0.1.20",
133
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.25.5.tgz",
134
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.26.1.tgz",
134
135
  "@tryghost/url-utils": "4.3.0",
135
136
  "@tryghost/validator": "0.1.31",
136
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.25.5.tgz",
137
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.26.1.tgz",
137
138
  "@tryghost/version": "0.1.18",
138
139
  "@tryghost/zip": "1.1.30",
139
140
  "amperize": "0.6.1",
@@ -229,58 +230,59 @@
229
230
  "@tryghost/logging": "2.3.5",
230
231
  "moment": "2.24.0",
231
232
  "moment-timezone": "0.5.23",
232
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.25.5.tgz",
233
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.25.5.tgz",
234
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.25.5.tgz",
235
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.25.5.tgz",
236
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.25.5.tgz",
237
- "@tryghost/constants": "file:components/tryghost-constants-5.25.5.tgz",
238
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.25.5.tgz",
239
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.25.5.tgz",
240
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.25.5.tgz",
241
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.25.5.tgz",
242
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.25.5.tgz",
243
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.25.5.tgz",
244
- "@tryghost/email-events": "file:components/tryghost-email-events-5.25.5.tgz",
245
- "@tryghost/email-service": "file:components/tryghost-email-service-5.25.5.tgz",
246
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.25.5.tgz",
247
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.25.5.tgz",
248
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.25.5.tgz",
249
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.25.5.tgz",
250
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.25.5.tgz",
251
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.25.5.tgz",
252
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.25.5.tgz",
253
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.25.5.tgz",
254
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.25.5.tgz",
255
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.25.5.tgz",
256
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.25.5.tgz",
257
- "@tryghost/member-events": "file:components/tryghost-member-events-5.25.5.tgz",
258
- "@tryghost/members-api": "file:components/tryghost-members-api-5.25.5.tgz",
259
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.25.5.tgz",
260
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.25.5.tgz",
261
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.25.5.tgz",
262
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.25.5.tgz",
263
- "@tryghost/minifier": "file:components/tryghost-minifier-5.25.5.tgz",
264
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.25.5.tgz",
265
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.25.5.tgz",
266
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.25.5.tgz",
267
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.25.5.tgz",
268
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.25.5.tgz",
269
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.25.5.tgz",
270
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.25.5.tgz",
271
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.25.5.tgz",
272
- "@tryghost/package-json": "file:components/tryghost-package-json-5.25.5.tgz",
273
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.25.5.tgz",
274
- "@tryghost/referrers": "file:components/tryghost-referrers-5.25.5.tgz",
275
- "@tryghost/security": "file:components/tryghost-security-5.25.5.tgz",
276
- "@tryghost/session-service": "file:components/tryghost-session-service-5.25.5.tgz",
277
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.25.5.tgz",
278
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.25.5.tgz",
279
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.25.5.tgz",
280
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.25.5.tgz",
281
- "@tryghost/tiers": "file:components/tryghost-tiers-5.25.5.tgz",
282
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.25.5.tgz",
283
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.25.5.tgz",
284
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.25.5.tgz"
233
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.26.1.tgz",
234
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.26.1.tgz",
235
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.26.1.tgz",
236
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.26.1.tgz",
237
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.26.1.tgz",
238
+ "@tryghost/constants": "file:components/tryghost-constants-5.26.1.tgz",
239
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.26.1.tgz",
240
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.26.1.tgz",
241
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.26.1.tgz",
242
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.26.1.tgz",
243
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.26.1.tgz",
244
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.26.1.tgz",
245
+ "@tryghost/email-events": "file:components/tryghost-email-events-5.26.1.tgz",
246
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.26.1.tgz",
247
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.26.1.tgz",
248
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.26.1.tgz",
249
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.26.1.tgz",
250
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.26.1.tgz",
251
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.26.1.tgz",
252
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.26.1.tgz",
253
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.26.1.tgz",
254
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.26.1.tgz",
255
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.26.1.tgz",
256
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.26.1.tgz",
257
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.26.1.tgz",
258
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.26.1.tgz",
259
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.26.1.tgz",
260
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.26.1.tgz",
261
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.26.1.tgz",
262
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.26.1.tgz",
263
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.26.1.tgz",
264
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.26.1.tgz",
265
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.26.1.tgz",
266
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.26.1.tgz",
267
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.26.1.tgz",
268
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.26.1.tgz",
269
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.26.1.tgz",
270
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.26.1.tgz",
271
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.26.1.tgz",
272
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.26.1.tgz",
273
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.26.1.tgz",
274
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.26.1.tgz",
275
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.26.1.tgz",
276
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.26.1.tgz",
277
+ "@tryghost/security": "file:components/tryghost-security-5.26.1.tgz",
278
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.26.1.tgz",
279
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.26.1.tgz",
280
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.26.1.tgz",
281
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.26.1.tgz",
282
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.26.1.tgz",
283
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.26.1.tgz",
284
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.26.1.tgz",
285
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.26.1.tgz",
286
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.26.1.tgz"
285
287
  }
286
288
  }