0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-20 22:42:53 -05:00

Added playwright config to admin-x-settings (#16941)

no issue
This commit is contained in:
Jono M 2023-06-06 11:29:28 +12:00 committed by GitHub
parent ab0c33346d
commit 089a3f7aaf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 1113 additions and 41 deletions

View file

@ -0,0 +1,53 @@
name: AdminX Settings Tests
on:
pull_request:
paths:
- 'ghost/admin-x-settings/**'
push:
branches:
- main
- 'v5.*'
paths:
- 'ghost/admin-x-settings/**'
env:
FORCE_COLOR: 1
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
e2e:
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
name: E2E
env:
CI: true
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
env:
FORCE_COLOR: 0
with:
node-version: "18.12.1"
cache: yarn
- run: yarn --prefer-offline
- name: Install Playwright
run: npx playwright install --with-deps
- run: yarn workspace @tryghost/admin-x-settings run test:e2e
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-report
path: playwright-report
retention-days: 30
- uses: tryghost/actions/actions/slack-build@main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

3
.gitignore vendored
View file

@ -150,3 +150,6 @@ Caddyfile
# Admin X
/ghost/admin-x-settings/dist
/ghost/admin-x-settings/dist-ssr
/ghost/admin-x-settings/test-results/
/ghost/admin-x-settings/playwright-report/
/ghost/admin-x-settings/playwright/.cache/

View file

@ -7,7 +7,6 @@
"url": "https://github.com/TryGhost/Ghost/tree/main/packages/admin-x-settings"
},
"author": "Ghost Foundation",
"type": "module",
"files": [
"LICENSE",
"README.md",
@ -32,6 +31,9 @@
"lint": "yarn run lint:js",
"lint:js": "eslint --ext .js,.ts,.cjs,.tsx --cache src test",
"test:unit": "yarn build",
"test:e2e": "NODE_OPTIONS='--experimental-specifier-resolution=node --no-warnings' VITE_TEST=true playwright test",
"test:slowmo": "TIMEOUT=100000 PLAYWRIGHT_SLOWMO=100 yarn test:e2e --headed",
"test:e2e:full": "ALL_BROWSERS=1 yarn test:e2e",
"preview": "vite preview",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
@ -48,6 +50,7 @@
"validator": "7.2.0"
},
"devDependencies": {
"@playwright/test": "^1.34.3",
"@storybook/addon-essentials": "7.0.18",
"@storybook/addon-interactions": "7.0.18",
"@storybook/addon-links": "7.0.18",

View file

@ -0,0 +1,58 @@
import {defineConfig, devices} from '@playwright/test';
export const E2E_PORT = 5173;
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: './test/e2e',
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
baseURL: `http://localhost:${E2E_PORT}`,
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
launchOptions: {
slowMo: parseInt(process.env.PLAYWRIGHT_SLOWMO ?? '') || 0,
// force GPU hardware acceleration
// (even in headless mode)
args: ['--use-gl=egl']
}
},
/* Configure projects for major browsers */
projects: [
{
name: 'chromium',
use: {...devices['Desktop Chrome']}
},
...(process.env.ALL_BROWSERS ? [{
name: 'firefox',
use: {...devices['Desktop Firefox']}
},
{
name: 'webkit',
use: {...devices['Desktop Safari']}
}] : [])
],
/* Run local dev server before starting the tests */
webServer: {
command: `yarn dev:start`,
url: `http://localhost:${E2E_PORT}`,
reuseExistingServer: !process.env.CI,
timeout: 10000
}
});

View file

