Commit Graph

857 Commits

Author SHA1 Message Date
Naz
393834ae4a Added html-to-text dependency
refs https://github.com/TryGhost/Toolbox/issues/292

- This dependency is needed for the package to function properly. Have pinned it to a lower major than is currently available to avoid a unnecessary rabbithole of dealing with breaking changes
2022-05-04 17:16:43 +08:00
Naz
b4682bf643 Bootstrapped email-content-generator package
refs https://github.com/TryGhost/Toolbox/issues/292
2022-05-04 17:16:43 +08:00
Naz
ca693f79f8 Reworked EmailContentGenerator to async/await
refs https://github.com/TryGhost/Toolbox/issues/292

- Makes the code more readable
2022-05-04 17:16:43 +08:00
Naz
0c2cc2af8a Refactored email utils to a class with DI params
refs https://github.com/TryGhost/Toolbox/issues/292

- There's a need to reuse these utils in the version mismatch notification service. Having loads of tightly coupled dependencies makes it super hard to rip out this module for reuse
- It's a groundwork for extraction of the email-utils package
- Rewrote the unit tests that were written for these utils previously - they weren't testing anything useful. The goal of this util is to generate specific content based on provided data and available templates - now the tests do test those specific things, not the mailer itself!
2022-05-04 17:16:43 +08:00
Hannah Wolfe
6119ccbe90 Moved server unit tests into the server folder
- this is a small part of a bit of cleanup of our test files
- the goal is to make the existing tests clearer with a view to making it easier to write more tests
- this makes the test structure follow the codebase structure more closely
- eventually we will colocate the tests as we break the codebase down further
2022-05-04 17:16:43 +08:00
Naz
ff4bdb5ff8 Made integration naming less technical
refs https://github.com/TryGhost/Toolbox/issues/292

- The audience of the notification emails for version missmatch could be less technical - site owneres are usually creators not programmers. Not using complex technical details in the email subject/body should make the incompatibility more approachable to deal with.
2022-05-04 11:05:48 +08:00
Renovate Bot
d7768efb40 Update dependency archiver to v5 2022-05-02 15:03:40 +01:00
Renovate Bot
6f93c82c5a Update Test & linting packages 2022-05-02 14:01:35 +00:00
Renovate Bot
9589755925 Update Test & linting packages 2022-05-02 13:58:34 +00:00
Hannah Wolfe
4938d33a65 Fixed eslint-warnings in vhost middleware
- this middleware is a fork/copy of expressjs/vhost
- right now I don't want to rewrite the code to meet our eslint rules, so disabling them
2022-05-02 14:47:37 +01:00
Hannah Wolfe
e4af12e5c0 Added additional ghostErrorCode note for the major
refs: https://github.com/TryGhost/Toolbox/issues/316

- getting ready to do a major bump
2022-05-02 14:45:16 +01:00
Renovate Bot
470f7b14d0 Update dependency csso to v5 2022-05-02 13:49:38 +01:00
Hannah Wolfe
fc9e61ff35 Fixed linting error
- trying to call new RequestNotAcceptableError with a variable triggers a lint warning in newer versions of eslint-plugin-ghost
- this workaround is worth it for the safety of not allowing single strings to be passed in!
2022-05-02 13:47:29 +01:00
Hannah Wolfe
a6e204b829 Deprecated handleJSONResponse
- this middleware block is used in v4 but not in v5
- we want to remove it and then rename handleJSONResponseV2 so that we have one single consistent error handling block
2022-05-02 13:43:48 +01:00
Renovate Bot
1ed9d1ef34 Update dependency express to v4.18.1 2022-04-29 20:53:08 +00:00
Fabien "egg" O'Carroll
918db79aa8 Published new versions
- @tryghost/limit-service@1.1.0
 - @tryghost/mw-error-handler@0.2.2
 - @tryghost/mw-session-from-token@0.1.30
 - @tryghost/session-service@0.1.40
 - @tryghost/vhost-middleware@1.0.24
2022-04-27 11:24:20 +01:00
Fabien "egg" O'Carroll
9a3bb767f5 Added newsletter flag to limits service
refs https://github.com/TryGhost/Team/issues/1549

