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
- 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
- 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
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
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.
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
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
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
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