Commit Graph

512 Commits

Author SHA1 Message Date
Naz
e26597e045 Added header to the section
no issue

- Made it clear what this part of the doc is about
2021-05-11 17:15:22 +04:00
Naz
7ec5e4bd72 Added documentation for names of limits
refs https://github.com/TryGhost/Team/issues/510

- There's a limited type of limit "names" supported by the limit service, so worth specifying them upfront. Also some limits are univerally aplicable like "flag" or "allowlist" and some are restricted like "max" and "maxPeriodic"
2021-05-11 17:14:58 +04:00
Naz
420ba250a3 Added documentation for types of limits
refs https://github.com/TryGhost/Team/issues/588
refs https://github.com/TryGhost/Team/issues/510

- There's a limited type of limits supported by the limit service and it's worth to have a conceptual description of how they work and how to use them
2021-05-11 17:13:18 +04:00
Naz
12b31a7b4b Added customThemes limit to config example
refs https://github.com/TryGhost/Team/issues/590

- The "allowList" type of configuration was missing from the example, added it for reference
2021-05-11 16:31:34 +04:00
Naz
37fa30fd6b Added emails limit to documentation example
refs https://github.com/TryGhost/Team/issues/588

- The "emails" limit was added with recent changes and could be configured as either "flag" or "maxPeridoci" type of limit
- More docs on different types of limits to follow
2021-05-11 16:29:10 +04:00
Renovate Bot
e6343c985f Update dependency date-fns to v2.21.3 2021-05-10 01:34:46 +00:00
Naz
30f1194cf9 Published new versions
- @tryghost/limit-service@0.5.0
 - @tryghost/package-json@0.1.1
2021-05-07 18:23:35 +04:00
Naz
612cc2b513 Added addedCount to max and maxPeriodic limits
refs https://github.com/TryGhost/Team/issues/588

- The `addedCount` parameter in `errorIfWouldGoOverLimit` method allows to specify a custom resource count that is about to be added. Example usecase is when we'd want to send a 100 emails and current limit is 99, and none have been sent so far. With previous implementation the check would've passed because it only checked for single resource that would be added through "+1". Current implementation allows to specify the amount of recources to be added
2021-05-07 18:13:01 +04:00
Naz
4f0a7fa1d3 Fixed query counting total emails sent in a period
refs https://github.com/TryGhost/Team/issues/588

- The previous query was quickly copied from stats-service which was using incorrect table for the count
- Updated version sums up email_count values for emails in given period of time
2021-05-07 17:58:01 +04:00
Daniel Lockyer
a81d90b126 Added c8 coverage to package-json tests
no issue

- this commit adds the c8 dependency to the `package-json`, and prepends
  it to the test alias so we can see the coverage in tests
- note: we're apparently already at 100%!
2021-05-07 12:36:36 +01:00
Naz
763875a15b Published new versions
- @tryghost/job-manager@0.8.5
 - @tryghost/limit-service@0.4.4
 - @tryghost/mw-session-from-token@0.1.20
 - @tryghost/package-json@0.1.0
 - @tryghost/session-service@0.1.21
 - @tryghost/zip@1.1.13
2021-05-07 15:00:07 +04:00
Naz
bd360e620f Removed date-fns dev dependency
refs https://github.com/TryGhost/Team/issues/588
refs 6a1e722648

- date-fns proved to be unable to manipulate dates in consistent UTC format and was substitured with luxon in referenced commit. Removing it from tests for consistency
2021-05-07 14:56:40 +04:00
Naz
6a1e722648 Fixed time difference calculation in DST timezones
refs https://github.com/TryGhost/Team/issues/588

- date-fns proved to be unable to manipulate dates consistently in UTC timezone. Keeping all calculations and formatting in UTC is key to have consistency in dates when dealing in inter-system dates
- day.js also failed the test for correct UTC manipulation. See https://github.com/iamkun/dayjs/issues/1271 for example bug which prevents from consistent correct calculation
- luxon was the best option which WORKED. It's also a recommended successor for moment.js with really nice docs and active support
2021-05-07 14:41:52 +04:00
Naz
16e21236ba Clarified test name 2021-05-07 11:46:33 +04:00
Renovate Bot
131011fad4 Update dependency extract-zip to v2.0.1 2021-05-06 20:06:06 +00:00
Renovate Bot
8b576d501a Update dependency @types/express to v4.17.11 2021-05-06 18:16:07 +00:00
Renovate Bot
3d4e65ebc3 Pin dependency date-fns to 2.21.2 2021-05-06 16:14:06 +00:00
Daniel Lockyer
e0a966d6af Fixed package-json test requires
no issue