Adding the name of the flag to config.js is a requirment for using the flag
2022-04-27 11:22:34 +01:00
Renovate Bot
57b00c5ec6 Update dependency supertest to v6.2.3 2022-04-27 00:17:55 +00:00
Renovate Bot
764d570da7 Update dependency @tryghost/errors to v1.2.12 2022-04-26 18:07:55 +00:00
Renovate Bot
70c6263ea1 Update dependency express to v4.18.0 2022-04-25 20:53:02 +00:00
Naz
e67595fe51 Published new versions
- @tryghost/api-version-compatibility-service@0.1.1
 - @tryghost/database-info@0.3.3
 - @tryghost/mw-api-version-mismatch@0.1.1
 - @tryghost/version-notifications-data-service@0.1.0
2022-04-22 14:48:16 +08:00
Naz
48c7c9b73a Implemented a version notification data service
refs https://github.com/TryGhost/Toolbox/issues/292

- The version notification data service serves as data manger for version compatibility service
- There's not much logic mostly fetching data from proficed services and filtering/serializing it into a needed format
2022-04-22 14:47:18 +08:00
Naz
38dc003258 Added scaffolding for version notification data service
refs https://github.com/TryGhost/Toolbox/issues/292

- This will be filled up with version nofitication data access logic
2022-04-22 14:47:18 +08:00
Renovate Bot
12f823c677 Update dependency knex to v2 2022-04-21 20:54:58 +00:00
Renovate Bot
e3b7a15d30 Update dependency c8 to v7.11.2 2022-04-21 12:59:13 +00:00
Naz
014fafbafb Published new versions
- @tryghost/adapter-manager@0.2.29
 - @tryghost/api-version-compatibility-service@0.1.0
 - @tryghost/bootstrap-socket@0.2.18
 - @tryghost/config-url-helpers@0.1.6
 - @tryghost/constants@1.0.3
 - @tryghost/database-info@0.3.2
 - @tryghost/image-transform@1.0.30
 - @tryghost/job-manager@0.8.22
 - @tryghost/limit-service@1.0.11
 - @tryghost/minifier@0.1.13
 - @tryghost/moleculer-service-from-class@0.2.24
 - @tryghost/mw-api-version-mismatch@0.1.0
 - @tryghost/mw-error-handler@0.2.1
 - @tryghost/mw-session-from-token@0.1.29
 - @tryghost/mw-update-user-last-seen@0.1.4
 - @tryghost/package-json@1.0.19
 - @tryghost/pretty-cli@1.2.25
 - @tryghost/promise@0.1.16
 - @tryghost/release-utils@0.7.13
 - @tryghost/security@0.2.16
 - @tryghost/session-service@0.1.39
 - @tryghost/settings-path-manager@0.1.5
 - @tryghost/vhost-middleware@1.0.23
 - @tryghost/zip@1.1.23
2022-04-21 20:58:17 +08:00
Naz
d5d594c72a Added test coverage to mw-api-version-mismatch
refs https://github.com/TryGhost/Toolbox/issues/292

- There's no good reason to not write tests!
2022-04-21 20:29:52 +08:00
Naz
f21a403538 Fixed incompatibility subject line
refs https://github.com/TryGhost/Toolbox/issues/292

- This is the subject line with the latest proposed copy
2022-04-21 16:01:56 +08:00
Naz
8414e927f9 Added handling of multiple owners to notify
refs https://github.com/TryGhost/Toolbox/issues/292

- There can be multiple users in the Ghost instance that should be notifiied about version mismatch. Following the logic of the security notifications these are users with 'Owner' and 'Administrator' roles. To have the most up to date list of the emails to notify the emails fetching was made dinamic and is now passed in as a 'fetchEmailsToNotify' function.
- Also fixed the subject of the email to match the final copy
2022-04-21 15:57:43 +08:00
Naz
258b0acc51 Added specific 'code' properties for RequestNotAcceptableError
refs https://github.com/TryGhost/Toolbox/issues/292

- There's a need to distinguish different types of RequestNotAcceptableError erros by their code. The code is also having an instructional name to give it more explicit utility (nice clue for a developer seeing the error)
2022-04-21 15:57:43 +08:00
Naz
4873303658 Added handling for version missmatch as a midleware
refs https://github.com/TryGhost/Toolbox/issues/292