@ -1,10 +1,10 @@
import React from 'react';
import Separator from './Separator';
type THeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
interface IHeading {
level?: THeadingLevels;
interface HeadingBaseProps {
level?: HeadingLevel;
children?: React.ReactNode;
styles?: string;
@ -21,14 +21,18 @@ interface IHeading {
className?: string;
}
const Heading: React.FC<IHeading> = ({
level,
children,
styles = '',
grey,
separator,
useLabelTag,
className = '',
type Heading1to5Props = { useLabelTag?: false, level?: Exclude<HeadingLevel, 6>, grey?: never } & HeadingBaseProps & React.HTMLAttributes<HTMLHeadingElement>
type Heading6Props = { useLabelTag?: false, level: 6, grey?: boolean } & HeadingBaseProps & React.HTMLAttributes<HTMLHeadingElement>
type HeadingLabelProps = { useLabelTag: true, level?: never, grey?: never } & HeadingBaseProps & React.LabelHTMLAttributes<HTMLLabelElement>
const Heading: React.FC<Heading1to5Props | Heading6Props | HeadingLabelProps> = ({
level,
children,
styles = '',
grey,
separator,
useLabelTag,
className = '',
...props
}) => {
if (!level) {
@ -54,4 +58,4 @@ const Heading: React.FC<IHeading> = ({
}
};
export default Heading;
export default Heading;

View file

@ -1,4 +1,4 @@
import React from 'react';
import React, {useId} from 'react';
import Heading from './Heading';
import Hint from './Hint';
@ -20,6 +20,8 @@ interface TextAreaProps {
}
const TextArea: React.FC<TextAreaProps> = ({inputRef, title, value, rows = 3, maxLength, resize = 'none', error, placeholder, hint, clearBg = false, onChange, ...props}) => {
const id = useId();
let styles = `border-b ${clearBg ? 'bg-transparent' : 'bg-grey-75 px-[10px]'} py-2 ${error ? `border-red` : `border-grey-500 hover:border-grey-700 focus:border-black`} ${(title && !clearBg) && `mt-2`}`;
switch (resize) {
@ -42,11 +44,12 @@ const TextArea: React.FC<TextAreaProps> = ({inputRef, title, value, rows = 3, ma
return (
<div className='flex flex-col'>
{title && <Heading useLabelTag={true}>{title}</Heading>}
{title && <Heading htmlFor={id} useLabelTag={true}>{title}</Heading>}
<textarea
ref={inputRef}
ref={inputRef}
className={styles}
defaultValue={value}
defaultValue={value}
id={id}
maxLength={maxLength}
placeholder={placeholder}
rows={rows}
@ -59,4 +62,4 @@ const TextArea: React.FC<TextAreaProps> = ({inputRef, title, value, rows = 3, ma
);
};
export default TextArea;
export default TextArea;

View file

@ -1,4 +1,4 @@
import React from 'react';
import React, {useId} from 'react';
import Heading from './Heading';
import Hint from './Hint';
@ -35,14 +35,17 @@ const TextField: React.FC<TextFieldProps> = ({
maxLength,
...props
}) => {
const id = useId();
return (
<div className='flex flex-col'>
{title && <Heading useLabelTag={true}>{title}</Heading>}
{title && <Heading htmlFor={id} useLabelTag={true}>{title}</Heading>}
<input
ref={inputRef}
className={`border-b ${clearBg ? 'bg-transparent' : 'bg-grey-75 px-[10px]'} py-2 ${error ? `border-red` : `border-grey-500 hover:border-grey-700 focus:border-black`} ${(title && !clearBg) && `mt-2`} ${className}`}
defaultValue={value}
maxLength={maxLength}
ref={inputRef}
className={`border-b ${clearBg ? 'bg-transparent' : 'bg-grey-75 px-[10px]'} py-2 ${error ? `border-red` : `border-grey-500 hover:border-grey-700 focus:border-black`} ${(title && !clearBg) && `mt-2`} ${className}`}
defaultValue={value}
id={id}
maxLength={maxLength}
placeholder={placeholder}
type={type}
onBlur={onBlur}
@ -53,4 +56,4 @@ const TextField: React.FC<TextFieldProps> = ({
);
};
export default TextField;
export default TextField;

View file

@ -8,6 +8,7 @@ export type SaveState = 'saving' | 'saved' | 'error' | '';
interface SettingGroupProps {
navid?:string;
testId?: string;
title?: string;
description?: React.ReactNode;
state?: TSettingGroupStates;
@ -34,6 +35,7 @@ interface SettingGroupProps {
const SettingGroup: React.FC<SettingGroupProps> = ({
navid,
testId,
title,
description,
state,
@ -128,7 +130,7 @@ const SettingGroup: React.FC<SettingGroupProps> = ({
}
return (
<div className={`relative flex flex-col gap-6 rounded ${border && 'border p-5 md:p-7'} ${styles}`}>
<div className={`relative flex flex-col gap-6 rounded ${border && 'border p-5 md:p-7'} ${styles}`} data-testid={testId}>
<div className='absolute top-[-60px]' id={navid && navid}></div>
{customHeader ? customHeader :
<SettingGroupHeader description={description} title={title!}>
@ -141,4 +143,4 @@ const SettingGroup: React.FC<SettingGroupProps> = ({
);
};
export default SettingGroup;
export default SettingGroup;

View file

@ -124,3 +124,4 @@ const SettingsProvider: React.FC<SettingsProviderProps> = ({children}) => {
};
export {SettingsContext, SettingsProvider};

View file

@ -70,6 +70,7 @@ const TitleAndDescription: React.FC = () => {
navid='title-and-description'
saveState={saveState}
state={currentState}
testId='title-and-description'
title='Title & description'
onCancel={handleCancel}
onSave={handleSave}
@ -80,4 +81,4 @@ const TitleAndDescription: React.FC = () => {
);
};
export default TitleAndDescription;
export default TitleAndDescription;

View file

@ -1,8 +1,7 @@
import React, {useEffect} from 'react';
import React, {useContext, useEffect, useReducer, useRef, useState} from 'react';
import {SaveState, TSettingGroupStates} from '../admin-x-ds/settings/SettingGroup';
import {Setting, SettingValue, SiteData} from '../types/api';
import {SettingsContext} from '../components/providers/SettingsProvider';
import {useContext, useReducer, useRef, useState} from 'react';
interface LocalSetting extends Setting {
dirty?: boolean;
@ -86,6 +85,17 @@ const useSettingGroup = (): SettingGroupHook => {
}
}, [saveState]);
// reset the local state when there's a new settings API response, unless currently editing
useEffect(() => {
if (saveState === 'saving' || currentState === 'view') {
dispatch({
type: 'resetAll',
payload: settings || []
});
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [settings]);
// function to save the changed settings via API
const handleSave = async () => {
const changedSettings = localSettings?.filter(setting => setting.dirty)

View file

@ -0,0 +1,41 @@
import {expect, test} from '@playwright/test';
import {mockApi, updatedSettingsResponse} from '../utils/e2e';
test.describe('Title and description settings', async () => {
test('Supports editing the title and description', async ({page}) => {
const lastApiRequest = await mockApi({page, responses: {
settings: {
edit: updatedSettingsResponse([
{key: 'title', value: 'New Site Title'},
{key: 'description', value: 'New Site Description'}
])
}
}});
await page.goto('/');
const section = page.getByTestId('title-and-description');
await expect(section.getByText('Test Site')).toHaveCount(1);
await expect(section.getByText('Thoughts, stories and ideas.')).toHaveCount(1);
await section.getByRole('button', {name: 'Edit'}).click();
await section.getByLabel('Site title').fill('New Site Title');
await section.getByLabel('Site description').fill('New Site Description');
await section.getByRole('button', {name: 'Save'}).click();
await expect(section.getByLabel('Site title')).toHaveCount(0);
await expect(section.getByText('New Site Title')).toHaveCount(1);
await expect(section.getByText('New Site Description')).toHaveCount(1);
expect(lastApiRequest.body).toEqual({
settings: [
{key: 'title', value: 'New Site Title'},
{key: 'description', value: 'New Site Description'}
]
});
});
});

View file

@ -0,0 +1,83 @@
import {Page} from '@playwright/test';
import {readFileSync} from 'fs';
type LastApiRequest = {
url: null | string
body: null | any
};
const responseFixtures = {
settings: JSON.parse(readFileSync(`${__dirname}/responses/settings.json`).toString()),
site: JSON.parse(readFileSync(`${__dirname}/responses/site.json`).toString())
};
interface Responses {
settings?: {
browse?: any
edit?: any
}
site?: {
browse?: any
}
}
export async function mockApi({page,responses}: {page: Page, responses?: Responses}) {
const lastApiRequest: LastApiRequest = {
url: null,
body: null
};
await mockApiResponse({
page,
path: /\/ghost\/api\/admin\/settings\/\?group=.+/,
method: 'GET',
response: responses?.settings?.browse ?? responseFixtures.settings,
lastApiRequest
});
await mockApiResponse({
page,
path: /\/ghost\/api\/admin\/site\//,
method: 'GET',
response: responses?.site?.browse ?? responseFixtures.site,
lastApiRequest
});
await mockApiResponse({
page,
path: /\/ghost\/api\/admin\/settings\/$/,
method: 'PUT',
response: responses?.settings?.edit ?? responseFixtures.settings,
lastApiRequest
});
return lastApiRequest;
}
async function mockApiResponse({page, path, method, response, lastApiRequest}: { page: Page; path: string | RegExp; method: string; response: any; lastApiRequest: LastApiRequest }) {
await page.route(path, async (route) => {
if (route.request().method() !== method) {
return route.continue();
}
const requestBody = JSON.parse(route.request().postData() || 'null');
lastApiRequest.body = requestBody;
lastApiRequest.url = route.request().url();
await route.fulfill({
status: 200,
body: JSON.stringify(response)
});
});
}
export function updatedSettingsResponse(newSettings: Array<{ key: string, value: string }>) {
return {
...responseFixtures.settings,
settings: responseFixtures.settings.settings.map((setting) => {
const newSetting = newSettings.find(({key}) => key === setting.key);
return {key: setting.key, value: newSetting?.value || setting.value};
})
};
}

View file

@ -0,0 +1,325 @@
{
"settings": [
{
"key": "title",
"value": "Test Site"
},
{
"key": "description",
"value": "Thoughts, stories and ideas."
},
{
"key": "logo",
"value": null
},
{
"key": "cover_image",
"value": null
},
{
"key": "icon",
"value": null
},
{
"key": "accent_color",
"value": "#FF1A75"
},
{
"key": "locale",
"value": "en"
},
{
"key": "timezone",
"value": "Etc/UTC"
},
{
"key": "codeinjection_head",
"value": ""
},
{
"key": "codeinjection_foot",
"value": ""
},
{
"key": "facebook",
"value": "ghost"
},
{
"key": "twitter",
"value": "@ghost"
},
{
"key": "navigation",
"value": "[{\"label\":\"Home\",\"url\":\"/\"},{\"label\":\"About\",\"url\":\"/about/\"}]"
},
{
"key": "secondary_navigation",
"value": "[{\"label\":\"Sign up\",\"url\":\"#/portal/\"}]"
},
{
"key": "meta_title",
"value": null
},
{
"key": "meta_description",
"value": null
},
{
"key": "og_image",
"value": null
},
{
"key": "og_title",
"value": null
},
{
"key": "og_description",
"value": null
},
{
"key": "twitter_image",
"value": null
},
{
"key": "twitter_title",
"value": null
},
{
"key": "twitter_description",
"value": null
},
{
"key": "active_theme",
"value": "casper"
},
{
"key": "is_private",
"value": false
},
{
"key": "password",
"value": null
},
{
"key": "public_hash",
"value": "b69493f8b746f7239b7b8fb4125632"
},
{
"key": "default_content_visibility",
"value": "public"
},
{
"key": "default_content_visibility_tiers",
"value": "[]"
},
{
"key": "members_signup_access",
"value": "all"
},
{
"key": "members_support_address",
"value": "noreply"
},
{
"key": "stripe_secret_key",
"value": null
},
{
"key": "stripe_publishable_key",
"value": null
},
{
"key": "stripe_plans",
"value": "[]"
},
{
"key": "stripe_connect_publishable_key",
"value": null
},
{
"key": "stripe_connect_secret_key",
"value": null
},
{
"key": "stripe_connect_livemode",
"value": false
},
{
"key": "stripe_connect_display_name",
"value": null
},
{
"key": "stripe_connect_account_id",
"value": null
},
{
"key": "members_monthly_price_id",
"value": null
},
{
"key": "members_yearly_price_id",
"value": null
},
{
"key": "members_track_sources",
"value": true
},
{
"key": "portal_name",
"value": true
},
{
"key": "portal_button",
"value": true
},
{
"key": "portal_plans",
"value": "[\"monthly\",\"yearly\",\"free\"]"
},
{
"key": "portal_products",
"value": "[]"
},
{
"key": "portal_button_style",
"value": "icon-and-text"
},
{
"key": "portal_button_icon",
"value": null
},
{
"key": "portal_button_signup_text",
"value": "Subscribe"
},
{
"key": "portal_signup_terms_html",
"value": null
},
{
"key": "portal_signup_checkbox_required",
"value": false
},
{
"key": "mailgun_domain",
"value": null
},
{
"key": "mailgun_api_key",
"value": null
},
{
"key": "mailgun_base_url",
"value": null
},
{
"key": "email_track_opens",
"value": true
},
{
"key": "email_track_clicks",
"value": true
},
{
"key": "email_verification_required",
"value": false
},
{
"key": "amp",
"value": false
},
{
"key": "amp_gtag_id",
"value": null
},
{
"key": "firstpromoter",
"value": false
},
{
"key": "firstpromoter_id",
"value": null
},
{
"key": "labs",
"value": "{}"
},
{
"key": "slack_url",
"value": ""
},
{
"key": "slack_username",
"value": "Ghost"
},
{
"key": "unsplash",
"value": true
},
{
"key": "shared_views",
"value": "[]"
},
{
"key": "editor_default_email_recipients",
"value": "visibility"
},
{
"key": "editor_default_email_recipients_filter",
"value": "all"
},
{
"key": "announcement_content",
"value": null
},
{
"key": "announcement_visibility",
"value": "[]"
},
{
"key": "announcement_background",
"value": "dark"
},
{
"key": "comments_enabled",
"value": "off"
},
{
"key": "outbound_link_tagging",
"value": true
},
{
"key": "pintura",
"value": false
},
{
"key": "pintura_js_url",
"value": null
},
{
"key": "pintura_css_url",
"value": null
},
{
"key": "members_enabled",
"value": true
},
{
"key": "members_invite_only",
"value": false
},
{
"key": "paid_members_enabled",
"value": true
},
{
"key": "firstpromoter_account",
"value": null
}
],
"meta": {
"filters": {
"group": "site,theme,private,members,portal,newsletter,email,amp,labs,slack,unsplash,views,firstpromoter,editor,comments,analytics,announcement,pintura"
}
}
}

View file

@ -0,0 +1,12 @@
{
"site": {
"title": "Test Site",
"description": "Thoughts, stories and ideas.",
"logo": null,
"icon": null,
"accent_color": "#FF1A75",
"locale": "en",
"url": "http://test.com/",
"version": "x.x"
}
}

492
yarn.lock
View file

@ -2054,15 +2054,23 @@
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.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==
"@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==
dependencies:
"@elastic/transport" "^8.2.0"
"@elastic/transport" "^8.3.1"
tslib "^2.4.0"
"@elastic/transport@^8.2.0":
"@elastic/elasticsearch@8.7.0":
version "8.7.0"
resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.7.0.tgz#eb0396f6899e0000109af55cffee514811e571ee"
integrity sha512-0u12N7gvSpv99XiiYE7OlOtVy4oFx7KNYd+/SSt0GqIcpj4X8bcILjpkQqK3HZcvkvwc8bFL9J11EMmUlg6FYw==
dependencies:
"@elastic/transport" "^8.3.1"
tslib "^2.4.0"
"@elastic/transport@^8.3.1":
version "8.3.1"
resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.3.1.tgz#e7569d7df35b03108ea7aa886113800245faa17f"
integrity sha512-jv/Yp2VLvv5tSMEOF8iGrtL2YsYHbpf4s+nDsItxUTLFTzuJGpnsB/xBlfsoT2kAYEnWHiSJuqrbRcpXEI/SEQ==
@ -4186,7 +4194,7 @@
dependencies:
esquery "^1.0.1"
"@playwright/test@1.34.3":
"@playwright/test@1.34.3", "@playwright/test@^1.34.3":
version "1.34.3"
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.34.3.tgz#d9f1ac3f1a09633b5ca5351c50c308bf802bde53"
integrity sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==
@ -4638,6 +4646,20 @@
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"
@ -4991,6 +5013,47 @@
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"
@ -5017,6 +5080,17 @@
"@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"
@ -5026,6 +5100,14 @@
"@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"
@ -5068,6 +5150,16 @@
"@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"
@ -5133,6 +5225,16 @@
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"
@ -5166,6 +5268,20 @@
"@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"
@ -5199,6 +5315,50 @@
"@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"
@ -5211,6 +5371,31 @@
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"
@ -5231,6 +5416,41 @@
"@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"
@ -5263,11 +5483,61 @@
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"
@ -5316,6 +5586,44 @@
"@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"
@ -5497,6 +5805,30 @@
"@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.0.18":
version "7.0.18"
resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.18.tgz#003cb5fc7810b5ba9fd2c8249ba82bc4b95a02dc"
@ -6779,6 +7111,15 @@
"@tryghost/debug" "^0.1.24"
split2 "4.2.0"
"@tryghost/elasticsearch@^3.0.13":
version "3.0.13"
resolved "https://registry.yarnpkg.com/@tryghost/elasticsearch/-/elasticsearch-3.0.13.tgz#3c764bb2b5eb61221cddcac468d97e591f66c0b2"
integrity sha512-bV9vl06ncv6LXDUZNNESsye3nKy5LmyiRZAbKRZOKhr1dlPfZ6EGy6bC9v6LrWHdlKfqpuTFnq3JDyDWpOR1pQ==
dependencies:
"@elastic/elasticsearch" "8.7.0"
"@tryghost/debug" "^0.1.25"
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"
@ -6800,7 +7141,16 @@
focus-trap "^6.7.2"
postcss-preset-env "^7.3.1"
"@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.25", "@tryghost/errors@^1.2.3":
"@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":
version "1.2.24"
resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.24.tgz#5daceff6cdee9421297849474fd885857c4bfe3f"
integrity sha512-5iRF8dl2wirb/1gQA2dv8MtxK204vnjbWvmb3fULNZoVlmuHY1ZUgwRJRquClfUEFyl2qGmNDuoxGoTvur8JKA==
@ -6809,6 +7159,15 @@
lodash "^4.17.21"
uuid "^9.0.0"
"@tryghost/errors@1.2.25", "@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/express-test@0.13.4":
version "0.13.4"
resolved "https://registry.yarnpkg.com/@tryghost/express-test/-/express-test-0.13.4.tgz#e31344a0c7678b7cfaff4d22e74e564d26f41ccc"
@ -6847,6 +7206,14 @@
"@tryghost/errors" "^1.2.24"
"@tryghost/request" "^0.1.39"
"@tryghost/http-stream@^0.1.22":
version "0.1.22"
resolved "https://registry.yarnpkg.com/@tryghost/http-stream/-/http-stream-0.1.22.tgz#b4542d9e8b1edcfc5fe1c090b17ca1cecc4d13f1"
integrity sha512-uBD6YyW4ZVPaDOfsztPZ0F7kVWUEuqjyRIOwn2+Iq/wL8VStwHek223dEVkUp3cq/KtPCgOQ5KioA2g8QSkQ8Q==
dependencies:
"@tryghost/errors" "^1.2.25"
"@tryghost/request" "^0.1.40"
"@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"
@ -6983,7 +7350,7 @@
lodash "^4.17.21"
luxon "^1.26.0"
"@tryghost/logging@2.4.4", "@tryghost/logging@2.4.5", "@tryghost/logging@^2.4.5":
"@tryghost/logging@2.4.4":
version "2.4.4"
resolved "https://registry.yarnpkg.com/@tryghost/logging/-/logging-2.4.4.tgz#4101d87c82bc6996a3ddd99755069b94d584e3e6"
integrity sha512-nRsc5EOqYuHLWYXe/K1AjrRU82xOtQN52GL7r9WY0NCKNZ5/tCFTDdOASKMbFPvpyT5pZlt2vE5+Fu8TdbN8Aw==
@ -7000,6 +7367,23 @@
json-stringify-safe "^5.0.1"
lodash "^4.17.21"
"@tryghost/logging@2.4.5", "@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/metrics@1.0.24":
version "1.0.24"
resolved "https://registry.yarnpkg.com/@tryghost/metrics/-/metrics-1.0.24.tgz#d1aad748a4d0ca71ce7a78fd926ff0fdf44e95b3"
@ -7097,6 +7481,15 @@
moment "^2.29.1"
prettyjson "^1.2.5"
"@tryghost/pretty-stream@^0.1.19":
version "0.1.19"
resolved "https://registry.yarnpkg.com/@tryghost/pretty-stream/-/pretty-stream-0.1.19.tgz#bdfc6966403e4f10159e81bc576ba5f336b9d217"
integrity sha512-lJ8+u7FgALxwIeHJPxgoeRukJjMn7vVDmPV7WzW46BtqSJghOrlcI0JiLGTRxkrj+czDeys6rx8haS5KXTzPDA==
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"
@ -7113,6 +7506,17 @@
got "9.6.0"
lodash "^4.17.21"
"@tryghost/request@^0.1.40":
version "0.1.40"
resolved "https://registry.yarnpkg.com/@tryghost/request/-/request-0.1.40.tgz#daac10c1fe34e4397e5f76d75ae0de85bbc58c9b"
integrity sha512-EX1iy6k2xvL7u5pgfpBhgmpWVUhc4X8UupCmNfhxiPS4JYbNDHEvh2e8Ha/20kOJs8ZEvbu/qosQoUhZYXKmHg==
dependencies:
"@tryghost/errors" "^1.2.25"
"@tryghost/validator" "^0.2.5"
"@tryghost/version" "^0.1.23"
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"
@ -7210,6 +7614,17 @@
moment-timezone "^0.5.23"
validator "7.2.0"
"@tryghost/validator@^0.2.5":
version "0.2.5"
resolved "https://registry.yarnpkg.com/@tryghost/validator/-/validator-0.2.5.tgz#dfe709db0e88d37117bed23909b33c96d349d059"
integrity sha512-/7L53955PpahkwDOVxL6ak/o4fBPv/eQq8+hvGIlTHlJghb2OW5RYO5Pv4Xc/DcTc5vH3ZwyeT4tltvV+Hsrvw==
dependencies:
"@tryghost/errors" "^1.2.25"
"@tryghost/tpl" "^0.1.25"
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"
@ -7218,6 +7633,14 @@
"@tryghost/root-utils" "^0.3.22"
semver "^7.3.5"
"@tryghost/version@^0.1.23":
version "0.1.23"
resolved "https://registry.yarnpkg.com/@tryghost/version/-/version-0.1.23.tgz#2cd717af54658880a29a6f0aa3f9edbb01ba47ee"
integrity sha512-JH1VodsYyuzK0ANAy7nZFFe3nwAXoE+UuCAuCBXFzWCA/Id3LBJiGn97P7RrNcFvmuJ1JHtYTlHVhaoYwjYL1w==
dependencies:
"@tryghost/root-utils" "^0.3.23"
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"
@ -24308,18 +24731,52 @@ modify-values@^1.0.0:
resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
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:
moment-timezone@0.5.23, moment-timezone@^0.5.23:
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@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:
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:
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#2aca618f8880250fb99ad48d61f0ca7251f1e648:
version "0.1.0"
resolved "https://codeload.github.com/TryGhost/monobundle/tar.gz/2aca618f8880250fb99ad48d61f0ca7251f1e648"
@ -28392,6 +28849,19 @@ 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@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba"