Commit Graph

28799 Commits

Author SHA1 Message Date
Naz
1606a10ff8 Moved members migrations to one off job
refs https://github.com/TryGhost/Toolbox/issues/358

- The execution of members migration only ever has to be done once in the lifetime of the Ghost instance. It is slightly slow and blocking process, which slows down instance boot time considerably. Putting the execution into one off job allows to execute migrations only once and save boot time on each consequent instance restart - less resource usage, save the planet!
2022-07-27 18:07:24 +01:00
Naz
6d5a5e90b1 Added job status checks to job manager
refs ttps://github.com/TryGhost/Toolbox/issues/358

- One off jobs need a way to check for prior execution and await for their completion (in cases when it is reasonably short).
- Added `hasExecuted` and `awaitCompletion` methods to the job manager allowing to monitor one off job state
2022-07-27 18:04:19 +01:00
Naz
b7853323ae 🐛 Fixed email sending job execution
refs https://github.com/TryGhost/Toolbox/issues/359

- Sending newsletters got broken because underlying "inline job" execution had a bug.
- The real problem was in the job manager trying to verify inline unnamed job status in the database without having a name.
2022-07-27 15:12:56 +01:00
Aileen Nowak
b0144a7f8f Added explore alpha feature flag 2022-07-27 14:53:50 +01:00
Kevin Ansfield
fd0398d5e2 Fixed unsupported .cleanup() calls on react editor
no issue

- `react-editor` controller has much of the same code as the normal editor controller but not all of the editor-instance methods are supported in the react editor yet
- commented out the remaining `.cleanup()` calls that are intended to remove empty cards because the method does not exist and was throwing errors when leaving the react-editor route
2022-07-27 14:14:12 +01:00
Kevin Ansfield
7a9435d524 Hooked up editor registration in react editor experiment
no issue

- use the `didCreateEditor` hook to register the editor instance as we do with our Ember version of Koenig
- allows for initial handling of focus control for moving cursor between title and body inputs
- disabled card cleanup call because the react editor does not yet have cards or the custom `cleanup()` method
2022-07-27 14:14:12 +01:00
Kevin Ansfield
a4a4136c2f Fixed hooks not being usable inside of react components
no issue

- switched to using the `window.ReactDOM` instance that is created when importing the react/react-dom libraries
  - React stores state/component references inside of the ReactDOM instance when rendering so we need to make sure all renders use the same instance otherwise it loses track of which component a hook belongs to
- cleaned up unnecessary vendor shims and `prop-types` import
  - `react` and `react-dom` vendor shims are unused when using the globals instead of imports
  - `prop-types` import+shim is not required as it's part of the `@tryghost/koenig-react` build unlike the earlier direct import of `react-mobiledoc-editor`
2022-07-27 14:14:12 +01:00
Fabien 'egg' O'Carroll
e36e5e16bc
Improved Members Comments API
refs https://github.com/TryGhost/Team/issues/1688


We've moved the BREAD logic out of the endpoint and into a controller which
interfaces with the `frame` object from our API framework. The service handles
the core logic of comments, and has been updated with several fixes. This
separation means we keep the HTTP API logic and the underlying comments logic
decoupled.

We've also updated the naming to make it clear that it is part of the members api.

Permissions have been implemented, ensuring that members cannot create comments
if they do not have the required access, but they are able to edit their existing comments,
regardless of access.

The edited_at field is now correctly updated when a comment is edited.
2022-07-27 13:56:16 +01:00
Daniel Lockyer
9f08264e0d
Added knex-migrator script to top-level package.json
- now we've switched to a monorepo, commands like `knex-migrator health`
  won't work from the top-level directory because they expect to be run
  alongside the MigratorConfig.js file
- this commit adds a `knex-migrator` script in the top-level
  package.json so you can run `yarn knex-migrator ...`
- whilst this is only a bandaid, it should give a route forwards for
  running knex-migrator commands from your top-level directory
2022-07-27 14:21:31 +02:00
Daniel Lockyer
532f9ee984
Added Caddyfile to .gitignore
- we have this in the `ghost/core` .gitignore too, but with the latest
  monorepo change, some developers might prefer to have their Caddyfile
  in the top-level directory, of which we need to ignore it
