From bda0cd0bd09574740cc831010f9bd7f4f6d8ffa3 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Fri, 3 Jun 2022 22:03:30 +1000 Subject: [PATCH 001/175] fix(navigation): allow navigation opt-out with `navigation: false` (#1208) * fix(navigation): allow navigation opt-out with `navigation: false` * fix: use existing where query --- src/runtime/server/api/navigation.ts | 8 +++++++- test/features/navigation.ts | 6 ++++++ test/fixtures/basic/content/navigation-disabled.md | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/basic/content/navigation-disabled.md diff --git a/src/runtime/server/api/navigation.ts b/src/runtime/server/api/navigation.ts index 4f11e3063..46c5c54ae 100644 --- a/src/runtime/server/api/navigation.ts +++ b/src/runtime/server/api/navigation.ts @@ -13,7 +13,13 @@ export default defineEventHandler(async (event) => { * Partial contents are not included in the navigation * A partial content is a content that has `_` prefix in its path */ - _partial: false + _partial: false, + /** + * Exclude any pages which have opted out of navigation via frontmatter. + */ + navigation: { + $ne: false + } }) .find() diff --git a/test/features/navigation.ts b/test/features/navigation.ts index 3a72a9fc6..647130db0 100644 --- a/test/features/navigation.ts +++ b/test/features/navigation.ts @@ -53,5 +53,11 @@ export const testNavigation = () => { expect(item.title).toEqual(String(fibo[index])) }) }) + + test('Should remove `navigation-disabled.md` content', async () => { + const list = await $fetch('/api/_content/navigation/') + const hidden = list.find(i => i._path === '/navigation-disabled') + expect(hidden).toBeUndefined() + }) }) } diff --git a/test/fixtures/basic/content/navigation-disabled.md b/test/fixtures/basic/content/navigation-disabled.md new file mode 100644 index 000000000..73a14154e --- /dev/null +++ b/test/fixtures/basic/content/navigation-disabled.md @@ -0,0 +1,7 @@ +--- +navigation: false +--- + +# Hidden from navigation + +Basic description From 51a162035ea47e664e68a86484a311a0bc96796a Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Fri, 3 Jun 2022 22:55:56 +1000 Subject: [PATCH 002/175] feat(types): provide augmentations for `only` and `without` (#1200) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ahad Birang Co-authored-by: Yaël Guilloux --- src/runtime/query/query.ts | 5 +++-- src/runtime/types.d.ts | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/runtime/query/query.ts b/src/runtime/query/query.ts index 87e4d82fb..ed477520e 100644 --- a/src/runtime/query/query.ts +++ b/src/runtime/query/query.ts @@ -1,9 +1,10 @@ import type { DatabaseFetcher, QueryBuilder, QueryBuilderParams, SortOptions } from '../types' +import { ParsedContent } from '../types' import { ensureArray } from './match/utils' const arrayParams = ['sort', 'where', 'only', 'without'] -export const createQuery = ( +export const createQuery = ( fetcher: DatabaseFetcher, queryParams?: Partial ): QueryBuilder => { @@ -29,7 +30,7 @@ export const createQuery = ( const query: QueryBuilder = { params: () => Object.freeze(params), - only: $set('only', ensureArray), + only: $set('only', ensureArray) as () => ReturnType['only']>, without: $set('without', ensureArray), where: $set('where', (q: any) => [...ensureArray(params.where), q]), sort: $set('sort', (sort: SortOptions) => [...ensureArray(params.sort), ...ensureArray(sort)]), diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index f0df92b64..e6a9dc4e5 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -174,12 +174,14 @@ export interface QueryBuilder { /** * Select a subset of fields */ - only(keys: string | string[]): QueryBuilder + only(keys: K): QueryBuilder> + only(keys: K): QueryBuilder> /** * Remove a subset of fields */ - without(keys: string | string[]): QueryBuilder + without(keys: K): QueryBuilder> + without(keys: K): QueryBuilder> /** * Sort results From adc0143ca72b094fad908262f6fb0185ddbc07e4 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Fri, 3 Jun 2022 23:01:05 +1000 Subject: [PATCH 003/175] refactor!: spell `extensions` correctly (#1204) --- playground/content/real-content/content.md | 2 +- src/module.ts | 4 ++-- src/runtime/server/transformers/csv.ts | 2 +- src/runtime/server/transformers/json.ts | 2 +- src/runtime/server/transformers/markdown.ts | 2 +- src/runtime/server/transformers/path-meta.ts | 2 +- src/runtime/server/transformers/shiki.ts | 2 +- src/runtime/server/transformers/yaml.ts | 2 +- src/runtime/types.d.ts | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/playground/content/real-content/content.md b/playground/content/real-content/content.md index 5b90d6a4b..5bb9e07b9 100644 --- a/playground/content/real-content/content.md +++ b/playground/content/real-content/content.md @@ -89,7 +89,7 @@ Parsers and Transformers can be defined using `defineContentPlugin`: ```ts export default defineContentPlugin({ name: 'plugin-name', - extentions: ['.md'], + extensions: ['.md'], parse: async (id, content) => {}, transform: async content => {} }) diff --git a/src/module.ts b/src/module.ts index 687f6421f..c482b76ab 100644 --- a/src/module.ts +++ b/src/module.ts @@ -279,8 +279,8 @@ export default defineNuxtModule({ // TODO: remove kit usage templateUtils.importSources(contentContext.transformers), `const transformers = [${contentContext.transformers.map(templateUtils.importName).join(', ')}]`, - 'export const getParser = (ext) => transformers.find(p => ext.match(new RegExp(p.extentions.join("|"), "i")) && p.parse)', - 'export const getTransformers = (ext) => transformers.filter(p => ext.match(new RegExp(p.extentions.join("|"), "i")) && p.transform)', + 'export const getParser = (ext) => transformers.find(p => ext.match(new RegExp(p.extensions.join("|"), "i")) && p.parse)', + 'export const getTransformers = (ext) => transformers.filter(p => ext.match(new RegExp(p.extensions.join("|"), "i")) && p.transform)', 'export default () => {}' ].join('\n') }) diff --git a/src/runtime/server/transformers/csv.ts b/src/runtime/server/transformers/csv.ts index 873d0df55..949d887b2 100644 --- a/src/runtime/server/transformers/csv.ts +++ b/src/runtime/server/transformers/csv.ts @@ -2,7 +2,7 @@ import { useRuntimeConfig } from '#imports' export default { name: 'csv', - extentions: ['.csv'], + extensions: ['.csv'], parse: async (_id, content) => { const config = { ...useRuntimeConfig().content?.csv || {} } diff --git a/src/runtime/server/transformers/json.ts b/src/runtime/server/transformers/json.ts index b8ca081b1..fd5139630 100644 --- a/src/runtime/server/transformers/json.ts +++ b/src/runtime/server/transformers/json.ts @@ -2,7 +2,7 @@ import destr from 'destr' export default { name: 'Json', - extentions: ['.json', '.json5'], + extensions: ['.json', '.json5'], parse: async (_id, content) => { let parsed = content diff --git a/src/runtime/server/transformers/markdown.ts b/src/runtime/server/transformers/markdown.ts index a36f3d5a8..48077d6a4 100644 --- a/src/runtime/server/transformers/markdown.ts +++ b/src/runtime/server/transformers/markdown.ts @@ -9,7 +9,7 @@ const importPlugin = async (p: [string, any]) => ([ export default { name: 'markdown', - extentions: ['.md'], + extensions: ['.md'], parse: async (_id, content) => { const config: MarkdownOptions = { ...useRuntimeConfig().content?.markdown || {} } config.rehypePlugins = await Promise.all((config.rehypePlugins || []).map(importPlugin)) diff --git a/src/runtime/server/transformers/path-meta.ts b/src/runtime/server/transformers/path-meta.ts index 53bc2a925..17e91cbe1 100644 --- a/src/runtime/server/transformers/path-meta.ts +++ b/src/runtime/server/transformers/path-meta.ts @@ -22,7 +22,7 @@ const describeId = (_id: string) => { export default { name: 'path-meta', - extentions: ['.*'], + extensions: ['.*'], transform (content) { const { locales, defaultLocale } = useRuntimeConfig().content || {} const { _source, _file, _path, _extension } = describeId(content._id) diff --git a/src/runtime/server/transformers/shiki.ts b/src/runtime/server/transformers/shiki.ts index 4dbd20736..e2c698586 100644 --- a/src/runtime/server/transformers/shiki.ts +++ b/src/runtime/server/transformers/shiki.ts @@ -8,7 +8,7 @@ const withContentBase = (url: string) => { export default { name: 'markdown', - extentions: ['.md'], + extensions: ['.md'], transform: async (content) => { const codeBlocks = [] visit( diff --git a/src/runtime/server/transformers/yaml.ts b/src/runtime/server/transformers/yaml.ts index 94d3189f8..50d5636c4 100644 --- a/src/runtime/server/transformers/yaml.ts +++ b/src/runtime/server/transformers/yaml.ts @@ -2,7 +2,7 @@ import { parseFrontMatter } from '../../markdown-parser' export default { name: 'Yaml', - extentions: ['.yml', '.yaml'], + extensions: ['.yml', '.yaml'], parse: async (_id, content) => { const { data } = await parseFrontMatter(`---\n${content}\n---`) diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index e6a9dc4e5..96da39a69 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -105,7 +105,7 @@ export interface Toc { export interface ContentTransformer { name: string - extentions: string[] + extensions: string[] parse?(id: string, content: string): Promise | ParsedContent transform?: ((content: ParsedContent) => Promise) | ((content: ParsedContent) => ParsedContent) } From 3fbcd22a17eee6bb1c8224b2cfb436539cda0a6b Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Fri, 3 Jun 2022 23:01:23 +1000 Subject: [PATCH 004/175] fix(types): more accurately represent `ParsedContentMeta` (#1196) --- src/runtime/server/transformers/path-meta.ts | 5 +++-- src/runtime/types.d.ts | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/runtime/server/transformers/path-meta.ts b/src/runtime/server/transformers/path-meta.ts index 17e91cbe1..61c03f6b9 100644 --- a/src/runtime/server/transformers/path-meta.ts +++ b/src/runtime/server/transformers/path-meta.ts @@ -1,6 +1,7 @@ import { pascalCase } from 'scule' import slugify from 'slugify' import { withoutTrailingSlash, withLeadingSlash } from 'ufo' +import { ParsedContentMeta } from '../../types' import { useRuntimeConfig } from '#imports' const SEMVER_REGEX = /^(\d+)(\.\d+)*(\.x)?$/ @@ -12,7 +13,7 @@ const describeId = (_id: string) => { parts[parts.length - 1] = filename const _path = parts.join('/') - return { + return > { _source, _path, _extension, @@ -33,7 +34,7 @@ export default { const filePath = parts.join('/') - return { + return { _path: generatePath(filePath), _draft: isDraft(filePath), _partial: isPartial(filePath), diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index 96da39a69..c5807607c 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -13,10 +13,6 @@ export interface ParsedContentMeta { * Content path, this path is source agnostic and it the content my live in any source */ _path?: string - /** - * Content slug - */ - _slug?: string /** * Content title */ @@ -33,11 +29,23 @@ export interface ParsedContentMeta { * Content locale */ _locale?: boolean + /** + * File type of the content, i.e `markdown` + */ + _type?: string + /** + * Path to the file relative to the content directory + */ + _file?: string + /** + * Extension of the file + */ + _extension?: string [key: string]: any } -export interface ParsedContent extends ParsedContentMeta{ +export interface ParsedContent extends ParsedContentMeta { /** * Excerpt */ From 0329ac92c3b9bb4c24205beca750b82b28c5172b Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Fri, 3 Jun 2022 23:15:43 +1000 Subject: [PATCH 005/175] feat(types): expose `MarkdownParsedContent` for improved type generics (#1199) --- .../3.guide/2.displaying/4.typescript.md | 21 ++++++++++++++++++ src/runtime/markdown-parser/index.ts | 4 ++-- src/runtime/server/transformers/markdown.ts | 3 ++- src/runtime/types.d.ts | 22 +++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/docs/content/3.guide/2.displaying/4.typescript.md b/docs/content/3.guide/2.displaying/4.typescript.md index 019f7aea9..a6bdecbc0 100644 --- a/docs/content/3.guide/2.displaying/4.typescript.md +++ b/docs/content/3.guide/2.displaying/4.typescript.md @@ -39,6 +39,27 @@ const { data } = await useAsyncData( ``` +## Markdown Specific Types + +If you know the content being fetched will be Markdown, then you can extend the `MarkdownParsedContent`{lang="ts"} type for improved +type-safety. + +```vue + +``` + + ## The future TypeScript support is a strong focus for us. diff --git a/src/runtime/markdown-parser/index.ts b/src/runtime/markdown-parser/index.ts index b310efb70..07c44c69b 100644 --- a/src/runtime/markdown-parser/index.ts +++ b/src/runtime/markdown-parser/index.ts @@ -8,7 +8,7 @@ import remarkGfm from 'remark-gfm' import rehypeSortAttributeValues from 'rehype-sort-attribute-values' import rehypeSortAttributes from 'rehype-sort-attributes' import rehypeRaw from 'rehype-raw' -import { MarkdownOptions, Toc } from '../types' +import { MarkdownOptions, MarkdownParsedContent, Toc } from '../types' import { parseFrontMatter } from './remark-mdc/frontmatter' import { generateToc } from './toc' import { contentHeading, generateBody } from './content' @@ -61,7 +61,7 @@ export async function parse (file: string, userOptions: Partial */ const heading = contentHeading(body) - return { + return <{ meta: Partial, body: MarkdownParsedContent['body'] }> { body: { ...body, toc diff --git a/src/runtime/server/transformers/markdown.ts b/src/runtime/server/transformers/markdown.ts index 48077d6a4..58d6cbca0 100644 --- a/src/runtime/server/transformers/markdown.ts +++ b/src/runtime/server/transformers/markdown.ts @@ -1,5 +1,6 @@ import { parse } from '../../markdown-parser' import type { MarkdownOptions } from '../../types' +import { MarkdownParsedContent } from '../../types' import { useRuntimeConfig } from '#imports' const importPlugin = async (p: [string, any]) => ([ @@ -17,7 +18,7 @@ export default { const parsed = await parse(content, config) - return { + return { ...parsed.meta, body: parsed.body, _type: 'markdown', diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index c5807607c..1770e0b5c 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -111,6 +111,28 @@ export interface Toc { links: TocLink[] } +export interface MarkdownParsedContent extends ParsedContent { + _type: 'markdown', + /** + * Content is empty + */ + _empty: boolean + /** + * Content description + */ + description: string + /** + * Content excerpt, generated from content + */ + excerpt?: MarkdownRoot + /** + * Parsed Markdown body with included table of contents. + */ + body: MarkdownRoot & { + toc?: Toc + } +} + export interface ContentTransformer { name: string extensions: string[] From afb791b982a74311b43d52c050bb25190bc38aaa Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Sat, 4 Jun 2022 01:11:48 +1000 Subject: [PATCH 006/175] feat(navigation): allow passing QueryBuilder or QueryBuilderParams in `fetchNavigation` or `` (#1206) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Chopin Co-authored-by: Yaël Guilloux --- .../1.components/3.content-navigation.md | 34 ++++++++++- package.json | 1 + src/runtime/components/ContentNavigation.ts | 21 +++++-- src/runtime/composables/navigation.ts | 10 +++- test/basic.test.ts | 2 + test/features/navigation.ts | 39 ++++++++++++ test/fixtures/basic/pages/nav-with-query.vue | 60 +++++++++++++++++++ 7 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/basic/pages/nav-with-query.vue diff --git a/docs/content/4.api/1.components/3.content-navigation.md b/docs/content/4.api/1.components/3.content-navigation.md index 1e47d1763..d7a5eb255 100644 --- a/docs/content/4.api/1.components/3.content-navigation.md +++ b/docs/content/4.api/1.components/3.content-navigation.md @@ -10,7 +10,7 @@ The ``{lang=html} is a renderless component shortening the ac ## Props - `query`{lang=ts}: A query to be passed to `fetchContentNavigation()`. - - Type: `QueryBuilderParams`{lang=ts} + - Type: `QueryBuilderParams | QueryBuilder`{lang=ts} - Default: `undefined`{lang=ts} ## Slots @@ -43,3 +43,35 @@ The `empty`{lang=ts} slot can be used to display a default content before render ``` + +## Query + +By providing the `query` prop you can customise the content used for navigation. + +Here we pass along a `QueryBuilder` instance. + +```vue + + + +``` diff --git a/package.json b/package.json index 3118b13f2..bdb796f01 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dev:build": "nuxi build playground", "dev:prepare": "nuxt-module-build --stub && nuxi prepare playground", "dev:docs": "(cd docs && nuxi dev)", + "dev:fixtures": "nuxi dev test/fixtures/basic", "build:docs": "(cd docs && nuxi build)", "example": "./scripts/example.sh", "lint": "eslint --ext .js,.ts,.vue .", diff --git a/src/runtime/components/ContentNavigation.ts b/src/runtime/components/ContentNavigation.ts index aa7b44a66..ab598ccb1 100644 --- a/src/runtime/components/ContentNavigation.ts +++ b/src/runtime/components/ContentNavigation.ts @@ -1,6 +1,7 @@ -import { PropType, toRefs, defineComponent, h, useSlots } from 'vue' +import { PropType, toRefs, defineComponent, h, useSlots, computed } from 'vue' import { hash } from 'ohash' import type { NavItem, QueryBuilderParams } from '../types' +import { QueryBuilder } from '../types' import { useAsyncData, fetchContentNavigation } from '#imports' export default defineComponent({ @@ -9,7 +10,7 @@ export default defineComponent({ * A query to be passed to `fetchContentNavigation()`. */ query: { - type: Object as PropType, + type: Object as PropType, required: false, default: undefined } @@ -19,9 +20,21 @@ export default defineComponent({ query } = toRefs(props) + const queryBuilder = computed(() => { + /* + * We need to extract params from a possible QueryBuilder beforehand + * so we don't end up with a duplicate useAsyncData key. + */ + if (typeof query.value?.params === 'function') { + return query.value.params() + } + + return query.value + }) + const { data, refresh } = await useAsyncData( - `content-navigation-${hash(query.value)}`, - () => fetchContentNavigation(query.value) + `content-navigation-${hash(queryBuilder.value)}`, + () => fetchContentNavigation(queryBuilder.value) ) return { diff --git a/src/runtime/composables/navigation.ts b/src/runtime/composables/navigation.ts index 933c715d7..1d236e886 100644 --- a/src/runtime/composables/navigation.ts +++ b/src/runtime/composables/navigation.ts @@ -1,11 +1,15 @@ import { hash } from 'ohash' import { useHead, useCookie } from '#app' -import type { NavItem, QueryBuilder } from '../types' +import type { NavItem, QueryBuilder, QueryBuilderParams } from '../types' import { jsonStringify } from '../utils/json' import { withContentBase } from './utils' -export const fetchContentNavigation = (queryBuilder?: QueryBuilder) => { - const params = queryBuilder?.params() +export const fetchContentNavigation = (queryBuilder?: QueryBuilder | QueryBuilderParams) => { + let params = queryBuilder + + // When params is an instance of QueryBuilder then we need to pick the params explicitly + if (typeof params?.params === 'function') { params = params.params() } + const apiPath = withContentBase(params ? `/navigation/${hash(params)}` : '/navigation') if (!process.dev && process.server) { diff --git a/test/basic.test.ts b/test/basic.test.ts index 3be5742f9..2064225f6 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -103,9 +103,11 @@ describe('fixtures:basic', async () => { const html = await $fetch('/_partial/content-(v2)') expect(html).contains('Content (v2)') }) + testNavigation() testMarkdownParser() + testMarkdownParserExcerpt() testYamlParser() diff --git a/test/features/navigation.ts b/test/features/navigation.ts index 647130db0..deb2ac3de 100644 --- a/test/features/navigation.ts +++ b/test/features/navigation.ts @@ -59,5 +59,44 @@ export const testNavigation = () => { const hidden = list.find(i => i._path === '/navigation-disabled') expect(hidden).toBeUndefined() }) + + test('ContentNavigation should work with both QueryBuilder and QueryBuilderParams', async () => { + /* These are local replicas of the queries made in `nav-with-query.vue` */ + const catsQuery = { + where: { + _path: /^\/cats/ + } + } + const numbersQuery = { + where: { + _path: /^\/numbers/ + } + } + const dogsQuery = { + where: { _path: /^\/dogs/ } + } + + const queryNav = async (query) => { + const list = await $fetch(`/api/_content/navigation/${hash(query)}`, { + params: { + _params: jsonStringify(query) + } + }) + + return list + } + + const [catsData, numbersData, dogsData] = await Promise.all([ + queryNav(catsQuery), + queryNav(numbersQuery), + queryNav(dogsQuery) + ]) + + const html = await $fetch('/nav-with-query') + + catsData[0].children.forEach(({ title }) => expect(html).contains(title)) + numbersData[0].children.forEach(({ title }) => expect(html).contains(title)) + dogsData[0].children.forEach(({ title }) => expect(html).contains(title)) + }) }) } diff --git a/test/fixtures/basic/pages/nav-with-query.vue b/test/fixtures/basic/pages/nav-with-query.vue new file mode 100644 index 000000000..70697a4ab --- /dev/null +++ b/test/fixtures/basic/pages/nav-with-query.vue @@ -0,0 +1,60 @@ + + + From 32d523650705594414504661f83c13f25d52995d Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Sat, 4 Jun 2022 01:13:52 +1000 Subject: [PATCH 007/175] fix(types): change `QueryBuilderParams` keys to partial (#1203) --- src/runtime/composables/query.ts | 2 +- src/runtime/query/query.ts | 2 +- src/runtime/server/api/navigation.ts | 4 ++-- src/runtime/server/api/query.ts | 3 +-- src/runtime/server/storage.ts | 6 +++--- src/runtime/types.d.ts | 16 ++++++++-------- src/runtime/utils/query.ts | 3 ++- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/runtime/composables/query.ts b/src/runtime/composables/query.ts index 75a2a2009..dd05ac9b4 100644 --- a/src/runtime/composables/query.ts +++ b/src/runtime/composables/query.ts @@ -9,7 +9,7 @@ import { withContentBase } from './utils' /** * Query fetcher */ -export const queryFetch = (params: Partial) => { +export const queryFetch = (params: QueryBuilderParams) => { const apiPath = withContentBase(process.dev ? '/query' : `/query/${hash(params)}`) // Prefetch the query diff --git a/src/runtime/query/query.ts b/src/runtime/query/query.ts index ed477520e..0fcb95f5a 100644 --- a/src/runtime/query/query.ts +++ b/src/runtime/query/query.ts @@ -6,7 +6,7 @@ const arrayParams = ['sort', 'where', 'only', 'without'] export const createQuery = ( fetcher: DatabaseFetcher, - queryParams?: Partial + queryParams?: QueryBuilderParams ): QueryBuilder => { const params = { ...queryParams diff --git a/src/runtime/server/api/navigation.ts b/src/runtime/server/api/navigation.ts index 46c5c54ae..d0e7e29a4 100644 --- a/src/runtime/server/api/navigation.ts +++ b/src/runtime/server/api/navigation.ts @@ -1,11 +1,11 @@ import { defineEventHandler } from 'h3' import { serverQueryContent } from '../storage' import { createNav } from '../navigation' -import { ParsedContentMeta, QueryBuilderParams } from '../../types' +import { ParsedContentMeta } from '../../types' import { getContentQuery } from '../../utils/query' export default defineEventHandler(async (event) => { - const query: Partial = getContentQuery(event) + const query = getContentQuery(event) const contents = await serverQueryContent(event, query) .where({ diff --git a/src/runtime/server/api/query.ts b/src/runtime/server/api/query.ts index 381eb3827..a8b9e33e5 100644 --- a/src/runtime/server/api/query.ts +++ b/src/runtime/server/api/query.ts @@ -1,10 +1,9 @@ import { createError, defineEventHandler } from 'h3' -import type { QueryBuilderParams } from '../../types' import { serverQueryContent } from '../storage' import { getContentQuery } from '../../utils/query' export default defineEventHandler(async (event) => { - const query: Partial = getContentQuery(event) + const query = getContentQuery(event) const contents = await serverQueryContent(event, query).find() // If no documents matchs and using findOne() diff --git a/src/runtime/server/storage.ts b/src/runtime/server/storage.ts index 22b138d58..e0880436c 100644 --- a/src/runtime/server/storage.ts +++ b/src/runtime/server/storage.ts @@ -122,10 +122,10 @@ export const getContent = async (event: CompatibilityEvent, id: string): Promise * Query contents */ export function serverQueryContent(event: CompatibilityEvent): QueryBuilder; -export function serverQueryContent(event: CompatibilityEvent, params?: Partial): QueryBuilder; +export function serverQueryContent(event: CompatibilityEvent, params?: QueryBuilderParams): QueryBuilder; export function serverQueryContent(event: CompatibilityEvent, path?: string, ...pathParts: string[]): QueryBuilder; -export function serverQueryContent (event: CompatibilityEvent, path?: string | Partial, ...pathParts: string[]) { - let params = (path || {}) as Partial +export function serverQueryContent (event: CompatibilityEvent, path?: string | QueryBuilderParams, ...pathParts: string[]) { + let params = (path || {}) as QueryBuilderParams if (typeof path === 'string') { path = withLeadingSlash(joinURL(path, ...pathParts)) // escape regex special chars diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index 1770e0b5c..f039f90ea 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -184,14 +184,14 @@ export interface SortFields { export type SortOptions = SortParams | SortFields export interface QueryBuilderParams { - first: boolean - skip: number - limit: number - only: string[] - without: string[] - sort: SortOptions[] - where: object[] - surround: { + first?: boolean + skip?: number + limit?: number + only?: string[] + without?: string[] + sort?: SortOptions[] + where?: object[] + surround?: { query: string | object before?: number after?: number diff --git a/src/runtime/utils/query.ts b/src/runtime/utils/query.ts index c51db59ff..7d0b5fd39 100644 --- a/src/runtime/utils/query.ts +++ b/src/runtime/utils/query.ts @@ -1,4 +1,5 @@ import { useQuery, CompatibilityEvent, createError } from 'h3' +import { QueryBuilderParams } from '../types' import { jsonParse } from './json' const parseQueryParams = (body: string) => { @@ -10,7 +11,7 @@ const parseQueryParams = (body: string) => { } const memory = {} -export const getContentQuery = (event: CompatibilityEvent) => { +export const getContentQuery = (event: CompatibilityEvent): QueryBuilderParams => { const { qid } = event.context.params const query: any = useQuery(event) || {} From 13b6a70ece4ce6a544c3ce02621be7a4623aab06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 17:14:16 +0200 Subject: [PATCH 008/175] chore(deps): update devdependency lint-staged to v13 (#1193) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index bdb796f01..ad6deb95a 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "globby": "^13.1.1", "husky": "^8.0.1", "jiti": "^1.13.0", - "lint-staged": "^12.5.0", + "lint-staged": "^13.0.0", "nuxt": "^3.0.0-rc.3", "vitest": "^0.13.0" } diff --git a/yarn.lock b/yarn.lock index 91f0c1d18..3ffa96c4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4003,16 +4003,16 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^12.5.0: - version "12.5.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.5.0.tgz#d6925747480ae0e380d13988522f9dd8ef9126e3" - integrity sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g== +lint-staged@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.0.tgz#ce3526a844e6328814a3261fbfedc610a18856fa" + integrity sha512-vWban5utFt78VZohbosUxNIa46KKJ+KOQTDWTQ8oSl1DLEEVl9zhUtaQbiiydAmx+h2wKJK2d0+iMaRmknuWRQ== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" commander "^9.3.0" debug "^4.3.4" - execa "^5.1.1" + execa "^6.1.0" lilconfig "2.0.5" listr2 "^4.0.5" micromatch "^4.0.5" @@ -4020,8 +4020,7 @@ lint-staged@^12.5.0: object-inspect "^1.12.2" pidtree "^0.5.0" string-argv "^0.3.1" - supports-color "^9.2.2" - yaml "^1.10.2" + yaml "^2.1.1" listhen@^0.2.11: version "0.2.11" @@ -6617,11 +6616,6 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.2.tgz#502acaf82f2b7ee78eb7c83dcac0f89694e5a7bb" - integrity sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA== - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -7430,6 +7424,11 @@ yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" + integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== + yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" From c18a99da3346d3368d71062c9baa518e69ff8bec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 17:14:27 +0200 Subject: [PATCH 009/175] chore(deps): update all non-major dependencies (#1192) Co-authored-by: Renovate Bot --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index ad6deb95a..65c45fe6d 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "scule": "^0.2.1", "shiki-es": "^0.1.2", "slugify": "^1.6.5", - "stringify-entities": "^4.0.2", + "stringify-entities": "^4.0.3", "ufo": "^0.8.4", "unctx": "^1.1.4", "unified": "^10.1.2", @@ -99,6 +99,6 @@ "jiti": "^1.13.0", "lint-staged": "^13.0.0", "nuxt": "^3.0.0-rc.3", - "vitest": "^0.13.0" + "vitest": "^0.13.1" } } diff --git a/yarn.lock b/yarn.lock index 3ffa96c4c..ee041b2a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6512,10 +6512,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.2.tgz#13d113dc7449dc8ae4cb22c28883ee3fff8753e3" - integrity sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ== +stringify-entities@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== dependencies: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" @@ -7193,10 +7193,10 @@ vite@^2.9.8, vite@^2.9.9: optionalDependencies: fsevents "~2.3.2" -vitest@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.13.0.tgz#8c2e8a555bb6d7ac016408ffdc41d270bf69f37c" - integrity sha512-vuYt3+G25MMnANgyMHHG3VK86C9K/VFi/8uH5myQ2v660W4WArv99ElakPlVFxxSXXM1jqQPiPj2ht35Bod9LQ== +vitest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.13.1.tgz#4b857c6ca0a9a1a2340dc8a1d9991b1f75934220" + integrity sha512-CfSBf7YFw/i8HumSUQRtZKs0aV91DC9WU8nAgIJAlawKHaFuPHQohDwOTPIFgrxySiuFYUa0Yohf9gDFfBwjxA== dependencies: "@types/chai" "^4.3.1" "@types/chai-subset" "^1.3.3" From 7c5fec224926e248cc567656e397fc1898d985db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:28:56 +0200 Subject: [PATCH 010/175] chore(deps): update all non-major dependencies (#1210) Co-authored-by: Renovate Bot --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 65c45fe6d..b8c27b508 100644 --- a/package.json +++ b/package.json @@ -93,12 +93,12 @@ "@types/flat": "^5.0.2", "@types/ws": "^8.5.3", "c8": "^7.11.3", - "eslint": "^8.16.0", + "eslint": "^8.17.0", "globby": "^13.1.1", "husky": "^8.0.1", "jiti": "^1.13.0", "lint-staged": "^13.0.0", "nuxt": "^3.0.0-rc.3", - "vitest": "^0.13.1" + "vitest": "^0.14.1" } } diff --git a/yarn.lock b/yarn.lock index ee041b2a9..c22af545a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2707,10 +2707,10 @@ eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.16.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.16.0.tgz#6d936e2d524599f2a86c708483b4c372c5d3bbae" - integrity sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA== +eslint@^8.17.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21" + integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" @@ -7193,10 +7193,10 @@ vite@^2.9.8, vite@^2.9.9: optionalDependencies: fsevents "~2.3.2" -vitest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.13.1.tgz#4b857c6ca0a9a1a2340dc8a1d9991b1f75934220" - integrity sha512-CfSBf7YFw/i8HumSUQRtZKs0aV91DC9WU8nAgIJAlawKHaFuPHQohDwOTPIFgrxySiuFYUa0Yohf9gDFfBwjxA== +vitest@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.14.1.tgz#f2fd8b31abdbbadb9ee895f8fde35a068ea2a5f5" + integrity sha512-2UUm6jYgkwh7Y3VKSRR8OuaNCm+iA5LPDnal7jyITN39maZK9L+JVxqjtQ39PSFo5Fl3/BgaJvER6GGHX9JLxg== dependencies: "@types/chai" "^4.3.1" "@types/chai-subset" "^1.3.3" From a7d3f4d154ec29fa8dc7388d30f4bc59032c8f92 Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Wed, 8 Jun 2022 11:40:34 +0200 Subject: [PATCH 011/175] fix(ContentQuery): handle `null` data (#1230) --- src/runtime/components/ContentQuery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/components/ContentQuery.ts b/src/runtime/components/ContentQuery.ts index 67031e504..1852aa827 100644 --- a/src/runtime/components/ContentQuery.ts +++ b/src/runtime/components/ContentQuery.ts @@ -187,7 +187,7 @@ export default defineComponent({ if (!data && slots?.['not-found']) { return slots['not-found']({ props, ...this.$attrs }) } // Empty slots for `one` if type is "markdown" refers to an empty `body.children` key. - if (data._type && data._type === 'markdown' && !data?.body?.children.length) { return slots.empty({ props, ...this.$attrs }) } + if (data?._type === 'markdown' && !data?.body?.children.length) { return slots.empty({ props, ...this.$attrs }) } } else if (!data || !data.length) { // Handle `find()` and `findSurround()` From 1777fd74bc6e92735fdf1c25062b8f03674e6a7c Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Wed, 8 Jun 2022 11:42:39 +0200 Subject: [PATCH 012/175] fix(markdown): issue with `h1-6` tags (#1223) * fix(markdown): issue with `h1-6` tags * test: add heading tests --- src/runtime/markdown-parser/handler/html.ts | 2 +- test/features/parser-markdown.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/runtime/markdown-parser/handler/html.ts b/src/runtime/markdown-parser/handler/html.ts index ba4eff9cf..036aef31b 100644 --- a/src/runtime/markdown-parser/handler/html.ts +++ b/src/runtime/markdown-parser/handler/html.ts @@ -6,7 +6,7 @@ import { getTagName } from './utils' export default function html (h: H, node: any) { const tagName = getTagName(node.value) - if (tagName) { + if (tagName && /[A-Z]/.test(tagName)) { node.value = node.value.replace(tagName, kebabCase(tagName)) } diff --git a/test/features/parser-markdown.ts b/test/features/parser-markdown.ts index 39bd03e32..d73a54234 100644 --- a/test/features/parser-markdown.ts +++ b/test/features/parser-markdown.ts @@ -68,5 +68,19 @@ export const testMarkdownParser = () => { expect(parsed.body).toHaveProperty('children') expect(parsed.body.children.length).toEqual(0) }) + + test('h1 tags', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: '

Hello

' + } + }) + + expect(parsed.body).toHaveProperty('children') + expect(parsed.body.children.length).toEqual(1) + expect(parsed.body.children[0].tag).toEqual('h1') + }) }) } From 74b84ffd32ef78c9d3145a87658a45212651cd9a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jun 2022 11:43:14 +0200 Subject: [PATCH 013/175] chore(deps): lock file maintenance (#1218) Co-authored-by: Renovate Bot --- docs/yarn.lock | 456 ++++++++++++++++++++++--------------------------- yarn.lock | 452 ++++++++++++++++++++++++------------------------ 2 files changed, 431 insertions(+), 477 deletions(-) diff --git a/docs/yarn.lock b/docs/yarn.lock index f7f60ee98..d241902ed 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -275,10 +275,10 @@ dependencies: mime "^3.0.0" -"@csstools/selector-specificity@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-1.0.0.tgz#91c560df2ed8d9700e4c7ed4ac21a3a322c9d975" - integrity sha512-RkYG5KiGNX0fJ5YoI0f4Wfq2Yo74D25Hru4fxTOioYdQvHBxcrrtTTyT5Ozzh2ejcNrhFy7IEts2WyEY7yi5yw== +"@csstools/selector-specificity@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.0.tgz#65b12f12db55188422070e34687bf3af09870922" + integrity sha512-rZ6vufeY/UjAgtyiJ4WvfF6XP6HizIyOfbZOg0RnecIwjrvH8Am3nN1BpKnnPZunYAkUcPPXDhwbxOtGop8cfQ== "@docus/base@npm:@docus/base-edge@3.0.0-a0efb08": version "3.0.0-a0efb08" @@ -452,9 +452,9 @@ fastq "^1.6.0" "@nuxt/content@npm:@nuxt/content-edge@latest": - version "2.0.0-27566376.82efc23" - resolved "https://registry.yarnpkg.com/@nuxt/content-edge/-/content-edge-2.0.0-27566376.82efc23.tgz#21b570517b6ef837f7b516c17433102b25f852fc" - integrity sha512-k4D9uJsTCqDaggxokS88cyfkzzOAVXBIvIS7YFN84PHXNjcSYt9+gnK+UHAAiT+3N2/g3c5EeN/F4WqU+EwyoQ== + version "2.0.1-27571156.c18a99d" + resolved "https://registry.yarnpkg.com/@nuxt/content-edge/-/content-edge-2.0.1-27571156.c18a99d.tgz#e3f58070e2d43fd10f429d375676aebf18d35a95" + integrity sha512-DqdGuMTxuMtR3huJ9tmQX0s4v/ijg1S3zxH/7H8+cT65wo79pKq3mLLwLm9kgcFRfKcLlo34Xksb9WMWj5yskg== dependencies: "@nuxt/kit" "^3.0.0-rc.3" csvtojson "^2.0.10" @@ -492,7 +492,7 @@ scule "^0.2.1" shiki-es "^0.1.2" slugify "^1.6.5" - stringify-entities "^4.0.2" + stringify-entities "^4.0.3" ufo "^0.8.4" unctx "^1.1.4" unified "^10.1.2" @@ -531,7 +531,7 @@ unimport "^0.1.6" untyped "^0.4.4" -"@nuxt/kit@^3.0.0-rc.2", "@nuxt/kit@^3.0.0-rc.3": +"@nuxt/kit@^3.0.0-rc.3": version "3.0.0-rc.3" resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-3.0.0-rc.3.tgz#9bbedf5be268578d4002766be8eb59b976892cc6" integrity sha512-aD993HKXZ76cwxkM2LCwWRQaOI3RjLCg/kj+8ZS6qN4VrpwrZp4xM59YYIYs3/Vze4OG3D4+0gr0u5zdgf8v8g== @@ -555,30 +555,6 @@ unimport "^0.1.9" untyped "^0.4.4" -"@nuxt/kit@npm:@nuxt/kit-edge@latest": - version "3.0.0-rc.3-27550969.a4a3cff" - resolved "https://registry.yarnpkg.com/@nuxt/kit-edge/-/kit-edge-3.0.0-rc.3-27550969.a4a3cff.tgz#a43721d514d674b251b198f5b1b2659edd00c44d" - integrity sha512-2+ki7Vp4geHFVHI8DAkRphR5jnXq420JuPSITsgxnPXEkg2Fz1/LrbI4cO6j4UyKQyjUK7TaF+lEqsEj/Lms8w== - dependencies: - "@nuxt/schema" "npm:@nuxt/schema-edge@3.0.0-rc.3-27550969.a4a3cff" - c12 "^0.2.7" - consola "^2.15.3" - defu "^6.0.0" - globby "^13.1.1" - hash-sum "^2.0.0" - ignore "^5.2.0" - jiti "^1.13.0" - knitwork "^0.1.1" - lodash.template "^4.5.0" - mlly "^0.5.2" - pathe "^0.3.0" - pkg-types "^0.3.2" - scule "^0.2.1" - semver "^7.3.7" - unctx "^1.1.4" - unimport "^0.2.1" - untyped "^0.4.4" - "@nuxt/postcss8@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@nuxt/postcss8/-/postcss8-1.1.3.tgz#a7f8f6f2a664430bbdd3b175498eb693e0b1b351" @@ -609,22 +585,6 @@ ufo "^0.8.4" unimport "^0.1.9" -"@nuxt/schema@npm:@nuxt/schema-edge@3.0.0-rc.3-27550969.a4a3cff": - version "3.0.0-rc.3-27550969.a4a3cff" - resolved "https://registry.yarnpkg.com/@nuxt/schema-edge/-/schema-edge-3.0.0-rc.3-27550969.a4a3cff.tgz#76b8858dbe68abd18bcc06d8cd71440696c6cdb1" - integrity sha512-Udh2DDfTHpMzCXPBvI0YR1zby59FkGGFFmaIficMu0xyEI5M8fJVrNMDtu+Shj0iHuKC7qlgkUZ1FLpKlJzEEQ== - dependencies: - c12 "^0.2.7" - create-require "^1.1.1" - defu "^6.0.0" - jiti "^1.13.0" - pathe "^0.3.0" - postcss-import-resolver "^2.0.0" - scule "^0.2.1" - std-env "^3.1.1" - ufo "^0.8.4" - unimport "^0.2.1" - "@nuxt/telemetry@^2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nuxt/telemetry/-/telemetry-2.1.3.tgz#0ecc8fed684db835bcf2f7e5a0bebef54e43d294" @@ -701,14 +661,13 @@ unstorage "^0.4.1" "@nuxtjs/color-mode@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@nuxtjs/color-mode/-/color-mode-3.0.3.tgz#f5b332f4383f169759ccb31e60fad1537d67adc8" - integrity sha512-FQVyLgRQ4C4C5NmTBrFRNm+LNjgT4cPFqyqfoRxD6hfVZhLxWJfKPGUaT8H/BCeBzkZZ29583MG9GqyDX7rnNg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@nuxtjs/color-mode/-/color-mode-3.1.3.tgz#ee94a68bc824e81a1a6ec6a3100390ce2674593d" + integrity sha512-/GSgVnvS4nTtg5uUsRZSpp3F0byU5tXXbef/WrfNQ9VYCYLa88itrWj9QcWVroIBztK+nQ7POV5mSjmb90/m4Q== dependencies: - "@nuxt/kit" "npm:@nuxt/kit-edge@latest" - defu "^5.0.0" + "@nuxt/kit" "^3.0.0-rc.3" lodash.template "^4.5.0" - pathe "^0.2.0" + pathe "^0.3.0" "@nuxtjs/tailwindcss@^5.1.2": version "5.1.2" @@ -1001,9 +960,9 @@ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node@*": - version "17.0.36" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.36.tgz#c0d5f2fe76b47b63e0e0efc3d2049a9970d68794" - integrity sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA== + version "17.0.40" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.40.tgz#76ee88ae03650de8064a6cf75b8d95f9f4a16090" + integrity sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1096,108 +1055,108 @@ html-tags "^3.1.0" svg-tags "^1.0.0" -"@vue/compiler-core@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.36.tgz#2fa44595308c95610602df54dcb69063ba2c8383" - integrity sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw== +"@vue/compiler-core@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz#b3c42e04c0e0f2c496ff1784e543fbefe91e215a" + integrity sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg== dependencies: "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.36" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" source-map "^0.6.1" -"@vue/compiler-dom@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz#16d911ff163ed5fc8087a01645bf14bb7f325401" - integrity sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA== +"@vue/compiler-dom@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz#10d2427a789e7c707c872da9d678c82a0c6582b5" + integrity sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ== dependencies: - "@vue/compiler-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/compiler-sfc@3.2.36", "@vue/compiler-sfc@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.36.tgz#e5065e7c0e5170ffa750e3c3dd93a29db109d0f2" - integrity sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA== +"@vue/compiler-sfc@3.2.37", "@vue/compiler-sfc@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz#3103af3da2f40286edcd85ea495dcb35bc7f5ff4" + integrity sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.36" - "@vue/compiler-dom" "3.2.36" - "@vue/compiler-ssr" "3.2.36" - "@vue/reactivity-transform" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/compiler-dom" "3.2.37" + "@vue/compiler-ssr" "3.2.37" + "@vue/reactivity-transform" "3.2.37" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" magic-string "^0.25.7" postcss "^8.1.10" source-map "^0.6.1" -"@vue/compiler-ssr@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz#314f3a9424db58142c3608f48cbda7aa05fc66cb" - integrity sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw== +"@vue/compiler-ssr@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz#4899d19f3a5fafd61524a9d1aee8eb0505313cff" + integrity sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw== dependencies: - "@vue/compiler-dom" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-dom" "3.2.37" + "@vue/shared" "3.2.37" "@vue/devtools-api@^6.0.0": version "6.1.4" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== -"@vue/reactivity-transform@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.36.tgz#8426a941b0b09d1b94fc162d4642758183b5d133" - integrity sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA== +"@vue/reactivity-transform@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz#0caa47c4344df4ae59f5a05dde2a8758829f8eca" + integrity sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" magic-string "^0.25.7" -"@vue/reactivity@3.2.36", "@vue/reactivity@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.36.tgz#026b14e716febffe80cd284fd8a2b33378968646" - integrity sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA== +"@vue/reactivity@3.2.37", "@vue/reactivity@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.37.tgz#5bc3847ac58828e2b78526e08219e0a1089f8848" + integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A== dependencies: - "@vue/shared" "3.2.36" + "@vue/shared" "3.2.37" -"@vue/runtime-core@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.36.tgz#be5115e665679c26bf3807d2326675dc1d847134" - integrity sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ== +"@vue/runtime-core@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz#7ba7c54bb56e5d70edfc2f05766e1ca8519966e3" + integrity sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ== dependencies: - "@vue/reactivity" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/reactivity" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/runtime-dom@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.36.tgz#cd5d403ea23c18ee7c17767103a1b2f8263c54bb" - integrity sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg== +"@vue/runtime-dom@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz#002bdc8228fa63949317756fb1e92cdd3f9f4bbd" + integrity sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw== dependencies: - "@vue/runtime-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/runtime-core" "3.2.37" + "@vue/shared" "3.2.37" csstype "^2.6.8" -"@vue/server-renderer@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.36.tgz#1e7c1cf63bd17df7828d04e8c780ee6ca7a9ed7c" - integrity sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg== +"@vue/server-renderer@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz#840a29c8dcc29bddd9b5f5ffa22b95c0e72afdfc" + integrity sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA== dependencies: - "@vue/compiler-ssr" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-ssr" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/shared@3.2.36", "@vue/shared@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.36.tgz#35e11200542cf29068ba787dad57da9bdb82f644" - integrity sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ== +"@vue/shared@3.2.37", "@vue/shared@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.37.tgz#8e6adc3f2759af52f0e85863dfb0b711ecc5c702" + integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw== -"@vueuse/core@8.5.0", "@vueuse/core@^8.0.1", "@vueuse/core@^8.5.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-8.5.0.tgz#2b7548e52165c88e1463756c36188e105d806543" - integrity sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw== +"@vueuse/core@8.6.0", "@vueuse/core@^8.0.1", "@vueuse/core@^8.5.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-8.6.0.tgz#a8f80363cc63d17382423f16beae57696f376e67" + integrity sha512-VirzExCm/N+QdrEWT7J4uSrvJ5hquKIAU9alQ37kUvIJk9XxCLxmfRnmekYc1kz2+6BnoyuKYXVmrMV351CB4w== dependencies: - "@vueuse/metadata" "8.5.0" - "@vueuse/shared" "8.5.0" + "@vueuse/metadata" "8.6.0" + "@vueuse/shared" "8.6.0" vue-demi "*" "@vueuse/head@^0.7.6": @@ -1205,10 +1164,10 @@ resolved "https://registry.yarnpkg.com/@vueuse/head/-/head-0.7.6.tgz#39eb2aa593db6f02d10ba469b33d8cfbce038183" integrity sha512-cOWqCkT3WiF5oEpw+VVEWUJd9RLD5rc7DmnFp3cePsejp+t7686uKD9Z9ZU7Twb7R/BI8iexKTmXo9D/F3v6UA== -"@vueuse/metadata@8.5.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-8.5.0.tgz#1aaa3787922cfda0f38243aaa7779366a669b4db" - integrity sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g== +"@vueuse/metadata@8.6.0": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-8.6.0.tgz#34771443a72ee891ae001a70aa05dd9a1d799372" + integrity sha512-F+CKPvaExsm7QgRr8y+ZNJFwXasn89rs5wth/HeX9lJ1q8XEt+HJ16Q5Sxh4rfG5YSKXrStveVge8TKvPjMjFA== "@vueuse/motion@2.0.0-beta.12": version "2.0.0-beta.12" @@ -1223,20 +1182,20 @@ vue-demi "*" "@vueuse/nuxt@^8.5.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/nuxt/-/nuxt-8.5.0.tgz#392617df38d56f87b705f5feef4af27544371f6c" - integrity sha512-riGrDwlTQbjSDxyw46oc1catXpZwzzRrEk+PTy8NQZG6uevgJ8wNuAhPVx/5oG0jYG/t2orIFfc9xGEA6uytSg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/@vueuse/nuxt/-/nuxt-8.6.0.tgz#5a27341281a5d7df935dc9f3a3972afaae23a31d" + integrity sha512-zzLA9j0Nje6b0SLupOsU1EBKzMMplGOnbg4fi291kizez5NCheFBuUThKdvVDuW8vFpN+vtMLzSiCYWFHVdyKw== dependencies: - "@nuxt/kit" "^3.0.0-rc.2" - "@vueuse/core" "8.5.0" - "@vueuse/metadata" "8.5.0" + "@nuxt/kit" "^3.0.0-rc.3" + "@vueuse/core" "8.6.0" + "@vueuse/metadata" "8.6.0" local-pkg "^0.4.1" vue-demi "*" -"@vueuse/shared@8.5.0", "@vueuse/shared@^8.0.1": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-8.5.0.tgz#fa01ecd3161933f521dd6428b9ef8015ded1bbd3" - integrity sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g== +"@vueuse/shared@8.6.0", "@vueuse/shared@^8.0.1": + version "8.6.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-8.6.0.tgz#63dad9fc4b73a7fccbe5d6b97adeacf73d4fec41" + integrity sha512-Y/IVywZo7IfEoSSEtCYpkVEmPV7pU35mEIxV7PbD/D3ly18B3mEsBaPbtDkNM/QP3zAZ5mn4nEkOfddX4uwuIA== dependencies: vue-demi "*" @@ -1409,9 +1368,9 @@ are-we-there-yet@~1.1.2: readable-stream "^2.0.6" arg@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^2.0.1: version "2.0.1" @@ -1431,9 +1390,9 @@ async@^2.6.2: lodash "^4.17.14" async@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== at-least-node@^1.0.0: version "1.0.0" @@ -1524,14 +1483,14 @@ braces@^3.0.2, braces@~3.0.2: fill-range "^7.0.1" browserslist@^4.0.0, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + version "4.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" escalade "^3.1.1" - node-releases "^2.0.3" + node-releases "^2.0.5" picocolors "^1.0.0" buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: @@ -1618,10 +1577,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001344" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" - integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001349: + version "1.0.30001349" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz#90740086a2eb2e825084944169d313c9793aeba4" + integrity sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw== ccount@^2.0.0: version "2.0.1" @@ -1803,9 +1762,9 @@ colord@^2.9.1: integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.17" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.17.tgz#5dd4c0d15e2984b7433cb4a9f2ead45063b80c47" + integrity sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g== comma-separated-tokens@^2.0.0: version "2.0.2" @@ -1987,10 +1946,10 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.10: - version "5.2.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz#6dfffe6cc3b13f3bb356a42c49a334a98700ef45" - integrity sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA== +cssnano-preset-default@^5.2.11: + version "5.2.11" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.11.tgz#28350471bc1af9df14052472b61340347f453a53" + integrity sha512-4PadR1NtuaIK8MvLNuY7MznK4WJteldGlzCiMaaTiOUP+apeiIvUDIXykzUOoqgOOUAHrU64ncdD90NfZR3LSQ== dependencies: css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" @@ -2016,7 +1975,7 @@ cssnano-preset-default@^5.2.10: postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.1" + postcss-ordered-values "^5.1.2" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" @@ -2028,11 +1987,11 @@ cssnano-utils@^3.1.0: integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.1.7: - version "5.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.10.tgz#fc6ddd9a4d7d238f320634326ed814cf0abf6e1c" - integrity sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA== + version "5.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.11.tgz#3bb003380718c7948ce3813493370e8946caf04b" + integrity sha512-2nx+O6LvewPo5EBtYrKc8762mMkZRk9cMGIOP4UlkmxHm7ObxH+zvsJJ+qLwPkUc4/yumL/qJkavYi9NlodWIQ== dependencies: - cssnano-preset-default "^5.2.10" + cssnano-preset-default "^5.2.11" lilconfig "^2.0.3" yaml "^1.10.2" @@ -2089,9 +2048,9 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: ms "^2.1.1" decode-named-character-reference@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz#57b2bd9112659cacbc449d3577d7dadb8e1f3d1b" - integrity sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== dependencies: character-entities "^2.0.0" @@ -2137,11 +2096,6 @@ defu@^3.2.2: resolved "https://registry.yarnpkg.com/defu/-/defu-3.2.2.tgz#be20f4cc49b9805d54ee6b610658d53894942e97" integrity sha512-8UWj5lNv7HD+kB0e9w77Z7TdQlbUYDVWqITLHNqFIn6khrNHv5WQo38Dcm1f6HeNyZf0U7UbPf6WeZDSdCzGDQ== -defu@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/defu/-/defu-5.0.1.tgz#a034278f9b032bf0845d261aa75e9ad98da878ac" - integrity sha512-EPS1carKg+dkEVy3qNTqIdp2qV7mUP08nIsupfwQpz++slCVRw7qbQyWvSTig+kFPwz2XXp5/kIIkH+CwrJKkQ== - defu@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/defu/-/defu-6.0.0.tgz#b397a6709a2f3202747a3d9daf9446e41ad0c5fc" @@ -2285,10 +2239,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.118: - version "1.4.142" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.142.tgz#70cc8871f7c0122b29256089989e67cee637b40d" - integrity sha512-ea8Q1YX0JRp4GylOmX4gFHIizi0j9GfRW4EkaHnkZp0agRCBB4ZGeCv17IEzIvBkiYVwfoKVhKZJbTfqCRdQdg== +electron-to-chromium@^1.4.147: + version "1.4.147" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz#1ecf318737b21ba1e5b53319eb1edf8143892270" + integrity sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg== emmet-monaco-es@^5.1.0: version "5.1.0" @@ -3224,9 +3178,9 @@ inquirer@^8.2.2: wrap-ansi "^7.0.0" ioredis@^5.0.4: - version "5.0.5" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.5.tgz#94e51284631b30e15b359cd17de59c48945230fb" - integrity sha512-H+u9YB/cBckDO5lt5+S34gGN1EuIBjjaXk31LivQWfX3G1cqZPYCiwF9qCOkqK2NsKVk+saoUN+fLBz5tc2gFw== + version "5.0.6" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.6.tgz#e50b8cc945f1f3ac932b0b8aab4bd8073d1402a9" + integrity sha512-KUm7wPzIet9QrFMoMm09/4bkfVKBUD9KXwBitP3hrNkZ+A6NBndweXGwYIB/7szHcTZgfo7Kvx88SxljJV4D9A== dependencies: "@ioredis/commands" "^1.1.1" cluster-key-slot "^1.1.0" @@ -4454,9 +4408,9 @@ node-fetch@^2.6.7: whatwg-url "^5.0.0" node-fetch@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.4.tgz#3fbca2d8838111048232de54cb532bd3cf134947" - integrity sha512-WvYJRN7mMyOLurFR2YpysQGuwYrJN+qrrpHjJDuKMcSPdfFccRUla/kng2mz6HWSBxJcqPbvatS6Gb4RhOzCJw== + version "3.2.5" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.5.tgz#7d31da657804db5185540ddac7ddd516a9a2bd26" + integrity sha512-u7zCHdJp8JXBwF09mMfo2CL6kp37TslDl1KP3hRGTlCInBtag+UO3LGVy+NF0VzvnL3PVMpA2hXh1EtECFnyhQ== dependencies: data-uri-to-buffer "^4.0.0" fetch-blob "^3.1.4" @@ -4488,7 +4442,7 @@ node-pre-gyp@^0.13.0: semver "^5.3.0" tar "^4" -node-releases@^2.0.3: +node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== @@ -4516,7 +4470,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" @@ -4581,7 +4535,7 @@ nth-check@^2.0.1: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nuxi@^3.0.0-rc.3: version "3.0.0-rc.3" @@ -4646,7 +4600,7 @@ nuxt@^3.0.0-rc.3: object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-hash@^3.0.0: version "3.0.0" @@ -4683,7 +4637,7 @@ on-finished@2.4.1, on-finished@^2.3.0: once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -4697,7 +4651,7 @@ onetime@^5.1.0, onetime@^5.1.2: only@~0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== open@^7.0.4: version "7.4.2" @@ -4734,12 +4688,12 @@ ora@^5.4.1: os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== osenv@^0.1.4: version "0.1.5" @@ -4796,9 +4750,9 @@ parse-json@^5.0.0: lines-and-columns "^1.1.6" parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== + version "4.0.4" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" @@ -4828,7 +4782,7 @@ parseurl@^1.3.2, parseurl@~1.3.3: path-is-absolute@1.0.1, path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" @@ -4878,7 +4832,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pkg-types@^0.3.2: version "0.3.2" @@ -4890,9 +4844,9 @@ pkg-types@^0.3.2: pathe "^0.2.0" plausible-tracker@^0.3.4: - version "0.3.5" - resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.5.tgz#49c09a7eb727f1d5c859c3fc8072837b13ee9b85" - integrity sha512-6c6VPdPtI9KmIsfr8zLBViIDMt369eeaNA1J8JrAmAtrpSkeJWvjwcJ+cLn7gVJn5AtQWC8NgSEee2d/5RNytA== + version "0.3.8" + resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.8.tgz#9b8b322cc41e0e1d6473869ef234deea365a5a40" + integrity sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg== popmotion@^11.0.3: version "11.0.3" @@ -5103,11 +5057,11 @@ postcss-nested@5.0.6: postcss-selector-parser "^6.0.6" postcss-nesting@^10.1.7: - version "10.1.7" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.7.tgz#0101bd6c7d386e7ad8e2e86ebcc0e0109833b86e" - integrity sha512-Btho5XzDTpl117SmB3tvUHP8txg5n7Ayv7vQ5m4b1zXkfs1Y52C67uZjZ746h7QvOJ+rLRg50OlhhjFW+IQY6A== + version "10.1.8" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.8.tgz#1675542cfedc3dc9621993f3abfdafa260c3a460" + integrity sha512-txdb3/idHYsBbNDFo1PFY0ExCgH5nfWi8G5lO49e6iuU42TydbODTzJgF5UuL5bhgeSlnAtDgfFTDG0Cl1zaSQ== dependencies: - "@csstools/selector-specificity" "1.0.0" + "@csstools/selector-specificity" "^2.0.0" postcss-selector-parser "^6.0.10" postcss-normalize-charset@^5.1.0: @@ -5173,10 +5127,10 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" - integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== +postcss-ordered-values@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.2.tgz#daffacd4abf327d52d5ac570b59dfbcf4b836614" + integrity sha512-wr2avRbW4HS2XE2ZCqpfp4N/tDC6GZKZ+SVP8UBTOVS8QWrc4TD8MYrebJrvVVlGPKszmiSCzue43NDiVtgDmg== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" @@ -5266,7 +5220,7 @@ protocols@^1.1.0, protocols@^1.4.0: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== punycode@^2.1.0: version "2.1.1" @@ -5274,9 +5228,9 @@ punycode@^2.1.0: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.9.4: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== dependencies: side-channel "^1.0.4" @@ -5339,7 +5293,7 @@ rc@^1.2.7: read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" @@ -5382,12 +5336,12 @@ readdirp@~3.6.0: redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== redis-parser@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== dependencies: redis-errors "^1.0.0" @@ -5514,7 +5468,7 @@ replace-in-file@^6.1.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -5524,7 +5478,7 @@ require-from-string@^2.0.2: requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-from@^4.0.0: version "4.0.0" @@ -5539,7 +5493,7 @@ resolve-from@^5.0.0: resolve-path@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= + integrity sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== dependencies: http-errors "~1.6.2" path-is-absolute "1.0.1" @@ -5608,9 +5562,9 @@ rollup-pluginutils@^2.8.2: estree-walker "^0.6.1" rollup@^2.59.0, rollup@^2.72.1: - version "2.75.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.3.tgz#11bd3e8ace526911feea8af17f2a286fbfdb4cf8" - integrity sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ== + version "2.75.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.6.tgz#ac4dc8600f95942a0180f61c7c9d6200e374b439" + integrity sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA== optionalDependencies: fsevents "~2.3.2" @@ -5848,9 +5802,9 @@ source-map@^0.6.0, source-map@^0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== sourcemap-codec@^1.4.8: version "1.4.8" @@ -5929,10 +5883,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.2.tgz#13d113dc7449dc8ae4cb22c28883ee3fff8753e3" - integrity sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ== +stringify-entities@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== dependencies: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" @@ -6055,9 +6009,9 @@ table@^6.8.0: strip-ansi "^6.0.1" tailwind-config-viewer@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/tailwind-config-viewer/-/tailwind-config-viewer-1.7.0.tgz#71d10c6ce31875fd4db742a90599ceeb2a385b63" - integrity sha512-wCc8CxkG3+E+XTt0ahZqGb7lNmqGE0sw6ErXY0t2i//qKp9QVZbynS6SW6UnL9no3g9hf1b1Nk8fixZTlqA9Jg== + version "1.7.1" + resolved "https://registry.yarnpkg.com/tailwind-config-viewer/-/tailwind-config-viewer-1.7.1.tgz#02beca5064d799908865907bbe085f368a4174d0" + integrity sha512-EtDwFzgQEMJ6dFmp/6K+QJSP7NWANrGDsbwkn/BEq7MVJd/dEIZ5BBZTxo5jx+opa3HNJu/CHtWanKSCrgNwpA== dependencies: "@koa/router" "^9.0.1" commander "^6.0.0" @@ -6239,9 +6193,9 @@ unctx@^1.1.4: unplugin "^0.6.1" undici@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.3.0.tgz#869d47bafa7f72ccaf8738258f0283bf3dd179ca" - integrity sha512-8LxC/xmR2GCE4q1heE1sJxVnnf5S6yQ2dObvMFBBWkB8aQlaqNuWovgRFWRMB7KUdLPGZfOTTmUeeLEJYX56iQ== + version "5.4.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.4.0.tgz#c474fae02743d4788b96118d46008a24195024d2" + integrity sha512-A1SRXysDg7J+mVP46jF+9cKANw0kptqSFZ8tGyL+HBiv0K1spjxPX8Z4EGu+Eu6pjClJUBdnUPlxrOafR668/g== unenv@^0.5.1, unenv@^0.5.2: version "0.5.2" @@ -6502,9 +6456,9 @@ vite-plugin-checker@^0.4.6: vscode-uri "^3.0.2" vite@^2.9.8, vite@^2.9.9: - version "2.9.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.9.tgz#8b558987db5e60fedec2f4b003b73164cb081c5e" - integrity sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== + version "2.9.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.10.tgz#f574d96655622c2e0fbc662edd0ed199c60fe91a" + integrity sha512-TwZRuSMYjpTurLqXspct+HZE7ONiW9d+wSWgvADGxhDPPyoIcNywY+RX4ng+QpK30DCa1l/oZgi2PLZDibhzbQ== dependencies: esbuild "^0.14.27" postcss "^8.4.13" @@ -6536,9 +6490,9 @@ vscode-languageserver-protocol@3.16.0: vscode-languageserver-types "3.16.0" vscode-languageserver-textdocument@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157" - integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.5.tgz#838769940ece626176ec5d5a2aa2d0aa69f5095c" + integrity sha512-1ah7zyQjKBudnMiHbZmxz5bYNM9KKZYz+5VQLj+yr8l+9w3g+WAhCkUkWbhMEdC5u0ub4Ndiye/fDyS8ghIKQg== vscode-languageserver-types@3.16.0: version "3.16.0" @@ -6565,9 +6519,9 @@ vue-bundle-renderer@^0.3.8: bundle-runner "^0.0.1" vue-demi@*: - version "0.12.5" - resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" - integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== + version "0.13.1" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.1.tgz#7604904c88be338418a10abbc94d5b8caa14cb8c" + integrity sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg== vue-plausible@^1.3.1: version "1.3.1" @@ -6584,15 +6538,15 @@ vue-router@^4.0.15: "@vue/devtools-api" "^6.0.0" vue@^3.2.33: - version "3.2.36" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.36.tgz#8daa996e2ced521708de97d066c7c998e8bc3378" - integrity sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw== - dependencies: - "@vue/compiler-dom" "3.2.36" - "@vue/compiler-sfc" "3.2.36" - "@vue/runtime-dom" "3.2.36" - "@vue/server-renderer" "3.2.36" - "@vue/shared" "3.2.36" + version "3.2.37" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.37.tgz#da220ccb618d78579d25b06c7c21498ca4e5452e" + integrity sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ== + dependencies: + "@vue/compiler-dom" "3.2.37" + "@vue/compiler-sfc" "3.2.37" + "@vue/runtime-dom" "3.2.37" + "@vue/server-renderer" "3.2.37" + "@vue/shared" "3.2.37" wcwidth@^1.0.1: version "1.0.1" diff --git a/yarn.lock b/yarn.lock index c22af545a..af0abdbfa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -463,12 +463,12 @@ unimport "^0.1.9" untyped "^0.4.4" -"@nuxt/kit@npm:@nuxt/kit-edge@3.0.0-rc.3-27550969.a4a3cff": - version "3.0.0-rc.3-27550969.a4a3cff" - resolved "https://registry.yarnpkg.com/@nuxt/kit-edge/-/kit-edge-3.0.0-rc.3-27550969.a4a3cff.tgz#a43721d514d674b251b198f5b1b2659edd00c44d" - integrity sha512-2+ki7Vp4geHFVHI8DAkRphR5jnXq420JuPSITsgxnPXEkg2Fz1/LrbI4cO6j4UyKQyjUK7TaF+lEqsEj/Lms8w== +"@nuxt/kit@npm:@nuxt/kit-edge@3.0.0-rc.3-27571095.9379606": + version "3.0.0-rc.3-27571095.9379606" + resolved "https://registry.yarnpkg.com/@nuxt/kit-edge/-/kit-edge-3.0.0-rc.3-27571095.9379606.tgz#5bea77c803d3308e685d19bdc794344baa4b97cf" + integrity sha512-bG1uuen63yWUdaBd6hf4bSea5mbY/6YmzjXn+iA1Vi9t4SbYnUXTv8A4ibMesrH+6n0iO11rtcrDi0zVqYEoMQ== dependencies: - "@nuxt/schema" "npm:@nuxt/schema-edge@3.0.0-rc.3-27550969.a4a3cff" + "@nuxt/schema" "npm:@nuxt/schema-edge@3.0.0-rc.3-27571095.9379606" c12 "^0.2.7" consola "^2.15.3" defu "^6.0.0" @@ -514,10 +514,10 @@ ufo "^0.8.4" unimport "^0.1.9" -"@nuxt/schema@npm:@nuxt/schema-edge@3.0.0-rc.3-27550969.a4a3cff": - version "3.0.0-rc.3-27550969.a4a3cff" - resolved "https://registry.yarnpkg.com/@nuxt/schema-edge/-/schema-edge-3.0.0-rc.3-27550969.a4a3cff.tgz#76b8858dbe68abd18bcc06d8cd71440696c6cdb1" - integrity sha512-Udh2DDfTHpMzCXPBvI0YR1zby59FkGGFFmaIficMu0xyEI5M8fJVrNMDtu+Shj0iHuKC7qlgkUZ1FLpKlJzEEQ== +"@nuxt/schema@npm:@nuxt/schema-edge@3.0.0-rc.3-27571095.9379606": + version "3.0.0-rc.3-27571095.9379606" + resolved "https://registry.yarnpkg.com/@nuxt/schema-edge/-/schema-edge-3.0.0-rc.3-27571095.9379606.tgz#02475a52d71984a71314bad99c09ee5164517c27" + integrity sha512-bhKgXir7gUnHM0ZRzhoZgNC+oZWB1C9UGXYpH21pJvK0dGHBnYHCYZAQwJcNcmYyzyw6RHoUxTlZW6pv4X0JHw== dependencies: c12 "^0.2.7" create-require "^1.1.1" @@ -557,12 +557,12 @@ std-env "^3.1.1" "@nuxt/test-utils@npm:@nuxt/test-utils-edge@latest": - version "3.0.0-rc.3-27550969.a4a3cff" - resolved "https://registry.yarnpkg.com/@nuxt/test-utils-edge/-/test-utils-edge-3.0.0-rc.3-27550969.a4a3cff.tgz#c39a89deb2157a4d8345f0bf5522f30a389a50f9" - integrity sha512-uP1cwfoyN+6HKaqdObL+Hw6Tt3n29b1OY1xLgpH+Zz0FOZHNgmeIHdTOsHsCKD0L3d3uDpZHy93CxcW+KBvBrg== + version "3.0.0-rc.3-27571095.9379606" + resolved "https://registry.yarnpkg.com/@nuxt/test-utils-edge/-/test-utils-edge-3.0.0-rc.3-27571095.9379606.tgz#f169c126e1ad0219cb4b13bed10d4c7aba2758d2" + integrity sha512-xGqJAeuuJT8bFBlb4znn87IH/Aiun3HzMwTSzFZSH9Oti+1DJ6qq8k9yk2eqFBt1BcQ4RquWCMWAFxet3ahxkA== dependencies: - "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-rc.3-27550969.a4a3cff" - "@nuxt/schema" "npm:@nuxt/schema-edge@3.0.0-rc.3-27550969.a4a3cff" + "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-rc.3-27571095.9379606" + "@nuxt/schema" "npm:@nuxt/schema-edge@3.0.0-rc.3-27571095.9379606" defu "^6.0.0" execa "^6.1.0" get-port-please "^2.5.0" @@ -834,9 +834,9 @@ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node@*": - version "17.0.36" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.36.tgz#c0d5f2fe76b47b63e0e0efc3d2049a9970d68794" - integrity sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA== + version "17.0.40" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.40.tgz#76ee88ae03650de8064a6cf75b8d95f9f4a16090" + integrity sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -873,13 +873,13 @@ "@types/node" "*" "@typescript-eslint/eslint-plugin@^5.21.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" - integrity sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ== + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz#fdf59c905354139046b41b3ed95d1609913d0758" + integrity sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/type-utils" "5.27.0" - "@typescript-eslint/utils" "5.27.0" + "@typescript-eslint/scope-manager" "5.27.1" + "@typescript-eslint/type-utils" "5.27.1" + "@typescript-eslint/utils" "5.27.1" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -888,68 +888,68 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^5.21.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.0.tgz#62bb091ed5cf9c7e126e80021bb563dcf36b6b12" - integrity sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA== + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.1.tgz#3a4dcaa67e45e0427b6ca7bb7165122c8b569639" + integrity sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" + "@typescript-eslint/scope-manager" "5.27.1" + "@typescript-eslint/types" "5.27.1" + "@typescript-eslint/typescript-estree" "5.27.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" - integrity sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g== +"@typescript-eslint/scope-manager@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz#4d1504392d01fe5f76f4a5825991ec78b7b7894d" + integrity sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" + "@typescript-eslint/types" "5.27.1" + "@typescript-eslint/visitor-keys" "5.27.1" -"@typescript-eslint/type-utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz#36fd95f6747412251d79c795b586ba766cf0974b" - integrity sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g== +"@typescript-eslint/type-utils@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166" + integrity sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw== dependencies: - "@typescript-eslint/utils" "5.27.0" + "@typescript-eslint/utils" "5.27.1" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.0.tgz#c3f44b9dda6177a9554f94a74745ca495ba9c001" - integrity sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A== +"@typescript-eslint/types@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1" + integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg== -"@typescript-eslint/typescript-estree@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz#7965f5b553c634c5354a47dcce0b40b94611e995" - integrity sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ== +"@typescript-eslint/typescript-estree@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz#7621ee78607331821c16fffc21fc7a452d7bc808" + integrity sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" + "@typescript-eslint/types" "5.27.1" + "@typescript-eslint/visitor-keys" "5.27.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.0.tgz#d0021cbf686467a6a9499bd0589e19665f9f7e71" - integrity sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA== +"@typescript-eslint/utils@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f" + integrity sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" + "@typescript-eslint/scope-manager" "5.27.1" + "@typescript-eslint/types" "5.27.1" + "@typescript-eslint/typescript-estree" "5.27.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz#97aa9a5d2f3df8215e6d3b77f9d214a24db269bd" - integrity sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA== +"@typescript-eslint/visitor-keys@5.27.1": + version "5.27.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz#05a62666f2a89769dac2e6baa48f74e8472983af" + integrity sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ== dependencies: - "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/types" "5.27.1" eslint-visitor-keys "^3.3.0" "@vercel/nft@^0.18.2": @@ -1006,100 +1006,100 @@ html-tags "^3.1.0" svg-tags "^1.0.0" -"@vue/compiler-core@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.36.tgz#2fa44595308c95610602df54dcb69063ba2c8383" - integrity sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw== +"@vue/compiler-core@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz#b3c42e04c0e0f2c496ff1784e543fbefe91e215a" + integrity sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg== dependencies: "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.36" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" source-map "^0.6.1" -"@vue/compiler-dom@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.36.tgz#16d911ff163ed5fc8087a01645bf14bb7f325401" - integrity sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA== +"@vue/compiler-dom@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz#10d2427a789e7c707c872da9d678c82a0c6582b5" + integrity sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ== dependencies: - "@vue/compiler-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/compiler-sfc@3.2.36", "@vue/compiler-sfc@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.36.tgz#e5065e7c0e5170ffa750e3c3dd93a29db109d0f2" - integrity sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA== +"@vue/compiler-sfc@3.2.37", "@vue/compiler-sfc@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz#3103af3da2f40286edcd85ea495dcb35bc7f5ff4" + integrity sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.36" - "@vue/compiler-dom" "3.2.36" - "@vue/compiler-ssr" "3.2.36" - "@vue/reactivity-transform" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/compiler-dom" "3.2.37" + "@vue/compiler-ssr" "3.2.37" + "@vue/reactivity-transform" "3.2.37" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" magic-string "^0.25.7" postcss "^8.1.10" source-map "^0.6.1" -"@vue/compiler-ssr@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.36.tgz#314f3a9424db58142c3608f48cbda7aa05fc66cb" - integrity sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw== +"@vue/compiler-ssr@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz#4899d19f3a5fafd61524a9d1aee8eb0505313cff" + integrity sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw== dependencies: - "@vue/compiler-dom" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-dom" "3.2.37" + "@vue/shared" "3.2.37" "@vue/devtools-api@^6.0.0": version "6.1.4" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== -"@vue/reactivity-transform@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.36.tgz#8426a941b0b09d1b94fc162d4642758183b5d133" - integrity sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA== +"@vue/reactivity-transform@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz#0caa47c4344df4ae59f5a05dde2a8758829f8eca" + integrity sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-core" "3.2.37" + "@vue/shared" "3.2.37" estree-walker "^2.0.2" magic-string "^0.25.7" -"@vue/reactivity@3.2.36", "@vue/reactivity@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.36.tgz#026b14e716febffe80cd284fd8a2b33378968646" - integrity sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA== +"@vue/reactivity@3.2.37", "@vue/reactivity@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.37.tgz#5bc3847ac58828e2b78526e08219e0a1089f8848" + integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A== dependencies: - "@vue/shared" "3.2.36" + "@vue/shared" "3.2.37" -"@vue/runtime-core@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.36.tgz#be5115e665679c26bf3807d2326675dc1d847134" - integrity sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ== +"@vue/runtime-core@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz#7ba7c54bb56e5d70edfc2f05766e1ca8519966e3" + integrity sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ== dependencies: - "@vue/reactivity" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/reactivity" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/runtime-dom@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.36.tgz#cd5d403ea23c18ee7c17767103a1b2f8263c54bb" - integrity sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg== +"@vue/runtime-dom@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz#002bdc8228fa63949317756fb1e92cdd3f9f4bbd" + integrity sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw== dependencies: - "@vue/runtime-core" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/runtime-core" "3.2.37" + "@vue/shared" "3.2.37" csstype "^2.6.8" -"@vue/server-renderer@3.2.36": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.36.tgz#1e7c1cf63bd17df7828d04e8c780ee6ca7a9ed7c" - integrity sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg== +"@vue/server-renderer@3.2.37": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz#840a29c8dcc29bddd9b5f5ffa22b95c0e72afdfc" + integrity sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA== dependencies: - "@vue/compiler-ssr" "3.2.36" - "@vue/shared" "3.2.36" + "@vue/compiler-ssr" "3.2.37" + "@vue/shared" "3.2.37" -"@vue/shared@3.2.36", "@vue/shared@^3.2.33": - version "3.2.36" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.36.tgz#35e11200542cf29068ba787dad57da9bdb82f644" - integrity sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ== +"@vue/shared@3.2.37", "@vue/shared@^3.2.33": + version "3.2.37" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.37.tgz#8e6adc3f2759af52f0e85863dfb0b711ecc5c702" + integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw== "@vueuse/head@^0.7.6": version "0.7.6" @@ -1307,9 +1307,9 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== autoprefixer@^10.4.7: version "10.4.7" @@ -1385,14 +1385,14 @@ braces@^3.0.2, braces@~3.0.2: fill-range "^7.0.1" browserslist@^4.0.0, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + version "4.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" escalade "^3.1.1" - node-releases "^2.0.3" + node-releases "^2.0.5" picocolors "^1.0.0" buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: @@ -1418,10 +1418,10 @@ builtin-modules@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -builtins@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.1.0.tgz#1edd016dd91ce771a1ed6fc3b2b71fb918953250" - integrity sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w== +builtins@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== dependencies: semver "^7.0.0" @@ -1491,10 +1491,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001344" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" - integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001349: + version "1.0.30001349" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz#90740086a2eb2e825084944169d313c9793aeba4" + integrity sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw== ccount@^2.0.0: version "2.0.1" @@ -1709,9 +1709,9 @@ colord@^2.9.1: integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.17" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.17.tgz#5dd4c0d15e2984b7433cb4a9f2ead45063b80c47" + integrity sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g== comma-separated-tokens@^2.0.0: version "2.0.2" @@ -1846,10 +1846,10 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.10: - version "5.2.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz#6dfffe6cc3b13f3bb356a42c49a334a98700ef45" - integrity sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA== +cssnano-preset-default@^5.2.11: + version "5.2.11" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.11.tgz#28350471bc1af9df14052472b61340347f453a53" + integrity sha512-4PadR1NtuaIK8MvLNuY7MznK4WJteldGlzCiMaaTiOUP+apeiIvUDIXykzUOoqgOOUAHrU64ncdD90NfZR3LSQ== dependencies: css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" @@ -1875,7 +1875,7 @@ cssnano-preset-default@^5.2.10: postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.1" + postcss-ordered-values "^5.1.2" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" @@ -1887,11 +1887,11 @@ cssnano-utils@^3.1.0: integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.1.7: - version "5.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.10.tgz#fc6ddd9a4d7d238f320634326ed814cf0abf6e1c" - integrity sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA== + version "5.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.11.tgz#3bb003380718c7948ce3813493370e8946caf04b" + integrity sha512-2nx+O6LvewPo5EBtYrKc8762mMkZRk9cMGIOP4UlkmxHm7ObxH+zvsJJ+qLwPkUc4/yumL/qJkavYi9NlodWIQ== dependencies: - cssnano-preset-default "^5.2.10" + cssnano-preset-default "^5.2.11" lilconfig "^2.0.3" yaml "^1.10.2" @@ -1948,9 +1948,9 @@ debug@^3.2.6, debug@^3.2.7: ms "^2.1.1" decode-named-character-reference@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz#57b2bd9112659cacbc449d3577d7dadb8e1f3d1b" - integrity sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== dependencies: character-entities "^2.0.0" @@ -2139,10 +2139,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.118: - version "1.4.142" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.142.tgz#70cc8871f7c0122b29256089989e67cee637b40d" - integrity sha512-ea8Q1YX0JRp4GylOmX4gFHIizi0j9GfRW4EkaHnkZp0agRCBB4ZGeCv17IEzIvBkiYVwfoKVhKZJbTfqCRdQdg== +electron-to-chromium@^1.4.147: + version "1.4.147" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz#1ecf318737b21ba1e5b53319eb1edf8143892270" + integrity sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg== emoji-regex@^8.0.0: version "8.0.0" @@ -2600,18 +2600,18 @@ eslint-plugin-import@^2.26.0: tsconfig-paths "^3.14.1" eslint-plugin-n@^15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz#fd378274bdf1c3ca11af84e7a4b5cb524b63ae1c" - integrity sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg== + version "15.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.2.1.tgz#e62cf800da076ac5a970eb7554efa2136ebfa194" + integrity sha512-uMG50pvKqXK9ab163bSI5OpyZR0F5yIB0pEC4ciGpBLrXVjVDOlx5oTq8GQULWzbelJt7wL5Rw4T+FfAff5Cxg== dependencies: - builtins "^4.0.0" + builtins "^5.0.1" eslint-plugin-es "^4.1.0" eslint-utils "^3.0.0" ignore "^5.1.1" - is-core-module "^2.3.0" - minimatch "^3.0.4" + is-core-module "^2.9.0" + minimatch "^3.1.2" resolve "^1.10.1" - semver "^6.3.0" + semver "^7.3.7" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -3586,9 +3586,9 @@ internal-slot@^1.0.3: side-channel "^1.0.4" ioredis@^5.0.4: - version "5.0.5" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.5.tgz#94e51284631b30e15b359cd17de59c48945230fb" - integrity sha512-H+u9YB/cBckDO5lt5+S34gGN1EuIBjjaXk31LivQWfX3G1cqZPYCiwF9qCOkqK2NsKVk+saoUN+fLBz5tc2gFw== + version "5.0.6" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.6.tgz#e50b8cc945f1f3ac932b0b8aab4bd8073d1402a9" + integrity sha512-KUm7wPzIet9QrFMoMm09/4bkfVKBUD9KXwBitP3hrNkZ+A6NBndweXGwYIB/7szHcTZgfo7Kvx88SxljJV4D9A== dependencies: "@ioredis/commands" "^1.1.1" cluster-key-slot "^1.1.0" @@ -3662,7 +3662,7 @@ is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-core-module@^2.3.0, is-core-module@^2.8.1: +is-core-module@^2.8.1, is-core-module@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== @@ -4924,9 +4924,9 @@ node-fetch@^2.6.7: whatwg-url "^5.0.0" node-fetch@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.4.tgz#3fbca2d8838111048232de54cb532bd3cf134947" - integrity sha512-WvYJRN7mMyOLurFR2YpysQGuwYrJN+qrrpHjJDuKMcSPdfFccRUla/kng2mz6HWSBxJcqPbvatS6Gb4RhOzCJw== + version "3.2.5" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.5.tgz#7d31da657804db5185540ddac7ddd516a9a2bd26" + integrity sha512-u7zCHdJp8JXBwF09mMfo2CL6kp37TslDl1KP3hRGTlCInBtag+UO3LGVy+NF0VzvnL3PVMpA2hXh1EtECFnyhQ== dependencies: data-uri-to-buffer "^4.0.0" fetch-blob "^3.1.4" @@ -4958,7 +4958,7 @@ node-pre-gyp@^0.13.0: semver "^5.3.0" tar "^4" -node-releases@^2.0.3: +node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== @@ -4996,7 +4996,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" @@ -5068,7 +5068,7 @@ nth-check@^2.0.1: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nuxi@^3.0.0-rc.3: version "3.0.0-rc.3" @@ -5133,7 +5133,7 @@ nuxt@^3.0.0-rc.3: object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.0, object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" @@ -5189,7 +5189,7 @@ on-finished@2.4.1: once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -5246,12 +5246,12 @@ ora@^5.4.1: os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== osenv@^0.1.4: version "0.1.5" @@ -5285,7 +5285,7 @@ p-limit@^3.0.2: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -5313,7 +5313,7 @@ p-map@^4.0.0: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" @@ -5360,9 +5360,9 @@ parse-json@^5.0.0: lines-and-columns "^1.1.6" parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== + version "4.0.4" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" @@ -5392,7 +5392,7 @@ parseurl@~1.3.3: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -5402,7 +5402,7 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" @@ -5462,7 +5462,7 @@ pidtree@^0.5.0: pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pkg-types@^0.3.2: version "0.3.2" @@ -5653,10 +5653,10 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" - integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== +postcss-ordered-values@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.2.tgz#daffacd4abf327d52d5ac570b59dfbcf4b836614" + integrity sha512-wr2avRbW4HS2XE2ZCqpfp4N/tDC6GZKZ+SVP8UBTOVS8QWrc4TD8MYrebJrvVVlGPKszmiSCzue43NDiVtgDmg== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" @@ -5756,7 +5756,7 @@ protocols@^1.1.0, protocols@^1.4.0: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== punycode@^2.1.0: version "2.1.1" @@ -5764,9 +5764,9 @@ punycode@^2.1.0: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.9.4: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== dependencies: side-channel "^1.0.4" @@ -5824,7 +5824,7 @@ rc@^1.2.7: read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" @@ -5886,12 +5886,12 @@ readdirp@~3.6.0: redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== redis-parser@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== dependencies: redis-errors "^1.0.0" @@ -6017,7 +6017,7 @@ remark-squeeze-paragraphs@^5.0.1: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -6027,7 +6027,7 @@ require-from-string@^2.0.2: requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-from@^4.0.0: version "4.0.0" @@ -6128,9 +6128,9 @@ rollup-pluginutils@^2.8.2: estree-walker "^0.6.1" rollup@^2.59.0, rollup@^2.66.1, rollup@^2.72.1: - version "2.75.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.3.tgz#11bd3e8ace526911feea8af17f2a286fbfdb4cf8" - integrity sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ== + version "2.75.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.6.tgz#ac4dc8600f95942a0180f61c7c9d6200e374b439" + integrity sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA== optionalDependencies: fsevents "~2.3.2" @@ -6378,9 +6378,9 @@ source-map@^0.6.0, source-map@^0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== sourcemap-codec@^1.4.8: version "1.4.8" @@ -6839,9 +6839,9 @@ type-fest@^2.11.2: integrity sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw== typescript@^4.5.5: - version "4.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" - integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== + version "4.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" + integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== ufo@^0.8.3, ufo@^0.8.4: version "0.8.4" @@ -6902,9 +6902,9 @@ unctx@^1.1.4: unplugin "^0.6.1" undici@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.3.0.tgz#869d47bafa7f72ccaf8738258f0283bf3dd179ca" - integrity sha512-8LxC/xmR2GCE4q1heE1sJxVnnf5S6yQ2dObvMFBBWkB8aQlaqNuWovgRFWRMB7KUdLPGZfOTTmUeeLEJYX56iQ== + version "5.4.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.4.0.tgz#c474fae02743d4788b96118d46008a24195024d2" + integrity sha512-A1SRXysDg7J+mVP46jF+9cKANw0kptqSFZ8tGyL+HBiv0K1spjxPX8Z4EGu+Eu6pjClJUBdnUPlxrOafR668/g== unenv@^0.5.1, unenv@^0.5.2: version "0.5.2" @@ -7182,9 +7182,9 @@ vite-plugin-checker@^0.4.6: vscode-uri "^3.0.2" vite@^2.9.8, vite@^2.9.9: - version "2.9.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.9.tgz#8b558987db5e60fedec2f4b003b73164cb081c5e" - integrity sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== + version "2.9.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.10.tgz#f574d96655622c2e0fbc662edd0ed199c60fe91a" + integrity sha512-TwZRuSMYjpTurLqXspct+HZE7ONiW9d+wSWgvADGxhDPPyoIcNywY+RX4ng+QpK30DCa1l/oZgi2PLZDibhzbQ== dependencies: esbuild "^0.14.27" postcss "^8.4.13" @@ -7230,9 +7230,9 @@ vscode-languageserver-protocol@3.16.0: vscode-languageserver-types "3.16.0" vscode-languageserver-textdocument@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157" - integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.5.tgz#838769940ece626176ec5d5a2aa2d0aa69f5095c" + integrity sha512-1ah7zyQjKBudnMiHbZmxz5bYNM9KKZYz+5VQLj+yr8l+9w3g+WAhCkUkWbhMEdC5u0ub4Ndiye/fDyS8ghIKQg== vscode-languageserver-types@3.16.0: version "3.16.0" @@ -7279,15 +7279,15 @@ vue-router@^4.0.15: "@vue/devtools-api" "^6.0.0" vue@^3.2.33: - version "3.2.36" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.36.tgz#8daa996e2ced521708de97d066c7c998e8bc3378" - integrity sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw== - dependencies: - "@vue/compiler-dom" "3.2.36" - "@vue/compiler-sfc" "3.2.36" - "@vue/runtime-dom" "3.2.36" - "@vue/server-renderer" "3.2.36" - "@vue/shared" "3.2.36" + version "3.2.37" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.37.tgz#da220ccb618d78579d25b06c7c21498ca4e5452e" + integrity sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ== + dependencies: + "@vue/compiler-dom" "3.2.37" + "@vue/compiler-sfc" "3.2.37" + "@vue/runtime-dom" "3.2.37" + "@vue/server-renderer" "3.2.37" + "@vue/shared" "3.2.37" wcwidth@^1.0.1: version "1.0.1" From fff00b193aed7ccf8772d67f8eccf54c453860e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Ollivier?= Date: Wed, 8 Jun 2022 19:24:01 +0200 Subject: [PATCH 014/175] docs: fix typo --- docs/content/4.api/3.configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/4.api/3.configuration.md b/docs/content/4.api/3.configuration.md index b3ee3dbae..9e8cb0949 100644 --- a/docs/content/4.api/3.configuration.md +++ b/docs/content/4.api/3.configuration.md @@ -60,7 +60,7 @@ Contents can located in multiple places, in multiple directories or in remote gi export default defineNuxtConfig({ content: { sources: [ - 'content' + 'content', { name: 'fa-ir', prefix: '/fa', // All contents inside this source will be prefixed with `/fa` From 3535738ce4f19f074de4d4e229d176fa169b7aa0 Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Thu, 9 Jun 2022 10:50:28 +0200 Subject: [PATCH 015/175] fix(markdown): detect inline component followed non whitespace characters (#1227) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(markdown): detect inline component followed by `.` and `,` * test: add test * chore: code style * fix: detect inline component regardless of ending character * test: update tests * docs(mdc): add example for inline ending chars * test: fix Co-authored-by: Yaël Guilloux --- docs/content/3.guide/1.writing/3.mdc.md | 8 +++ .../micromark-extension/constants.ts | 68 ++++++++++--------- .../micromark-extension/tokenize-inline.ts | 7 +- test/features/parser-markdown.ts | 27 ++++++++ 4 files changed, 75 insertions(+), 35 deletions(-) diff --git a/docs/content/3.guide/1.writing/3.mdc.md b/docs/content/3.guide/1.writing/3.mdc.md index 320c7c2ac..28cc72b4e 100755 --- a/docs/content/3.guide/1.writing/3.mdc.md +++ b/docs/content/3.guide/1.writing/3.mdc.md @@ -164,6 +164,14 @@ They can be used with the `:` identifier. ``` :: +If you want to use an inline component followed by specific characters like `-`, `_` or `:`, you can use a dummy props specifier after it. + +```md +:hello{}-world +``` + +In this example, `:hello{}` will search for the `` component, and `-world` will be plain text. + ## Props There are two ways to pass props to components using MDC. diff --git a/src/runtime/markdown-parser/remark-mdc/micromark-extension/constants.ts b/src/runtime/markdown-parser/remark-mdc/micromark-extension/constants.ts index fe8d8e898..07a4371a6 100644 --- a/src/runtime/markdown-parser/remark-mdc/micromark-extension/constants.ts +++ b/src/runtime/markdown-parser/remark-mdc/micromark-extension/constants.ts @@ -11,6 +11,10 @@ export const Codes = { * null */ EOF: null, + /** + * ' ' + */ + space: 32, /** * '"' */ @@ -24,13 +28,25 @@ export const Codes = { */ apostrophe: 39, /** - * '`' + * '(' */ - backTick: 96, + openingParentheses: 40, /** - * '\' + * ')' */ - backSlash: 92, + closingParentheses: 41, + /** + * ',' + **/ + comma: 44, + /** + * '-' + */ + dash: 45, + /** + * '.' + */ + dot: 46, /** * ':' */ @@ -48,51 +64,39 @@ export const Codes = { */ greaterThan: 62, /** - * '-' - */ - dash: 45, - /** - * '.' - */ - dot: 46, - /** - * ' ' + * 'X' */ - space: 32, + uppercaseX: 88, /** * '[' */ openingSquareBracket: 91, /** - * ']' - */ - closingSquareBracket: 93, - /** - * '{' + * '\' */ - openingCurlyBracket: 123, + backSlash: 92, /** - * '}' + * ']' */ - closingCurlyBracket: 125, + closingSquareBracket: 93, /** - * '(' + * '_' */ - openingParentheses: 40, + underscore: 95, /** - * ')' + * '`' */ - closingParentheses: 41, + backTick: 96, /** - * '_' + * 'x' */ - underscore: 95, + lowercaseX: 120, /** - * 'X' + * '{' */ - uppercaseX: 88, + openingCurlyBracket: 123, /** - * 'x' + * '}' */ - lowercaseX: 120 + closingCurlyBracket: 125 } diff --git a/src/runtime/markdown-parser/remark-mdc/micromark-extension/tokenize-inline.ts b/src/runtime/markdown-parser/remark-mdc/micromark-extension/tokenize-inline.ts index 216c95bb0..d82975da0 100644 --- a/src/runtime/markdown-parser/remark-mdc/micromark-extension/tokenize-inline.ts +++ b/src/runtime/markdown-parser/remark-mdc/micromark-extension/tokenize-inline.ts @@ -78,9 +78,10 @@ function tokenize (this: TokenizeContext, effects: Effects, ok: State, nok: Stat } function exit (code: Code): void | State { - if (!markdownLineEndingOrSpace(code) && code !== null && ![Codes.closingSquareBracket].includes(code)) { - return nok(code) - } + // Allow everything else to exit the componentText state + // if (!markdownLineEndingOrSpace(code) && ![Codes.EOF, Codes.closingSquareBracket, Codes.dot, Codes.comma].includes(code)) { + // return nok(code) + // } effects.exit('componentText') return ok(code) } diff --git a/test/features/parser-markdown.ts b/test/features/parser-markdown.ts index d73a54234..bf9aaec1e 100644 --- a/test/features/parser-markdown.ts +++ b/test/features/parser-markdown.ts @@ -1,5 +1,6 @@ import { describe, test, expect, assert } from 'vitest' import { $fetch } from '@nuxt/test-utils' +import { visit } from 'unist-util-visit' export const testMarkdownParser = () => { describe('parser:markdown', () => { @@ -69,6 +70,32 @@ export const testMarkdownParser = () => { expect(parsed.body.children.length).toEqual(0) }) + test('inline component followed by non-space characters', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: [ + ':hello', // valid + ':hello,', // valid + ':hello-world', // valid but with different name + ':hello{}-world', // valid + ':hello:', // invalid + ':rocket:' // emoji + ].join('\n') + } + }) + + let compComponentCount = 0 + visit(parsed.body, node => (node as any).tag === 'hello', () => { + compComponentCount += 1 + }) + expect(compComponentCount).toEqual(3) + + // Check conflict between inline compoenent and emoji + expect(parsed.body.children[0].children.pop().value).toContain('🚀') + }) + test('h1 tags', async () => { const parsed = await $fetch('/api/parse', { method: 'POST', From 45543dc81051993f554862e487f9e0a6c459770c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jun 2022 11:21:15 +0200 Subject: [PATCH 016/175] chore(deps): update devdependency lint-staged to ^13.0.1 (#1234) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b8c27b508..8c1bccc4b 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "globby": "^13.1.1", "husky": "^8.0.1", "jiti": "^1.13.0", - "lint-staged": "^13.0.0", + "lint-staged": "^13.0.1", "nuxt": "^3.0.0-rc.3", "vitest": "^0.14.1" } diff --git a/yarn.lock b/yarn.lock index af0abdbfa..0ddfdff21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1708,7 +1708,7 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== -colorette@^2.0.16: +colorette@^2.0.16, colorette@^2.0.17: version "2.0.17" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.17.tgz#5dd4c0d15e2984b7433cb4a9f2ead45063b80c47" integrity sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g== @@ -4003,13 +4003,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.0.tgz#ce3526a844e6328814a3261fbfedc610a18856fa" - integrity sha512-vWban5utFt78VZohbosUxNIa46KKJ+KOQTDWTQ8oSl1DLEEVl9zhUtaQbiiydAmx+h2wKJK2d0+iMaRmknuWRQ== +lint-staged@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.1.tgz#899e78065ab29b88fdd922482411121664ef66be" + integrity sha512-Ykaf4QTi0a02BF7cnq7JIPGOJxH4TkNMWhSlJdH9wOekd0X+gog47Jfh/0L31DqZe5AiydLGC7LkPqpaNm+Kvg== dependencies: cli-truncate "^3.1.0" - colorette "^2.0.16" + colorette "^2.0.17" commander "^9.3.0" debug "^4.3.4" execa "^6.1.0" @@ -4018,7 +4018,7 @@ lint-staged@^13.0.0: micromatch "^4.0.5" normalize-path "^3.0.0" object-inspect "^1.12.2" - pidtree "^0.5.0" + pidtree "^0.6.0" string-argv "^0.3.1" yaml "^2.1.1" @@ -5454,10 +5454,10 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pidtree@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" - integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== pify@^2.3.0: version "2.3.0" From 46c3957df1b3c225f109d36da4c50379dea8eff5 Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Thu, 9 Jun 2022 12:06:51 +0200 Subject: [PATCH 017/175] fix(query): use exact match for `findOne` (#1224) * fix(query): use exact match for `findOne` * test: add index test * test: add prefix tests * test: add more edge cases --- src/runtime/composables/query.ts | 24 ++++++++--- src/runtime/query/match/pipeline.ts | 6 +-- src/runtime/query/query.ts | 30 +++++++------ src/runtime/server/storage.ts | 39 +++++++++-------- src/runtime/types.d.ts | 2 +- test/basic.test.ts | 9 ++-- test/features/content-query.ts | 43 +++++++++++++++++++ test/features/parser-markdown.ts | 14 +++++- .../basic/content-fa/{index.md => hello.md} | 0 .../basic/content/_partial/prefix/foo/bar.md | 0 .../basic/content/_partial/prefix/foo/baz.md | 0 .../content/_partial/prefix/foobarbaz.md | 0 .../basic/pages/features/query-content.vue | 20 +++++++++ 13 files changed, 142 insertions(+), 45 deletions(-) create mode 100644 test/features/content-query.ts rename test/fixtures/basic/content-fa/{index.md => hello.md} (100%) create mode 100644 test/fixtures/basic/content/_partial/prefix/foo/bar.md create mode 100644 test/fixtures/basic/content/_partial/prefix/foo/baz.md create mode 100644 test/fixtures/basic/content/_partial/prefix/foobarbaz.md create mode 100644 test/fixtures/basic/pages/features/query-content.vue diff --git a/src/runtime/composables/query.ts b/src/runtime/composables/query.ts index dd05ac9b4..b2adb688b 100644 --- a/src/runtime/composables/query.ts +++ b/src/runtime/composables/query.ts @@ -9,7 +9,21 @@ import { withContentBase } from './utils' /** * Query fetcher */ -export const queryFetch = (params: QueryBuilderParams) => { +export const createQueryFetch = (path?: string) => (query: QueryBuilder) => { + if (path) { + if (query.params().first) { + query.where({ _path: withoutTrailingSlash(path) }) + } else { + query.where({ _path: new RegExp(`^${path.replace(/[-[\]{}()*+.,^$\s/]/g, '\\$&')}`) }) + } + } + // Provide default sort order + if (!query.params().sort?.length) { + query.sort({ _file: 1, $numeric: true }) + } + + const params = query.params() + const apiPath = withContentBase(process.dev ? '/query' : `/query/${hash(params)}`) // Prefetch the query @@ -39,12 +53,8 @@ export function queryContent(query: string, ...pathParts: str export function queryContent (query: QueryBuilderParams): QueryBuilder; export function queryContent (query?: string | QueryBuilderParams, ...pathParts: string[]) { if (typeof query === 'string') { - let path = withLeadingSlash(withoutTrailingSlash(joinURL(query, ...pathParts))) - // escape regex special chars - path = path.replace(/[-[\]{}()*+.,^$\s]/g, '\\$&') - - return createQuery(queryFetch).where({ _path: new RegExp(`^${path}`) }) + return createQuery(createQueryFetch(withLeadingSlash(joinURL(query, ...pathParts)))) } - return createQuery(queryFetch, query) + return createQuery(createQueryFetch(), query) } diff --git a/src/runtime/query/match/pipeline.ts b/src/runtime/query/match/pipeline.ts index acab570ba..fc66fb96f 100644 --- a/src/runtime/query/match/pipeline.ts +++ b/src/runtime/query/match/pipeline.ts @@ -1,4 +1,4 @@ -import type { QueryBuilderParams, QueryPipe } from '../../types' +import type { QueryBuilder, QueryBuilderParams, QueryPipe } from '../../types' import { apply, ensureArray, sortList, withoutKeys, withKeys } from './utils' import { createMatch } from '.' @@ -40,9 +40,9 @@ export function createPipelineFetcher (getContentsList: () => Promise) { (data, params) => params.first ? data[0] : data ] - return async (params: QueryBuilderParams): Promise => { + return async (query: QueryBuilder): Promise => { const data = await getContentsList() - return pipelines.reduce(($data: Array, pipe: any) => pipe($data, params) || $data, data) + return pipelines.reduce(($data: Array, pipe: any) => pipe($data, query.params()) || $data, data) } } diff --git a/src/runtime/query/query.ts b/src/runtime/query/query.ts index 0fcb95f5a..167b75685 100644 --- a/src/runtime/query/query.ts +++ b/src/runtime/query/query.ts @@ -6,15 +6,15 @@ const arrayParams = ['sort', 'where', 'only', 'without'] export const createQuery = ( fetcher: DatabaseFetcher, - queryParams?: QueryBuilderParams + intitialParams?: QueryBuilderParams ): QueryBuilder => { - const params = { - ...queryParams + const queryParams = { + ...intitialParams } as QueryBuilderParams for (const key of arrayParams) { - if (params[key]) { - params[key] = ensureArray(params[key]) + if (queryParams[key]) { + queryParams[key] = ensureArray(queryParams[key]) } } @@ -23,23 +23,29 @@ export const createQuery = ( */ const $set = (key: string, fn: (...values: any[]) => any = v => v) => { return (...values: []) => { - params[key] = fn(...values) + queryParams[key] = fn(...values) return query } } const query: QueryBuilder = { - params: () => Object.freeze(params), + params: () => queryParams, only: $set('only', ensureArray) as () => ReturnType['only']>, without: $set('without', ensureArray), - where: $set('where', (q: any) => [...ensureArray(params.where), q]), - sort: $set('sort', (sort: SortOptions) => [...ensureArray(params.sort), ...ensureArray(sort)]), + where: $set('where', (q: any) => [...ensureArray(queryParams.where), q]), + sort: $set('sort', (sort: SortOptions) => [...ensureArray(queryParams.sort), ...ensureArray(sort)]), limit: $set('limit', v => parseInt(String(v), 10)), skip: $set('skip', v => parseInt(String(v), 10)), // find - findOne: () => fetcher({ ...params, first: true }) as Promise, - find: () => fetcher(params) as Promise>, - findSurround: (query, options) => fetcher({ ...params, surround: { query, ...options } }) as Promise>, + find: () => fetcher(query) as Promise>, + findOne: () => { + queryParams.first = true + return fetcher(query) as Promise + }, + findSurround: (surroundQuery, options) => { + queryParams.surround = { query: surroundQuery, ...options } + return fetcher(query) as Promise> + }, // locale locale: (_locale: string) => query.where({ _locale }) } diff --git a/src/runtime/server/storage.ts b/src/runtime/server/storage.ts index e0880436c..5c65587bb 100644 --- a/src/runtime/server/storage.ts +++ b/src/runtime/server/storage.ts @@ -1,5 +1,5 @@ import { prefixStorage } from 'unstorage' -import { joinURL, withLeadingSlash } from 'ufo' +import { joinURL, withLeadingSlash, withoutTrailingSlash } from 'ufo' import { hash as ohash } from 'ohash' import type { CompatibilityEvent } from 'h3' import type { QueryBuilderParams, ParsedContent, QueryBuilder } from '../types' @@ -118,6 +118,25 @@ export const getContent = async (event: CompatibilityEvent, id: string): Promise return parsed } +export const createServerQueryFetch = (event: CompatibilityEvent, path?: string) => (query: QueryBuilder) => { + if (path) { + if (query.params().first) { + query.where({ _path: withoutTrailingSlash(path) }) + } else { + query.where({ _path: new RegExp(`^${path.replace(/[-[\]{}()*+.,^$\s/]/g, '\\$&')}`) }) + } + } + + // Provide default sort order + if (!query.params().sort?.length) { + query.sort({ _file: 1, $numeric: true }) + } + + return createPipelineFetcher( + () => getContentsList(event) as unknown as Promise + )(query) +} + /** * Query contents */ @@ -125,24 +144,10 @@ export function serverQueryContent(event: CompatibilityEvent) export function serverQueryContent(event: CompatibilityEvent, params?: QueryBuilderParams): QueryBuilder; export function serverQueryContent(event: CompatibilityEvent, path?: string, ...pathParts: string[]): QueryBuilder; export function serverQueryContent (event: CompatibilityEvent, path?: string | QueryBuilderParams, ...pathParts: string[]) { - let params = (path || {}) as QueryBuilderParams if (typeof path === 'string') { path = withLeadingSlash(joinURL(path, ...pathParts)) - // escape regex special chars - path = path.replace(/[-[\]{}()*+.,^$\s]/g, '\\$&') - - params = { - where: [{ _path: new RegExp(`^${path}`) }] - } - } - const pipelineFetcher = createPipelineFetcher( - () => getContentsList(event) as unknown as Promise - ) - - // Provide default sort order - if (!params.sort?.length) { - params.sort = [{ _file: 1, $numeric: true }] + return createQuery(createServerQueryFetch(event, path)) } - return createQuery(pipelineFetcher, params) + return createQuery(createServerQueryFetch(event), path || {}) } diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index f039f90ea..3ffe57f7d 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -262,7 +262,7 @@ export interface QueryBuilder { export type QueryPipe = (data: Array, param: QueryBuilderParams) => Array | void -export type DatabaseFetcher = (params: QueryBuilderParams) => Promise | T> +export type DatabaseFetcher = (quey: QueryBuilder) => Promise | T> export type QueryMatchOperator = (item: any, condition: any) => boolean diff --git a/test/basic.test.ts b/test/basic.test.ts index 2064225f6..547f755b8 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -12,6 +12,7 @@ import { testCSVParser } from './features/parser-csv' import { testRegex } from './features/regex' import { testMarkdownParserExcerpt } from './features/parser-markdown-excerpt' import { testParserHooks } from './features/parser-hooks' +import { testContentQuery } from './features/content-query' describe('fixtures:basic', async () => { await setup({ @@ -44,7 +45,7 @@ describe('fixtures:basic', async () => { assert(ids.includes('content:.dot-ignored.md') === false, 'Ignored files with `.` should not be listed') assert(ids.includes('content:-dash-ignored.md') === false, 'Ignored files with `-` should not be listed') - assert(ids.includes('fa-ir:fa:index.md') === true, 'Files with `fa-ir` prefix should be listed') + assert(ids.includes('fa-ir:fa:hello.md') === true, 'Files with `fa-ir` prefix should be listed') }) test('Get contents index', async () => { @@ -64,12 +65,12 @@ describe('fixtures:basic', async () => { test('Search contents using `locale` helper', async () => { const fa = await $fetch('/locale-fa') - expect(fa).toContain('fa-ir:fa:index.md') + expect(fa).toContain('fa-ir:fa:hello.md') expect(fa).not.toContain('content:index.md') const en = await $fetch('/locale-en') - expect(en).not.toContain('fa-ir:fa:index.md') + expect(en).not.toContain('fa-ir:fa:hello.md') expect(en).toContain('content:index.md') }) @@ -104,6 +105,8 @@ describe('fixtures:basic', async () => { expect(html).contains('Content (v2)') }) + testContentQuery() + testNavigation() testMarkdownParser() diff --git a/test/features/content-query.ts b/test/features/content-query.ts new file mode 100644 index 000000000..31f317290 --- /dev/null +++ b/test/features/content-query.ts @@ -0,0 +1,43 @@ +import { describe, expect, test } from 'vitest' +import { $fetch } from '@nuxt/test-utils' + +export const testContentQuery = () => { + describe('content-query', () => { + test('Find index', async () => { + const content = await $fetch('/') + + // Normal Prop + expect(content).includes('Index') + }) + + test('exact match foo not found', async () => { + const content = await $fetch('/features/query-content?path=/foo&findOne=1') + + // empty + expect(content).includes('$$$$') + }) + + test('exact match foo/bar found', async () => { + const content = await $fetch('/features/query-content?path=/foo/bar&findOne=1') + + // empty + expect(content).includes('prefix:foo:bar.md$$') + }) + + test('prefix queries', async () => { + const content = await $fetch('/features/query-content?path=/foo') + + expect(content).includes('prefix:foo:bar.md') + expect(content).includes('prefix:foo:baz.md') + expect(content).includes('prefix:foobarbaz.md') + }) + + test('directory listing', async () => { + const content = await $fetch('/features/query-content?path=/foo/') + + expect(content).includes('prefix:foo:bar.md') + expect(content).includes('prefix:foo:baz.md') + expect(content).not.includes('prefix:foobarbaz.md') + }) + }) +} diff --git a/test/features/parser-markdown.ts b/test/features/parser-markdown.ts index bf9aaec1e..a6200e2d5 100644 --- a/test/features/parser-markdown.ts +++ b/test/features/parser-markdown.ts @@ -78,9 +78,12 @@ export const testMarkdownParser = () => { content: [ ':hello', // valid ':hello,', // valid - ':hello-world', // valid but with different name + ':hello :hello', // valid ':hello{}-world', // valid + ':hello:hello', // invalid + ':hello-world', // valid but with different name ':hello:', // invalid + '`:hello`', // code ':rocket:' // emoji ].join('\n') } @@ -90,7 +93,14 @@ export const testMarkdownParser = () => { visit(parsed.body, node => (node as any).tag === 'hello', () => { compComponentCount += 1 }) - expect(compComponentCount).toEqual(3) + expect(compComponentCount).toEqual(5) + + const paragraph = parsed.body.children[0] + expect(paragraph.children[0].tag).toEqual('hello') + expect(paragraph.children[1].tag).toEqual('hello') + expect(paragraph.children[3].tag).toEqual('hello') + expect(paragraph.children[5].tag).toEqual('hello') + expect(paragraph.children[6].tag).toEqual('hello') // Check conflict between inline compoenent and emoji expect(parsed.body.children[0].children.pop().value).toContain('🚀') diff --git a/test/fixtures/basic/content-fa/index.md b/test/fixtures/basic/content-fa/hello.md similarity index 100% rename from test/fixtures/basic/content-fa/index.md rename to test/fixtures/basic/content-fa/hello.md diff --git a/test/fixtures/basic/content/_partial/prefix/foo/bar.md b/test/fixtures/basic/content/_partial/prefix/foo/bar.md new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/basic/content/_partial/prefix/foo/baz.md b/test/fixtures/basic/content/_partial/prefix/foo/baz.md new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/basic/content/_partial/prefix/foobarbaz.md b/test/fixtures/basic/content/_partial/prefix/foobarbaz.md new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/basic/pages/features/query-content.vue b/test/fixtures/basic/pages/features/query-content.vue new file mode 100644 index 000000000..3b937d13f --- /dev/null +++ b/test/fixtures/basic/pages/features/query-content.vue @@ -0,0 +1,20 @@ + + + From ede65e8337ca3eb597af95c17cfc609e4015238c Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Thu, 9 Jun 2022 14:04:22 +0200 Subject: [PATCH 018/175] feat(markdown): allow overwriting plugins (#1226) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Yaël Guilloux --- docs/content/4.api/3.configuration.md | 70 +--- package.json | 2 + src/module.ts | 5 +- src/runtime/markdown-parser/content.ts | 12 +- src/runtime/markdown-parser/index.ts | 41 +- src/runtime/server/transformers/markdown.ts | 26 +- src/runtime/types.d.ts | 6 +- src/utils.ts | 30 +- test/basic.test.ts | 3 + test/features/module-options.ts | 59 +++ test/fixtures/basic/nuxt.config.ts | 17 + yarn.lock | 432 +++++++++++++++++++- 12 files changed, 608 insertions(+), 95 deletions(-) create mode 100644 test/features/module-options.ts diff --git a/docs/content/4.api/3.configuration.md b/docs/content/4.api/3.configuration.md index 9e8cb0949..2908b95da 100644 --- a/docs/content/4.api/3.configuration.md +++ b/docs/content/4.api/3.configuration.md @@ -16,7 +16,6 @@ export default defineNuxtConfig({ }) ``` -Before diving into the individual attributes, have a [look at the default settings][default-settings] of the module. ## `base` @@ -93,63 +92,41 @@ export default defineNuxtConfig({ ## `markdown` -This module uses [remark][remark] and [rehype][rehype] under the hood to compile markdown files into JSON AST that will be stored into the body variable. +This module uses [remark](https://github.com/remarkjs/remark) and [rehype](https://github.com/remarkjs/remark-rehype) under the hood to compile markdown files into JSON AST that will be stored into the body variable. -> The following explanation is valid for both `remarkPlugins` and `rehypePlugins` - -To configure how the module will parse Markdown, you can: - -- Add a new plugin to the defaults: +To configure how the module will parse Markdown, you can use `markdown.remarkPlugins` and `markdown.rehypePlugins` in your `nuxt.config.ts` file: ```ts [nuxt.config.ts] export default defineNuxtConfig({ content: { markdown: { - remarkPlugins: ['remark-emoji'] - } - } -}) -``` - -- Override the default plugins: -```ts [nuxt.config.ts] -export default defineNuxtConfig({ - content: { - markdown: { - remarkPlugins: () => ['remark-emoji'] - } - } -}) -``` - -- Use local plugins: + // Object syntax can be used to override default options + remarkPlugins: { + // Override remark-emoji options + 'remark-emoji': { + emoticon: true + }, + + // Disable remark-gfm + 'remark-gfm': false, + + // Add remark-oembed + 'remark-oembed': { + // Options + } + }, -```ts [nuxt.config.ts] -export default defineNuxtConfig({ - content: { - markdown: { - remarkPlugins: [ - '~/plugins/my-custom-remark-plugin.js' + // Array syntax can be used to add plugins + rehypePlugins: [ + 'rehype-figure' ] } } }) ``` -- Provide options directly in the definition: - -```ts [nuxt.config.ts] -export default defineNuxtConfig({ - content: { - markdown: { - remarkPlugins: [ - ['remark-emoji', { emoticon: true }] - ] - } - } -}) -``` +> [Here](https://github.com/nuxt/content/tree/main/src/runtime/markdown-parser/index.ts#L23) is a list of plugins @nuxt/content is using by default. > When adding a new plugin, make sure to install it in your dependencies. @@ -234,8 +211,3 @@ List of locale codes. This codes will be used to detect contents locale. - Default: `undefined`{lang=ts} Default locale for top level contents. Module will use first locale code from `locales` array if this option is not defined. - -[default-settings]: #defaults - -[remark]: https://github.com/remarkjs/remark -[rehype]: https://github.com/rehypejs/rehype diff --git a/package.json b/package.json index 8c1bccc4b..0ba50543d 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,8 @@ "jiti": "^1.13.0", "lint-staged": "^13.0.1", "nuxt": "^3.0.0-rc.3", + "rehype-figure": "^1.0.1", + "remark-oembed": "^1.2.2", "vitest": "^0.14.1" } } diff --git a/src/module.ts b/src/module.ts index c482b76ab..fa10f007d 100644 --- a/src/module.ts +++ b/src/module.ts @@ -26,6 +26,7 @@ import { PROSE_TAGS, useContentMounts } from './utils' +import type { MarkdownPlugin } from './runtime/types' export type MountOptions = { name: string @@ -101,14 +102,14 @@ export interface ModuleOptions { * * @default [] */ - remarkPlugins?: Array + remarkPlugins?: Array | Record /** * Register custom remark plugin to provide new feature into your markdown contents. * Checkout: https://github.com/rehypejs/rehype/blob/main/doc/plugins.md * * @default [] */ - rehypePlugins?: Array + rehypePlugins?: Array | Record } /** * Content module uses `shiki` to highlight code blocks. diff --git a/src/runtime/markdown-parser/content.ts b/src/runtime/markdown-parser/content.ts index 6ad8c149c..2e7403fed 100644 --- a/src/runtime/markdown-parser/content.ts +++ b/src/runtime/markdown-parser/content.ts @@ -2,15 +2,21 @@ import type { Processor } from 'unified' import { unified } from 'unified' import remarkParse from 'remark-parse' import remark2rehype from 'remark-rehype' -import { MarkdownOptions, MarkdownRoot } from '../types' +import { MarkdownOptions, MarkdownPlugin, MarkdownRoot } from '../types' import remarkMDC from './remark-mdc' import handlers from './handler' import compiler from './compiler' import { flattenNodeText } from './utils/ast' import { nodeTextContent } from './utils/node' -const usePlugins = (plugins: any[], stream: Processor) => - plugins.reduce((stream, plugin) => stream.use(plugin[0] || plugin, plugin[1] || undefined), stream) +const usePlugins = (plugins: Record, stream: Processor) => { + for (const plugin of Object.values(plugins)) { + if (plugin) { + const { instance, ...options } = plugin + stream.use(instance, options) + } + } +} /** * Generate text excerpt summary diff --git a/src/runtime/markdown-parser/index.ts b/src/runtime/markdown-parser/index.ts index 07c44c69b..d2b6ef9bc 100644 --- a/src/runtime/markdown-parser/index.ts +++ b/src/runtime/markdown-parser/index.ts @@ -20,18 +20,35 @@ export const useDefaultOptions = (): MarkdownOptions => ({ searchDepth: 2 }, tags: {}, - remarkPlugins: [ - remarkEmoji, - remarkSqueezeParagraphs, - remarkGfm - ], - rehypePlugins: [ - rehypeSlug, - rehypeExternalLinks, - rehypeSortAttributeValues, - rehypeSortAttributes, - [rehypeRaw, { passThrough: ['element'] }] - ] + remarkPlugins: { + 'remark-emoji': { + instance: remarkEmoji + }, + 'remark-squeeze-paragraphs': { + instance: remarkSqueezeParagraphs + }, + 'remark-gfm': { + instance: remarkGfm + } + }, + rehypePlugins: { + 'rehype-slug': { + instance: rehypeSlug + }, + 'rehype-external-links': { + instance: rehypeExternalLinks + }, + 'rehype-sort-attribute-values': { + instance: rehypeSortAttributeValues + }, + 'rehype-sort-attributes': { + instance: rehypeSortAttributes + }, + 'rehype-raw': { + instance: rehypeRaw, + passThrough: ['element'] + } + } }) export async function parse (file: string, userOptions: Partial = {}) { diff --git a/src/runtime/server/transformers/markdown.ts b/src/runtime/server/transformers/markdown.ts index 58d6cbca0..a9103025b 100644 --- a/src/runtime/server/transformers/markdown.ts +++ b/src/runtime/server/transformers/markdown.ts @@ -1,20 +1,15 @@ import { parse } from '../../markdown-parser' -import type { MarkdownOptions } from '../../types' +import type { MarkdownOptions, MarkdownPlugin } from '../../types' import { MarkdownParsedContent } from '../../types' import { useRuntimeConfig } from '#imports' -const importPlugin = async (p: [string, any]) => ([ - await import(p[0]).then(res => res.default || res), - typeof p[1] === 'object' ? { ...p[1] } : p[1] -]) - export default { name: 'markdown', extensions: ['.md'], parse: async (_id, content) => { const config: MarkdownOptions = { ...useRuntimeConfig().content?.markdown || {} } - config.rehypePlugins = await Promise.all((config.rehypePlugins || []).map(importPlugin)) - config.remarkPlugins = await Promise.all((config.remarkPlugins || []).map(importPlugin)) + config.rehypePlugins = await importPlugins(config.rehypePlugins) + config.remarkPlugins = await importPlugins(config.remarkPlugins) const parsed = await parse(content, config) @@ -26,3 +21,18 @@ export default { } } } + +async function importPlugins (plugins: Record = {}) { + const resolvedPlugins = {} + for (const [name, plugin] of Object.entries(plugins)) { + if (plugin) { + resolvedPlugins[name] = { + instance: await import(name).then(m => m.default || m), + ...plugin + } + } else { + resolvedPlugins[name] = false + } + } + return resolvedPlugins +} diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index 3ffe57f7d..bc51f19e1 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -80,6 +80,8 @@ export interface MarkdownRoot { props?: Record } +export interface MarkdownPlugin extends Record {} + export interface MarkdownOptions { /** * Enable/Disable MDC components. @@ -93,8 +95,8 @@ export interface MarkdownOptions { searchDepth: number } tags: Record - remarkPlugins: Array - rehypePlugins: Array + remarkPlugins: Record + rehypePlugins: Record } export interface TocLink { diff --git a/src/utils.ts b/src/utils.ts index b97555eb2..48d325e8a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,8 +4,8 @@ import type { Nuxt } from '@nuxt/schema' import fsDriver from 'unstorage/drivers/fs' import httpDriver from 'unstorage/drivers/http' import { WebSocketServer } from 'ws' -import { useLogger } from '@nuxt/kit' import type { ModuleOptions, MountOptions } from './module' +import type { MarkdownPlugin } from './runtime/types' /** * Internal version that represents cache format. @@ -119,20 +119,20 @@ export function createWebSocket () { } export function processMarkdownOptions (options: ModuleOptions['markdown']) { - options.rehypePlugins = (options.rehypePlugins || []).map(resolveMarkdownPlugin).filter(Boolean) - options.remarkPlugins = (options.remarkPlugins || []).map(resolveMarkdownPlugin).filter(Boolean) - - return options - - function resolveMarkdownPlugin (plugin: string | [string, any]): [string, any] { - if (typeof plugin === 'string') { plugin = [plugin, {}] } - - if (!Array.isArray(plugin)) { - useLogger('@nuxt/content').warn('Plugin silently ignored:', (plugin as any).name || plugin) - return - } + return { + ...options, + remarkPlugins: resolveMarkdownPlugins(options.remarkPlugins), + rehypePlugins: resolveMarkdownPlugins(options.rehypePlugins) + } +} - // TODO: Add support for local custom plugins - return plugin +function resolveMarkdownPlugins (plugins): Record { + if (Array.isArray(plugins)) { + return Object.values(plugins).reduce((plugins, plugin) => { + const [name, pluginOptions] = Array.isArray(plugin) ? plugin : [plugin, {}] + plugins[name] = pluginOptions + return plugins + }, {}) } + return plugins || {} } diff --git a/test/basic.test.ts b/test/basic.test.ts index 547f755b8..da14a5a3a 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -12,6 +12,7 @@ import { testCSVParser } from './features/parser-csv' import { testRegex } from './features/regex' import { testMarkdownParserExcerpt } from './features/parser-markdown-excerpt' import { testParserHooks } from './features/parser-hooks' +import { testModuleOption } from './features/module-options' import { testContentQuery } from './features/content-query' describe('fixtures:basic', async () => { @@ -126,4 +127,6 @@ describe('fixtures:basic', async () => { testRegex() testParserHooks() + + testModuleOption() }) diff --git a/test/features/module-options.ts b/test/features/module-options.ts new file mode 100644 index 000000000..2720940ae --- /dev/null +++ b/test/features/module-options.ts @@ -0,0 +1,59 @@ +import { describe, test, expect } from 'vitest' +import { $fetch } from '@nuxt/test-utils' + +export const testModuleOption = () => { + describe('module options', () => { + test('overwrite `remark-emoji` options: enable emoticon', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: [ + '# Hello :-)' + ].join('\n') + } + }) + expect(parsed.body.children[0].children[0].value).toContain('😃') + }) + + test('disable `remark-gfm`', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: [ + '~one~' + ].join('\n') + } + }) + expect(parsed.body.children[0].children[0].value).toBe('~one~') + }) + + test('add `remark-oembed`', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: [ + 'https://www.youtube.com/watch?v=aoLhACqJCUg' + ].join('\n') + } + }) + expect(parsed.body.children[0].props.className).toContain('remark-oembed-you-tube') + }) + + test('add `rehype-figure`', async () => { + const parsed = await $fetch('/api/parse', { + method: 'POST', + body: { + id: 'content:index.md', + content: [ + '![Alt](https://nuxtjs.org/design-kit/colored-logo.svg)' + ].join('\n') + } + }) + expect(parsed.body.children[0].props.className).toContain('rehype-figure') + expect(parsed.body.children[0].tag).toContain('figure') + }) + }) +} diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts index d06739c2c..81b46bcde 100644 --- a/test/fixtures/basic/nuxt.config.ts +++ b/test/fixtures/basic/nuxt.config.ts @@ -29,6 +29,23 @@ export default defineNuxtConfig({ ], navigation: { fields: ['icon'] + }, + markdown: { + // Object syntax can be used to override default options + remarkPlugins: { + // override remark-emoji options + 'remark-emoji': { + emoticon: true + }, + // disable remark-gfm + 'remark-gfm': false, + // add remark-oembed + 'remark-oembed': {} + }, + // Array syntax can be used to add plugins + rehypePlugins: [ + 'rehype-figure' + ] } } }) diff --git a/yarn.lock b/yarn.lock index 0ddfdff21..a9e1ce706 100644 --- a/yarn.lock +++ b/yarn.lock @@ -741,16 +741,38 @@ estree-walker "^2.0.1" picomatch "^2.2.2" +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@types/cacheable-request@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + "@types/chai-subset@^1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" @@ -792,6 +814,11 @@ dependencies: "@types/unist" "*" +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" @@ -806,6 +833,11 @@ "@types/parse5" "*" "@types/tough-cookie" "*" +"@types/json-buffer@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" + integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -816,6 +848,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/keyv@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/mdast@^3.0.0": version "3.0.10" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" @@ -855,6 +894,13 @@ dependencies: "@types/node" "*" +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/tough-cookie@*": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" @@ -1205,6 +1251,11 @@ anymatch@^3.1.2, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apr-intercept@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/apr-intercept/-/apr-intercept-3.0.4.tgz#bf3ad45067e4b6b73ebbb06e230667d58100f7f4" + integrity sha512-rDtf8HhtJL2OBKqKwZ3ehlTx1ZaiO0h7UQdBzFcntNtSD5ow/8sC4JpbMRVBwBL27m9wQwxEhmaAfHoAPBkVcA== + aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1338,6 +1389,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bcp-47-match@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bcp-47-match/-/bcp-47-match-1.0.3.tgz#cb8d03071389a10aff2062b862d6575ffd7cd7ef" + integrity sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1463,6 +1519,24 @@ c8@^7.11.3: yargs "^16.2.0" yargs-parser "^20.2.9" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1496,6 +1570,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001349: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz#90740086a2eb2e825084944169d313c9793aeba4" integrity sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw== +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + ccount@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" @@ -1536,11 +1615,21 @@ chalk@^5.0.0, chalk@^5.0.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + character-entities-html4@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + character-entities-legacy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" @@ -1659,6 +1748,13 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -1713,6 +1809,11 @@ colorette@^2.0.16, colorette@^2.0.17: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.17.tgz#5dd4c0d15e2984b7433cb4a9f2ead45063b80c47" integrity sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g== +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + comma-separated-tokens@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" @@ -1743,6 +1844,14 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +compress-brotli@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/compress-brotli/-/compress-brotli-1.3.8.tgz#0c0a60c97a989145314ec381e84e26682e7b38db" + integrity sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ== + dependencies: + "@types/json-buffer" "~3.0.0" + json-buffer "~3.0.1" + compress-commons@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" @@ -1828,6 +1937,11 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" +css-selector-parser@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759" + integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g== + css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -1959,6 +2073,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -1988,6 +2109,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -2068,6 +2194,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +direction@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" + integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -2112,6 +2243,14 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-7.2.0.tgz#468172a3529779814d21a779c1ba2f6d76609809" @@ -2164,7 +2303,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3136,6 +3275,13 @@ get-port-please@^2.5.0: dependencies: fs-memo "^1.2.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -3243,6 +3389,23 @@ globby@^13.1.1: merge2 "^1.4.1" slash "^4.0.0" +got@^11.8.2: + version "11.8.5" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" + integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -3343,6 +3506,11 @@ hast-util-from-parse5@^7.0.0: vfile-location "^4.0.0" web-namespaces "^2.0.0" +hast-util-has-property@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz#9f137565fad6082524b382c1e7d7d33ca5059f36" + integrity sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg== + hast-util-has-property@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz#c15cd6180f3e535540739fcc9787bcffb5708cae" @@ -3355,6 +3523,11 @@ hast-util-heading-rank@^2.0.0: dependencies: "@types/hast" "^2.0.0" +hast-util-is-element@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" + integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== + hast-util-is-element@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz#fc0b0dc7cef3895e839b8d66979d57b0338c68f3" @@ -3363,6 +3536,11 @@ hast-util-is-element@^2.0.0: "@types/hast" "^2.0.0" "@types/unist" "^2.0.0" +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + hast-util-parse-selector@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz#a519e27e8b61bd5a98fad494ed06131ce68d9c3f" @@ -3387,6 +3565,42 @@ hast-util-raw@^7.2.0: web-namespaces "^2.0.0" zwitch "^2.0.0" +hast-util-select@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hast-util-select/-/hast-util-select-4.0.2.tgz#ae3ef2860e02cda2ad3a2e72b47c1f5e8f44e9e7" + integrity sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg== + dependencies: + bcp-47-match "^1.0.0" + comma-separated-tokens "^1.0.0" + css-selector-parser "^1.0.0" + direction "^1.0.0" + hast-util-has-property "^1.0.0" + hast-util-is-element "^1.0.0" + hast-util-to-string "^1.0.0" + hast-util-whitespace "^1.0.0" + not "^0.1.0" + nth-check "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" + zwitch "^1.0.0" + +hast-util-to-html@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz#9f339ca9bea71246e565fc79ff7dbfe98bb50f5e" + integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.0" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^3.0.1" + unist-util-is "^4.0.0" + xtend "^4.0.0" + hast-util-to-parse5@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz#a39808e69005d10afeed1866029a1fb137df3f7c" @@ -3399,6 +3613,11 @@ hast-util-to-parse5@^7.0.0: web-namespaces "^2.0.0" zwitch "^2.0.0" +hast-util-to-string@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378" + integrity sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w== + hast-util-to-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a" @@ -3406,6 +3625,22 @@ hast-util-to-string@^2.0.0: dependencies: "@types/hast" "^2.0.0" +hast-util-whitespace@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" + integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + hastscript@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.0.2.tgz#d811fc040817d91923448a28156463b2e40d590a" @@ -3437,11 +3672,21 @@ html-tags@^3.1.0, html-tags@^3.2.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + html-void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -3467,6 +3712,14 @@ http-shutdown@^1.2.2: resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -3825,6 +4078,11 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -3912,6 +4170,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.1, json-buffer@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -3958,6 +4221,14 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +keyv@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.3.0.tgz#b4352e0e4fe7c94111947d6738a6d3fe7903027c" + integrity sha512-C30Un9+63J0CsR7Wka5quXKqYZsT6dcRQ2aOwGcSc3RiQ4HGWpTAHlCA+puNfw2jA/s11EsxA1nCXgZRuRKMQQ== + dependencies: + compress-brotli "^1.3.8" + json-buffer "3.0.1" + kleur@^4.0.3: version "4.1.4" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" @@ -4190,6 +4461,18 @@ loupe@^2.3.1: dependencies: get-func-name "^2.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -4674,6 +4957,11 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -4694,6 +4982,16 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -4899,6 +5197,14 @@ nitropack@^0.4.2: unimport "^0.2.1" unstorage "^0.4.1" +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -5003,6 +5309,11 @@ normalize-url@^6.0.1, normalize-url@^6.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +not@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/not/-/not-0.1.0.tgz#c9691c1746c55dcfbe54cbd8bd4ff041bc2b519d" + integrity sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA== + npm-bundled@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -5058,7 +5369,7 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -nth-check@^2.0.1: +nth-check@^2.0.0, nth-check@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== @@ -5186,7 +5497,7 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -5261,6 +5572,11 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -5320,6 +5636,14 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5743,6 +6067,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +property-information@^5.0.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + property-information@^6.0.0, property-information@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" @@ -5758,6 +6089,14 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -5785,6 +6124,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + radix3@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-0.1.2.tgz#5f7351af7fc5e4b1d9a1b14a7266b6a4a8cac0ba" @@ -5926,6 +6270,14 @@ rehype-external-links@^1.0.1: unified "^10.0.0" unist-util-visit "^4.0.0" +rehype-figure@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rehype-figure/-/rehype-figure-1.0.1.tgz#6fac89f0ec6042ce8b99163b4cc796a934267be0" + integrity sha512-g7DJuK8R8xHIaPI3QJ6/OoWiKepn92RF2CV3z4dO7lRO6ZHo48Tu9X3KgnZUKK035srFHqWQx93AybBy12XqmQ== + dependencies: + hastscript "^6.0.0" + unist-util-visit "^2.0.3" + rehype-raw@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4" @@ -5986,6 +6338,20 @@ remark-gfm@^3.0.1: micromark-extension-gfm "^2.0.0" unified "^10.0.0" +remark-oembed@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/remark-oembed/-/remark-oembed-1.2.2.tgz#d5870ca06a1c3af0d7fc9c26809151c4d6e1958d" + integrity sha512-zTHfSCgBIJV7D2UHanWlUT1sDqulOuAv9eVGl3XhV2o2tGDUgyVjMz5Ctx560IysJ+Qni4p0C3vkR1n3EubNRQ== + dependencies: + apr-intercept "^3.0.4" + got "^11.8.2" + hast-util-select "^4.0.2" + hast-util-to-html "^7.1.2" + hastscript "^6.0.0" + is-url "^1.2.4" + mime "^2.5.2" + param-case "^3.0.4" + remark-parse@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" @@ -6029,6 +6395,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -6048,6 +6419,13 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.17.0, resolve@^1.19 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -6387,6 +6765,11 @@ sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + space-separated-tokens@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" @@ -6512,6 +6895,15 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" + integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + xtend "^4.0.0" + stringify-entities@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" @@ -6789,7 +7181,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: +tslib@^2.0.3, tslib@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -6972,6 +7364,11 @@ unist-util-generated@^2.0.0: resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + unist-util-is@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" @@ -7000,6 +7397,14 @@ unist-util-stringify-position@^3.0.0: dependencies: "@types/unist" "^2.0.0" +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2" @@ -7016,6 +7421,15 @@ unist-util-visit-parents@^5.0.0: "@types/unist" "^2.0.0" unist-util-is "^5.0.0" +unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + unist-util-visit@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b" @@ -7397,6 +7811,11 @@ xmlhttprequest-ssl@~2.0.0: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + xxhashjs@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" @@ -7479,6 +7898,11 @@ zip-stream@^4.1.0: compress-commons "^4.1.0" readable-stream "^3.6.0" +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + zwitch@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1" From 56c522844a829a44bf569ef0d68c12154486eb38 Mon Sep 17 00:00:00 2001 From: Kotaro Yabe Date: Fri, 10 Jun 2022 17:45:39 +0900 Subject: [PATCH 019/175] fix(query): surround and only cannot be used at the same time (#1238) --- src/runtime/query/match/utils.ts | 4 ++-- test/features/query/query.test.ts | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/runtime/query/match/utils.ts b/src/runtime/query/match/utils.ts index 6a0d12724..577b14baf 100644 --- a/src/runtime/query/match/utils.ts +++ b/src/runtime/query/match/utils.ts @@ -40,7 +40,7 @@ export const detectProperties = (keys: string[]) => { } export const withoutKeys = (keys: string[] = []) => (obj: any) => { - if (keys.length === 0) { + if (keys.length === 0 || !obj) { return obj } const { prefixes, properties } = detectProperties(keys) @@ -48,7 +48,7 @@ export const withoutKeys = (keys: string[] = []) => (obj: any) => { } export const withKeys = (keys: string[] = []) => (obj: any) => { - if (keys.length === 0) { + if (keys.length === 0 || !obj) { return obj } const { prefixes, properties } = detectProperties(keys) diff --git a/test/features/query/query.test.ts b/test/features/query/query.test.ts index 02476a902..6247c2338 100644 --- a/test/features/query/query.test.ts +++ b/test/features/query/query.test.ts @@ -205,6 +205,30 @@ describe('Database Provider', () => { assert(result[2] === null) }) + test('Surround and using only method', async () => { + const fetcher = createPipelineFetcher(() => Promise.resolve([{ id: 1, _path: '/a' }, { id: 2, _path: '/b' }, { id: 3, _path: '/c' }] as any[])) + const result = await createQuery(fetcher) + .only(['_path']) + .findSurround({ id: 3 }, { before: 2, after: 1 }) + + assert((result as Array).length === 3) + assert(result[0]._path === '/a') + assert(result[1]._path === '/b') + assert(result[2] === null) + }) + + test('Surround and using without method', async () => { + const fetcher = createPipelineFetcher(() => Promise.resolve([{ id: 1, _path: '/a' }, { id: 2, _path: '/b' }, { id: 3, _path: '/c' }] as any[])) + const result = await createQuery(fetcher) + .without('id') + .findSurround({ id: 3 }, { before: 2, after: 1 }) + + assert((result as Array).length === 3) + assert(result[0]._path === '/a') + assert(result[1]._path === '/b') + assert(result[2] === null) + }) + test('Chain multiple where conditions', async () => { const fetcher = createPipelineFetcher(() => Promise.resolve([{ id: 1, path: '/a' }, { id: 2, path: '/b' }, { id: 3, path: '/c' }] as any[])) const query = createQuery(fetcher).where({ id: { $in: [1, 2] } }) From fd1c56dcd9a1d63aa60edd407985d6e99892a5f6 Mon Sep 17 00:00:00 2001 From: Farnabaz Date: Fri, 10 Jun 2022 11:20:26 +0200 Subject: [PATCH 020/175] chore: typo --- src/module.ts | 6 +++--- src/runtime/server/storage.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/module.ts b/src/module.ts index fa10f007d..dfbeaa392 100644 --- a/src/module.ts +++ b/src/module.ts @@ -378,7 +378,7 @@ export default defineNuxtModule({ contentContext.defaultLocale = contentContext.defaultLocale || contentContext.locales[0] // Generate cache integerity based on content context - const cacheIntegerity = hash({ + const cacheIntegrity = hash({ locales: options.locales, options: options.defaultLocale, markdown: options.markdown, @@ -398,7 +398,7 @@ export default defineNuxtModule({ // Context will use in server nuxt.options.runtimeConfig.content = { cacheVersion: CACHE_VERSION, - cacheIntegerity, + cacheIntegrity, ...contentContext as any } @@ -454,7 +454,7 @@ interface ModulePrivateRuntimeConfig { * This is used to invalidate cache when the format changes. */ cacheVersion: string; - cacheIntegerity: string; + cacheIntegrity: string; } declare module '@nuxt/schema' { diff --git a/src/runtime/server/storage.ts b/src/runtime/server/storage.ts index 5c65587bb..76cf0e204 100644 --- a/src/runtime/server/storage.ts +++ b/src/runtime/server/storage.ts @@ -99,7 +99,7 @@ export const getContent = async (event: CompatibilityEvent, id: string): Promise meta, // Add Content version to the hash, to revalidate the cache on content update version: contentConfig.cacheVersion, - integerity: contentConfig.cacheIntegrity + integrity: contentConfig.cacheIntegrity }) if (cached?.hash === hash) { return cached.parsed as ParsedContent From 53949745ecfb4ec8f8da1087a4c69584c9165ca6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jun 2022 11:28:47 +0200 Subject: [PATCH 021/175] chore(deps): update dependency ws to ^8.8.0 (#1236) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0ba50543d..a3a3c9a83 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "unist-util-position": "^4.0.3", "unist-util-visit": "^4.1.0", "unstorage": "^0.4.1", - "ws": "^8.7.0" + "ws": "^8.8.0" }, "devDependencies": { "@nuxt/module-builder": "^0.1.7", diff --git a/yarn.lock b/yarn.lock index a9e1ce706..0d3b73355 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7796,11 +7796,16 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@^8.6.0, ws@^8.7.0: +ws@^8.6.0: version "8.7.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957" integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== +ws@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" + integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== + ws@~8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" From 8cab2972813919f6eb9d7ffda36a10e1ea987bda Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jun 2022 11:56:38 +0200 Subject: [PATCH 022/175] chore(deps): update devdependency vitest to ^0.14.2 (#1240) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a3a3c9a83..a537171b4 100644 --- a/package.json +++ b/package.json @@ -101,6 +101,6 @@ "nuxt": "^3.0.0-rc.3", "rehype-figure": "^1.0.1", "remark-oembed": "^1.2.2", - "vitest": "^0.14.1" + "vitest": "^0.14.2" } } diff --git a/yarn.lock b/yarn.lock index 0d3b73355..10ad3ad8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7607,10 +7607,10 @@ vite@^2.9.8, vite@^2.9.9: optionalDependencies: fsevents "~2.3.2" -vitest@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.14.1.tgz#f2fd8b31abdbbadb9ee895f8fde35a068ea2a5f5" - integrity sha512-2UUm6jYgkwh7Y3VKSRR8OuaNCm+iA5LPDnal7jyITN39maZK9L+JVxqjtQ39PSFo5Fl3/BgaJvER6GGHX9JLxg== +vitest@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.14.2.tgz#ac07b46d3cd3b5667d2bb803962f759a1b8f3f89" + integrity sha512-vXQUl8OUCqHmxKWscMGL+6Xl1pBJmYHZ8N85iNpLGrirAC2vhspu7b73ShRcLonmZT44BYZW+LBAVvn0L4jyVA== dependencies: "@types/chai" "^4.3.1" "@types/chai-subset" "^1.3.3" From 04fe4248e45696168e9783203d864a33f43d06c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Mon, 13 Jun 2022 19:19:53 +0200 Subject: [PATCH 023/175] docs: remove config redirect --- docs/public/_redirects | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/public/_redirects b/docs/public/_redirects index fb7db461b..3277f1414 100644 --- a/docs/public/_redirects +++ b/docs/public/_redirects @@ -8,7 +8,6 @@ /:locale/fetching /:locale/v1/getting-started/fetching 302! /displaying /v1/getting-started/displaying 302! /:locale/displaying /:locale/v1/getting-started/displaying 302! -/:locale/configuration /:locale/v1/getting-started/configuration 302! /examples/basic /v1/examples/basic 302! /:locale/examples/basic /:locale/v1/examples/basic 302! /examples/tailwindcss-typography /v1/examples/tailwindcss-typography 302! From 6c903de286ee77e1d443d53973e9413fdf4b358d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ya=C3=ABl=20Guilloux?= Date: Tue, 14 Jun 2022 11:22:32 +0200 Subject: [PATCH 024/175] feat(config): allow ws config (#1249) * feat(config): allow ws config * feat(ws): allow ws configuration from `watch` key * chore(playground): prune playground content --- docs/content/4.api/3.configuration.md | 49 ++++++++++++++++++++------- playground/pages/sandbox.vue | 2 -- src/module.ts | 21 ++++++++---- 3 files changed, 52 insertions(+), 20 deletions(-) diff --git a/docs/content/4.api/3.configuration.md b/docs/content/4.api/3.configuration.md index 2908b95da..f2210f3c5 100644 --- a/docs/content/4.api/3.configuration.md +++ b/docs/content/4.api/3.configuration.md @@ -16,7 +16,6 @@ export default defineNuxtConfig({ }) ``` - ## `base` - Type: `String`{lang=ts} @@ -34,18 +33,44 @@ export default defineNuxtConfig({ ## `watch` -- Type: `Boolean`{lang=ts} -- Default: `true`{lang=ts} +- Type: `Object | false`{lang=ts} +- Default: `{ port: 4000, showUrl: true }`{lang=ts} -Disable content watcher and hot content reload. Watcher is a development feature and will not includes in the production. +Disable content watcher and hot content reload. -```ts [nuxt.config.ts] -export default defineNuxtConfig({ - content: { - watch: true - } -}) -``` +The watcher is a development feature and will not be included in production. + +::code-group + + ```ts [Enabled] + export default defineNuxtConfig({ + content: { + watch: { + ws: { + port: 4000, + showUrl: true + } + } + } + }) + ``` + + ```ts [Disabled] + export default defineNuxtConfig({ + content: { + watch: false + } + }) + ``` + +:: + +### `ws` options + +| Option | Default | Description | +| ----------------- | :--------: | :-------- | +| `port` | `4000` | Select the port used for the WebSocket server. | +| `showUrl` | `false` | Toggle URL display in dev server boot message. | ## `sources` @@ -179,7 +204,7 @@ Nuxt Content uses [Shiki](https://github.com/shikijs/shiki) to provide syntax hi ### `highlight` options -| Option | Default | Description | +| Option | Type | Description | | ----------------- | :--------: | :-------- | | `theme` | `ShikiTheme` | The [color theme](https://github.com/shikijs/shiki/blob/main/docs/themes.md) to use | | `preload` | `ShikiLang[]` | The [preloaded languages](https://github.com/shikijs/shiki/blob/main/docs/languages.md) available for highlighting. | diff --git a/playground/pages/sandbox.vue b/playground/pages/sandbox.vue index e06fd2925..5f954037a 100644 --- a/playground/pages/sandbox.vue +++ b/playground/pages/sandbox.vue @@ -22,7 +22,5 @@ - - diff --git a/src/module.ts b/src/module.ts index dfbeaa392..15531e0b7 100644 --- a/src/module.ts +++ b/src/module.ts @@ -10,6 +10,7 @@ import { useLogger, addTemplate } from '@nuxt/kit' +import type { ListenOptions } from 'listhen' // eslint-disable-next-line import/no-named-as-default import defu from 'defu' import { hash } from 'ohash' @@ -48,7 +49,9 @@ export interface ModuleOptions { * * @default true */ - watch: boolean + watch: false | { + ws: Partial + } /** * Contents can located in multiple places, in multiple directories or even in remote git repositories. * Using sources option you can tell Content module where to look for contents. @@ -180,7 +183,12 @@ export default defineNuxtModule({ }, defaults: { base: '_content', - watch: true, + watch: { + ws: { + port: 4000, + showURL: false + } + }, sources: ['content'], ignores: ['\\.', '-'], locales: [], @@ -403,11 +411,11 @@ export default defineNuxtModule({ } // Setup content dev module - if (!nuxt.options.dev || !options.watch) { - return - } + if (!nuxt.options.dev) { return } nuxt.hook('nitro:init', async (nitro) => { + if (!options.watch || !options.watch.ws) { return } + const ws = createWebSocket() // Dispose storage on nuxt close @@ -416,7 +424,8 @@ export default defineNuxtModule({ }) // Listen dev server - const { server, url } = await listen(() => 'Nuxt Content', { port: 4000, showURL: false }) + const { server, url } = await listen(() => 'Nuxt Content', options.watch.ws) + server.on('upgrade', ws.serve) // Register ws url From b52f678cde76ec7f18ec3f023161c0c3716a3b4a Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Tue, 14 Jun 2022 11:44:22 +0200 Subject: [PATCH 025/175] fix(storage): warn & ignore files with invalid characters (#1239) --- src/runtime/server/storage.ts | 24 +++++++++++++++---- test/basic.test.ts | 9 ++++++- .../basic/content/with-'invalid'-char.md | 1 + 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/basic/content/with-'invalid'-char.md diff --git a/src/runtime/server/storage.ts b/src/runtime/server/storage.ts index 76cf0e204..0d4363e44 100644 --- a/src/runtime/server/storage.ts +++ b/src/runtime/server/storage.ts @@ -17,18 +17,34 @@ export const cacheParsedStorage = prefixStorage(useStorage(), 'cache:content:par const isProduction = process.env.NODE_ENV === 'production' const contentConfig = useRuntimeConfig().content + /** * Content ignore patterns */ -export const contentIgnores = contentConfig.ignores.map((p: any) => - typeof p === 'string' ? new RegExp(`^${p}`) : p +export const contentIgnores: Array = contentConfig.ignores.map((p: any) => + typeof p === 'string' ? new RegExp(`^${p}|:${p}`) : p ) +/** + * Invalid key characters + */ +const invalidKeyCharacters = "'\"?#/".split('') + /** * Filter predicate for ignore patterns */ -const contentIgnorePredicate = (key: string) => - !key.startsWith('preview:') && !contentIgnores.some((prefix: RegExp) => key.split(':').some(k => prefix.test(k))) +const contentIgnorePredicate = (key: string) => { + if (key.startsWith('preview:') || contentIgnores.some(prefix => prefix.test(key))) { + return false + } + if (invalidKeyCharacters.some(ik => key.includes(ik))) { + // eslint-disable-next-line no-console + console.warn(`Ignoring [${key}]. File name should not contain any of the following characters: ${invalidKeyCharacters.join(', ')}`) + return false + } + + return true +} export const getContentsIds = async (event: CompatibilityEvent, prefix?: string) => { let keys = [] diff --git a/test/basic.test.ts b/test/basic.test.ts index da14a5a3a..0fd542868 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from 'url' -import { assert, test, describe, expect } from 'vitest' +import { assert, test, describe, expect, vi } from 'vitest' import { setup, $fetch } from '@nuxt/test-utils' import { hash } from 'ohash' import { testMarkdownParser } from './features/parser-markdown' @@ -15,6 +15,8 @@ import { testParserHooks } from './features/parser-hooks' import { testModuleOption } from './features/module-options' import { testContentQuery } from './features/content-query' +const spyConsoleWarn = vi.spyOn(global.console, 'warn') + describe('fixtures:basic', async () => { await setup({ rootDir: fileURLToPath(new URL('./fixtures/basic', import.meta.url)), @@ -106,6 +108,11 @@ describe('fixtures:basic', async () => { expect(html).contains('Content (v2)') }) + test('warn invalid file name', () => { + expect(spyConsoleWarn).toHaveBeenCalled() + expect(spyConsoleWarn).toHaveBeenCalledWith('Ignoring [content:with-\'invalid\'-char.md]. File name should not contain any of the following characters: \', ", ?, #, /') + }) + testContentQuery() testNavigation() diff --git a/test/fixtures/basic/content/with-'invalid'-char.md b/test/fixtures/basic/content/with-'invalid'-char.md new file mode 100644 index 000000000..7f7dca79b --- /dev/null +++ b/test/fixtures/basic/content/with-'invalid'-char.md @@ -0,0 +1 @@ +# This file's name is invalid \ No newline at end of file From 541b147681224f34932e38aedfcbccc06a654d1c Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Tue, 14 Jun 2022 12:57:35 +0200 Subject: [PATCH 026/175] docs: upgrade with latest docus (#1250) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Yaël Guilloux --- docs/components/content/BlockHero.vue | 56 ----------------- docs/components/content/Ellipsis.vue | 15 +++++ docs/components/content/HeroAnnouncement.vue | 19 ++++++ .../en/1.getting-started/1.introduction.md | 2 - .../fr/1.getting-started/1.introduction.md | 2 - .../fr/1.getting-started/5.displaying.md | 2 - .../fr/1.getting-started/7.advanced.md | 2 - docs/content-v1/fr/3.community/1.snippets.md | 2 - .../ja/1.getting-started/1.introduction.md | 2 - docs/content-v1/ja/2.examples/2.docs-theme.md | 1 - .../ru/1.getting-started/1.introduction.md | 2 - docs/content/1.index.md | 15 ++++- .../3.guide/1.writing/1.content-directory.md | 12 ++-- docs/content/3.guide/1.writing/2.markdown.md | 4 -- docs/content/3.guide/1.writing/3.mdc.md | 18 ++---- docs/content/3.guide/1.writing/4.json.md | 4 -- docs/content/3.guide/1.writing/5.yaml.md | 4 -- docs/content/3.guide/1.writing/6.csv.md | 6 +- .../3.guide/2.displaying/1.rendering.md | 2 - .../3.guide/2.displaying/2.querying.md | 5 +- .../3.guide/2.displaying/3.navigation.md | 4 +- .../3.guide/2.displaying/4.typescript.md | 7 +-- docs/content/3.guide/3.recipes/1.sitemap.md | 5 +- docs/content/3.guide/4.migration/1.from-v1.md | 4 +- .../4.api/1.components/1.content-doc.md | 2 - .../4.api/1.components/2.content-list.md | 2 - .../4.api/1.components/2.content-renderer.md | 2 - .../1.components/3.content-navigation.md | 2 - .../4.api/1.components/4.content-query.md | 2 - docs/content/4.api/1.components/5.markdown.md | 9 +-- docs/content/4.api/1.components/6.prose.md | 6 +- .../4.api/2.composables/1.query-content.md | 4 -- .../2.fetch-content-navigation.md | 4 -- docs/content/4.api/2.composables/3.unwrap.md | 4 -- docs/content/4.api/3.configuration.md | 6 +- .../5.examples/1.essentials/1.hello-world.md | 3 +- ...ne-component.md => 1.inline-components.md} | 4 +- .../5.examples/2.mdc/2.nested-components.md | 4 +- docs/content/5.examples/2.mdc/3.props.md | 4 +- docs/content/5.examples/2.mdc/4.slots.md | 4 +- docs/content/5.examples/3.queries/1.where.md | 2 - docs/content/5.examples/3.queries/2.only.md | 2 - .../content/5.examples/3.queries/3.without.md | 2 - .../5.examples/3.queries/4.skip-limit.md | 2 - .../1.fetch-content-navigation.md | 4 +- .../5.examples/4.navigation/2.use-route.md | 4 +- .../5.examples/5.templates/1.content-wind.md | 4 +- docs/content/7.changelog.md | 14 ++--- docs/yarn.lock | 60 ++++++++++--------- 49 files changed, 123 insertions(+), 228 deletions(-) delete mode 100644 docs/components/content/BlockHero.vue create mode 100644 docs/components/content/Ellipsis.vue create mode 100644 docs/components/content/HeroAnnouncement.vue rename docs/content/5.examples/2.mdc/{1.inline-component.md => 1.inline-components.md} (89%) diff --git a/docs/components/content/BlockHero.vue b/docs/components/content/BlockHero.vue deleted file mode 100644 index fe46dab31..000000000 --- a/docs/components/content/BlockHero.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - diff --git a/docs/components/content/Ellipsis.vue b/docs/components/content/Ellipsis.vue new file mode 100644 index 000000000..ffc0e1c67 --- /dev/null +++ b/docs/components/content/Ellipsis.vue @@ -0,0 +1,15 @@ + + + + diff --git a/docs/components/content/HeroAnnouncement.vue b/docs/components/content/HeroAnnouncement.vue new file mode 100644 index 000000000..8a48dad4b --- /dev/null +++ b/docs/components/content/HeroAnnouncement.vue @@ -0,0 +1,19 @@ + + + diff --git a/docs/content-v1/en/1.getting-started/1.introduction.md b/docs/content-v1/en/1.getting-started/1.introduction.md index 9728be7bd..e063f1842 100644 --- a/docs/content-v1/en/1.getting-started/1.introduction.md +++ b/docs/content-v1/en/1.getting-started/1.introduction.md @@ -3,8 +3,6 @@ title: Introduction description: 'Empower your NuxtJS application with the @nuxt/content module: write in a content/ directory and fetch your Markdown, JSON, YAML and CSV files through a MongoDB-like API, acting as a Git-based Headless CMS.' --- -Empower your NuxtJS application with the `@nuxt/content` module: write in a `content/` directory and fetch your Markdown, JSON, YAML, XML and CSV files through a MongoDB-like API, acting as a **Git-based Headless CMS**. - ## Features ::list diff --git a/docs/content-v1/fr/1.getting-started/1.introduction.md b/docs/content-v1/fr/1.getting-started/1.introduction.md index be81ac3db..9e0e251f6 100644 --- a/docs/content-v1/fr/1.getting-started/1.introduction.md +++ b/docs/content-v1/fr/1.getting-started/1.introduction.md @@ -3,8 +3,6 @@ title: Introduction description: 'Renforcez votre application NuxtJS avec le module @nuxt/content : écrivez dans un répertoire content/ et récupérez vos fichiers Markdown, JSON, YAML et CSV à travers une API de type MongoDB, agissant comme un Headless CMS basé sur Git' --- -Renforcez votre application NuxtJS avec le module `@nuxt/content` : écrivez dans un répertoire `content/` et récupérez vos fichiers Markdown, JSON, YAML et CSV à travers une API de type MongoDB, agissant comme un **Headless CMS basé sur Git**. - ## Fonctionnalités ::list diff --git a/docs/content-v1/fr/1.getting-started/5.displaying.md b/docs/content-v1/fr/1.getting-started/5.displaying.md index 744951671..f8b58c490 100644 --- a/docs/content-v1/fr/1.getting-started/5.displaying.md +++ b/docs/content-v1/fr/1.getting-started/5.displaying.md @@ -1,8 +1,6 @@ --- title: Afficher du contenu description: Vous pouvez utiliser le composant `` directement dans vos template afin d'afficher votre Markdown. -position: 5 -category: Pour commencer --- ::alert{type="info"} diff --git a/docs/content-v1/fr/1.getting-started/7.advanced.md b/docs/content-v1/fr/1.getting-started/7.advanced.md index 653de5135..e302179db 100644 --- a/docs/content-v1/fr/1.getting-started/7.advanced.md +++ b/docs/content-v1/fr/1.getting-started/7.advanced.md @@ -1,8 +1,6 @@ --- title: Utilisation avancée description: Apprenez l'utilisation avancée du module @nuxt/content -position: 7 -category: Pour commencer --- ## Utilisation Programmatique diff --git a/docs/content-v1/fr/3.community/1.snippets.md b/docs/content-v1/fr/3.community/1.snippets.md index 72b3a7896..3f651ff38 100644 --- a/docs/content-v1/fr/3.community/1.snippets.md +++ b/docs/content-v1/fr/3.community/1.snippets.md @@ -1,8 +1,6 @@ --- title: Extraits description: 'Apprenez comment implémenter @nuxt/content dans votre application avec ces extraits de code.' -subtitle: 'Découvrez ces extraits de code qui peuvent être copiés directement dans votre application.' -version: 1.1 --- ## Utilisation diff --git a/docs/content-v1/ja/1.getting-started/1.introduction.md b/docs/content-v1/ja/1.getting-started/1.introduction.md index 211798c51..296bb88f3 100644 --- a/docs/content-v1/ja/1.getting-started/1.introduction.md +++ b/docs/content-v1/ja/1.getting-started/1.introduction.md @@ -3,8 +3,6 @@ title: Content とは description: 'nuxt/contentモジュールを使ってNuxtJSアプリケーションを強化します。content/ディレクトリに書き込むことで、MongoDBのようなAPIを使ってMarkdown、JSON、YAML、CSVファイルを取得します。これはGitベースのヘッドレスCMSとして動作します。' --- -`nuxt/content`モジュールを使ってNuxtJSアプリケーションを強化します。`content/`ディレクトリに書き込むことで、MongoDBのようなAPIを使ってMarkdown、JSON、YAML、XML、CSVファイルを取得します。これは**GitベースのヘッドレスCMS**として動作します。 - ## 特徴 ::list diff --git a/docs/content-v1/ja/2.examples/2.docs-theme.md b/docs/content-v1/ja/2.examples/2.docs-theme.md index ab3c3626a..7eaa1ffd5 100644 --- a/docs/content-v1/ja/2.examples/2.docs-theme.md +++ b/docs/content-v1/ja/2.examples/2.docs-theme.md @@ -1,7 +1,6 @@ --- title: Docs description: 'テーマを使って、Nuxtと@nuxt/contentで開発を加速させましょう。' -version: 1.6 --- diff --git a/docs/content-v1/ru/1.getting-started/1.introduction.md b/docs/content-v1/ru/1.getting-started/1.introduction.md index dbbb035e4..fa7f0b968 100644 --- a/docs/content-v1/ru/1.getting-started/1.introduction.md +++ b/docs/content-v1/ru/1.getting-started/1.introduction.md @@ -3,8 +3,6 @@ title: Вступление description: 'Прокачайте ваше NuxtJS приложение с модулем @nuxt/content: пишите в директории content/ и получайте ваши Markdown, JSON, YAML и CSV файлы через MongoDB подобное API, работает как базирующаяся на Git безголовая CMS.' --- -Прокачайте ваше NuxtJS приложение с модулем `@nuxt/content`: пишите в директории `content/` и получайте ваши Markdown, JSON, YAML и CSV файлы через MongoDB подобное API, работает как **базирующаяся на Git безголовая CMS**. - ## Особенности ::list diff --git a/docs/content/1.index.md b/docs/content/1.index.md index 0fecaecc7..9fbb04807 100755 --- a/docs/content/1.index.md +++ b/docs/content/1.index.md @@ -7,9 +7,6 @@ layout: fluid ::block-hero --- -announcement: - - 'Announcing Nuxt Content v2' - - /blog/announcing-v2 cta: - Get Started - /get-started @@ -18,11 +15,23 @@ secondary: - https://github.com/nuxt/content --- +#top +::hero-announcement +--- +label: "Announcing Nuxt Content v2" +to: /blog/announcing-v2 +--- +:: + #title Content made easy for Vue Developers #description Nuxt Content reads the `content/` directory in your project, parses `.md`, `.yml`, `.csv` and `.json` files to create a powerful data layer for your application. Use Vue components in Markdown with the [MDC syntax](/guide/writing/mdc). + +#right +::video-player{src="https://www.youtube.com/watch?v=o9e12WbKrd8" poster="/video-cover.jpeg" .border-2 .u-border-gray-100 .shadow-lg .h-64} +:: :: ::card-grid diff --git a/docs/content/3.guide/1.writing/1.content-directory.md b/docs/content/3.guide/1.writing/1.content-directory.md index 2683972bc..673a8a55c 100644 --- a/docs/content/3.guide/1.writing/1.content-directory.md +++ b/docs/content/3.guide/1.writing/1.content-directory.md @@ -1,12 +1,8 @@ --- title: 'Content directory' -description: 'The Content module parses .md and .yam` files inside the content/ directory and provides paths according to the directory structure.' +description: 'The Content module parses .md and .yaml files inside the content/ directory and provides paths according to the directory structure.' --- -# Content directory - -The Content module parses `.md`, `.yml`, `.yaml`, `.csv`, `.json` and `.json5` files inside the `content/` directory and provides paths according to the directory structure. - ## Paths Nuxt Content will automatically generate paths for your content files. @@ -33,7 +29,7 @@ Nuxt Content uses these numbers to order content lists. content/ 1.frameworks/ 1.vue.md - 2.nuxt.md + 2.nuxt.md 2.examples/ 1.vercel.md 2.netlify.md @@ -53,7 +49,7 @@ Content module will ignore files and folders starting with a `.`. content/ 1.frameworks/ .1.vue.md // Ignored content - 2.nuxt.md + 2.nuxt.md .2.translation/ // Ignored directory 1.fa/ 1.messages.md // Ignored content because of its grand parent @@ -71,7 +67,7 @@ Partial contents are accessible in search and content lists but are not displaye content/ 1.frameworks/ _1.vue.md // Partial content - 2.nuxt.md + 2.nuxt.md _2.translation/ // Partial directory 1.fa/ 1.messages.md // Partial content because of its grand parent diff --git a/docs/content/3.guide/1.writing/2.markdown.md b/docs/content/3.guide/1.writing/2.markdown.md index 9127b1f1a..7228639fa 100755 --- a/docs/content/3.guide/1.writing/2.markdown.md +++ b/docs/content/3.guide/1.writing/2.markdown.md @@ -3,10 +3,6 @@ title: Markdown description: 'Nuxt Content uses the Markdown syntax and conventions to provide a rich-text editing experience.' --- -# Markdown - -Nuxt Content uses the Markdown syntax and conventions to provide a rich-text editing experience. - - Use Markdown to format your content with Prose components. - Edit the meta-data of your pages in the front-matter block of your files. diff --git a/docs/content/3.guide/1.writing/3.mdc.md b/docs/content/3.guide/1.writing/3.mdc.md index 28cc72b4e..300a9033f 100755 --- a/docs/content/3.guide/1.writing/3.mdc.md +++ b/docs/content/3.guide/1.writing/3.mdc.md @@ -3,12 +3,6 @@ title: 'MDC Syntax' description: MDC stands for MarkDown Components. This syntax supercharges regular Markdown to write documents interacting deeply with any Vue component from your components/content/ directory or provided by a module. --- -# MDC - -MDC stands for _**M**ark**D**own **C**omponents_. - -This syntax supercharges regular Markdown to write documents interacting deeply with any Vue component from your `components/content/` directory or provided by a module. - ::alert{type=info} Install the [MDC VS Code extension](https://marketplace.visualstudio.com/items?itemName=Nuxt.mdc) to get proper syntax highlighting for your MDC components. :: @@ -293,15 +287,15 @@ Other than `span`s the attribute syntax will work on images, links, `code`, **bo ```md [Code] Attributes works on: - - ![](/icon.png){.inline.w-5.h-5.bg-primary-500} image, - - [link](#attributes){.bg-primary-400}, `code`{.text-red-500}, + - ![](/icon.png){.inline.w-5.h-5.bg-primary-500} image, + - [link](#attributes){.bg-primary-400}, `code`{.text-red-500}, - _italic_{.bg-primary-500} and **bold**{.bg-primary-500} texts. ``` - ::code-block{label="Preview" preview} - Attributes works on: - - ![](/icon.png){.inline.w-5.h-5.bg-primary-500} image, - - [link](#attributes){.bg-primary-400}, `code`{.text-red-500}, + ::code-block{label="Preview" preview} + Attributes works on: + - ![](/icon.png){.inline.w-5.h-5.bg-primary-500} image, + - [link](#attributes){.bg-primary-400}, `code`{.text-red-500}, - _italic_{.bg-primary-500} and **bold**{.bg-primary-500} texts. :: :: diff --git a/docs/content/3.guide/1.writing/4.json.md b/docs/content/3.guide/1.writing/4.json.md index 300704421..09fd31691 100644 --- a/docs/content/3.guide/1.writing/4.json.md +++ b/docs/content/3.guide/1.writing/4.json.md @@ -3,10 +3,6 @@ title: JSON description: 'Nuxt Content can query JSON formatted content.' --- -# JSON - -Nuxt Content can query JSON formatted content. - ::alert{type=info} If the document root is an object `{}`, the output contains all the document properties at its root. If the document root is an array `[]`, the output contains all the document properties in a `body` property. :: diff --git a/docs/content/3.guide/1.writing/5.yaml.md b/docs/content/3.guide/1.writing/5.yaml.md index eaf412334..f0c0d6a8b 100644 --- a/docs/content/3.guide/1.writing/5.yaml.md +++ b/docs/content/3.guide/1.writing/5.yaml.md @@ -3,10 +3,6 @@ title: YAML / YML description: 'Nuxt Content can query YAML / YML formatted content.' --- -# YAML / YML - -Nuxt Content can query YAML / YML formatted content. - ::alert{type=info} If the document root is based on key-value pairs, the output contains all the document properties at its root. If the document root is a list `-`, the output contains all the document properties in a `body` property. :: diff --git a/docs/content/3.guide/1.writing/6.csv.md b/docs/content/3.guide/1.writing/6.csv.md index 138259ab7..2bfd0f4ab 100644 --- a/docs/content/3.guide/1.writing/6.csv.md +++ b/docs/content/3.guide/1.writing/6.csv.md @@ -3,9 +3,9 @@ title: CSV description: 'Nuxt Content can query CSV formatted content.' --- -# CSV - -Nuxt Content can query CSV formatted content. The `body` of the output is an array containing every row as objects. +::alert{type=info} +The `body` of the output is an array containing every row as objects. +:: ## Example diff --git a/docs/content/3.guide/2.displaying/1.rendering.md b/docs/content/3.guide/2.displaying/1.rendering.md index 9fa40040d..56509c814 100644 --- a/docs/content/3.guide/2.displaying/1.rendering.md +++ b/docs/content/3.guide/2.displaying/1.rendering.md @@ -3,8 +3,6 @@ title: 'Rendering' description: 'The and components render the body of a Markdown document in a rich-text format.' --- -# Rendering Content - Nuxt Content provides 2 components to render Markdown content in a rich-text format, applying HTML tags ([Prose](/guide/writing/markdown)) and displaying Vue components ([MDC](/guide/writing/mdc)). - The `` component accepts an optional `path` prop to fetch the `content/` directory. diff --git a/docs/content/3.guide/2.displaying/2.querying.md b/docs/content/3.guide/2.displaying/2.querying.md index 79dc5249b..673c5f0af 100644 --- a/docs/content/3.guide/2.displaying/2.querying.md +++ b/docs/content/3.guide/2.displaying/2.querying.md @@ -1,11 +1,8 @@ --- title: 'Querying' -description: 'Any component or page of your application can fetch content from the content/ directory. The queryContent() function is auto-imported by Nuxt Content to build queries with a MongoDB-like syntax.' +description: 'Any component or page of your application can fetch content from the content/ directory.' --- -# Querying Content - -Any component or page of your application can fetch content from the `content/` directory. The `queryContent()`{lang="ts"} function is auto-imported by Nuxt Content to build queries with a MongoDB-like syntax. ## Usage diff --git a/docs/content/3.guide/2.displaying/3.navigation.md b/docs/content/3.guide/2.displaying/3.navigation.md index 8d0986287..5d39ff577 100644 --- a/docs/content/3.guide/2.displaying/3.navigation.md +++ b/docs/content/3.guide/2.displaying/3.navigation.md @@ -3,9 +3,7 @@ title: Navigation description: 'The fetchContentNavigation utility returns a tree of items based on the content/ directory structure and files.' --- -# Navigation - -The `fetchContentNavigation()`{lang="ts"} utility returns a tree of items based on the `content/` directory structure and files. Use the `title`{lang="ts"} and `path`{lang="ts"} properties of each item to create your application's navigation. +Use the `title`{lang="ts"} and `path`{lang="ts"} properties of each item to create your application's navigation. ## Nested navigation diff --git a/docs/content/3.guide/2.displaying/4.typescript.md b/docs/content/3.guide/2.displaying/4.typescript.md index a6bdecbc0..e64167a18 100644 --- a/docs/content/3.guide/2.displaying/4.typescript.md +++ b/docs/content/3.guide/2.displaying/4.typescript.md @@ -1,11 +1,8 @@ --- title: TypeScript +description: 'Nuxt Content v2 is built with TypeScript in mind.' --- -# TypeScript usage - -Nuxt Content v2 is built with TypeScript in mind. - The module exposes typings properly from configuration to query builder. ## Usage @@ -52,7 +49,7 @@ interface Article extends MarkdownParsedContent { author: string } const { data } = await useAsyncData( - 'first-article', + 'first-article', () => queryContent
('articles').findOne() ) // data.value.author will be typed as well as markdown specific entries diff --git a/docs/content/3.guide/3.recipes/1.sitemap.md b/docs/content/3.guide/3.recipes/1.sitemap.md index c90dee553..b0da08d87 100644 --- a/docs/content/3.guide/3.recipes/1.sitemap.md +++ b/docs/content/3.guide/3.recipes/1.sitemap.md @@ -1,11 +1,8 @@ --- title: Sitemap +description: 'A sitemap file is useful for helping Google to better index your website, ensuring that the content you write can be visible on search results.' --- -# Sitemap Generation - -A sitemap file is useful for helping Google to better index your website, ensuring that the content you write can be visible on search results. - This can be created utilising the `sitemap` library, so you'll need to install that which can be done like so: ```bash diff --git a/docs/content/3.guide/4.migration/1.from-v1.md b/docs/content/3.guide/4.migration/1.from-v1.md index e12f641c2..3d559ffcc 100644 --- a/docs/content/3.guide/4.migration/1.from-v1.md +++ b/docs/content/3.guide/4.migration/1.from-v1.md @@ -3,8 +3,6 @@ title: 'From Content v1' description: 'Learn how to upgrade from Nuxt Content V1 to Nuxt Content V2 for Nuxt 3.' --- -# Migration from Content V1 - - Make sure your dev server (`nuxt dev`) isn't running and remove any package lock files (`package-lock.json` and `yarn.lock`) - Upgrade to Nuxt 3 (check out the [Nuxt 3 migration guide](https://v3.nuxtjs.org/getting-started/migration)) @@ -101,7 +99,7 @@ The `` component will fetch the document for the current route path | Feature / Version | Convent v1 | Content v2 | | ----------------- | :--------: | :--------: | -| Nuxt Version | `nuxt@2.x` | `nuxt@3.x` | +| Nuxt Version | `nuxt@2.x` | `nuxt@3.x` | | Supported files | `.md`, `.yaml`, `.yml`, `.csv`, `.json`, `.json5`, `.xml` | `.md`, `.yaml`, `.yml`, `.csv`, `.json`, `.json5` | | Full text search | ✅ | ❌ | | Reactive Composables | ❌ | ✅ | diff --git a/docs/content/4.api/1.components/1.content-doc.md b/docs/content/4.api/1.components/1.content-doc.md index a31ca5b5d..5a37f9ec8 100644 --- a/docs/content/4.api/1.components/1.content-doc.md +++ b/docs/content/4.api/1.components/1.content-doc.md @@ -3,8 +3,6 @@ title: '' description: 'The fastest way to query and display your content.' --- -# `` - The ``{lang=html} component fetches and renders a single document. An explicit path can be passed to the component with the `path`{lang=ts} prop. If not provided, the `$route.path`{lang=ts} will be used. diff --git a/docs/content/4.api/1.components/2.content-list.md b/docs/content/4.api/1.components/2.content-list.md index 7fce565f0..a2dc8f729 100644 --- a/docs/content/4.api/1.components/2.content-list.md +++ b/docs/content/4.api/1.components/2.content-list.md @@ -3,8 +3,6 @@ title: '' description: 'The fastest way to query and display your content.' --- -# `` - The ``{lang=html} component fetches a list of documents and allows you to render them by using `slots`. The fetching path defaults to the content root (`/`). diff --git a/docs/content/4.api/1.components/2.content-renderer.md b/docs/content/4.api/1.components/2.content-renderer.md index fbad81d66..2d5a7ca25 100644 --- a/docs/content/4.api/1.components/2.content-renderer.md +++ b/docs/content/4.api/1.components/2.content-renderer.md @@ -3,8 +3,6 @@ title: '' description: 'Takes your component from an AST to a wonderful template.' --- -# `` - The ``{lang=html} component renders a document coming from a query. It will use ``{lang=html} component to render `.md` file types. diff --git a/docs/content/4.api/1.components/3.content-navigation.md b/docs/content/4.api/1.components/3.content-navigation.md index d7a5eb255..077207f8a 100644 --- a/docs/content/4.api/1.components/3.content-navigation.md +++ b/docs/content/4.api/1.components/3.content-navigation.md @@ -3,8 +3,6 @@ title: '' description: 'Building complex navigation from your content has never been easier.' --- -# `` - The ``{lang=html} is a renderless component shortening the access to navigation. ## Props diff --git a/docs/content/4.api/1.components/4.content-query.md b/docs/content/4.api/1.components/4.content-query.md index f8c53aff1..92dcc2faa 100644 --- a/docs/content/4.api/1.components/4.content-query.md +++ b/docs/content/4.api/1.components/4.content-query.md @@ -3,8 +3,6 @@ title: '' description: 'The fastest way to query and display your content.' --- -# `` - The ``{lang=html} component fetches a document and gives access to it via a scoped slot. ## Props diff --git a/docs/content/4.api/1.components/5.markdown.md b/docs/content/4.api/1.components/5.markdown.md index 363a1f476..ea1f3464a 100644 --- a/docs/content/4.api/1.components/5.markdown.md +++ b/docs/content/4.api/1.components/5.markdown.md @@ -3,15 +3,13 @@ title: '' description: 'The fastest way to inject Markdown into your Vue components.' --- -# `` - The ``{lang=html} component makes it easier to use Markdown syntax in your Vue components. It is useful when creating components that you want to use in your Markdown content. ## Props -- `use`{lang=ts}: The slot to bind on, you must provide a `use`{lang=ts} via `$slots.{your_slot}`{lang=ts} in `