- This middleware is meant to deal with version missmatch erros and call a service that does all the business logic. Having this handling in a separate module allows for thisngs to be loosely coupled
2022-04-21 15:57:43 +08:00
Naz
a7fccf1bf8 Fixed email sending
refs https://github.com/TryGhost/Toolbox/issues/292

- The standard sendEmail function used in Ghost accepts three non-optional parameters: to, subject, and html. Have extended the usage with these three required fields
2022-04-21 15:57:43 +08:00
Naz
786f5429db Bootstrapped api version mismatch middleware
refs https://github.com/TryGhost/Toolbox/issues/292

- Fresh package out of Super Slimer and removed outdated patters, like using "should"
2022-04-21 15:57:43 +08:00
Naz
188707c5bb Added previously handled checking logic
refs https://github.com/TryGhost/Toolbox/issues/292

- Added additional logic needed to check if the passed in `Accept-Version` header has been handled
2022-04-21 15:57:43 +08:00
Naz
a009616206 Removed useless code 2022-04-21 15:57:43 +08:00
Naz
a8333f22d8 Added bare bones functionality sending an email
refs https://github.com/TryGhost/Toolbox/issues/292

- Super happy path scenario which handles sending information with some basic incompatibility information
- It's meant to be built up upon! More to follow :)
2022-04-21 15:57:43 +08:00
Naz
e66ef401bd Removed boilerplate test suite 2022-04-21 15:57:43 +08:00
Naz
e247c6b9a7 Removed should dependency 2022-04-21 15:57:43 +08:00
Naz
178856cf82 Bootstrapped api version compatibility package
refs https://github.com/TryGhost/Toolbox/issues/292

- Fresh package out of Super Slimer
2022-04-21 15:57:43 +08:00
Renovate Bot
430608c9c3 Update dependency c8 to v7.11.2 2022-04-20 18:23:57 +00:00
Renovate Bot
59795bb312 Update dependency @tryghost/errors to v1.2.11 2022-04-18 21:03:51 +00:00
Renovate Bot
8a29c2d8d9 Update dependency knex to v1.0.7 2022-04-13 12:20:36 +00:00
Renovate Bot
65b91e4895 Update dependency @sinonjs/fake-timers to v9.1.2 2022-04-13 10:09:23 +00:00
Naz
ebc8881d65 Renamed variables to match their content
refs https://github.com/TryGhost/Toolbox/issues/280

- The naming of variables should've been vice-versa. Should make the code less confusing now
2022-04-13 13:30:16 +08:00
Renovate Bot
6804e5d2c6 Update dependency knex to v1.0.6 2022-04-12 11:28:36 +00:00
Naz
129bf04b0e Published new versions
- @tryghost/database-info@0.3.1
 - @tryghost/mw-error-handler@0.2.0
2022-04-08 14:30:50 +08:00
Naz
ee7655213e Added 406 response for outdated Ghost instance
refs https://github.com/TryGhost/Toolbox/issues/280

- When an outdated client receives a 404 as a response there's no clear way to act on it. Plain 404 says nothing about need to update.
- In such cases the resourceNotFound handler should return a 406 error indicating the Ghost instance needs an update.
2022-04-08 12:52:41 +08:00
Naz
88500e0704 Added 406 response for outdated API clients
refs https://github.com/TryGhost/Toolbox/issues/280

- When an outdated client receives a 404 as a response there's no clear way to act on it. Plain 404 says nothing about need to update.
- In such cases the resourceNotFound handler should return a 406 error indicating the client need to update.
2022-04-08 12:40:37 +08:00
Naz
d81accdebf Changed require declaration to be more readable
no issue

-  When adding more methods under test to this file the require statement will becom difficult to read in one long line. Multiline statement is way nicer to track in git history too
2022-04-08 11:24:03 +08:00
Renovate Bot
cca620cb35 Update dependency knex to v1.0.5 2022-04-04 21:38:20 +00:00
Sam Lord
c742848f57 Published new versions
- @tryghost/mw-error-handler@0.1.8
2022-04-04 17:16:15 +01:00
Sam Lord
5537942bdf Updated @tryghost/errors
no issue

Prevents errors with `hideStack: true` from displaying the stack
2022-04-04 17:13:13 +01:00
Daniel Lockyer
43f559690b Published new versions
- @tryghost/package-json@1.0.18
2022-04-01 14:13:28 +01:00
Daniel Lockyer
d29b8e65ec Fixed symlinked directories ignored when reading packages
refs bd6a295674

- earlier this week I refactored this block of code to get rid of
  explicit `stat` calls, to make the fs operations a little more
  lightweight
- I inadvertantly forgot that readdir doesn't follow symlinks, and we
  were previously use stat that does, so it was ignoring themes that were
  symlinked into `content/themes`
- instead of rolling back my change, I've added an if-statement to call
  `fs.stat` and check the origin of the symlink to see if it's a
  directory
- also added a test that fails without this change
2022-04-01 14:07:04 +01:00
Daniel Lockyer
22d13193e8 Deeleted unused module
- this was an experiment that didn't pan out, and I don't plan on using
  it again
2022-04-01 12:47:16 +01:00
Daniel Lockyer
a19fe06baf Published new versions
- @tryghost/knex-sqlite3@0.1.1
2022-03-29 08:44:38 +01:00
Daniel Lockyer
f39a1ce06c Added sqlite3 as an optional dependency
refs https://github.com/TryGhost/Toolbox/issues/213

- this bundles SQLite so it is abstracted away from consumers of this
  package
2022-03-29 08:43:29 +01:00
Daniel Lockyer
03ba3a4d43 Published new versions
- @tryghost/knex-sqlite3@0.1.0
2022-03-28 21:59:44 +01:00
Daniel Lockyer
cf334a6b57 Added @tryghost/knex-sqlite3 package
refs https://github.com/TryGhost/Toolbox/issues/213

- this package exports a custom dialect that extends `sqlite3` but uses
  the original `node-sqlite3` module
2022-03-28 21:59:18 +01:00
Daniel Lockyer
1a6eaff799 Published new versions
- @tryghost/database-info@0.3.0
 - @tryghost/image-transform@1.0.29
 - @tryghost/package-json@1.0.17
 - @tryghost/zip@1.1.22
2022-03-28 13:59:37 +01:00
Daniel Lockyer
aad55e83d9 Added helper methods for detecting database from config
refs https://github.com/TryGhost/Toolbox/issues/213

- this means we can remove some more hardcoded strings and refactor
  database code to be more abstract
2022-03-28 13:54:50 +01:00
Renovate Bot
446deab43b Update dependency fs-extra to v10 2022-03-28 11:32:09 +01:00
Daniel Lockyer
bd6a295674 Refactored to more efficient fs call for reading packages
- we don't need to do both a `fs.readdir` and a `fs.stat` because
  `fs.readdir` has the `withFileTypes` which returns the directory entry
  info and so this avoids an extra stat syscall
2022-03-28 11:31:45 +01:00
Daniel Lockyer
14a087536f Published new versions
- @tryghost/minifier@0.1.12
 - @tryghost/mw-error-handler@0.1.7
 - @tryghost/update-check-service@0.3.2
 - @tryghost/zip@1.1.21
2022-03-24 11:02:25 +00:00
Renovate Bot
6a805a436d Update dependency @tryghost/errors to v1 2022-03-24 10:39:08 +00:00
Daniel Lockyer
4b1db9d998 Unpinned dependencies
- libraries should have dependencies unpinned so we can rely on
  lockfiles and reduce duplicates
- this commit unpins a handful of dependencies
2022-03-24 10:31:31 +00:00
Daniel Lockyer
52365c6f99 Published new versions
- @tryghost/mw-error-handler@0.1.6
2022-03-24 10:10:26 +00:00
Daniel Lockyer
10e97cad23 Handled unknown errors when preparing user message
- in the event we get an unknown error bubble up, we don't handle the
  templating on the error name
- `@tryghost/tpl` throws an error because we pass an undefined string:
  `Cannot read properties of undefined (reading 'replace')`
- this commit adds handling to fallback to a different user message in
  that event so we don't cause a 500 error
2022-03-24 10:06:55 +00:00
Sam Lord
866c746455 Published new versions
- @tryghost/database-info@0.2.5
 - @tryghost/mw-error-handler@0.1.5