2022-07-27 14:19:33 +02:00
Aileen Nowak
b1e44dd2f2 Added explore alpha feature flag 2022-07-27 13:14:40 +01:00
Rishabh Garg
099afffbec
Updated third-party service readme for frontend apps (#15091)
- We've changed which CDN we use, we need to document the right one!

Co-authored-by: Hannah Wolfe <github.erisds@gmail.com>
2022-07-27 11:04:37 +01:00
Peter Elmers
26e6d459cb Put plus menu button on the screen on mobile (#2417)
Fix the right positioning and size of the icon for mobile display
Addresses https://github.com/TryGhost/Ghost/issues/14948
2022-07-27 11:29:33 +02:00
Peter Zimon
6ae1cce9c8 Fixed browser preview site title word wrap bug 2022-07-27 10:42:36 +02:00
Daniel Lockyer
5417c9edd2
Fixed dependencies for settings-path-manager
- it was incorrectly referencing `tpl` as a dependency, which must have
  been accidentally included when the package was created
- this has been switched out for `@tryghost/tpl`
- also added the missing `@tryghost/errors` dependency
2022-07-27 08:51:44 +02:00
Daniel Lockyer
a9cffd9550
Pinned all dependencies
- we should pin all dependencies so we know what is getting shipped in
  the application
2022-07-27 08:44:50 +02:00
renovate[bot]
0270f7833f
Update dependency date-fns to v2.29.1 2022-07-27 03:32:41 +00:00
renovate[bot]
6d1e8181f8
Update dependency csso to v5.0.4 2022-07-27 01:19:54 +00:00
renovate[bot]
b33c07a5eb
Pin dependency terser to 5.14.2 2022-07-26 22:28:18 +00:00
renovate[bot]
4857b6440d Update dependency terser to v5.14.2 [SECURITY] 2022-07-26 22:27:12 +00:00
renovate[bot]
d6bdef8437
Pin dependency csso to v 2022-07-26 17:57:48 +00:00
Naz
7adf3a5410 Added support for one off inline jobs
refs https://github.com/TryGhost/Toolbox/issues/359

- Inline one off jobs are needed in situations when we want to run a certain operation only once in the lifecycle of the Ghost instance. These operations should not be extremely long to execute though (not suited for backups or import types of tasks)
2022-07-26 18:14:25 +01:00
Naz
822549c9ef Added defensive code for non-persistent job manager
refs https://github.com/TryGhost/Toolbox/issues/359

- It's up to a user to decide initializing the job manager without a "jobModel". In these cases the regular recurring job scheduling should work as it did before
2022-07-26 18:14:25 +01:00
renovate[bot]
9973b5419c Update dependency @playwright/test to v1.24.1 2022-07-26 18:18:50 +02:00
Daniel Lockyer
4b5b3de11c
Moved test agents into subfolder
- these agent files are all very similar and should be grouped together
- moving them into a subfolder makes the `test/utils` folder a little
  bit easier to browse
2022-07-26 18:00:37 +02:00
Rishabh Garg
47fa59ea72 Added flag for newsletter paywall feature (#2430)
refs https://github.com/TryGhost/Team/issues/1680
2022-07-26 21:30:21 +05:30
Daniel Lockyer
044b342de3
Fixed random test failure due to asynchronous directory creation
- we keep seeing random failures that complain about a directory already
  existing when trying to create it
- the error arises from the `fs.copySync` in this `prepareContentFolder`
  function, because it tries to create the folder if it doesn't exist
- it turns out we're using the asynchronous `fs.ensureDir` without an
  await just before, so it doesn't block on creating the folder
- there's a veeeery small window where the code within `copySync` thinks
  the folder doesn't exist, `ensureDir` creates the folder, and
  then `copySync` tries to create the folder => 💥
- it looks like we're already `await`-ing `prepareContentFolder`, so we
  can just switch all the calls to the Promise-based ones and await them
- the other `prepareContentFolder` uses the sync versions of the
  functions, but we can fix that in the future: 7b7767d483/ghost/core/test/utils/e2e-utils.js (L73-L79)
2022-07-26 17:28:16 +02:00
Daniel Lockyer
7b7767d483
Deleted .jshintrc file
refs bcf5a1bc34

- we no longer use jshint so this file is not needed
2022-07-26 16:47:31 +02:00
Daniel Lockyer
f61cd0b18e
Deleted .gitkeep file
- this was accidentally pulled in from the Utils package migration
2022-07-26 16:47:31 +02:00
Naz
2fe4f66ae3 Cleanedup job manager one off test structure
refs https://github.com/TryGhost/Toolbox/issues/359

- LIttle housekeeping was needed before introducing "inline" one-off jobs
2022-07-26 15:18:48 +01:00
Naz
013051a6c9 Made name parameter required for one off jobs
refs https://github.com/TryGhost/Toolbox/issues/359

- Without a "name" parameter it's impossible to identify a job in the storage. It was missed during the PoC inmplementation
2022-07-26 15:13:12 +01:00
Naz
8c3473e5e0 Moved exception handling for members migrations
refs https://github.com/TryGhost/Toolbox/issues/358

- Error handling should be done as close to the place that knows how to handle them. It's a catch-all block which doesn't add any logic, so does not really make sense to have that extra code in general "init" method which ideally should be just a whole bunch of calls with no extras.
2022-07-26 15:13:12 +01:00
renovate[bot]
679634342a
Pinned dependencies (#15100)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-26 16:06:00 +02:00
Daniel Lockyer
6a2afbd859
Changed import path for mw-session-from-token tests
- this has the nice side effect of increasing code coverage by checking
  the exports of the package
2022-07-26 15:53:29 +02:00
Rishabh Garg
9c616fe067
Added content paywall for newsletters (#15048)
refs TryGhost/Team#1680

- extends the public preview card so that the paywall is shown in newsletters for paid-only posts based on member's access
- adds CTA for paywalled content in newsletters
- the segmentation for paywall only considers free and non-free members, so post with specific `tiers` and `paid-only` access settings are sent to all paid members

Co-authored-by: Djordje Vlaisavljevic <dzvlais@gmail.com>
2022-07-26 19:16:08 +05:30
Kevin Ansfield
b5b88e7c5e Added mobiledoc change handling to react-editor experiment
no issue

- passed through the `onChange` event handler so that changes to the content are updated in Ember and autosave etc is triggered
2022-07-26 14:42:59 +01:00
Daniel Lockyer
a12047b224
Added cobertura reporter to members-events-service
- without this, we don't get coverage reports for the package
2022-07-26 15:37:33 +02:00
Daniel Lockyer
b72c4482dc
Added c8 to update-check-service
- this must have been missed off when the package was first created,
  but is now required so we can track code coverage
2022-07-26 15:36:07 +02:00
Kevin Ansfield
873a2ff8e3 Updated <ReactMobiledocEditor> to work with single-component export from koenig-react
no issue

- top-level export from `@tryghost/koenig-react` is a single component and the UMD module is loaded onto `window.koenigEditor`
2022-07-26 14:34:14 +01:00
Daniel Lockyer
3d1e53e8f9
Updated import for mw-update-user-last-seen tests
- this now requires the library as it would be used, which increases
  coverage
2022-07-26 15:31:14 +02:00
Daniel Lockyer
08abfcafd1
Remove linting as posttest step
- linting is handled separately (in CI and locally, as it's a git
  pre-push hook) so we shouldn't also be running it after tests
2022-07-26 15:26:21 +02:00
Daniel Lockyer
0a5f600dfe
Tidied up package README and LICENSE files
- we shouldn't need individual LICENSE files because these packages
  won't be published, so the top-level one applies
- also cleaned up README files to remove mentions of Lerna monorepos and
  install instructions
2022-07-26 15:22:10 +02:00
Daniel Lockyer
735608ea76
Renamed @tryghost/vhost-middleware to @tryghost/mw-vhost
refs https://github.com/TryGhost/Toolbox/issues/354

- this commit renames the vhost middleware to follow our naming pattern
  of `mw-X`
2022-07-26 15:12:32 +02:00
Daniel Lockyer
255eb0726b
Cleaned up package metadata
refs https://github.com/TryGhost/Toolbox/issues/354

- set packages to `private: true`
- removed repository link - these packages won't be published so this
  link won't be seen anywhere
- removed `publishConfig`
2022-07-26 15:08:05 +02:00
Daniel Lockyer
5fc7ba59d3
Reset package versions back to 0.0.0
refs https://github.com/TryGhost/Toolbox/issues/354

- these packages won't be published from now on, so setting the versions
  back to 0.0.0 keeps them clean
2022-07-26 14:57:43 +02:00
Daniel Lockyer
9e8a9f4ebc
Updated lockfile 2022-07-26 14:48:17 +02:00
Daniel Lockyer
e0b947b59d
Deleted release-utils package
- this probably doesn't belong here but it was difficult to exclude when
  migrating the packages over
2022-07-26 14:47:43 +02:00
Daniel Lockyer
3526154377
Migrated packages from Utils
refs https://github.com/TryGhost/Toolbox/issues/354

- the Utils repo is being split up and we're bringing these packages
  into Ghost
- this commit merges the history of the relevant packages in the Utils
  directory into Ghost
2022-07-26 14:45:37 +02:00
Daniel Lockyer
7fa997c91d Deleted packages migrated to SDK
refs https://github.com/TryGhost/Toolbox/issues/354

- these packages were migrated to the SDK repository so
  they aren't needed here any more
2022-07-26 14:38:09 +02:00
Daniel Lockyer
48cc229b21 Deleted packages migrated to Framework
refs https://github.com/TryGhost/Toolbox/issues/354

- these packages were migrated to the Framework repository so they
  aren't needed here any more
2022-07-26 14:29:54 +02:00