- these tests have just been extracted from Ghost so the paths are wrong
  and they're missing the global utils import
2021-05-06 15:16:29 +01:00
Daniel Lockyer
e74c682cba Added export for package-json library contents
no issue

- our code is already in the `lib` folder so we just need to export it
2021-05-06 15:16:29 +01:00
Daniel Lockyer
3f1462296e Added required dependencies for package-json
no issue

- this package has just been extracted from Ghost and we need to add the
  dependencies it uses into the `package.json`
2021-05-06 15:16:29 +01:00
Daniel Lockyer
d2d4bbe8ed Merged package-json files and history from TryGhost/Ghost 2021-05-06 15:16:29 +01:00
Daniel Lockyer
a0e2c4d45f Added initial package-json package
no issue

- this adds the templated package from Slimer ready for pulling the
  history in from Ghost
2021-05-06 15:16:29 +01:00
Naz
9c738b13d1 Added added maxPeriodical checks
refs https://github.com/TryGhost/Team/issues/588

- This bit is putting together all the pieces for periodical limit checks. More tests are to come
2021-05-06 17:48:31 +04:00
Naz
ebfad4bea4 Added currentCountQuery for emails limit
refs https://github.com/TryGhost/Team/issues/588

- This is a basic implementation which needs a review. Implemented it to fix failing tests in main
- Start date is expected to come formatted for DB's needs
2021-05-06 17:37:50 +04:00
Daniel Lockyer
95cfa97747 Changed Error to IncorrectUsageError in package-json
no issue

- `Error` is very generic for this case and `IncorrectUsageError`
  will populate the resulting error with the correct error code
- the `message` was pulled out to its own statement so we can avoid long
  lines
2021-05-06 13:22:59 +01:00
Daniel Lockyer
eea93d55f4 Moved package-json wrapper outside implementation folder
no issue

- we're preparing the `package-json` lib to be extracted out of Ghost into
  its own package so moving the initialization wrapper outside of the
  folder makes the process a lot easier
2021-05-06 12:56:21 +01:00
Naz
0d242b96ef Added maxPeriodic limit support to limit service
refs https://github.com/TryGhost/Team/issues/588

- The limit service can now be initialized with a config which has a 'maxPeriodic' key identifying it's a special type of limit taking subscription cycles into account
- Example configuration can be found in the included unit tests
2021-05-06 15:50:36 +04:00
Naz
1483a5c758 Fixed IncorrectUsageError initialization
no issue

- The error takes in an options object which should contain "message" property instead of a string
2021-05-06 15:50:36 +04:00
Naz
4f41c2a206 Added utility calculating date of last period start
refs https://github.com/TryGhost/Team/issues/588

- There's a need to calculate when the last period has started to be able to generate correct counting queries for the "maxPeriodical" limit
- It operatest on ISO strings as an input and output in UTC timezone to take timezone calculations out of the equation
- Refer to inclucded unit tests for example calculations
2021-05-06 15:50:36 +04:00
Naz
413549f9c0 Added "maxPeriodic" limit type
refs https://github.com/TryGhost/Team/issues/588

- This is a scaffolding for a new limit type which should allow to check limits based on periods (for example related to billing, subscription cycles)
2021-05-06 15:50:36 +04:00
Renovate Bot
84fa478e0f Update dependency date-fns to v2.21.2 2021-05-05 09:35:35 +00:00
Naz
a240582094 Fixed typos 2021-05-05 12:42:30 +04:00
Hannah Wolfe
e1b18aba2c Moved i18n to shared
refs 90ca836cb6

- i18n is used everywhere but only requires shared or external packages, therefore it's a good candidate for living in shared
- this reduces invalid requires across frontend and server, and lets us use it everywhere until we come up with a better option
2021-05-04 13:03:38 +01:00
Hannah Wolfe
90ca836cb6 Expanded requires of lib/common i18n and events
- Having these as destructured from the same package is hindering refactoring now
- Events should really only ever be used server-side
- i18n should be a shared module for now so it can be used everywhere until we figure out something better
- Having them seperate also allows us to lint them properly
2021-05-03 17:14:52 +01:00
Naz
9c668317de Published new versions
- @tryghost/limit-service@0.4.3
2021-05-03 12:05:01 +04:00
Naz
47a6956175 Added test coverage for flag type of limits
refs https://github.com/TryGhost/Team/issues/588

- This is by no means an thorought test coverage but ensures the basics work and provides examples of how the limit should be used. To be continued :)
2021-05-03 12:02:01 +04:00
Naz
a5eba60c23 Added flag limit support for "emails"
refs https://github.com/TryGhost/Team/issues/588

- This is a step 1 in the introduction of email limits. Next step would be allowing this limit to support "periodical limit checks"
2021-05-03 11:47:55 +04:00
Naz
d720851ec6 Fixed failing build
refs 8d97bdec6e

- Had a stray code commited in refed commit
2021-05-03 11:11:23 +04:00
Naz
8d97bdec6e Added notes about how config module works
no issue

- I was a little confused seeing an empty object in the config moduele -  `customThemes: {}` and initially thought we could get rid of it to reduce the amount of code. Afte quick dig found out that there's a purpuse behind it being there! It's an allowlist of the properites that can be defined within the limit service
- Added notes to clarify the usecase and avoid ambiguity in the future
2021-05-03 11:07:57 +04:00
Daniel Lockyer
098801de2c Published new versions
- @tryghost/adapter-manager@0.2.12
 - @tryghost/errors@0.2.11
 - @tryghost/image-transform@1.0.11
 - @tryghost/job-manager@0.8.4
 - @tryghost/limit-service@0.4.2
 - @tryghost/moleculer-service-from-class@0.2.15
 - @tryghost/mw-session-from-token@0.1.19
 - @tryghost/pretty-cli@1.2.17
 - @tryghost/promise@0.1.8
 - @tryghost/release-utils@0.6.14
 - @tryghost/security@0.2.8
 - @tryghost/session-service@0.1.20
 - @tryghost/zip@1.1.12
2021-04-19 10:25:57 +01:00
Naz
5c89a5bec2 Published new versions
- @tryghost/adapter-manager@0.2.11
 - @tryghost/job-manager@0.8.3
 - @tryghost/limit-service@0.4.1
 - @tryghost/moleculer-service-from-class@0.2.14
 - @tryghost/mw-session-from-token@0.1.18
 - @tryghost/session-service@0.1.19
2021-04-17 08:12:34 +12:00
Renovate Bot
3184ca584d Pin dependencies 2021-04-16 12:28:10 +00:00
Daniel Lockyer
efac091357 Re-pinned @types/express to 4.17.x
no issue

- later updates of this package contain different types that we haven't
  changed our code for yet, so I need to revert the pinning to force
  this specific version for now
2021-04-16 13:26:34 +01:00
Daniel Lockyer
d37146f6fd Re-pinned extract-zip to v2.0.0
no issue

- `extract-zip` v2.0.1 currently requires Node 10.17.0, which we're not
  ready to bump our minimums to
- we'll probably bump this when we drop Node 10 at the end of April 2021
2021-04-16 13:13:55 +01:00
Daniel Lockyer
713cbd3cc4 Unpinned all dependencies
no issue

- this Utils repo contains libraries, whose dependencies should not be
  pinned in order to reduce multiple versions of the same package
  appearing for consumers
2021-04-16 13:06:54 +01:00
Renovate Bot
2d0ee67e9c Update dependency sharp to v0.28.1 2021-04-15 14:14:46 +01:00
Renovate Bot
e703a414b2 Update dependency date-fns to v2.21.1 2021-04-15 09:45:52 +00:00
Renovate Bot
bc2b3aa6d1 Update dependency @tryghost/string to v0.1.17 2021-04-15 10:42:52 +01:00
Renovate Bot
0ad3198d17 Update dependency date-fns to v2.21.0 2021-04-14 13:51:00 +00:00
Renovate Bot
989c7bee30 Update dependency @sinonjs/fake-timers to v7 2021-04-14 13:50:00 +00:00