diff --git a/ghost/core/test/e2e-api/admin/__snapshots__/recommendations.test.js.snap b/ghost/core/test/e2e-api/admin/__snapshots__/recommendations.test.js.snap index 47376a62f4..49a7001ac3 100644 --- a/ghost/core/test/e2e-api/admin/__snapshots__/recommendations.test.js.snap +++ b/ghost/core/test/e2e-api/admin/__snapshots__/recommendations.test.js.snap @@ -158,7 +158,7 @@ Object { "one_click_subscribe": false, "reason": "Because cats are cute", "title": "Cat Pictures", - "updated_at": null, + "updated_at": StringMatching /\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}T\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\\\.000Z/, "url": "https://catpictures.com/", }, ], @@ -169,7 +169,7 @@ exports[`Recommendations Admin API Can edit recommendation 2: [headers] 1`] = ` Object { "access-control-allow-origin": "http://127.0.0.1:2369", "cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0", - "content-length": "355", + "content-length": "377", "content-type": "application/json; charset=utf-8", "content-version": StringMatching /v\\\\d\\+\\\\\\.\\\\d\\+/, "etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/, diff --git a/ghost/core/test/e2e-api/admin/recommendations.test.js b/ghost/core/test/e2e-api/admin/recommendations.test.js index 09f7aa7c7f..d533ca9010 100644 --- a/ghost/core/test/e2e-api/admin/recommendations.test.js +++ b/ghost/core/test/e2e-api/admin/recommendations.test.js @@ -13,7 +13,8 @@ describe('Recommendations Admin API', function () { // Clear placeholders for (const recommendation of (await recommendationsService.repository.getAll())) { - await recommendationsService.repository.remove(recommendation.id); + recommendation.delete(); + await recommendationsService.repository.save(recommendation); } }); @@ -115,7 +116,8 @@ describe('Recommendations Admin API', function () { recommendations: [ { id: anyObjectId, - created_at: anyISODateTime + created_at: anyISODateTime, + updated_at: anyISODateTime } ] }); diff --git a/ghost/recommendations/package.json b/ghost/recommendations/package.json index 36d012d8cc..318fe058cc 100644 --- a/ghost/recommendations/package.json +++ b/ghost/recommendations/package.json @@ -22,7 +22,6 @@ "build" ], "devDependencies": { - "@tryghost/errors": "1.2.24", "@types/node": "^20.5.7", "c8": "8.0.1", "mocha": "10.2.0", @@ -30,5 +29,8 @@ "ts-node": "10.9.1", "typescript": "5.2.2" }, - "dependencies": {} + "dependencies": { + "@tryghost/tpl": "0.1.25", + "@tryghost/errors": "1.2.25" + } } diff --git a/ghost/recommendations/src/InMemoryRecommendationRepository.ts b/ghost/recommendations/src/InMemoryRecommendationRepository.ts index bd8b77dece..8c473080fc 100644 --- a/ghost/recommendations/src/InMemoryRecommendationRepository.ts +++ b/ghost/recommendations/src/InMemoryRecommendationRepository.ts @@ -1,8 +1,9 @@ import {Recommendation} from "./Recommendation"; import {RecommendationRepository} from "./RecommendationRepository"; +import {InMemoryRepository} from '@tryghost/in-memory-repository'; -export class InMemoryRecommendationRepository implements RecommendationRepository { - recommendations: Recommendation[] = [ +export class InMemoryRecommendationRepository extends InMemoryRepository implements RecommendationRepository { + store: Recommendation[] = [ new Recommendation({ title: "She‘s A Beast", reason: "She helped me get back into the gym after 8 years of chilling", @@ -50,32 +51,7 @@ export class InMemoryRecommendationRepository implements RecommendationRepositor }) ]; - async add(recommendation: Recommendation): Promise { - this.recommendations.push(recommendation); - return Promise.resolve(recommendation); - } - - async edit(id: string, data: Partial): Promise { - const existing = await this.getById(id); - const updated = {...existing, ...data}; - this.recommendations = this.recommendations.map(r => r.id === id ? updated : r); - return Promise.resolve(updated); - } - - async remove(id: string): Promise { - await this.getById(id); - this.recommendations = this.recommendations.filter(r => r.id !== id); - } - - async getById(id: string): Promise { - const existing = this.recommendations.find(r => r.id === id); - if (!existing) { - throw new Error("Recommendation not found"); - } - return Promise.resolve(existing); - } - - async getAll(): Promise { - return Promise.resolve(this.recommendations); + toPrimitive(entity: Recommendation): object { + return entity; } } diff --git a/ghost/recommendations/src/Recommendation.ts b/ghost/recommendations/src/Recommendation.ts index 24c2764cdc..512ae78549 100644 --- a/ghost/recommendations/src/Recommendation.ts +++ b/ghost/recommendations/src/Recommendation.ts @@ -1,5 +1,17 @@ import ObjectId from "bson-objectid"; +export type AddRecommendation = { + title: string + reason: string|null + excerpt: string|null // Fetched from the site meta data + featuredImage: string|null // Fetched from the site meta data + favicon: string|null // Fetched from the site meta data + url: URL + oneClickSubscribe: boolean +} + +export type EditRecommendation = Partial + export class Recommendation { id: string title: string @@ -12,6 +24,12 @@ export class Recommendation { createdAt: Date updatedAt: Date|null + #deleted: boolean; + + get deleted() { + return this.#deleted; + } + constructor(data: {id?: string, title: string, reason: string|null, excerpt: string|null, featuredImage: string|null, favicon: string|null, url: URL, oneClickSubscribe: boolean, createdAt?: Date, updatedAt?: Date|null}) { this.id = data.id ?? ObjectId().toString(); this.title = data.title; @@ -25,5 +43,18 @@ export class Recommendation { this.createdAt.setMilliseconds(0); this.updatedAt = data.updatedAt ?? null; this.updatedAt?.setMilliseconds(0); + this.#deleted = false; + } + + edit(properties: Partial) { + Object.assign(this, properties); + this.createdAt.setMilliseconds(0); + + this.updatedAt = new Date(); + this.updatedAt.setMilliseconds(0); + } + + delete() { + this.#deleted = true; } } diff --git a/ghost/recommendations/src/RecommendationController.ts b/ghost/recommendations/src/RecommendationController.ts index a0fb55dd9b..e2e0dea566 100644 --- a/ghost/recommendations/src/RecommendationController.ts +++ b/ghost/recommendations/src/RecommendationController.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import {Recommendation} from "./Recommendation"; +import {AddRecommendation, EditRecommendation, Recommendation} from "./Recommendation"; import {RecommendationService} from "./RecommendationService"; import errors from '@tryghost/errors'; @@ -77,7 +77,7 @@ export class RecommendationController { const recommendation = frame.data.recommendations[0]; - const cleanedRecommendation: Omit = { + const cleanedRecommendation: AddRecommendation = { title: validateString(recommendation, "title") ?? '', url: validateURL(recommendation, "url")!, @@ -93,13 +93,13 @@ export class RecommendationController { return new Recommendation(cleanedRecommendation); } - #getFrameRecommendationEdit(frame: Frame): Partial { + #getFrameRecommendationEdit(frame: Frame): Partial { if (!frame.data || !frame.data.recommendations || !frame.data.recommendations[0]) { throw new errors.BadRequestError(); } const recommendation = frame.data.recommendations[0]; - const cleanedRecommendation: Partial = { + const cleanedRecommendation: EditRecommendation = { title: validateString(recommendation, "title", {required: false}), url: validateURL(recommendation, "url", {required: false}), oneClickSubscribe: validateBoolean(recommendation, "one_click_subscribe", {required: false}), diff --git a/ghost/recommendations/src/RecommendationRepository.ts b/ghost/recommendations/src/RecommendationRepository.ts index b3c0f7cdb3..de31c312a2 100644 --- a/ghost/recommendations/src/RecommendationRepository.ts +++ b/ghost/recommendations/src/RecommendationRepository.ts @@ -1,9 +1,7 @@ import {Recommendation} from "./Recommendation"; export interface RecommendationRepository { - add(recommendation: Recommendation): Promise - edit(id: string, data: Partial): Promise - remove(id: string): Promise - getById(id: string): Promise - getAll(): Promise + save(entity: Recommendation): Promise; + getById(id: string): Promise; + getAll(): Promise; }; diff --git a/ghost/recommendations/src/RecommendationService.ts b/ghost/recommendations/src/RecommendationService.ts index 9b0d581e72..c540ee4987 100644 --- a/ghost/recommendations/src/RecommendationService.ts +++ b/ghost/recommendations/src/RecommendationService.ts @@ -1,11 +1,17 @@ import {Recommendation} from "./Recommendation"; import {RecommendationRepository} from "./RecommendationRepository"; import {WellknownService} from "./WellknownService"; +import errors from "@tryghost/errors"; +import tpl from "@tryghost/tpl"; type MentionSendingService = { sendAll(options: {url: URL, links: URL[]}): Promise } +const messages = { + notFound: "Recommendation with id {id} not found" +} + export class RecommendationService { repository: RecommendationRepository; wellknownService: WellknownService; @@ -36,27 +42,41 @@ export class RecommendationService { } async addRecommendation(recommendation: Recommendation) { - const r = this.repository.add(recommendation); + this.repository.save(recommendation); await this.updateWellknown(); // Only send an update for the mentioned URL this.sendMentionToRecommendation(recommendation); - return r; + return recommendation; } async editRecommendation(id: string, recommendationEdit: Partial) { // Check if it exists const existing = await this.repository.getById(id); - const e = await this.repository.edit(existing.id, recommendationEdit); + if (!existing) { + throw new errors.NotFoundError({ + message: tpl(messages.notFound, {id}) + }); + } + + existing.edit(recommendationEdit); + await this.repository.save(existing); await this.updateWellknown(); - this.sendMentionToRecommendation(e); - return e; + this.sendMentionToRecommendation(existing); + return existing; } async deleteRecommendation(id: string) { const existing = await this.repository.getById(id); - await this.repository.remove(existing.id); + if (!existing) { + throw new errors.NotFoundError({ + message: tpl(messages.notFound, {id}) + }); + } + + existing.delete(); + await this.repository.save(existing); await this.updateWellknown(); // Send a mention (because it was deleted, according to the webmentions spec) diff --git a/ghost/recommendations/src/libraries.d.ts b/ghost/recommendations/src/libraries.d.ts index afc8627392..0c51d8d42e 100644 --- a/ghost/recommendations/src/libraries.d.ts +++ b/ghost/recommendations/src/libraries.d.ts @@ -1 +1,2 @@ declare module '@tryghost/errors'; +declare module '@tryghost/tpl'; diff --git a/yarn.lock b/yarn.lock index 294a582ced..cdf316f457 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2628,23 +2628,15 @@ resolved "https://registry.yarnpkg.com/@ebay/nice-modal-react/-/nice-modal-react-1.2.10.tgz#6b2406bfce4a5daffc43f5b85f5f238311cdfe93" integrity sha512-qNp8vQo5kPRwB9bHlkh8lcwH/0KFWpp58X/b9KaLB/gNlJ3W24nCT2l/qBBSnWgV7NEIq25uLowaPS2mbfpZiw== -"@elastic/elasticsearch@8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.6.0.tgz#c474f49808deee64b5bc5b8f938bf78f4468cb94" - integrity sha512-mN5EbbgSp1rfRmQ/5Hv7jqAK8xhGJxCg7G84xje8hSefE59P+HPPCv/+DgesCUSJdZpwXIo0DwOWHfHvktxxLw== +"@elastic/elasticsearch@8.5.0", "@elastic/elasticsearch@8.6.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.5.0.tgz#407aee0950a082ee76735a567f2571cf4301d4ea" + integrity sha512-iOgr/3zQi84WmPhAplnK2W13R89VXD2oc6WhlQmH3bARQwmI+De23ZJKBEn7bvuG/AHMAqasPXX7uJIiJa2MqQ== dependencies: - "@elastic/transport" "^8.3.1" + "@elastic/transport" "^8.2.0" tslib "^2.4.0" -"@elastic/elasticsearch@8.9.0": - version "8.9.0" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.9.0.tgz#d132021c6c12e4171fe14371609a5c69b535edd4" - integrity sha512-UyolnzjOYTRL2966TYS3IoJP4tQbvak/pmYmbP3JdphD53RjkyVDdxMpTBv+2LcNBRrvYPTzxQbpRW/nGSXA9g== - dependencies: - "@elastic/transport" "^8.3.2" - tslib "^2.4.0" - -"@elastic/transport@^8.3.1", "@elastic/transport@^8.3.2": +"@elastic/transport@^8.2.0": version "8.3.3" resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.3.3.tgz#06c5b1b9566796775ac96d17959dafc269da5ec1" integrity sha512-g5nc//dq/RQUTMkJUB8Ui8KJa/WflWmUa7yLl4SRZd67PPxIp3cn+OvGMNIhpiLRcfz1upanzgZHb/7Po2eEdQ== @@ -5597,20 +5589,6 @@ dependencies: "@stdlib/assert-has-uint8clampedarray-support" "^0.0.x" -"@stdlib/array@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/array/-/array-0.0.12.tgz#12f40ab95bb36d424cdad991f29fc3cb491ee29e" - integrity sha512-nDksiuvRC1dSTHrf5yOGQmlRwAzSKV8MdFQwFSvLbZGGhi5Y4hExqea5HloLgNVouVs8lnAFi2oubSM4Mc7YAg== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/blas" "^0.0.x" - "@stdlib/complex" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/assert-has-float32array-support@^0.0.x": version "0.0.8" resolved "https://registry.yarnpkg.com/@stdlib/assert-has-float32array-support/-/assert-has-float32array-support-0.0.8.tgz#77371183726e26ca9e6f9db41d34543607074067" @@ -5964,47 +5942,6 @@ dependencies: "@stdlib/assert-is-array" "^0.0.x" -"@stdlib/assert@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/assert/-/assert-0.0.12.tgz#1648c9016e5041291f55a6464abcc4069c5103ce" - integrity sha512-38FxFf+ZoQZbdc+m09UsWtaCmzd/2e7im0JOaaFYE7icmRfm+4KiE9BRvBT4tIn7ioLB2f9PsBicKjIsf+tY1w== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/complex" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/ndarray" "^0.0.x" - "@stdlib/number" "^0.0.x" - "@stdlib/os" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/regexp" "^0.0.x" - "@stdlib/streams" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/bigint@^0.0.x": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@stdlib/bigint/-/bigint-0.0.11.tgz#c416a1d727001c55f4897e6424124199d638f2fd" - integrity sha512-uz0aYDLABAYyqxaCSHYbUt0yPkXYUCR7TrVvHN+UUD3i8FZ02ZKcLO+faKisDyxKEoSFTNtn3Ro8Ir5ebOlVXQ== - dependencies: - "@stdlib/utils" "^0.0.x" - -"@stdlib/blas@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/blas/-/blas-0.0.12.tgz#7e93e42b4621fc6903bf63264f045047333536c2" - integrity sha512-nWY749bWceuoWQ7gz977blCwR7lyQ/rsIXVO4b600h+NFpeA2i/ea7MYC680utIbeu2cnDWHdglBPoK535VAzA== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/number" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/buffer-ctor@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/buffer-ctor/-/buffer-ctor-0.0.7.tgz#d05b7f4a6ef26defe6cdd41ca244a927b96c55ec" @@ -6031,17 +5968,6 @@ "@stdlib/buffer-ctor" "^0.0.x" "@stdlib/string-format" "^0.0.x" -"@stdlib/buffer@^0.0.x": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@stdlib/buffer/-/buffer-0.0.11.tgz#6137b00845e6c905181cc7ebfae9f7e47c01b0ce" - integrity sha512-Jeie5eDDa1tVuRcuU+cBXI/oOXSmMxUUccZpqXzgYe0IO8QSNtNxv9mUTzJk/m5wH+lmLoDvNxzPpOH9TODjJg== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/cli-ctor@^0.0.x": version "0.0.3" resolved "https://registry.yarnpkg.com/@stdlib/cli-ctor/-/cli-ctor-0.0.3.tgz#5b0a6d253217556c778015eee6c14be903f82c2b" @@ -6051,14 +5977,6 @@ "@stdlib/utils-noop" "^0.0.x" minimist "^1.2.0" -"@stdlib/cli@^0.0.x": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@stdlib/cli/-/cli-0.0.10.tgz#28e2fbe6865d7f5cd15b7dc5846c99bd3b91674f" - integrity sha512-OITGaxG46kwK799+NuOd/+ccosJ9koVuQBC610DDJv0ZJf8mD7sbjGXrmue9C4EOh8MP7Vm/6HN14BojX8oTCg== - dependencies: - "@stdlib/utils" "^0.0.x" - minimist "^1.2.0" - "@stdlib/complex-float32@^0.0.7", "@stdlib/complex-float32@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/complex-float32/-/complex-float32-0.0.7.tgz#fb9a0c34254eaf3ed91c39983e19ef131fc18bc1" @@ -6101,16 +6019,6 @@ "@stdlib/types" "^0.0.x" "@stdlib/utils-library-manifest" "^0.0.x" -"@stdlib/complex@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/complex/-/complex-0.0.12.tgz#3afbc190cd0a9b37fc7c6e508c3aa9fda9106944" - integrity sha512-UbZBdaUxT2G+lsTIrVlRZwx2IRY6GXnVILggeejsIVxHSuK+oTyapfetcAv0FJFLP+Rrr+ZzrN4b9G3hBw6NHA== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/constants-array-max-typed-array-length@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/constants-array-max-typed-array-length/-/constants-array-max-typed-array-length-0.0.7.tgz#b6e4cd8e46f4a1ae2b655646d46393ba3d8d5c2b" @@ -6176,16 +6084,6 @@ resolved "https://registry.yarnpkg.com/@stdlib/constants-uint8-max/-/constants-uint8-max-0.0.7.tgz#d50affeaeb6e67a0f39059a8f5122f3fd5ff4447" integrity sha512-fqV+xds4jgwFxwWu08b8xDuIoW6/D4/1dtEjZ1sXVeWR7nf0pjj1cHERq4kdkYxsvOGu+rjoR3MbjzpFc4fvSw== -"@stdlib/constants@^0.0.x": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@stdlib/constants/-/constants-0.0.11.tgz#78cd56d6c2982b30264843c3d75bde7125e90cd2" - integrity sha512-cWKy0L9hXHUQTvFzdPkTvZnn/5Pjv7H4UwY0WC1rLt+A5CxFDJKjvnIi9ypSzJS3CAiGl1ZaHCdadoqXhNdkUg== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/number" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/fs-exists@^0.0.x": version "0.0.8" resolved "https://registry.yarnpkg.com/@stdlib/fs-exists/-/fs-exists-0.0.8.tgz#391b2cee3e014a3b20266e5d047847f68ef82331" @@ -6219,20 +6117,6 @@ "@stdlib/process-cwd" "^0.0.x" "@stdlib/utils-define-nonenumerable-read-only-property" "^0.0.x" -"@stdlib/fs@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/fs/-/fs-0.0.12.tgz#662365fd5846a51f075724b4f2888ae88441b70d" - integrity sha512-zcDLbt39EEM3M3wJW6luChS53B8T+TMJkjs2526UpKJ71O0/0adR57cI7PfCpkMd33d05uM7GM+leEj4eks4Cw== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/utils" "^0.0.x" - debug "^2.6.9" - "@stdlib/math-base-assert-is-integer@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/math-base-assert-is-integer/-/math-base-assert-is-integer-0.0.7.tgz#d70faf41bed1bd737333877eb21660bf0ee779df" @@ -6266,50 +6150,6 @@ "@stdlib/math-base-napi-unary" "^0.0.x" "@stdlib/utils-library-manifest" "^0.0.x" -"@stdlib/math@^0.0.x": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@stdlib/math/-/math-0.0.11.tgz#eb6638bc03a20fbd6727dd5b977ee0170bda4649" - integrity sha512-qI78sR1QqGjHj8k/aAqkZ51Su2fyBvaR/jMKQqcB/ML8bpYpf+QGlGvTty5Qdru/wpqds4kVFOVbWGcNFIV2+Q== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/ndarray" "^0.0.x" - "@stdlib/number" "^0.0.x" - "@stdlib/strided" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - debug "^2.6.9" - -"@stdlib/ndarray@^0.0.x": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@stdlib/ndarray/-/ndarray-0.0.13.tgz#2e8fc645e10f56a645a0ab81598808c0e8f43b82" - integrity sha512-Z+U9KJP4U2HWrLtuAXSPvhNetAdqaNLMcliR6S/fz+VPlFDeymRK7omRFMgVQ+1zcAvIgKZGJxpLC3vjiPUYEw== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/bigint" "^0.0.x" - "@stdlib/buffer" "^0.0.x" - "@stdlib/complex" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/number" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/nlp@^0.0.x": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@stdlib/nlp/-/nlp-0.0.11.tgz#532ec0f7267b8d639e4c20c6de864e8de8a09054" - integrity sha512-D9avYWANm0Db2W7RpzdSdi5GxRYALGAqUrNnRnnKIO6sMEfr/DvONoAbWruda4QyvSC+0MJNwcEn7+PHhRwYhw== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/random" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/number-ctor@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/number-ctor/-/number-ctor-0.0.7.tgz#e97a66664639c9853b6c80bc7a15f7d67a2fc991" @@ -6322,31 +6162,6 @@ dependencies: "@stdlib/array-float32" "^0.0.x" -"@stdlib/number@^0.0.x": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@stdlib/number/-/number-0.0.10.tgz#4030ad8fc3fac19a9afb415c443cee6deea0e65c" - integrity sha512-RyfoP9MlnX4kccvg8qv7vYQPbLdzfS1Mnp/prGOoWhvMG3pyBwFAan34kwFb5IS/zHC3W5EmrgXCV2QWyLg/Kg== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/os" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/os@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/os/-/os-0.0.12.tgz#08bbf013c62a7153099fa9cbac086ca1349a4677" - integrity sha512-O7lklZ/9XEzoCmYvzjPh7jrFWkbpOSHGI71ve3dkSvBy5tyiSL3TtivfKsIC+9ZxuEJZ3d3lIjc9e+yz4HVbqQ== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/process-cwd@^0.0.x": version "0.0.8" resolved "https://registry.yarnpkg.com/@stdlib/process-cwd/-/process-cwd-0.0.8.tgz#5eef63fb75ffb5fc819659d2f450fa3ee2aa10bf" @@ -6367,41 +6182,6 @@ "@stdlib/streams-node-stdin" "^0.0.x" "@stdlib/utils-next-tick" "^0.0.x" -"@stdlib/process@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/process/-/process-0.0.12.tgz#123325079d89a32f4212f72fb694f8fe3614cf18" - integrity sha512-P0X0TMvkissBE1Wr877Avi2/AxmP7X5Toa6GatHbpJdDg6jQmN4SgPd+NZNp98YtZUyk478c8XSIzMr1krQ20g== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/buffer" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/streams" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/random@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/random/-/random-0.0.12.tgz#e819c3abd602ed5559ba800dba751e49c633ff85" - integrity sha512-c5yND4Ahnm9Jx0I+jsKhn4Yrz10D53ALSrIe3PG1qIz3kNFcIPnmvCuNGd+3V4ch4Mbrez55Y8z/ZC5RJh4vJQ== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/blas" "^0.0.x" - "@stdlib/buffer" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/stats" "^0.0.x" - "@stdlib/streams" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - debug "^2.6.9" - readable-stream "^2.1.4" - "@stdlib/regexp-eol@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/regexp-eol/-/regexp-eol-0.0.7.tgz#cf1667fdb5da1049c2c2f8d5c47dcbaede8650a4" @@ -6434,61 +6214,11 @@ dependencies: "@stdlib/utils-define-nonenumerable-read-only-property" "^0.0.x" -"@stdlib/regexp@^0.0.x": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@stdlib/regexp/-/regexp-0.0.13.tgz#80b98361dc7a441b47bc3fa964bb0c826759e971" - integrity sha512-3JT5ZIoq/1nXY+dY+QtkU8/m7oWDeekyItEEXMx9c/AOf0ph8fmvTUGMDNfUq0RetcznFe3b66kFz6Zt4XHviA== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/stats@^0.0.x": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@stdlib/stats/-/stats-0.0.13.tgz#87c973f385379d794707c7b5196a173dba8b07e1" - integrity sha512-hm+t32dKbx/L7+7WlQ1o4NDEzV0J4QSnwFBCsIMIAO8+VPxTZ4FxyNERl4oKlS3hZZe4AVKjoOVhBDtgEWrS4g== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/blas" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/ndarray" "^0.0.x" - "@stdlib/random" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/streams-node-stdin@^0.0.x": version "0.0.7" resolved "https://registry.yarnpkg.com/@stdlib/streams-node-stdin/-/streams-node-stdin-0.0.7.tgz#65ff09a2140999702a1ad885e6505334d947428f" integrity sha512-gg4lgrjuoG3V/L29wNs32uADMCqepIcmoOFHJCTAhVe0GtHDLybUVnLljaPfdvmpPZmTvmusPQtIcscbyWvAyg== -"@stdlib/streams@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/streams/-/streams-0.0.12.tgz#07f5ceae5852590afad8e1cb7ce94174becc8739" - integrity sha512-YLUlXwjJNknHp92IkJUdvn5jEQjDckpawKhDLLCoxyh3h5V+w/8+61SH7TMTfKx5lBxKJ8vvtchZh90mIJOAjQ== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/buffer" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - debug "^2.6.9" - readable-stream "^2.1.4" - -"@stdlib/strided@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/strided/-/strided-0.0.12.tgz#86ac48e660cb7f64a45cf07e80cbbfe58be21ae1" - integrity sha512-1NINP+Y7IJht34iri/bYLY7TVxrip51f6Z3qWxGHUCH33kvk5H5QqV+RsmFEGbbyoGtdeHrT2O+xA+7R2e3SNg== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/ndarray" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/string-base-format-interpolate@^0.0.x": version "0.0.4" resolved "https://registry.yarnpkg.com/@stdlib/string-base-format-interpolate/-/string-base-format-interpolate-0.0.4.tgz#297eeb23c76f745dcbb3d9dbd24e316773944538" @@ -6537,44 +6267,6 @@ "@stdlib/utils-escape-regexp-string" "^0.0.x" "@stdlib/utils-regexp-from-string" "^0.0.x" -"@stdlib/string@^0.0.x": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@stdlib/string/-/string-0.0.14.tgz#4feea4f9089ab72428eebb65fe7b93d90a7f34f4" - integrity sha512-1ClvUTPysens7GZz3WsrkFYIFs8qDmnXkyAd3zMvTXgRpy7hqrv6nNzLMQj8BHv5cBWaWPOXYd/cZ+JyMnZNQQ== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/nlp" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/regexp" "^0.0.x" - "@stdlib/streams" "^0.0.x" - "@stdlib/types" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/symbol@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/symbol/-/symbol-0.0.12.tgz#b9f396b0bf269c2985bb7fe99810a8e26d7288c3" - integrity sha512-2IDhpzWVGeLHgsvIsX12RXvf78r7xBkc4QLoRUv3k7Cp61BisR1Ym1p0Tq9PbxT8fknlvLToh9n5RpmESi2d4w== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/utils" "^0.0.x" - -"@stdlib/time@^0.0.x": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@stdlib/time/-/time-0.0.14.tgz#ea6daa438b1d3b019b99f5091117ee4bcef55d60" - integrity sha512-1gMFCQTabMVIgww+k4g8HHHIhyy1tIlvwT8mC0BHW7Q7TzDAgobwL0bvor+lwvCb5LlDAvNQEpaRgVT99QWGeQ== - dependencies: - "@stdlib/assert" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/utils" "^0.0.x" - "@stdlib/types@^0.0.x": version "0.0.14" resolved "https://registry.yarnpkg.com/@stdlib/types/-/types-0.0.14.tgz#02d3aab7a9bfaeb86e34ab749772ea22f7b2f7e0" @@ -6756,30 +6448,6 @@ "@stdlib/utils-constructor-name" "^0.0.x" "@stdlib/utils-global" "^0.0.x" -"@stdlib/utils@^0.0.12", "@stdlib/utils@^0.0.x": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@stdlib/utils/-/utils-0.0.12.tgz#670de5a7b253f04f11a4cba38f790e82393bcb46" - integrity sha512-+JhFpl6l7RSq/xGnbWRQ5dAL90h9ONj8MViqlb7teBZFtePZLMwoRA1wssypFcJ8SFMRWQn7lPmpYVUkGwRSOg== - dependencies: - "@stdlib/array" "^0.0.x" - "@stdlib/assert" "^0.0.x" - "@stdlib/blas" "^0.0.x" - "@stdlib/buffer" "^0.0.x" - "@stdlib/cli" "^0.0.x" - "@stdlib/constants" "^0.0.x" - "@stdlib/fs" "^0.0.x" - "@stdlib/math" "^0.0.x" - "@stdlib/os" "^0.0.x" - "@stdlib/process" "^0.0.x" - "@stdlib/random" "^0.0.x" - "@stdlib/regexp" "^0.0.x" - "@stdlib/streams" "^0.0.x" - "@stdlib/string" "^0.0.x" - "@stdlib/symbol" "^0.0.x" - "@stdlib/time" "^0.0.x" - "@stdlib/types" "^0.0.x" - debug "^2.6.9" - "@storybook/addon-actions@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.4.0.tgz#709988f46422b85b3672d2e6f90bf623af59faa9" @@ -8009,7 +7677,7 @@ "@tryghost/root-utils" "^0.3.23" debug "^4.3.1" -"@tryghost/debug@^0.1.26": +"@tryghost/debug@0.1.26", "@tryghost/debug@^0.1.26": version "0.1.26" resolved "https://registry.yarnpkg.com/@tryghost/debug/-/debug-0.1.26.tgz#c1a403fb8abfcf5293395f822593b5d6f997f426" integrity sha512-Q0idDUzgPFgUOELED8GwmxEFtp9WjIw6sUayLgc2he4YJfe3hK2LsExt5XSJsa3OSZp1NgX7/OqVHd3vueynlA== @@ -8026,15 +7694,6 @@ "@tryghost/debug" "^0.1.24" split2 "4.2.0" -"@tryghost/elasticsearch@^3.0.13", "@tryghost/elasticsearch@^3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@tryghost/elasticsearch/-/elasticsearch-3.0.14.tgz#b75305e600517b2aee7fcce97ba7d15dc12ad5b6" - integrity sha512-DGY01scx/nJBh/0CFzsaqpRnYnoDUmiekhaV8SjUQ2zuMTVKE37XybU7FtkeKXlhwD8S1zDwSwQPpGDO67Y2GA== - dependencies: - "@elastic/elasticsearch" "8.9.0" - "@tryghost/debug" "^0.1.26" - split2 "4.2.0" - "@tryghost/email-mock-receiver@0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@tryghost/email-mock-receiver/-/email-mock-receiver-0.3.1.tgz#b69c6866f4880ec1be9bf16cfcb3907d8a98d447" @@ -8056,16 +7715,7 @@ focus-trap "^6.7.2" postcss-preset-env "^7.3.1" -"@tryghost/errors@1.2.21": - version "1.2.21" - resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.21.tgz#27c57ccd27324dfc4ab1dc34f8618939fc494324" - integrity sha512-TzV8wxDDFw2ZTI+zsFi0xggpKpc2ABqSzDp+t6dngcLuDs9erBdK5JJTV3wYBOBrJbbK6LzQlAsmH66vgO5HLQ== - dependencies: - "@stdlib/utils" "^0.0.12" - lodash "^4.17.21" - uuid "^9.0.0" - -"@tryghost/errors@1.2.24", "@tryghost/errors@^1.0.0", "@tryghost/errors@^1.2.1", "@tryghost/errors@^1.2.24", "@tryghost/errors@^1.2.3": +"@tryghost/errors@1.2.21", "@tryghost/errors@1.2.24", "@tryghost/errors@1.2.25", "@tryghost/errors@^1.0.0", "@tryghost/errors@^1.2.1", "@tryghost/errors@^1.2.24", "@tryghost/errors@^1.2.26", "@tryghost/errors@^1.2.3": version "1.2.24" resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.24.tgz#5daceff6cdee9421297849474fd885857c4bfe3f" integrity sha512-5iRF8dl2wirb/1gQA2dv8MtxK204vnjbWvmb3fULNZoVlmuHY1ZUgwRJRquClfUEFyl2qGmNDuoxGoTvur8JKA== @@ -8074,24 +7724,6 @@ lodash "^4.17.21" uuid "^9.0.0" -"@tryghost/errors@1.2.25": - version "1.2.25" - resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.25.tgz#9e1b715624dfd7dbde59a9fc196ebcb00d9c7553" - integrity sha512-fVZgnFu3QsEUVPyl+uFLK6X6JSN3m7l1pMl713SmhNrkFNFM3nG1sVeNiTg/Ru4N5qIJBBIefwrfRH80Ccy3oQ== - dependencies: - "@stdlib/utils-copy" "^0.0.7" - lodash "^4.17.21" - uuid "^9.0.0" - -"@tryghost/errors@^1.2.26": - version "1.2.26" - resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.26.tgz#0d0503a51e681998421548fbddbdd7376384c457" - integrity sha512-s/eynvVUiAhHP0HB7CPQs7qH7Pm1quJ2iUMTCuH7HV8LqiGoQFNc21/5R4lRv+2Jt3yf69UPCs/6G+kAgZipNw== - dependencies: - "@stdlib/utils-copy" "^0.0.7" - lodash "^4.17.21" - uuid "^9.0.0" - "@tryghost/express-test@0.13.7": version "0.13.7" resolved "https://registry.yarnpkg.com/@tryghost/express-test/-/express-test-0.13.7.tgz#fee867065282298095a194c5e70386e393d21d57" @@ -8137,14 +7769,6 @@ "@tryghost/errors" "^1.2.24" "@tryghost/request" "^0.1.39" -"@tryghost/http-stream@^0.1.22", "@tryghost/http-stream@^0.1.23": - version "0.1.23" - resolved "https://registry.yarnpkg.com/@tryghost/http-stream/-/http-stream-0.1.23.tgz#90f4ae70ab75a831d44d061e4ef4bcf941720e98" - integrity sha512-j0QPukvh4l5Yj4iFXaaTK6QCvu0GIhiDoPgn+tPnDsA9lH07hiJupbQiLoONiX7AZv/qnzFYNoUZW2jr45NKIg== - dependencies: - "@tryghost/errors" "^1.2.26" - "@tryghost/request" "^0.1.41" - "@tryghost/image-transform@1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@tryghost/image-transform/-/image-transform-1.2.6.tgz#530c792a50853b1779ecb8e15bee8ea5d1d890ef" @@ -8290,7 +7914,7 @@ lodash "^4.17.21" luxon "^1.26.0" -"@tryghost/logging@2.4.4": +"@tryghost/logging@2.4.4", "@tryghost/logging@2.4.5", "@tryghost/logging@^2.4.5": version "2.4.4" resolved "https://registry.yarnpkg.com/@tryghost/logging/-/logging-2.4.4.tgz#4101d87c82bc6996a3ddd99755069b94d584e3e6" integrity sha512-nRsc5EOqYuHLWYXe/K1AjrRU82xOtQN52GL7r9WY0NCKNZ5/tCFTDdOASKMbFPvpyT5pZlt2vE5+Fu8TdbN8Aw== @@ -8307,40 +7931,6 @@ json-stringify-safe "^5.0.1" lodash "^4.17.21" -"@tryghost/logging@2.4.5": - version "2.4.5" - resolved "https://registry.yarnpkg.com/@tryghost/logging/-/logging-2.4.5.tgz#aa8d67ae6904c89f46fcc9b7226d579e8b0ce9f6" - integrity sha512-QDkgxWs5jFOWj5Gyf4RtGddwvjaiQtJNmvWZaPcwKy/Hii7I4EEHWSslLX4Y482u5nvgHtnyzynSNUYWwIzGWw== - dependencies: - "@tryghost/bunyan-rotating-filestream" "^0.0.7" - "@tryghost/elasticsearch" "^3.0.13" - "@tryghost/http-stream" "^0.1.22" - "@tryghost/pretty-stream" "^0.1.19" - "@tryghost/root-utils" "^0.3.23" - bunyan "^1.8.15" - bunyan-loggly "^1.4.2" - fs-extra "^10.0.0" - gelf-stream "^1.1.1" - json-stringify-safe "^5.0.1" - lodash "^4.17.21" - -"@tryghost/logging@^2.4.5": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@tryghost/logging/-/logging-2.4.6.tgz#4b5ba548eee530ace4e25e30cfbc97865a9a2394" - integrity sha512-j9Oaj+tBR1gOBr4biAj4EYPQxy1U9puByS0VE9xR/Po3AX86zuXkCWD5IiDsVulYWrqYM0InRc7544IqbJ9bLw== - dependencies: - "@tryghost/bunyan-rotating-filestream" "^0.0.7" - "@tryghost/elasticsearch" "^3.0.14" - "@tryghost/http-stream" "^0.1.23" - "@tryghost/pretty-stream" "^0.1.20" - "@tryghost/root-utils" "^0.3.24" - bunyan "^1.8.15" - bunyan-loggly "^1.4.2" - fs-extra "^11.0.0" - gelf-stream "^1.1.1" - json-stringify-safe "^5.0.1" - lodash "^4.17.21" - "@tryghost/metrics@1.0.24": version "1.0.24" resolved "https://registry.yarnpkg.com/@tryghost/metrics/-/metrics-1.0.24.tgz#d1aad748a4d0ca71ce7a78fd926ff0fdf44e95b3" @@ -8438,15 +8028,6 @@ moment "^2.29.1" prettyjson "^1.2.5" -"@tryghost/pretty-stream@^0.1.19", "@tryghost/pretty-stream@^0.1.20": - version "0.1.20" - resolved "https://registry.yarnpkg.com/@tryghost/pretty-stream/-/pretty-stream-0.1.20.tgz#cccb2173cde85f450895777edf79d94cb712db74" - integrity sha512-2fWRvTUrnbD/AnDChyZ0ZwUWdqRg2dsoa+DZxfH9hJNAwCDAMgp1qVEoOCwMMB1YYDWKKsYM/i+xoxDueMwyLA== - dependencies: - lodash "^4.17.21" - moment "^2.29.1" - prettyjson "^1.2.5" - "@tryghost/promise@0.3.4": version "0.3.4" resolved "https://registry.yarnpkg.com/@tryghost/promise/-/promise-0.3.4.tgz#b5437eb14a3d06e7d32f277e10975ff77061e16e" @@ -8463,17 +8044,6 @@ got "9.6.0" lodash "^4.17.21" -"@tryghost/request@^0.1.41": - version "0.1.41" - resolved "https://registry.yarnpkg.com/@tryghost/request/-/request-0.1.41.tgz#1198fb0919f3516116ecd9de73c40176729a44e0" - integrity sha512-aE1OkUNLbSlFkzykrg0oIi/FvPSYUU6xBXcF1AmL4+0QB9Qt2TXL5B+0kyerbR5y+gSMBZXcBwNB1u701gOE3A== - dependencies: - "@tryghost/errors" "^1.2.26" - "@tryghost/validator" "^0.2.6" - "@tryghost/version" "^0.1.24" - got "9.6.0" - lodash "^4.17.21" - "@tryghost/root-utils@0.3.22": version "0.3.22" resolved "https://registry.yarnpkg.com/@tryghost/root-utils/-/root-utils-0.3.22.tgz#23793e467afb41b27f4e289a3618d71bd90bc575" @@ -8586,17 +8156,6 @@ moment-timezone "^0.5.23" validator "7.2.0" -"@tryghost/validator@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@tryghost/validator/-/validator-0.2.6.tgz#99a01bf6e6c70c1eb79098e6b95b980e0efa126b" - integrity sha512-2p1/X7vqI/tikc2beRQ1efCm/hSRCkB7y0+etCGROKNH3nHJwvw+OKSxgmNZ7+5OjR6DJkNW88aMYPz47X3fAg== - dependencies: - "@tryghost/errors" "^1.2.26" - "@tryghost/tpl" "^0.1.26" - lodash "^4.17.21" - moment-timezone "^0.5.23" - validator "7.2.0" - "@tryghost/version@0.1.22", "@tryghost/version@^0.1.22": version "0.1.22" resolved "https://registry.yarnpkg.com/@tryghost/version/-/version-0.1.22.tgz#e2a9f6eec4f9f8945094d3bd7c0757438f4e0622" @@ -8605,14 +8164,6 @@ "@tryghost/root-utils" "^0.3.22" semver "^7.3.5" -"@tryghost/version@^0.1.24": - version "0.1.24" - resolved "https://registry.yarnpkg.com/@tryghost/version/-/version-0.1.24.tgz#eb8bc345929ba8f67c3f36757bd91c12f701a5f5" - integrity sha512-XM0aXB3dQNjazeMX5YbBLjA+airE5HR5XqmEB9YrAxlQPaYdXkQUq+ar6L/dxiS8dp+o2DQIcp2XgGd/Ay3MuQ== - dependencies: - "@tryghost/root-utils" "^0.3.24" - semver "^7.3.5" - "@tryghost/webhook-mock-receiver@0.2.6": version "0.2.6" resolved "https://registry.yarnpkg.com/@tryghost/webhook-mock-receiver/-/webhook-mock-receiver-0.2.6.tgz#20a4141f5813287988770f5f1e394ad2af5c1063" @@ -24039,52 +23590,18 @@ module-details-from-path@^1.0.3: resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== -moment-timezone@0.5.23, moment-timezone@^0.5.23: +moment-timezone@0.5.23, moment-timezone@0.5.34, moment-timezone@^0.5.23, moment-timezone@^0.5.31, moment-timezone@^0.5.33: version "0.5.23" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" integrity sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w== dependencies: moment ">= 2.9.0" -moment-timezone@0.5.34: - version "0.5.34" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" - integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== - dependencies: - moment ">= 2.9.0" - -moment-timezone@^0.5.31, moment-timezone@^0.5.33: - version "0.5.43" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.43.tgz#3dd7f3d0c67f78c23cd1906b9b2137a09b3c4790" - integrity sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ== - dependencies: - moment "^2.29.4" - -moment@2.24.0, "moment@>= 2.9.0", moment@^2.10.2, moment@^2.18.1, moment@^2.19.3: +moment@2.24.0, moment@2.27.0, moment@2.29.1, moment@2.29.3, moment@2.29.4, "moment@>= 2.9.0", moment@^2.10.2, moment@^2.18.1, moment@^2.19.3, moment@^2.27.0, moment@^2.29.1: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== -moment@2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - -moment@2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -moment@2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== - -moment@2.29.4, moment@^2.27.0, moment@^2.29.1, moment@^2.29.4: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - monobundle@TryGhost/monobundle#44fdf2c8e304e797a04858bfd7339b2a1fa47441: version "0.1.0" resolved "https://codeload.github.com/TryGhost/monobundle/tar.gz/44fdf2c8e304e797a04858bfd7339b2a1fa47441" @@ -27649,19 +27166,6 @@ readable-stream@1.1.x, readable-stream@^1.0.26-4: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.1.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@~1.0.2, readable-stream@~1.0.26, readable-stream@~1.0.26-4: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"