2022-03-21 09:38:38 +00:00
Sam Lord
d65ba072f9 Split prepareError from prepareStack
no issue

Change to error handling caused all theme errors to be reported in Sentry, this fix (and a respective fix in Ghost) allows the error to be prepared for sentry before replacing the stack
2022-03-21 09:38:05 +00:00
Renovate Bot
33948553e3 Update dependency knex to v1.0.4 2022-03-14 00:34:06 +00:00
Sam Lord
432ebed27c Published new versions
- @tryghost/job-manager@0.8.21
 - @tryghost/mw-error-handler@0.1.4
2022-03-11 10:48:00 +00:00
Sam Lord
51588c6a24 Ensure Sentry is triggered before replacing the stack trace
refs: https://github.com/TryGhost/Team/issues/1369

If we prepare the error for users to view before using Sentry, then the error passed to Sentry will have the stack trace removed for production environments.

@tryghost/errors@1.2.5 also made it so that the error is not mutated, but cloned and a new one is returned.
2022-03-11 10:47:26 +00:00
Renovate Bot
10e29837e5 Update dependency @sinonjs/fake-timers to v9.1.1 2022-03-07 01:24:01 +00:00
Daniel Lockyer
3675dbd3d7 Published new versions
- @tryghost/database-info@0.2.4
2022-03-02 14:31:00 +01:00
Daniel Lockyer
4acf78a08e Added basic tests for @tryghost/database-info
- these check a few of the imports and static functions
2022-03-02 14:29:16 +01:00
Daniel Lockyer
f77983061e Refactored exports into a class
- following internal feedback, a class with static methods makes more
  sense
2022-03-02 14:27:35 +01:00
Daniel Lockyer
ce5da19189 Published new versions
- @tryghost/database-info@0.2.3
2022-03-02 12:13:38 +01:00
Daniel Lockyer
032e9db2f1 Updated call signature of database-info lib
refs https://github.com/TryGhost/Toolbox/issues/174

- ok, iteration 3 on how this library should work
- 95% of my use cases just need to pass an knex instance and return if
  it's mysql/sqlite
- i don't want to have to initialize the class in this library to get
  that
- this commit reworks the public interface to return a function with
  some simple `is*` functions for those uses cases, or to return the
  class otherwise
2022-03-02 12:11:18 +01:00
Daniel Lockyer
3e9c584589 Published new versions
- @tryghost/database-info@0.2.2
2022-03-01 16:07:02 +01:00
Daniel Lockyer
d8d77ed0ba Added connection method to database info lib
- this allows you to pass in a different DB instance than the one that
  the library is initialized with
2022-03-01 16:05:27 +01:00
Daniel Lockyer
bb04fc49da Published new versions
- @tryghost/database-info@0.2.1
2022-03-01 09:05:02 +01:00
Daniel Lockyer
52eb3181ee Fixed undefined variable references
- this was missed during the previous refactoring
2022-03-01 09:04:05 +01:00
Daniel Lockyer
3324ffc788 Published new versions
- @tryghost/adapter-manager@0.2.28
 - @tryghost/bootstrap-socket@0.2.17
 - @tryghost/config-url-helpers@0.1.5
 - @tryghost/constants@1.0.2
 - @tryghost/database-info@0.2.0
 - @tryghost/image-transform@1.0.28
 - @tryghost/job-manager@0.8.20
 - @tryghost/limit-service@1.0.10
 - @tryghost/minifier@0.1.11
 - @tryghost/moleculer-service-from-class@0.2.23
 - @tryghost/mw-error-handler@0.1.3
 - @tryghost/mw-session-from-token@0.1.28
 - @tryghost/mw-update-user-last-seen@0.1.3
 - @tryghost/package-json@1.0.16
 - @tryghost/pretty-cli@1.2.24
 - @tryghost/promise@0.1.15
 - @tryghost/release-utils@0.7.12
 - @tryghost/security@0.2.15
 - @tryghost/session-service@0.1.38
 - @tryghost/settings-path-manager@0.1.4
 - @tryghost/vhost-middleware@1.0.22
 - @tryghost/zip@1.1.20
2022-03-01 08:40:52 +01:00
Daniel Lockyer
fbc2fc7f65 Altered function usage of @tryghost/database-info
refs https://github.com/TryGhost/Toolbox/issues/174

- this exposes `isMySQL` and `isSQLite` functions which can be used
  within Ghost to figure out which DB we are using
- also cleans up public properties of the class
2022-03-01 08:37:06 +01:00
Daniel Lockyer
3259994e4f Added --all flag to c8 commands
refs https://github.com/TryGhost/Toolbox/issues/203

- without `--all`, c8 will ignore files that aren't covered in tests, so
  they won't pull the test coverage down
- this means we have artificially high coverage scores
- this commit adds `--all` where previously missing
2022-02-21 12:50:26 +01:00
Renovate Bot
b7af869669 Update dependency express to v4.17.3 2022-02-17 03:48:16 +00:00
Daniel Lockyer
5bdc756dec Moved @tryghost/errors to Framework monorepo
refs https://github.com/TryGhost/Toolbox/issues/212

- we've moved `@tryghost/errors` to the Framework monorepo so this
  commit deletes the remaining files in Utils
2022-02-16 09:14:03 +01:00
Renovate Bot
14f37b4932 Update dependency sharp to ^0.30.0 2022-02-16 07:16:50 +01:00
Renovate Bot
3da7577a3a Update dependency folder-hash to v4.0.2 2022-02-16 00:22:11 +00:00
Daniel Lockyer
cfb1ded0d0 Published new versions
- @tryghost/job-manager@0.8.19
 - @tryghost/release-utils@0.7.11
 - @tryghost/update-check-service@0.3.1
 - @tryghost/vhost-middleware@1.0.21
2022-02-04 14:27:23 +01:00
Daniel Lockyer
81458ab4be Updated default changelog content if no emojis exist
no issue

- taken from internal feedback
2022-02-04 14:25:44 +01:00
Renovate Bot
30527371fc Update dependency @sinonjs/fake-timers to v9.1.0 2022-02-03 12:13:52 +00:00
Renovate Bot
6885cdbc90 Update dependency @sinonjs/fake-timers to v9 2022-01-28 14:08:17 +00:00
Daniel Lockyer
636d884322 Moved @tryghost/update-check-service from Core monorepo
no issue

- this packages belongs in here and means we can archive the Core repo
  once complete
2022-01-20 15:25:00 +00:00
Renovate Bot
d9ebfa3a37 Update Test & linting packages 2022-01-20 15:18:35 +00:00
Renovate Bot
765ac29f2b Update dependency emoji-regex to v10 2022-01-20 14:48:11 +00:00
Renovate Bot
3df67f8353 Update dependency supertest to v6.2.2 2022-01-18 23:06:28 +00:00
Daniel Lockyer
19d2411f2b Published new versions
- @tryghost/adapter-manager@0.2.27
 - @tryghost/bootstrap-socket@0.2.16
 - @tryghost/config-url-helpers@0.1.4
 - @tryghost/constants@1.0.1
 - @tryghost/database-info@0.1.0
 - @tryghost/errors@1.2.1
 - @tryghost/image-transform@1.0.27
 - @tryghost/job-manager@0.8.18
 - @tryghost/limit-service@1.0.9
 - @tryghost/minifier@0.1.10
 - @tryghost/moleculer-service-from-class@0.2.22
 - @tryghost/mw-error-handler@0.1.2
 - @tryghost/mw-session-from-token@0.1.27
 - @tryghost/mw-update-user-last-seen@0.1.2
 - @tryghost/package-json@1.0.15
 - @tryghost/pretty-cli@1.2.23
 - @tryghost/promise@0.1.14
 - @tryghost/release-utils@0.7.10
 - @tryghost/security@0.2.14
 - @tryghost/session-service@0.1.37
 - @tryghost/settings-path-manager@0.1.3
 - @tryghost/vhost-middleware@1.0.20
 - @tryghost/zip@1.1.19
2022-01-18 09:08:09 +00:00
Daniel Lockyer
70ecba06ca Added @trghost/database-info package
refs https://github.com/TryGhost/Toolbox/issues/175

- this library is a small utility around `knex` that returns info on the
  database used - particularly, the version used
- this will initially be used within Ghost but it can be extended to
  other databases and projects if needed
2022-01-18 09:06:44 +00:00