From ed9d83b50f441434ccc6a038cd90b6c6e7c6c027 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Wed, 9 Nov 2022 17:47:18 +0100 Subject: [PATCH 01/19] fixed error handling bug --- packages/@contentlayer/cli/package.json | 2 +- packages/@contentlayer/client/package.json | 2 +- packages/@contentlayer/core/package.json | 2 +- .../@contentlayer/core/src/schema/index.ts | 2 + .../package.json | 2 +- .../source-contentful/package.json | 2 +- .../@contentlayer/source-files/package.json | 2 +- .../source-files/src/__test__/mapping.spec.ts | 40 ++++++++---- .../source-files/src/errors/index.ts | 21 ++++++- .../src/fetchData/DocumentContext.ts | 2 + .../src/fetchData/mapping/field-date.ts | 22 +++---- .../src/fetchData/mapping/field-markdown.ts | 8 +-- .../src/fetchData/mapping/index.ts | 63 ++++++++----------- .../src/fetchData/mapping/parseFieldData.ts | 17 ++--- packages/@contentlayer/utils/package.json | 2 +- .../package.json | 2 +- packages/contentlayer/package.json | 2 +- packages/next-contentlayer/package.json | 2 +- 18 files changed, 103 insertions(+), 92 deletions(-) diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index 2cd6131e..27555b79 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/cli", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/client/package.json b/packages/@contentlayer/client/package.json index af6f23a8..14d77463 100644 --- a/packages/@contentlayer/client/package.json +++ b/packages/@contentlayer/client/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/client", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index cd1aa8e5..f03d015c 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/core", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/src/schema/index.ts b/packages/@contentlayer/core/src/schema/index.ts index 8ce85575..828d4770 100644 --- a/packages/@contentlayer/core/src/schema/index.ts +++ b/packages/@contentlayer/core/src/schema/index.ts @@ -12,6 +12,8 @@ export type TypeDefExtensions = { export type DocumentTypeDefMap = Record export type NestedTypeDefMap = Record +export type DocumentTypeTag = (DocumentTypeDef | NestedTypeDef | NestedUnnamedTypeDef)['_tag'] + export type SchemaDef = { documentTypeDefMap: DocumentTypeDefMap nestedTypeDefMap: NestedTypeDefMap diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index 552592de..3a14331c 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/experimental-source-files-stackbit", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index 64835466..af92d90a 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-contentful", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index 2adb91e7..4ac8d6ae 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-files", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-files/src/__test__/mapping.spec.ts b/packages/@contentlayer/source-files/src/__test__/mapping.spec.ts index f32dba89..49ebb8c0 100644 --- a/packages/@contentlayer/source-files/src/__test__/mapping.spec.ts +++ b/packages/@contentlayer/source-files/src/__test__/mapping.spec.ts @@ -6,7 +6,6 @@ import type { HasClock, HasConsole } from '@contentlayer/utils/effect' import { OT, pipe, provideConsole, T } from '@contentlayer/utils/effect' import { describe, expect, test } from 'vitest' -import type { HasDocumentContext } from '../fetchData/DocumentContext.js' import { provideDocumentContext } from '../fetchData/DocumentContext.js' import { getFlattenedPath, testOnly_getDataForFieldDef as getDataForFieldDef } from '../fetchData/mapping/index.js' @@ -35,7 +34,7 @@ describe('getDataForFieldDef', () => { const transformedData = await pipe( getDataForFieldDef({ rawFieldData, - documentTypeName: __unusedValue, + isRootDocument: true, coreSchemaDef: { hash: '', documentTypeDefMap: {}, nestedTypeDefMap: {} }, contentDirPath: __unusedValue, fieldDef: { @@ -56,6 +55,7 @@ describe('getDataForFieldDef', () => { ...options, }, }), + provideTestDocumentContext({ relativeFilePath: __unusedValue, documentTypeDefName: __unusedValue }), OT.withSpan('testValue'), runPromise, ) @@ -65,6 +65,8 @@ describe('getDataForFieldDef', () => { test('only year', () => testValue({ type: 'date', rawFieldData: '2022', expectedValue: '2022-01-01T00:00:00.000Z' })) + test('null', () => testValue({ type: 'date', rawFieldData: null, expectedValue: null })) + test('date with slash separators', () => testValue({ type: 'date', rawFieldData: '2022/10/12', expectedValue: '2022-10-12T00:00:00.000Z' })) @@ -107,11 +109,12 @@ test('getDataForFieldDef error', async () => { rawFieldData: any options?: Partial }) => { + const documentFilePath = unknownToRelativePosixFilePath('some/path/doc.md') const transformedData = await runPromise( pipe( getDataForFieldDef({ rawFieldData, - documentTypeName: 'Post', + isRootDocument: true, coreSchemaDef: { hash: '', documentTypeDefMap: { Post: { name: 'Post', _tag: 'DocumentTypeDef', ...__unusedValue } }, @@ -126,7 +129,7 @@ test('getDataForFieldDef error', async () => { default: undefined, description: undefined, }, - documentFilePath: unknownToRelativePosixFilePath('some/path/doc.md'), + documentFilePath, options: { fieldOptions: core.defaultFieldOptions, markdown: undefined, @@ -136,6 +139,7 @@ test('getDataForFieldDef error', async () => { ...options, }, }), + provideTestDocumentContext({ relativeFilePath: documentFilePath, documentTypeDefName: 'Post' }), T.either, ), ) @@ -186,12 +190,22 @@ test('getDataForFieldDef error', async () => { await testValue({ type: 'date', rawFieldData: '2022-0' }) }) -const runPromise = (eff: T.Effect) => - pipe(eff, provideTracing('contentlayer-test'), provideConsole, provideTestDocumentContext, provideCwd, T.runPromise) - -const provideTestDocumentContext = provideDocumentContext({ - rawContent: __unusedValue, - relativeFilePath: __unusedValue, - rawDocumentData: __unusedValue, - documentTypeDef: __unusedValue, -}) +const runPromise = (eff: T.Effect) => + pipe(eff, provideTracing('contentlayer-test'), provideConsole, provideCwd, T.runPromise) + +const provideTestDocumentContext = ({ + documentTypeDefName, + relativeFilePath, +}: { + documentTypeDefName: string + relativeFilePath: string +}) => + provideDocumentContext({ + rawContent: __unusedValue, + relativeFilePath: unknownToRelativePosixFilePath(relativeFilePath), + rawDocumentData: __unusedValue, + documentTypeDef: { + _tag: 'DocumentTypeDef', + name: documentTypeDefName, + } as any, + }) diff --git a/packages/@contentlayer/source-files/src/errors/index.ts b/packages/@contentlayer/source-files/src/errors/index.ts index 82e3d4b1..f6be5b27 100644 --- a/packages/@contentlayer/source-files/src/errors/index.ts +++ b/packages/@contentlayer/source-files/src/errors/index.ts @@ -1,8 +1,9 @@ import type * as core from '@contentlayer/core' import type { AbsolutePosixFilePath, RelativePosixFilePath } from '@contentlayer/utils' import { errorToString, pattern } from '@contentlayer/utils' -import { Tagged } from '@contentlayer/utils/effect' +import { pipe, T, Tagged } from '@contentlayer/utils/effect' +import { getDocumentContext } from '../fetchData/DocumentContext.js' import type { DocumentContentType } from '../index.js' import { handleFetchDataErrors } from './aggregate.js' @@ -353,6 +354,24 @@ ${errorCount} documents contain field data which didn't match the structure defi return `"${this.documentFilePath}" of type "${this.documentTypeDef.name}" has the following incompatible fields: ${incompatibleFields} ` } + + static fail = ({ + incompatibleFieldData, + }: { + incompatibleFieldData: readonly (readonly [fieldKey: string, fieldValue: any])[] + }) => + pipe( + getDocumentContext, + T.chain((documentContext) => + T.fail( + new FetchDataError.IncompatibleFieldDataError({ + documentFilePath: documentContext.relativeFilePath, + documentTypeDef: documentContext.documentTypeDef, + incompatibleFieldData, + }), + ), + ), + ) } export class SingletonDocumentNotFoundError diff --git a/packages/@contentlayer/source-files/src/fetchData/DocumentContext.ts b/packages/@contentlayer/source-files/src/fetchData/DocumentContext.ts index 8c8220b6..fa013cb6 100644 --- a/packages/@contentlayer/source-files/src/fetchData/DocumentContext.ts +++ b/packages/@contentlayer/source-files/src/fetchData/DocumentContext.ts @@ -47,4 +47,6 @@ export const makeAndProvideDocumentContext = ({ export const getFromDocumentContext = (key: K) => T.accessService(DocumentContext)((_) => _[key]) +export const getDocumentContext = T.accessService(DocumentContext)((_) => _) + export type HasDocumentContext = Has diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/field-date.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/field-date.ts index 6cc3eb3a..c37db3ca 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/field-date.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/field-date.ts @@ -1,7 +1,6 @@ import type * as core from '@contentlayer/core' -import type { RelativePosixFilePath } from '@contentlayer/utils' import { Temporal } from '@contentlayer/utils' -import { T } from '@contentlayer/utils/effect' +import { pipe, T } from '@contentlayer/utils/effect' import { FetchDataError } from '../../errors/index.js' @@ -9,17 +8,13 @@ export const makeDateField = ({ dateString, fieldName, options, - documentFilePath, - documentTypeDef, }: { dateString: string fieldName: string options: core.PluginOptions - documentFilePath: RelativePosixFilePath - documentTypeDef: core.DocumentTypeDef }) => - T.tryCatch( - () => { + pipe( + T.try(() => { const dateHasExplitcitTimezone = () => { try { Temporal.TimeZone.from(dateString) @@ -39,11 +34,8 @@ export const makeDateField = ({ } else { return new Date(dateString).toISOString() } - }, - () => - new FetchDataError.IncompatibleFieldDataError({ - documentFilePath, - documentTypeDef, - incompatibleFieldData: [[fieldName, dateString]], - }), + }), + T.catchAll(() => + FetchDataError.IncompatibleFieldDataError.fail({ incompatibleFieldData: [[fieldName, dateString]] }), + ), ) diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/field-markdown.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/field-markdown.ts index b4e51de6..0d13bb73 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/field-markdown.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/field-markdown.ts @@ -8,19 +8,19 @@ import { getFromDocumentContext } from '../DocumentContext.js' export const makeMarkdownField = ({ mdString, - fieldDef, options, + isDocumentBodyField, }: { mdString: string - fieldDef: core.FieldDef options: core.PluginOptions + isDocumentBodyField: boolean }): T.Effect => T.gen(function* ($) { - const isBodyField = fieldDef.name === options.fieldOptions.bodyFieldName + // const isDocumentBodyField = fieldDef.name === options.fieldOptions.bodyFieldName const rawDocumentData = yield* $(getFromDocumentContext('rawDocumentData')) // NOTE for the body field, we're passing the entire document file contents to MDX (e.g. in case some remark/rehype plugins need access to the frontmatter) // TODO we should come up with a better way to do this - if (isBodyField) { + if (isDocumentBodyField) { const rawContent = yield* $(getFromDocumentContext('rawContent')) if (rawContent.kind !== 'markdown' && rawContent.kind !== 'mdx') return utils.assertNever(rawContent) diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts index ba78647c..620e19ee 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts @@ -54,7 +54,7 @@ export const makeDocument = ({ getDataForFieldDef({ fieldDef, rawFieldData: rawData[fieldDef.name], - documentTypeName: documentTypeDef.name, + isRootDocument: true, coreSchemaDef, options, documentFilePath: relativeFilePath, @@ -107,7 +107,7 @@ export const getFlattenedPath = (relativeFilePath: string): string => const makeNestedDocument = ({ rawObjectData, fieldDefs, - typeName, + nestedTypeName, coreSchemaDef, options, documentFilePath, @@ -116,7 +116,7 @@ const makeNestedDocument = ({ rawObjectData: Record /** Passing `FieldDef[]` here instead of `ObjectDef` in order to also support `inline_nested` */ fieldDefs: core.FieldDef[] - typeName: string + nestedTypeName: string coreSchemaDef: core.SchemaDef options: core.PluginOptions documentFilePath: RelativePosixFilePath @@ -133,7 +133,7 @@ const makeNestedDocument = ({ getDataForFieldDef({ fieldDef, rawFieldData: rawObjectData[fieldDef.name], - documentTypeName: typeName, + isRootDocument: false, coreSchemaDef, options, documentFilePath, @@ -144,7 +144,7 @@ const makeNestedDocument = ({ ) const typeNameField = options.fieldOptions.typeFieldName - const obj: core.NestedDocument = { ...objValues, [typeNameField]: typeName, _raw: {} } + const obj: core.NestedDocument = { ...objValues, [typeNameField]: nestedTypeName, _raw: {} } return obj }) @@ -152,7 +152,7 @@ const makeNestedDocument = ({ const getDataForFieldDef = ({ fieldDef, rawFieldData, - documentTypeName, + isRootDocument, coreSchemaDef, options, documentFilePath, @@ -160,34 +160,32 @@ const getDataForFieldDef = ({ }: { fieldDef: core.FieldDef rawFieldData: any - documentTypeName: string + isRootDocument: boolean coreSchemaDef: core.SchemaDef options: core.PluginOptions documentFilePath: RelativePosixFilePath contentDirPath: AbsolutePosixFilePath }): T.Effect => T.gen(function* ($) { - if (rawFieldData === undefined && fieldDef.default) { + if ((rawFieldData === undefined || rawFieldData === null) && fieldDef.default) { rawFieldData = fieldDef.default } - if (rawFieldData === undefined) { + if (rawFieldData === undefined || rawFieldData === null) { + const documentTypeDef = yield* $(getFromDocumentContext('documentTypeDef')) console.assert( !fieldDef.isRequired || fieldDef.isSystemField, - `Inconsistent data found: ${JSON.stringify({ fieldDef, documentFilePath, typeName: documentTypeName })}`, + `Inconsistent data found: ${JSON.stringify({ fieldDef, documentFilePath, typeName: documentTypeDef.name })}`, ) - return undefined + return rawFieldData } - const documentTypeDef = coreSchemaDef.documentTypeDefMap[documentTypeName]! const parseFieldDataEff = (fieldType: TFieldType) => parseFieldData({ rawData: rawFieldData, fieldType, - documentFilePath, fieldName: fieldDef.name, - documentTypeDef, }) switch (fieldDef.type) { @@ -198,7 +196,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -212,7 +210,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: fieldDef.typeDef.fieldDefs, - typeName: '__UNNAMED__', + nestedTypeName: '__UNNAMED__', coreSchemaDef, options, documentFilePath, @@ -224,6 +222,7 @@ const getDataForFieldDef = ({ const nestedTypeName = rawObjectData[fieldDef.typeField] if (!fieldDef.nestedTypeNames.includes(nestedTypeName)) { + const documentTypeDef = yield* $(getFromDocumentContext('documentTypeDef')) return yield* $( T.fail( new FetchDataError.NoSuchNestedDocumentTypeError({ @@ -231,7 +230,7 @@ const getDataForFieldDef = ({ documentFilePath, fieldName: fieldDef.name, validNestedTypeNames: fieldDef.nestedTypeNames, - documentTypeDef: coreSchemaDef.documentTypeDefMap[documentTypeName]!, + documentTypeDef, }), ), ) @@ -243,7 +242,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -264,7 +263,6 @@ const getDataForFieldDef = ({ fieldDef, coreSchemaDef, options, - documentTypeName, documentFilePath, contentDirPath, }), @@ -272,12 +270,11 @@ const getDataForFieldDef = ({ ) case 'date': const dateString = yield* $(parseFieldDataEff('date')) - return yield* $( - makeDateField({ dateString, documentFilePath, fieldName: fieldDef.name, documentTypeDef, options }), - ) + return yield* $(makeDateField({ dateString, fieldName: fieldDef.name, options })) case 'markdown': { const mdString = yield* $(parseFieldDataEff('markdown')) - return yield* $(makeMarkdownField({ mdString, fieldDef, options })) + const isDocumentBodyField = isRootDocument && fieldDef.name === options.fieldOptions.bodyFieldName + return yield* $(makeMarkdownField({ mdString, options, isDocumentBodyField })) } case 'mdx': { const mdxString = yield* $(parseFieldDataEff('mdx')) @@ -304,7 +301,6 @@ const getDataForListItem = ({ fieldDef, coreSchemaDef, options, - documentTypeName, documentFilePath, contentDirPath, }: { @@ -312,19 +308,15 @@ const getDataForListItem = ({ fieldDef: core.ListFieldDef | core.ListPolymorphicFieldDef coreSchemaDef: core.SchemaDef options: core.PluginOptions - documentTypeName: string documentFilePath: RelativePosixFilePath contentDirPath: AbsolutePosixFilePath }): T.Effect => T.gen(function* ($) { - const documentTypeDef = coreSchemaDef.documentTypeDefMap[documentTypeName]! const parseFieldDataEff = (fieldType: TFieldType) => parseFieldData({ rawData: rawItemData, fieldType, - documentFilePath, fieldName: fieldDef.name, - documentTypeDef, }) if (fieldDef.type === 'list_polymorphic') { @@ -336,6 +328,7 @@ const getDataForListItem = ({ .filter((_): _ is core.ListFieldDefItem.ItemNested => _.type === 'nested') .map((_) => _.nestedTypeName) + const documentTypeDef = yield* $(getFromDocumentContext('documentTypeDef')) return yield* $( T.fail( new FetchDataError.NoSuchNestedDocumentTypeError({ @@ -343,7 +336,7 @@ const getDataForListItem = ({ documentFilePath, fieldName: fieldDef.name, validNestedTypeNames, - documentTypeDef: coreSchemaDef.documentTypeDefMap[documentTypeName]!, + documentTypeDef, }), ), ) @@ -352,7 +345,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData: rawItemData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -369,7 +362,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -383,7 +376,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData, fieldDefs: fieldDef.of.typeDef.fieldDefs, - typeName: '__UNNAMED__', + nestedTypeName: '__UNNAMED__', coreSchemaDef, options, documentFilePath, @@ -395,12 +388,10 @@ const getDataForListItem = ({ return makeMdxField({ mdxString: rawItemData, contentDirPath, fieldDef, options }) case 'date': const dateString = yield* $(parseFieldDataEff('date')) - return yield* $( - makeDateField({ dateString, documentFilePath, fieldName: fieldDef.name, documentTypeDef, options }), - ) + return yield* $(makeDateField({ dateString, fieldName: fieldDef.name, options })) case 'markdown': { const mdString = yield* $(parseFieldDataEff('markdown')) - return yield* $(makeMarkdownField({ mdString, fieldDef, options })) + return yield* $(makeMarkdownField({ mdString, options, isDocumentBodyField: false })) } case 'mdx': { const mdxString = yield* $(parseFieldDataEff('mdx')) diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts index cd9fadad..b9ff56b5 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts @@ -1,9 +1,9 @@ import type * as core from '@contentlayer/core' -import type { RelativePosixFilePath } from '@contentlayer/utils' import { T } from '@contentlayer/utils/effect' import * as zod from 'zod' import { FetchDataError } from '../../errors/index.js' +import type { HasDocumentContext } from '../DocumentContext.js' const ParsedImageData = zod.object({ src: zod.string(), @@ -41,27 +41,18 @@ export type ParsedFieldData = zod.infer({ rawData, fieldType, - documentTypeDef, - documentFilePath, fieldName, }: { rawData: unknown fieldType: TFieldType - documentTypeDef: core.DocumentTypeDef - documentFilePath: RelativePosixFilePath + /** Only needed for error handling */ fieldName: string -}): T.Effect> => { +}): T.Effect> => { const result = codecMap[fieldType].safeParse(rawData) if (result.success) { return T.succeed(result.data) } else { - return T.fail( - new FetchDataError.IncompatibleFieldDataError({ - documentTypeDef, - documentFilePath, - incompatibleFieldData: [[fieldName, rawData]], - }), - ) + return FetchDataError.IncompatibleFieldDataError.fail({ incompatibleFieldData: [[fieldName, rawData]] }) } } diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index 90a71766..ed3673a6 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/utils", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "exports": { "./package.json": { diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 3948eca1..83a72aa1 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer-stackbit-yaml-generator", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index 9784af23..257172d1 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.9", + "version": "0.2.10-dev.2", "bin": "./bin/cli.cjs", "type": "module", "engines": { diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index 47e087fd..cc29ed66 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "next-contentlayer", - "version": "0.2.9", + "version": "0.2.10-dev.2", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false, From c21286f792101666bffb703cfad14a598cbee1b5 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Fri, 11 Nov 2022 16:50:04 +0100 Subject: [PATCH 02/19] improved validation --- packages/@contentlayer/cli/package.json | 2 +- packages/@contentlayer/client/package.json | 2 +- packages/@contentlayer/core/package.json | 2 +- .../package.json | 2 +- .../source-contentful/package.json | 2 +- .../@contentlayer/source-files/package.json | 2 +- .../src/fetchData/mapping/index.ts | 15 +- .../src/fetchData/validateDocumentData.ts | 175 ++++++++++++++---- packages/@contentlayer/utils/package.json | 2 +- .../package.json | 2 +- packages/contentlayer/package.json | 2 +- packages/next-contentlayer/package.json | 2 +- 12 files changed, 158 insertions(+), 52 deletions(-) diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index 27555b79..4772f1ee 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/cli", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/client/package.json b/packages/@contentlayer/client/package.json index 14d77463..82fc6759 100644 --- a/packages/@contentlayer/client/package.json +++ b/packages/@contentlayer/client/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/client", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index f03d015c..38fdbcb1 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/core", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index 3a14331c..e39c629b 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/experimental-source-files-stackbit", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index af92d90a..1b81ed6c 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-contentful", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index 4ac8d6ae..d43baf91 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-files", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts index 620e19ee..4e514bc1 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/index.ts @@ -167,15 +167,24 @@ const getDataForFieldDef = ({ contentDirPath: AbsolutePosixFilePath }): T.Effect => T.gen(function* ($) { - if ((rawFieldData === undefined || rawFieldData === null) && fieldDef.default) { + if ((rawFieldData === undefined || rawFieldData === null) && fieldDef.default !== undefined) { rawFieldData = fieldDef.default } if (rawFieldData === undefined || rawFieldData === null) { const documentTypeDef = yield* $(getFromDocumentContext('documentTypeDef')) console.assert( - !fieldDef.isRequired || fieldDef.isSystemField, - `Inconsistent data found: ${JSON.stringify({ fieldDef, documentFilePath, typeName: documentTypeDef.name })}`, + fieldDef.isRequired === false || fieldDef.isSystemField === true, + `Inconsistent data found: ${rawFieldData} ${JSON.stringify( + { + fieldDef, + documentFilePath, + rootDocTypeName: documentTypeDef.name, + isRootDocument, + }, + null, + 2, + )}`, ) return rawFieldData diff --git a/packages/@contentlayer/source-files/src/fetchData/validateDocumentData.ts b/packages/@contentlayer/source-files/src/fetchData/validateDocumentData.ts index a8ce4b91..c75eba40 100644 --- a/packages/@contentlayer/source-files/src/fetchData/validateDocumentData.ts +++ b/packages/@contentlayer/source-files/src/fetchData/validateDocumentData.ts @@ -73,51 +73,32 @@ export const validateDocumentData = ({ yield* $(DocumentTypeMapState.update((_) => _.add(documentDefName, relativeFilePath))) - const existingDataFieldKeys = Object.keys(rawContent.fields) - - // make sure all required fields are present - const requiredFieldsWithoutDefaultValue = documentTypeDef.fieldDefs.filter( - (_) => _.isRequired && _.default === undefined && _.isSystemField === false, - ) - const misingRequiredFieldDefs = requiredFieldsWithoutDefaultValue.filter( - (fieldDef) => !existingDataFieldKeys.includes(fieldDef.name), - ) - if (misingRequiredFieldDefs.length > 0) { - return These.fail( - new FetchDataError.MissingRequiredFieldsError({ - documentFilePath: relativeFilePath, - documentTypeDef, - fieldDefsWithMissingData: misingRequiredFieldDefs, - }), - ) - } - - let warningOption: O.Option = O.none + const requiredFieldError = validateRequiredFieldValues({ + rawFieldValues: rawContent.fields, + documentFilePath: relativeFilePath, + documentTypeDef, + fieldDefs: documentTypeDef.fieldDefs, + }) - // warn about data fields not defined in the schema - const typeFieldName = options.fieldOptions.typeFieldName - // NOTE we also need to add the system-level type name field to the list of existing data fields - const schemaFieldNames = documentTypeDef.fieldDefs.map((_) => _.name).concat([typeFieldName]) - const extraFieldEntries = existingDataFieldKeys - .filter((fieldKey) => !schemaFieldNames.includes(fieldKey)) - .map((fieldKey) => [fieldKey, rawContent.fields[fieldKey]] as const) - - if (extraFieldEntries.length > 0) { - const extraFieldDataError = new FetchDataError.ExtraFieldDataError({ - documentFilePath: relativeFilePath, - extraFieldEntries, - documentTypeDef, - }) - - warningOption = O.some(extraFieldDataError) + if (O.isSome(requiredFieldError)) { + return These.fail(requiredFieldError.value) } + const warningOption = validateExtraFieldValues({ + fieldDefs: documentTypeDef.fieldDefs, + rawFieldValues: rawContent.fields, + options, + documentTypeDef, + documentFilePath: relativeFilePath, + }) + for (const fieldDef of documentTypeDef.fieldDefs) { const fieldValidOption = yield* $( validateFieldData({ documentFilePath: relativeFilePath, documentTypeDef, fieldDef, + coreSchemaDef, rawFieldData: rawContent.fields[fieldDef.name], contentDirPath, }), @@ -128,8 +109,6 @@ export const validateDocumentData = ({ } } - // TODO validate nesteds - return These.warnOption({ documentTypeDef }, warningOption) }), OT.withSpan('validateDocumentData', { attributes: { relativeFilePath } }), @@ -180,18 +159,25 @@ const validateFieldData = ({ fieldDef, rawFieldData, documentFilePath, + coreSchemaDef, documentTypeDef, contentDirPath, }: { fieldDef: core.FieldDef rawFieldData: any documentFilePath: RelativePosixFilePath + /** Only needed for error handling */ documentTypeDef: core.DocumentTypeDef + coreSchemaDef: core.SchemaDef contentDirPath: AbsolutePosixFilePath }): T.Effect< OT.HasTracer, never, - O.Option + O.Option< + | FetchDataError.IncompatibleFieldDataError + | FetchDataError.ReferencedFileDoesNotExistError + | FetchDataError.MissingRequiredFieldsError + > > => T.gen(function* ($) { const dataIsNil = rawFieldData === undefined || rawFieldData === null @@ -226,12 +212,123 @@ const validateFieldData = ({ ) } } + return O.none + case 'nested_unnamed': + case 'nested': { + const nestedFieldDefs = + fieldDef.type === 'nested_unnamed' + ? fieldDef.typeDef.fieldDefs + : coreSchemaDef.nestedTypeDefMap[fieldDef.nestedTypeName]!.fieldDefs + + const nestedFieldError = validateRequiredFieldValues({ + documentFilePath, + documentTypeDef, + fieldDefs: nestedFieldDefs, + rawFieldValues: rawFieldData, + }) + + if (O.isSome(nestedFieldError)) return nestedFieldError + + // TODO also check for extra fields (but this will require a refactor) + + for (const fieldDef of nestedFieldDefs) { + const fieldValidOption = yield* $( + validateFieldData({ + documentFilePath, + documentTypeDef, + coreSchemaDef, + fieldDef, + rawFieldData: rawFieldData[fieldDef.name], + contentDirPath, + }), + ) + + if (O.isSome(fieldValidOption)) { + return fieldValidOption + } + } + + return O.none + } + case 'nested_polymorphic': // TODO // TODO validate whether data has correct type (probably via zod) default: return O.none } })['|>'](T.orDie) +const validateRequiredFieldValues = ({ + rawFieldValues, + fieldDefs, + documentTypeDef, + documentFilePath, +}: { + rawFieldValues: Record + fieldDefs: core.FieldDef[] + /** Only needed for error handling - TODO make more specific when called with nested type defs */ + documentTypeDef: core.DocumentTypeDef + /** Only needed for error handling */ + documentFilePath: RelativePosixFilePath +}) => { + const existingDataFieldKeys = Object.keys(rawFieldValues) + + const requiredFieldsWithoutDefaultValue = fieldDefs.filter( + (_) => _.isRequired && _.default === undefined && _.isSystemField === false, + ) + const misingRequiredFieldDefs = requiredFieldsWithoutDefaultValue.filter( + (fieldDef) => !existingDataFieldKeys.includes(fieldDef.name), + ) + if (misingRequiredFieldDefs.length > 0) { + return O.some( + new FetchDataError.MissingRequiredFieldsError({ + documentFilePath, + documentTypeDef, + fieldDefsWithMissingData: misingRequiredFieldDefs, + }), + ) + } + + return O.none +} + +const validateExtraFieldValues = ({ + rawFieldValues, + fieldDefs, + options, + documentTypeDef, + documentFilePath, +}: { + rawFieldValues: Record + fieldDefs: core.FieldDef[] + options: core.PluginOptions + /** Only needed for error handling - TODO make more specific when called with nested type defs */ + documentTypeDef: core.DocumentTypeDef + /** Only needed for error handling */ + documentFilePath: RelativePosixFilePath +}) => { + const existingDataFieldKeys = Object.keys(rawFieldValues) + + // warn about data fields not defined in the schema + const typeFieldName = options.fieldOptions.typeFieldName + // NOTE we also need to add the system-level type name field to the list of existing data fields + const schemaFieldNames = fieldDefs.map((_) => _.name).concat([typeFieldName]) + const extraFieldEntries = existingDataFieldKeys + .filter((fieldKey) => !schemaFieldNames.includes(fieldKey)) + .map((fieldKey) => [fieldKey, rawFieldValues[fieldKey]] as const) + + if (extraFieldEntries.length > 0) { + return O.some( + new FetchDataError.ExtraFieldDataError({ + documentFilePath, + extraFieldEntries, + documentTypeDef, + }), + ) + } + + return O.none +} + const validateContentTypeMatchesFileExtension = ({ contentType, relativeFilePath, diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index ed3673a6..98dd4821 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/utils", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "exports": { "./package.json": { diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 83a72aa1..e8e6bfbb 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer-stackbit-yaml-generator", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index 257172d1..537dc4ac 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "bin": "./bin/cli.cjs", "type": "module", "engines": { diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index cc29ed66..96d68bd2 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "next-contentlayer", - "version": "0.2.10-dev.2", + "version": "0.2.10-dev.3", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false, From 69e5b96612c59ce7957bb94ebad6906faa21254d Mon Sep 17 00:00:00 2001 From: venus Date: Sun, 20 Nov 2022 00:32:47 +0100 Subject: [PATCH 03/19] add: jakubh.com to README --- packages/contentlayer/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/contentlayer/README.md b/packages/contentlayer/README.md index 5291ac06..9f9e8940 100644 --- a/packages/contentlayer/README.md +++ b/packages/contentlayer/README.md @@ -96,5 +96,6 @@ Join [our Discord community](https://discord.gg/fk83HNECYJ) to get help, suggest - [adrianmato.art](https://adrianmato.art) - [livropog.com.br](https://livropog.com.br) ([Source](https://github.com/josenaldo/livro-pog)] - [rofireza.com](https://rofireza.com/) ([Source](https://github.com/arrofirezasatria/rofireza.com)) +- [jakubh.com](https://jakubh.com/) ([Source](https://github.com/ivenuss/jakubh.com)) Are you using Contentlayer? Please add your page (and repo) to the end of the list via a PR. πŸ™ From 2478a3f131429a5d7cf0ba71cad9819f2d961a00 Mon Sep 17 00:00:00 2001 From: Fiqry choerudin Date: Sat, 7 Jan 2023 12:38:23 +0700 Subject: [PATCH 04/19] docs(readme): update sitelist --- packages/contentlayer/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/contentlayer/README.md b/packages/contentlayer/README.md index 9f9e8940..fdfbf849 100644 --- a/packages/contentlayer/README.md +++ b/packages/contentlayer/README.md @@ -97,5 +97,6 @@ Join [our Discord community](https://discord.gg/fk83HNECYJ) to get help, suggest - [livropog.com.br](https://livropog.com.br) ([Source](https://github.com/josenaldo/livro-pog)] - [rofireza.com](https://rofireza.com/) ([Source](https://github.com/arrofirezasatria/rofireza.com)) - [jakubh.com](https://jakubh.com/) ([Source](https://github.com/ivenuss/jakubh.com)) +- [fiqry.dev](https://fiqry.dev/) ([Source](https://github.com/fiqryq/fiqry.dev)) Are you using Contentlayer? Please add your page (and repo) to the end of the list via a PR. πŸ™ From 3044ce8155f3ed216e27aed36711b9568ac803af Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 12 Jan 2023 11:22:55 -0600 Subject: [PATCH 05/19] Add soapbox.pub to README --- packages/contentlayer/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/contentlayer/README.md b/packages/contentlayer/README.md index fdfbf849..48f4eafd 100644 --- a/packages/contentlayer/README.md +++ b/packages/contentlayer/README.md @@ -98,5 +98,6 @@ Join [our Discord community](https://discord.gg/fk83HNECYJ) to get help, suggest - [rofireza.com](https://rofireza.com/) ([Source](https://github.com/arrofirezasatria/rofireza.com)) - [jakubh.com](https://jakubh.com/) ([Source](https://github.com/ivenuss/jakubh.com)) - [fiqry.dev](https://fiqry.dev/) ([Source](https://github.com/fiqryq/fiqry.dev)) +- [soapbox.pub](https://soapbox.pub/) ([Source](https://gitlab.com/soapbox-pub/soapbox.pub)) Are you using Contentlayer? Please add your page (and repo) to the end of the list via a PR. πŸ™ From 3a13332bf5fcadd3e47569186eba2b54f55cf30e Mon Sep 17 00:00:00 2001 From: jintak0401 Date: Sun, 25 Dec 2022 16:53:42 +0900 Subject: [PATCH 06/19] upgrade mdx-bundler version 9.0.1 to 9.2.1 --- packages/@contentlayer/core/package.json | 2 +- yarn.lock | 25 ++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index 38fdbcb1..d3cf9dc4 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -30,7 +30,7 @@ "comment-json": "^4.2.3", "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x", "gray-matter": "^4.0.3", - "mdx-bundler": "^9.0.1", + "mdx-bundler": "^9.2.1", "rehype-stringify": "^9.0.3", "remark-frontmatter": "^4.0.1", "remark-parse": "^10.0.1", diff --git a/yarn.lock b/yarn.lock index f5dde9db..d8d6798e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -310,7 +310,7 @@ __metadata: esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x gray-matter: ^4.0.3 markdown-wasm: ^1.2.0 - mdx-bundler: ^9.0.1 + mdx-bundler: ^9.2.1 rehype-stringify: ^9.0.3 remark-frontmatter: ^4.0.1 remark-parse: ^10.0.1 @@ -5642,9 +5642,9 @@ __metadata: languageName: node linkType: hard -"mdx-bundler@npm:^9.0.1": - version: 9.0.1 - resolution: "mdx-bundler@npm:9.0.1" +"mdx-bundler@npm:^9.2.1": + version: 9.2.1 + resolution: "mdx-bundler@npm:9.2.1" dependencies: "@babel/runtime": ^7.16.3 "@esbuild-plugins/node-resolve": ^0.1.4 @@ -5654,9 +5654,10 @@ __metadata: remark-frontmatter: ^4.0.1 remark-mdx-frontmatter: ^1.1.1 uuid: ^8.3.2 + vfile: ^5.3.2 peerDependencies: - esbuild: 0.11.x || 0.12.x || 0.13.x || 0.14.x - checksum: 8b20c023eac0cf8ed9f4da6d51159399b9262a60bcad21700305c956ac0984ef917cbefbaec1a295c9346a11b48f2e265491808288e72cb5dab00034d5c3f159 + esbuild: 0.* + checksum: 3a7e9269d8a6913dc87e5f54856b727230da02b0ae2858dc38398b15480fbf7a62fe43955fb4be2dc9b024bf8e60e08c15611473827287321afe5711bec26d23 languageName: node linkType: hard @@ -8784,6 +8785,18 @@ __metadata: languageName: node linkType: hard +"vfile@npm:^5.3.2": + version: 5.3.6 + resolution: "vfile@npm:5.3.6" + dependencies: + "@types/unist": ^2.0.0 + is-buffer: ^2.0.0 + unist-util-stringify-position: ^3.0.0 + vfile-message: ^3.0.0 + checksum: 1aa5efff510bc6621ff8a7dc6513110529a11a8d665b44f169cc2a2b6bfa4f312efa00bfe86ca20e506538ff2915c8e538a664bd02a06419421ff964844fbe94 + languageName: node + linkType: hard + "vite@npm:^2.9.9": version: 2.9.14 resolution: "vite@npm:2.9.14" From 3273bed4930e0e4eb642ac114660fdf920932979 Mon Sep 17 00:00:00 2001 From: n1xx1 Date: Thu, 24 Nov 2022 11:19:18 +0100 Subject: [PATCH 07/19] improve mdxOptions handling --- packages/@contentlayer/core/src/markdown/mdx.ts | 4 ++-- packages/@contentlayer/core/src/plugin.ts | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/@contentlayer/core/src/markdown/mdx.ts b/packages/@contentlayer/core/src/markdown/mdx.ts index d5f34da0..13b33747 100644 --- a/packages/@contentlayer/core/src/markdown/mdx.ts +++ b/packages/@contentlayer/core/src/markdown/mdx.ts @@ -26,7 +26,7 @@ export const bundleMDX = ({ if (mdxString.length === 0) { return '' } - const { rehypePlugins, remarkPlugins, resolveCwd, cwd: cwd_, ...restOptions } = options ?? {} + const { rehypePlugins, remarkPlugins, resolveCwd, cwd: cwd_, mdxOptions: mdxOptions_, ...restOptions } = options ?? {} const getCwdFromContentDirPath = () => // TODO don't use `process.cwd()` but instead `HasCwd` @@ -44,7 +44,7 @@ export const bundleMDX = ({ ...(opts.remarkPlugins ?? []), ...(remarkPlugins ?? []), ] - return opts + return mdxOptions_ ? mdxOptions_(opts) : opts; }, // User-provided cwd trumps resolution cwd: cwd_ ?? getCwd(), diff --git a/packages/@contentlayer/core/src/plugin.ts b/packages/@contentlayer/core/src/plugin.ts index cf1592ab..6fbc4458 100644 --- a/packages/@contentlayer/core/src/plugin.ts +++ b/packages/@contentlayer/core/src/plugin.ts @@ -60,8 +60,6 @@ export type MDXOptions = { /** * This allows you to modify the built-in MDX configuration (passed to @mdx-js/mdx compile). * This can be helpful for specifying your own remarkPlugins/rehypePlugins. - * - * If you're providing `mdxOptions` then `rehypePlugins` and `remarkPlugins` will be ignored. */ mdxOptions?: MDXBundlerMDXOptions /** From 3a040af03e6a6ed32c6e07f4f0672be0322934ac Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 09:23:09 +0000 Subject: [PATCH 08/19] adjust mdxOptions --- packages/@contentlayer/core/src/markdown/mdx.ts | 11 +++++++++-- packages/@contentlayer/core/src/plugin.ts | 10 +++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/@contentlayer/core/src/markdown/mdx.ts b/packages/@contentlayer/core/src/markdown/mdx.ts index 13b33747..b86802ad 100644 --- a/packages/@contentlayer/core/src/markdown/mdx.ts +++ b/packages/@contentlayer/core/src/markdown/mdx.ts @@ -26,7 +26,14 @@ export const bundleMDX = ({ if (mdxString.length === 0) { return '' } - const { rehypePlugins, remarkPlugins, resolveCwd, cwd: cwd_, mdxOptions: mdxOptions_, ...restOptions } = options ?? {} + const { + rehypePlugins, + remarkPlugins, + resolveCwd, + cwd: cwd_, + mdxOptions: mapMdxOptions, + ...restOptions + } = options ?? {} const getCwdFromContentDirPath = () => // TODO don't use `process.cwd()` but instead `HasCwd` @@ -44,7 +51,7 @@ export const bundleMDX = ({ ...(opts.remarkPlugins ?? []), ...(remarkPlugins ?? []), ] - return mdxOptions_ ? mdxOptions_(opts) : opts; + return mapMdxOptions ? mapMdxOptions(opts) : opts }, // User-provided cwd trumps resolution cwd: cwd_ ?? getCwd(), diff --git a/packages/@contentlayer/core/src/plugin.ts b/packages/@contentlayer/core/src/plugin.ts index 6fbc4458..6cbd5965 100644 --- a/packages/@contentlayer/core/src/plugin.ts +++ b/packages/@contentlayer/core/src/plugin.ts @@ -1,5 +1,6 @@ import type { Thunk } from '@contentlayer/utils' import type { E, HasClock, HasConsole, OT, S, T } from '@contentlayer/utils/effect' +import type * as mdxEsbuild from '@mdx-js/esbuild/lib' import type * as mdxBundler from 'mdx-bundler/dist/types' import type { LiteralUnion } from 'type-fest' import type * as unified from 'unified' @@ -58,10 +59,13 @@ export type MDXOptions = { rehypePlugins?: unified.Pluggable[] /** */ /** - * This allows you to modify the built-in MDX configuration (passed to @mdx-js/mdx compile). + * This allows you to modify the built-in MDX configuration (passed to @mdx-js/mdx compile via mdx-bundler). * This can be helpful for specifying your own remarkPlugins/rehypePlugins. + * + * Note that Contentlayer by default applies the built-in `addRawDocumentToVFile` remark plugin + * which adds the raw document data to the vfile under `vfile.data.rawDocumentData`. */ - mdxOptions?: MDXBundlerMDXOptions + mdxOptions?: MDXBundlerMapOptions /** * How we resolve the cwd passed to mdx-bundler when processing a file. If an explicit `cwd` * is provided this option will be ignored. @@ -72,7 +76,7 @@ export type MDXOptions = { resolveCwd?: 'relative' | 'contentDirPath' } & Omit, 'mdxOptions'> -export type MDXBundlerMDXOptions = mdxBundler.BundleMDXOptions['mdxOptions'] +export type MDXBundlerMapOptions = (options: mdxEsbuild.ProcessorOptions) => mdxEsbuild.ProcessorOptions export type DateOptions = { /** From 026cb1f3293103f230fbcdf35a67c88e7ffdfb26 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 10:43:00 +0100 Subject: [PATCH 09/19] upgrade deps --- .vscode/tasks.json | 15 +- examples/next-contentlayer-example | 2 +- package.json | 20 +- packages/@contentlayer/cli/package.json | 4 +- packages/@contentlayer/core/package.json | 6 +- .../package.json | 4 +- .../source-contentful/package.json | 2 +- .../@contentlayer/source-files/package.json | 16 +- packages/@contentlayer/utils/package.json | 8 +- .../package.json | 8 +- packages/contentlayer/package.json | 2 +- packages/integration-tests/package.json | 4 +- packages/next-contentlayer/package.json | 8 +- yarn.lock | 1548 ++++++++++------- 14 files changed, 1002 insertions(+), 645 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 33385c44..a539c327 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -3,6 +3,19 @@ // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ + { + "label": "yarn-install", + "type": "shell", + "command": "yarn install", + "presentation": { + "focus": true, + "panel": "shared", + "group": "yarn", + "showReuseMessage": true, + "clear": false, + "close": true + } + }, { "label": "build:clean", "type": "shell", @@ -13,7 +26,7 @@ "group": "dev", "showReuseMessage": true, "clear": false, - "close": true, + "close": true } }, { diff --git a/examples/next-contentlayer-example b/examples/next-contentlayer-example index d4e13f55..c9d3b6fd 160000 --- a/examples/next-contentlayer-example +++ b/examples/next-contentlayer-example @@ -1 +1 @@ -Subproject commit d4e13f5579a8db2eeb37819abd734cefee4b6649 +Subproject commit c9d3b6fd51a1bb52da81dfc57cd818a1fa2de6de diff --git a/package.json b/package.json index 359990ad..6b9ea038 100644 --- a/package.json +++ b/package.json @@ -27,20 +27,20 @@ "devDependencies": { "@changesets/cli": "2.19.0-temp.0", "@effect-ts/tracing-plugin": "^0.20.0", - "@types/prettier": "^2.7.1", - "@typescript-eslint/eslint-plugin": "^5.42.0", - "@typescript-eslint/parser": "^5.42.0", - "eslint": "^8.27.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", + "@types/prettier": "^2.7.2", + "@typescript-eslint/eslint-plugin": "^5.48.1", + "@typescript-eslint/parser": "^5.48.1", + "eslint": "^8.32.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-import": "^2.27.4", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-simple-import-sort": "^8.0.0", - "prettier": "^2.7.1", - "ts-patch": "^2.0.2", - "typescript": "^4.8.4" + "prettier": "^2.8.3", + "ts-patch": "^2.1.0", + "typescript": "^4.9.4" }, "resolutions": { - "esbuild": "0.15.7", + "esbuild": "0.17.0", "contentlayer": "workspace:*", "@contentlayer/*": "workspace:*", "contentlayer-stackbit-yaml-generator": "workspace:*", diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index 4772f1ee..96e295f3 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -15,10 +15,10 @@ "dependencies": { "@contentlayer/core": "workspace:*", "@contentlayer/utils": "workspace:*", - "clipanion": "^3.2.0-rc.13", + "clipanion": "^3.2.0-rc.14", "typanion": "^3.12.1" }, "devDependencies": { - "@types/node": "^18.11.9" + "@types/node": "^18.11.18" } } diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index d3cf9dc4..2187da8d 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -13,7 +13,7 @@ "test": "echo No tests yet" }, "peerDependencies": { - "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x", + "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x", "markdown-wasm": "1.x" }, "peerDependenciesMeta": { @@ -28,7 +28,7 @@ "@contentlayer/utils": "workspace:*", "camel-case": "^4.1.2", "comment-json": "^4.2.3", - "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x", + "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x", "gray-matter": "^4.0.3", "mdx-bundler": "^9.2.1", "rehype-stringify": "^9.0.3", @@ -36,7 +36,7 @@ "remark-parse": "^10.0.1", "remark-rehype": "^10.1.0", "source-map-support": "^0.5.21", - "type-fest": "^3.2.0", + "type-fest": "^3.5.2", "unified": "^10.1.2" }, "devDependencies": { diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index e39c629b..364bc986 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -32,7 +32,7 @@ "@stackbit/sdk": "~0.2.38" }, "devDependencies": { - "vite": "^3.2.3", - "vitest": "0.24.5" + "vite": "^4.0.4", + "vitest": "0.27.1" } } diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index 1b81ed6c..b1f7e21a 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -13,7 +13,7 @@ "test": "echo No tests yet" }, "devDependencies": { - "@types/node": "^18.11.9" + "@types/node": "^18.11.18" }, "dependencies": { "@contentlayer/core": "workspace:*", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index d43baf91..f6a0b876 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -33,22 +33,22 @@ "chokidar": "^3.5.3", "fast-glob": "^3.2.12", "gray-matter": "^4.0.3", - "imagescript": "^1.2.9", + "imagescript": "^1.2.15", "micromatch": "^4.0.5", - "ts-pattern": "^4.0.5", + "ts-pattern": "^4.1.3", "unified": "^10.1.2", "yaml": "^1.10.2", - "zod": "^3.19.1" + "zod": "^3.20.2" }, "devDependencies": { "@types/faker": "^5.5.8", "@types/micromatch": "^4.0.2", - "@types/node": "^18.11.9", - "@types/sharp": "^0.31.0", + "@types/node": "^18.11.18", + "@types/sharp": "^0.31.1", "@types/yaml": "^1.9.7", "faker": "^5.5.3", - "sharp": "^0.31.2", - "vite": "^3.2.3", - "vitest": "0.24.5" + "sharp": "^0.31.3", + "vite": "^4.0.4", + "vitest": "0.27.1" } } diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index 98dd4821..8700ce08 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -71,10 +71,10 @@ "@opentelemetry/semantic-conventions": "~1.5.0", "chokidar": "^3.5.3", "hash-wasm": "^4.9.0", - "inflection": "^1.13.4", - "oo-ascii-tree": "^1.70.0", - "ts-pattern": "^4.0.5", - "type-fest": "^3.2.0" + "inflection": "^2.0.1", + "oo-ascii-tree": "^1.73.0", + "ts-pattern": "^4.1.3", + "type-fest": "^3.5.2" }, "devDependencies": { "@types/inflection": "^1.13.0" diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index e8e6bfbb..83c46662 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -18,14 +18,14 @@ "@contentlayer/core": "workspace:*", "@contentlayer/utils": "workspace:*", "@stackbit/sdk": "^0.2.35", - "clipanion": "^3.2.0-rc.13", + "clipanion": "^3.2.0-rc.14", "typanion": "3.12.1", "yaml": "^1.10.2" }, "devDependencies": { "contentlayer": "workspace:*", - "typescript": "^4.8.4", - "vite": "^3.2.3", - "vitest": "0.24.5" + "typescript": "^4.9.4", + "vite": "^4.0.4", + "vitest": "0.27.1" } } diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index 537dc4ac..d276f580 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -73,7 +73,7 @@ "@contentlayer/utils": "workspace:*" }, "devDependencies": { - "typescript": "^4.8.4" + "typescript": "^4.9.4" }, "author": "schickling", "homepage": "https://github.com/contentlayerdev/contentlayer", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 6eab37f1..f90f5e5a 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -8,8 +8,8 @@ "devDependencies": { "contentlayer": "workspace:*", "remark-mdx-images": "^2.0.0", - "typescript": "^4.8.4", - "vite": "^3.2.3", + "typescript": "^4.9.4", + "vite": "^4.0.4", "vitest": "0.12.10" } } diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index 96d68bd2..08fc8ba7 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -47,10 +47,10 @@ "react-dom": "*" }, "devDependencies": { - "@types/react": "^18.0.25", - "@types/react-dom": "^18.0.8", - "next": "^13.0.2", - "typescript": "^4.8.4" + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.10", + "next": "^13.1.2", + "typescript": "^4.9.4" }, "author": "schickling", "homepage": "https://github.com/contentlayerdev/contentlayer", diff --git a/yarn.lock b/yarn.lock index d8d6798e..e067b157 100644 --- a/yarn.lock +++ b/yarn.lock @@ -285,8 +285,8 @@ __metadata: dependencies: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" - "@types/node": ^18.11.9 - clipanion: ^3.2.0-rc.13 + "@types/node": ^18.11.18 + clipanion: ^3.2.0-rc.14 typanion: ^3.12.1 languageName: unknown linkType: soft @@ -307,7 +307,7 @@ __metadata: "@types/source-map-support": ^0.5.6 camel-case: ^4.1.2 comment-json: ^4.2.3 - esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x + esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x gray-matter: ^4.0.3 markdown-wasm: ^1.2.0 mdx-bundler: ^9.2.1 @@ -316,10 +316,10 @@ __metadata: remark-parse: ^10.0.1 remark-rehype: ^10.1.0 source-map-support: ^0.5.21 - type-fest: ^3.2.0 + type-fest: ^3.5.2 unified: ^10.1.2 peerDependencies: - esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x + esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x markdown-wasm: 1.x peerDependenciesMeta: esbuild: @@ -337,8 +337,8 @@ __metadata: "@contentlayer/source-files": "workspace:*" "@contentlayer/utils": "workspace:*" "@stackbit/sdk": ~0.2.38 - vite: ^3.2.3 - vitest: 0.24.5 + vite: ^4.0.4 + vitest: 0.27.1 peerDependencies: "@stackbit/sdk": ~0.2.38 peerDependenciesMeta: @@ -353,7 +353,7 @@ __metadata: dependencies: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" - "@types/node": ^18.11.9 + "@types/node": ^18.11.18 contentful-management: 7.22.4 languageName: unknown linkType: soft @@ -366,22 +366,22 @@ __metadata: "@contentlayer/utils": "workspace:*" "@types/faker": ^5.5.8 "@types/micromatch": ^4.0.2 - "@types/node": ^18.11.9 - "@types/sharp": ^0.31.0 + "@types/node": ^18.11.18 + "@types/sharp": ^0.31.1 "@types/yaml": ^1.9.7 chokidar: ^3.5.3 faker: ^5.5.3 fast-glob: ^3.2.12 gray-matter: ^4.0.3 - imagescript: ^1.2.9 + imagescript: ^1.2.15 micromatch: ^4.0.5 - sharp: ^0.31.2 - ts-pattern: ^4.0.5 + sharp: ^0.31.3 + ts-pattern: ^4.1.3 unified: ^10.1.2 - vite: ^3.2.3 - vitest: 0.24.5 + vite: ^4.0.4 + vitest: 0.27.1 yaml: ^1.10.2 - zod: ^3.19.1 + zod: ^3.20.2 languageName: unknown linkType: soft @@ -404,10 +404,10 @@ __metadata: "@types/inflection": ^1.13.0 chokidar: ^3.5.3 hash-wasm: ^4.9.0 - inflection: ^1.13.4 - oo-ascii-tree: ^1.70.0 - ts-pattern: ^4.0.5 - type-fest: ^3.2.0 + inflection: ^2.0.1 + oo-ascii-tree: ^1.73.0 + ts-pattern: ^4.1.3 + type-fest: ^3.5.2 peerDependenciesMeta: "@effect-ts/core": optional: true @@ -506,27 +506,174 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.15.7": - version: 0.15.7 - resolution: "@esbuild/linux-loong64@npm:0.15.7" +"@esbuild/android-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/android-arm64@npm:0.17.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/android-arm@npm:0.17.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/android-x64@npm:0.17.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/darwin-arm64@npm:0.17.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/darwin-x64@npm:0.17.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/freebsd-arm64@npm:0.17.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/freebsd-x64@npm:0.17.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-arm64@npm:0.17.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-arm@npm:0.17.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-ia32@npm:0.17.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-loong64@npm:0.17.0" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.3.3": - version: 1.3.3 - resolution: "@eslint/eslintrc@npm:1.3.3" +"@esbuild/linux-mips64el@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-mips64el@npm:0.17.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-ppc64@npm:0.17.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-riscv64@npm:0.17.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-s390x@npm:0.17.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/linux-x64@npm:0.17.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/netbsd-x64@npm:0.17.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/openbsd-x64@npm:0.17.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/sunos-x64@npm:0.17.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/win32-arm64@npm:0.17.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/win32-ia32@npm:0.17.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@esbuild/win32-x64@npm:0.17.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^1.4.1": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" dependencies: ajv: ^6.12.4 debug: ^4.3.2 espree: ^9.4.0 - globals: ^13.15.0 + globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: f03e9d6727efd3e0719da2051ea80c0c73d20e28c171121527dbb868cd34232ca9c1d0525a66e517a404afea26624b1e47895b6a92474678418c2f50c9566694 + checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 languageName: node linkType: hard @@ -607,14 +754,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.6": - version: 0.11.7 - resolution: "@humanwhocodes/config-array@npm:0.11.7" +"@humanwhocodes/config-array@npm:^0.11.8": + version: 0.11.8 + resolution: "@humanwhocodes/config-array@npm:0.11.8" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.5 - checksum: cf506dc45d9488af7fbf108ea6ac2151ba1a25e6d2b94b9b4fc36d2c1e4099b89ff560296dbfa13947e44604d4ca4a90d97a4fb167370bf8dd01a6ca2b6d83ac + checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 languageName: node linkType: hard @@ -737,100 +884,100 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:13.0.2": - version: 13.0.2 - resolution: "@next/env@npm:13.0.2" - checksum: e84eca92328421d9824a82177b018234b2cd0aa59a482569b7a52b16eaabdafe6343f21bec7d15035cb8ea831929097c7d92c711d295630f6b74a655f9ddcad6 +"@next/env@npm:13.1.2": + version: 13.1.2 + resolution: "@next/env@npm:13.1.2" + checksum: 0b25af4a1c31b4d798fea57df05ba45c5e35b13d87a7c612532e5f25e4b800d1d61854b7f95b8064587ee5a5b43f3d33da5d914ec70c132b6ee82925d44cf18c languageName: node linkType: hard -"@next/swc-android-arm-eabi@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-android-arm-eabi@npm:13.0.2" +"@next/swc-android-arm-eabi@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-android-arm-eabi@npm:13.1.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@next/swc-android-arm64@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-android-arm64@npm:13.0.2" +"@next/swc-android-arm64@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-android-arm64@npm:13.1.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-darwin-arm64@npm:13.0.2" +"@next/swc-darwin-arm64@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-darwin-arm64@npm:13.1.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-darwin-x64@npm:13.0.2" +"@next/swc-darwin-x64@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-darwin-x64@npm:13.1.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-freebsd-x64@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-freebsd-x64@npm:13.0.2" +"@next/swc-freebsd-x64@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-freebsd-x64@npm:13.1.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm-gnueabihf@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-linux-arm-gnueabihf@npm:13.0.2" +"@next/swc-linux-arm-gnueabihf@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-linux-arm-gnueabihf@npm:13.1.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-linux-arm64-gnu@npm:13.0.2" +"@next/swc-linux-arm64-gnu@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-linux-arm64-gnu@npm:13.1.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-linux-arm64-musl@npm:13.0.2" +"@next/swc-linux-arm64-musl@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-linux-arm64-musl@npm:13.1.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-linux-x64-gnu@npm:13.0.2" +"@next/swc-linux-x64-gnu@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-linux-x64-gnu@npm:13.1.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-linux-x64-musl@npm:13.0.2" +"@next/swc-linux-x64-musl@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-linux-x64-musl@npm:13.1.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-win32-arm64-msvc@npm:13.0.2" +"@next/swc-win32-arm64-msvc@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-win32-arm64-msvc@npm:13.1.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-win32-ia32-msvc@npm:13.0.2" +"@next/swc-win32-ia32-msvc@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-win32-ia32-msvc@npm:13.1.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.0.2": - version: 13.0.2 - resolution: "@next/swc-win32-x64-msvc@npm:13.0.2" +"@next/swc-win32-x64-msvc@npm:13.1.2": + version: 13.1.2 + resolution: "@next/swc-win32-x64-msvc@npm:13.1.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1348,12 +1495,12 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.4.11": - version: 0.4.11 - resolution: "@swc/helpers@npm:0.4.11" +"@swc/helpers@npm:0.4.14": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" dependencies: tslib: ^2.4.0 - checksum: 736857d524b41a8a4db81094e9b027f554004e0fa3e86325d85bdb38f7e6459ce022db079edb6c61ba0f46fe8583b3e663e95f7acbd13e51b8da6c34e45bba2e + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 languageName: node linkType: hard @@ -1424,10 +1571,10 @@ __metadata: languageName: node linkType: hard -"@types/chai@npm:^4.3.3": - version: 4.3.3 - resolution: "@types/chai@npm:4.3.3" - checksum: 20cd094753e137cfc35939cae7f0ed78ecda7861e5c94704efab6979b9121a63807e9b631bdcf3a2792d6c6dba44050b13387262f9e63ebb040741c01c345f0a +"@types/chai@npm:^4.3.4": + version: 4.3.4 + resolution: "@types/chai@npm:4.3.4" + checksum: 571184967beb03bf64c4392a13a7d44e72da9af5a1e83077ff81c39cf59c0fda2a5c78d2005084601cf8f3d11726608574d8b5b4a0e3e9736792807afd926cd0 languageName: node linkType: hard @@ -1576,10 +1723,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.11.9": - version: 18.11.9 - resolution: "@types/node@npm:18.11.9" - checksum: cc0aae109e9b7adefc32eecb838d6fad931663bb06484b5e9cbbbf74865c721b03d16fd8d74ad90e31dbe093d956a7c2c306ba5429ba0c00f3f7505103d7a496 +"@types/node@npm:^18.11.18": + version: 18.11.18 + resolution: "@types/node@npm:18.11.18" + checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d languageName: node linkType: hard @@ -1590,10 +1737,10 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.7.1": - version: 2.7.1 - resolution: "@types/prettier@npm:2.7.1" - checksum: 5e3f58e229d6c73b5f5cae2e8f96c1c4a5b5805f83459e17a045ba8e96152b1d38e86b63e3172fb159dac923388699660862b75b2d37e54220805f0e691e26f1 +"@types/prettier@npm:^2.7.2": + version: 2.7.2 + resolution: "@types/prettier@npm:2.7.2" + checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 languageName: node linkType: hard @@ -1604,12 +1751,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.8": - version: 18.0.8 - resolution: "@types/react-dom@npm:18.0.8" +"@types/react-dom@npm:^18.0.10": + version: 18.0.10 + resolution: "@types/react-dom@npm:18.0.10" dependencies: "@types/react": "*" - checksum: 522e5e949d05f35c6037a2290838c9c7ff92a9d06f7d96b993c7c3f5a86d8f3a6337e059c94e6fb0920227f445e5d1ce10fbfe3d9bbd95fb82a5539249d90646 + checksum: ff8282d5005a0b1cd95fb65bf79d3d8485e4cfe2aaf052129033a178684b940014a3f4536bc20d573f8a01cf4c6f4770c74988cef7c2b5cac3041d9f172647e3 languageName: node linkType: hard @@ -1624,14 +1771,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.0.25, @types/react@npm:^18.0.25": - version: 18.0.25 - resolution: "@types/react@npm:18.0.25" +"@types/react@npm:18.0.26, @types/react@npm:^18.0.26": + version: 18.0.26 + resolution: "@types/react@npm:18.0.26" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 231d658c45abdef044a716b4502774f1585d8336d73b2f5bd68f181acbfc874b7a457686ecd29b415b43ed0922c309bab7e2cf96832d188a3f4f1b02f2af760a + checksum: b62f0ea3cdfa68e106391728325057ad36f1bde7ba2dfae029472c47e01e482bc77c6ba4f1dad59f3f04ee81cb597618ff7c30a33c157c0a20462b6dd6aa2d4d languageName: node linkType: hard @@ -1663,12 +1810,12 @@ __metadata: languageName: node linkType: hard -"@types/sharp@npm:^0.31.0": - version: 0.31.0 - resolution: "@types/sharp@npm:0.31.0" +"@types/sharp@npm:^0.31.1": + version: 0.31.1 + resolution: "@types/sharp@npm:0.31.1" dependencies: "@types/node": "*" - checksum: c7698de18183a0574bf2f703226a5a7dc32b8a7340b52790eff0f6775b8ad708b6782f48fcaaf4d1be15fd76215c81c3ea55595d55484bf7ce870923c8174294 + checksum: 226871181fc88b5ef8a6bc32c1e14a3426cc45480ed49536c45bb5c166c089169b8fe3e5c57aea8c34cc40b08311a95d5582c1a2f540f4425eb66fea3d6e0489 languageName: node linkType: hard @@ -1697,13 +1844,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.42.0" +"@typescript-eslint/eslint-plugin@npm:^5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/eslint-plugin@npm:5.48.1" dependencies: - "@typescript-eslint/scope-manager": 5.42.0 - "@typescript-eslint/type-utils": 5.42.0 - "@typescript-eslint/utils": 5.42.0 + "@typescript-eslint/scope-manager": 5.48.1 + "@typescript-eslint/type-utils": 5.48.1 + "@typescript-eslint/utils": 5.48.1 debug: ^4.3.4 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 @@ -1716,43 +1863,43 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8dd13c77f5b83a8ba7e37196769b9c8a296c4417ffe7e33cb4d172495e1596ea0a9140dae0f1bbe1317a0cd5d5d92bf76a1799e7b9f8b3a577433b9569f1436d + checksum: d8d73d123d16fc9b50b500ef21816dcabdffe0d2dcfdb15089dc5a1015d57cbad709de565d1c830f5058c0d7b410069e2554c0b53d1485fe7b237ea8089e58be languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/parser@npm:5.42.0" +"@typescript-eslint/parser@npm:^5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/parser@npm:5.48.1" dependencies: - "@typescript-eslint/scope-manager": 5.42.0 - "@typescript-eslint/types": 5.42.0 - "@typescript-eslint/typescript-estree": 5.42.0 + "@typescript-eslint/scope-manager": 5.48.1 + "@typescript-eslint/types": 5.48.1 + "@typescript-eslint/typescript-estree": 5.48.1 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 790d5fcc53f02a25628b1d2a06e3b7f26f4fa12e78f51a67e1db0ac6a4b643a34f247991d7b938f45c7f8395fcaf920807c8a29d768913a7a8266162d2244806 + checksum: c624d24eb209b4ce7f0a6c8116712363f10a9c9a5138f240e254ff265526ee4b0fd73b7b6b4b6a0e7611bd9934c42036350dd27f96ae2fa4efdade1a7ebd0e9e languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/scope-manager@npm:5.42.0" +"@typescript-eslint/scope-manager@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/scope-manager@npm:5.48.1" dependencies: - "@typescript-eslint/types": 5.42.0 - "@typescript-eslint/visitor-keys": 5.42.0 - checksum: c7dac787c27db640ef8add18e91f84ade36871a50e84f36604fc1b823fc544ad28cea4731c4b7cadec157964f5399e6db2b3a9a115b2a2dd97fbc2bae7b1f9e0 + "@typescript-eslint/types": 5.48.1 + "@typescript-eslint/visitor-keys": 5.48.1 + checksum: f60a7efe917798cccf8652925de6be58b023ded6c6ee44ce74d074f0c2a1927680398a6d73bab33d500c69474ad8c54d63b90fcc6e13256712707d12a60e0a64 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/type-utils@npm:5.42.0" +"@typescript-eslint/type-utils@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/type-utils@npm:5.48.1" dependencies: - "@typescript-eslint/typescript-estree": 5.42.0 - "@typescript-eslint/utils": 5.42.0 + "@typescript-eslint/typescript-estree": 5.48.1 + "@typescript-eslint/utils": 5.48.1 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -1760,23 +1907,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 5c98bdff38d8ace74f77b792d97572c41e3d0d01506529a32bc1244791a9e933d06dcc516eaad5bf1fc85b2cf1a95642f519f9c4ce4d6a974481e1a3680ed8dd + checksum: 2739b35caf48c9edbeab82936de58ce0759ab34955ce7eec1786690d6a63146ae0a6c5d9c76034605d9fe200c87a73ede0772c6244c5df6e66df992d9ebbab72 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/types@npm:5.42.0" - checksum: 7a17ff007972129a1e2105a653d8aa637070b74d4f8b98309aeb83d06076ab40cebfa1c3e9aae3fc614118e730c4539ff13e8299d34530851cb06260483ef14c +"@typescript-eslint/types@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/types@npm:5.48.1" + checksum: 8437986e9d86d792b23327517ae2f9861ec55992d5a9cd55991e525409b6244169436cd708f3987ab7c579e45e59b6eab5a9d3583f7729219e25691164293094 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.42.0" +"@typescript-eslint/typescript-estree@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/typescript-estree@npm:5.48.1" dependencies: - "@typescript-eslint/types": 5.42.0 - "@typescript-eslint/visitor-keys": 5.42.0 + "@typescript-eslint/types": 5.48.1 + "@typescript-eslint/visitor-keys": 5.48.1 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -1785,35 +1932,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: cc8a98815daf6c8bf6f8f5e43c4a7bf7008aa850cecc669de7b8cfdddb0648fd2eae738a185165176a24aed360cb12204cc0808f251e9fcf8e436cd15fff3645 + checksum: 2b26e5848ef131e1bb99ed54d8c0efa8279cf8e8f7d8b72de00c2ca6cf2799d96c20f5bbbcf26e14e81b7b9d1035ba509bff30f2d852c174815879e8f14c27ed languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/utils@npm:5.42.0" +"@typescript-eslint/utils@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/utils@npm:5.48.1" dependencies: "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.42.0 - "@typescript-eslint/types": 5.42.0 - "@typescript-eslint/typescript-estree": 5.42.0 + "@typescript-eslint/scope-manager": 5.48.1 + "@typescript-eslint/types": 5.48.1 + "@typescript-eslint/typescript-estree": 5.48.1 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: cc57ba8bdf1cf18de5c6c264b71be80dc8c4a7630c0d6a34f73ed991cd3684c97a06605f414a8fd439ce2201f7724249b2fc29eac1e54a770ee4e8303cabef52 + checksum: 2d112cbb6a920f147c6c3322e404ca3c56c1170e1ede3bcbf16fb779960dc24cdba688b1f2d06acd242859fc1dbc8702da5f8fa8bbf53e7081e41d80bec4c236 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.42.0": - version: 5.42.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.42.0" +"@typescript-eslint/visitor-keys@npm:5.48.1": + version: 5.48.1 + resolution: "@typescript-eslint/visitor-keys@npm:5.48.1" dependencies: - "@typescript-eslint/types": 5.42.0 + "@typescript-eslint/types": 5.48.1 eslint-visitor-keys: ^3.3.0 - checksum: d198e51ea968555dd44b3ff14587dd82ce43c30ae43d4021d4eacb468e4476102a5b715e15240adcdeec4b4b5280d819087a9c4090360f1e4dcb05829ea8f2dc + checksum: 2bda10cf4e6bc48b0d463767617e48a832d708b9434665dff6ed101f7d33e0d592f02af17a2259bde1bd17e666246448ae78d0fe006148cb93d897fff9b1d134 languageName: node linkType: hard @@ -1851,7 +1998,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": +"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 @@ -1876,6 +2023,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.8.1": + version: 8.8.1 + resolution: "acorn@npm:8.8.1" + bin: + acorn: bin/acorn + checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f + languageName: node + linkType: hard + "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -2039,16 +2195,16 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4": - version: 3.1.5 - resolution: "array-includes@npm:3.1.5" +"array-includes@npm:^3.1.6": + version: 3.1.6 + resolution: "array-includes@npm:3.1.6" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 - es-abstract: ^1.19.5 - get-intrinsic: ^1.1.1 + es-abstract: ^1.20.4 + get-intrinsic: ^1.1.3 is-string: ^1.0.7 - checksum: f6f24d834179604656b7bec3e047251d5cc87e9e87fab7c175c61af48e80e75acd296017abcde21fb52292ab6a2a449ab2ee37213ee48c8709f004d75983f9c5 + checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 languageName: node linkType: hard @@ -2066,15 +2222,27 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5": - version: 1.3.0 - resolution: "array.prototype.flat@npm:1.3.0" +"array.prototype.flat@npm:^1.3.1": + version: 1.3.1 + resolution: "array.prototype.flat@npm:1.3.1" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 es-shim-unscopables: ^1.0.0 - checksum: 2a652b3e8dc0bebb6117e42a5ab5738af0203a14c27341d7bb2431467bdb4b348e2c5dc555dfcda8af0a5e4075c400b85311ded73861c87290a71a17c3e0a257 + checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.0": + version: 1.3.1 + resolution: "array.prototype.flatmap@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 languageName: node linkType: hard @@ -2133,6 +2301,13 @@ __metadata: languageName: node linkType: hard +"available-typed-arrays@npm:^1.0.5": + version: 1.0.5 + resolution: "available-typed-arrays@npm:1.0.5" + checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + languageName: node + linkType: hard + "axios@npm:^0.21.0, axios@npm:^0.21.4": version: 0.21.4 resolution: "axios@npm:0.21.4" @@ -2287,6 +2462,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a + languageName: node + linkType: hard + "cacache@npm:^16.1.0": version: 16.1.1 resolution: "cacache@npm:16.1.1" @@ -2420,6 +2602,21 @@ __metadata: languageName: node linkType: hard +"chai@npm:^4.3.7": + version: 4.3.7 + resolution: "chai@npm:4.3.7" + dependencies: + assertion-error: ^1.1.0 + check-error: ^1.0.2 + deep-eql: ^4.1.2 + get-func-name: ^2.0.0 + loupe: ^2.3.1 + pathval: ^1.1.1 + type-detect: ^4.0.5 + checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c + languageName: node + linkType: hard + "chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.1.0": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -2587,14 +2784,14 @@ __metadata: languageName: node linkType: hard -"clipanion@npm:^3.2.0-rc.13": - version: 3.2.0-rc.13 - resolution: "clipanion@npm:3.2.0-rc.13" +"clipanion@npm:^3.2.0-rc.14": + version: 3.2.0-rc.14 + resolution: "clipanion@npm:3.2.0-rc.14" dependencies: typanion: ^3.8.0 peerDependencies: typanion: "*" - checksum: 354fee2b12dd356a76949a0ea651e32ea26a12026dd6f27d045c7e00c07a2f2a129dddc84eadc855c960b7d842378064d84fe21641c1d8a943b6364343162b4e + checksum: 0bedf6c70d8f3f986fe105ba4a2182cf8d398201ed639095927ceef5d50f370ee2bb7e14239be2b5ddcf3dc8f3b72a1666d67e903ee405fcddf1f378a4704c54 languageName: node linkType: hard @@ -2820,17 +3017,17 @@ __metadata: dependencies: "@changesets/cli": 2.19.0-temp.0 "@effect-ts/tracing-plugin": ^0.20.0 - "@types/prettier": ^2.7.1 - "@typescript-eslint/eslint-plugin": ^5.42.0 - "@typescript-eslint/parser": ^5.42.0 - eslint: ^8.27.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import: ^2.26.0 + "@types/prettier": ^2.7.2 + "@typescript-eslint/eslint-plugin": ^5.48.1 + "@typescript-eslint/parser": ^5.48.1 + eslint: ^8.32.0 + eslint-config-prettier: ^8.6.0 + eslint-plugin-import: ^2.27.4 eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-simple-import-sort: ^8.0.0 - prettier: ^2.7.1 - ts-patch: ^2.0.2 - typescript: ^4.8.4 + prettier: ^2.8.3 + ts-patch: ^2.1.0 + typescript: ^4.9.4 languageName: unknown linkType: soft @@ -2841,12 +3038,12 @@ __metadata: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" "@stackbit/sdk": ^0.2.35 - clipanion: ^3.2.0-rc.13 + clipanion: ^3.2.0-rc.14 contentlayer: "workspace:*" typanion: 3.12.1 - typescript: ^4.8.4 - vite: ^3.2.3 - vitest: 0.24.5 + typescript: ^4.9.4 + vite: ^4.0.4 + vitest: 0.27.1 yaml: ^1.10.2 bin: contentlayer-stackbit-yaml-generator: ./dist/cli/index.js @@ -2862,7 +3059,7 @@ __metadata: "@contentlayer/core": "workspace:*" "@contentlayer/source-files": "workspace:*" "@contentlayer/utils": "workspace:*" - typescript: ^4.8.4 + typescript: ^4.9.4 bin: contentlayer: ./bin/cli.cjs languageName: unknown @@ -2979,15 +3176,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -3041,6 +3229,15 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^4.1.2": + version: 4.1.3 + resolution: "deep-eql@npm:4.1.3" + dependencies: + type-detect: ^4.0.0 + checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -3266,7 +3463,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.2, es-abstract@npm:^1.19.5": +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5": version: 1.20.1 resolution: "es-abstract@npm:1.20.1" dependencies: @@ -3297,6 +3494,58 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.20.4": + version: 1.21.1 + resolution: "es-abstract@npm:1.21.1" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + es-set-tostringtag: ^2.0.1 + es-to-primitive: ^1.2.1 + function-bind: ^1.1.1 + function.prototype.name: ^1.1.5 + get-intrinsic: ^1.1.3 + get-symbol-description: ^1.0.0 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.4 + is-array-buffer: ^3.0.1 + is-callable: ^1.2.7 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-typed-array: ^1.1.10 + is-weakref: ^1.0.2 + object-inspect: ^1.12.2 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.4.3 + safe-regex-test: ^1.0.0 + string.prototype.trimend: ^1.0.6 + string.prototype.trimstart: ^1.0.6 + typed-array-length: ^1.0.4 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.9 + checksum: 23ff60d42d17a55d150e7bcedbdb065d4077a8b98c436e0e2e1ef4dd532a6d78a56028673de0bd8ed464a43c46ba781c50d9af429b6a17e44dbd14c7d7fb7926 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.1": + version: 2.0.1 + resolution: "es-set-tostringtag@npm:2.0.1" + dependencies: + get-intrinsic: ^1.1.3 + has: ^1.0.3 + has-tostringtag: ^1.0.0 + checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 + languageName: node + linkType: hard + "es-shim-unscopables@npm:^1.0.0": version: 1.0.0 resolution: "es-shim-unscopables@npm:1.0.0" @@ -3317,217 +3566,80 @@ __metadata: languageName: node linkType: hard -"esbuild-android-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-android-64@npm:0.15.7" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-android-arm64@npm:0.15.7" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-darwin-64@npm:0.15.7" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-darwin-arm64@npm:0.15.7" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-freebsd-64@npm:0.15.7" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-freebsd-arm64@npm:0.15.7" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-32@npm:0.15.7" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-64@npm:0.15.7" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-arm64@npm:0.15.7" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-arm@npm:0.15.7" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-mips64le@npm:0.15.7" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-ppc64le@npm:0.15.7" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-riscv64@npm:0.15.7" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-linux-s390x@npm:0.15.7" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-netbsd-64@npm:0.15.7" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-openbsd-64@npm:0.15.7" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-sunos-64@npm:0.15.7" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-windows-32@npm:0.15.7" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-windows-64@npm:0.15.7" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild-windows-arm64@npm:0.15.7" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:0.15.7": - version: 0.15.7 - resolution: "esbuild@npm:0.15.7" - dependencies: - "@esbuild/linux-loong64": 0.15.7 - esbuild-android-64: 0.15.7 - esbuild-android-arm64: 0.15.7 - esbuild-darwin-64: 0.15.7 - esbuild-darwin-arm64: 0.15.7 - esbuild-freebsd-64: 0.15.7 - esbuild-freebsd-arm64: 0.15.7 - esbuild-linux-32: 0.15.7 - esbuild-linux-64: 0.15.7 - esbuild-linux-arm: 0.15.7 - esbuild-linux-arm64: 0.15.7 - esbuild-linux-mips64le: 0.15.7 - esbuild-linux-ppc64le: 0.15.7 - esbuild-linux-riscv64: 0.15.7 - esbuild-linux-s390x: 0.15.7 - esbuild-netbsd-64: 0.15.7 - esbuild-openbsd-64: 0.15.7 - esbuild-sunos-64: 0.15.7 - esbuild-windows-32: 0.15.7 - esbuild-windows-64: 0.15.7 - esbuild-windows-arm64: 0.15.7 +"esbuild@npm:0.17.0": + version: 0.17.0 + resolution: "esbuild@npm:0.17.0" + dependencies: + "@esbuild/android-arm": 0.17.0 + "@esbuild/android-arm64": 0.17.0 + "@esbuild/android-x64": 0.17.0 + "@esbuild/darwin-arm64": 0.17.0 + "@esbuild/darwin-x64": 0.17.0 + "@esbuild/freebsd-arm64": 0.17.0 + "@esbuild/freebsd-x64": 0.17.0 + "@esbuild/linux-arm": 0.17.0 + "@esbuild/linux-arm64": 0.17.0 + "@esbuild/linux-ia32": 0.17.0 + "@esbuild/linux-loong64": 0.17.0 + "@esbuild/linux-mips64el": 0.17.0 + "@esbuild/linux-ppc64": 0.17.0 + "@esbuild/linux-riscv64": 0.17.0 + "@esbuild/linux-s390x": 0.17.0 + "@esbuild/linux-x64": 0.17.0 + "@esbuild/netbsd-x64": 0.17.0 + "@esbuild/openbsd-x64": 0.17.0 + "@esbuild/sunos-x64": 0.17.0 + "@esbuild/win32-arm64": 0.17.0 + "@esbuild/win32-ia32": 0.17.0 + "@esbuild/win32-x64": 0.17.0 dependenciesMeta: - "@esbuild/linux-loong64": + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": optional: true - esbuild-android-64: + "@esbuild/android-x64": optional: true - esbuild-android-arm64: + "@esbuild/darwin-arm64": optional: true - esbuild-darwin-64: + "@esbuild/darwin-x64": optional: true - esbuild-darwin-arm64: + "@esbuild/freebsd-arm64": optional: true - esbuild-freebsd-64: + "@esbuild/freebsd-x64": optional: true - esbuild-freebsd-arm64: + "@esbuild/linux-arm": optional: true - esbuild-linux-32: + "@esbuild/linux-arm64": optional: true - esbuild-linux-64: + "@esbuild/linux-ia32": optional: true - esbuild-linux-arm: + "@esbuild/linux-loong64": optional: true - esbuild-linux-arm64: + "@esbuild/linux-mips64el": optional: true - esbuild-linux-mips64le: + "@esbuild/linux-ppc64": optional: true - esbuild-linux-ppc64le: + "@esbuild/linux-riscv64": optional: true - esbuild-linux-riscv64: + "@esbuild/linux-s390x": optional: true - esbuild-linux-s390x: + "@esbuild/linux-x64": optional: true - esbuild-netbsd-64: + "@esbuild/netbsd-x64": optional: true - esbuild-openbsd-64: + "@esbuild/openbsd-x64": optional: true - esbuild-sunos-64: + "@esbuild/sunos-x64": optional: true - esbuild-windows-32: + "@esbuild/win32-arm64": optional: true - esbuild-windows-64: + "@esbuild/win32-ia32": optional: true - esbuild-windows-arm64: + "@esbuild/win32-x64": optional: true bin: esbuild: bin/esbuild - checksum: 54ddaa6cf96798d817861b4f68cb8d176075dc09b6e0ed511c57e5db6fd86d2c673ac2ec631ad9b11678d58ad4a77cd6b7a3853b9c6eac29b7f5c6d38e42f92e + checksum: eabf1d3d9230b1367edbdd24c89a35f60861c120377844af9f8daa084133f4dfc43697484b14e92a209d2055c8903fdf2b43fee8dbabd7d1fbcd7031639fca9e languageName: node linkType: hard @@ -3552,57 +3664,62 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.5.0": - version: 8.5.0 - resolution: "eslint-config-prettier@npm:8.5.0" +"eslint-config-prettier@npm:^8.6.0": + version: 8.6.0 + resolution: "eslint-config-prettier@npm:8.6.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 0d0f5c32e7a0ad91249467ce71ca92394ccd343178277d318baf32063b79ea90216f4c81d1065d60f96366fdc60f151d4d68ae7811a58bd37228b84c2083f893 + checksum: ff0d0dfc839a556355422293428637e8d35693de58dabf8638bf0b6529131a109d0b2ade77521aa6e54573bb842d7d9d322e465dd73dd61c7590fa3834c3fa81 languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" +"eslint-import-resolver-node@npm:^0.3.7": + version: 0.3.7 + resolution: "eslint-import-resolver-node@npm:0.3.7" dependencies: debug: ^3.2.7 - resolve: ^1.20.0 - checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 + is-core-module: ^2.11.0 + resolve: ^1.22.1 + checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.3": - version: 2.7.3 - resolution: "eslint-module-utils@npm:2.7.3" +"eslint-module-utils@npm:^2.7.4": + version: 2.7.4 + resolution: "eslint-module-utils@npm:2.7.4" dependencies: debug: ^3.2.7 - find-up: ^2.1.0 - checksum: 77048263f309167a1e6a1e1b896bfb5ddd1d3859b2e2abbd9c32c432aee13d610d46e6820b1ca81b37fba437cf423a404bc6649be64ace9148a3062d1886a678 + peerDependenciesMeta: + eslint: + optional: true + checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 languageName: node linkType: hard -"eslint-plugin-import@npm:^2.26.0": - version: 2.26.0 - resolution: "eslint-plugin-import@npm:2.26.0" +"eslint-plugin-import@npm:^2.27.4": + version: 2.27.4 + resolution: "eslint-plugin-import@npm:2.27.4" dependencies: - array-includes: ^3.1.4 - array.prototype.flat: ^1.2.5 - debug: ^2.6.9 + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + array.prototype.flatmap: ^1.3.0 + debug: ^3.2.7 doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.6 - eslint-module-utils: ^2.7.3 + eslint-import-resolver-node: ^0.3.7 + eslint-module-utils: ^2.7.4 has: ^1.0.3 - is-core-module: ^2.8.1 + is-core-module: ^2.11.0 is-glob: ^4.0.3 minimatch: ^3.1.2 - object.values: ^1.1.5 - resolve: ^1.22.0 + object.values: ^1.1.6 + resolve: ^1.22.1 + semver: ^6.3.0 tsconfig-paths: ^3.14.1 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 + checksum: e298a9b1fde6d86737520c7da1d851d1facbf1883e29eddfd374a813eb05a647108c072d5c852b6bf535886c435a419f2fee1d6ae3a324d6f7877d957a796e37 languageName: node linkType: hard @@ -3669,12 +3786,12 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.27.0": - version: 8.27.0 - resolution: "eslint@npm:8.27.0" +"eslint@npm:^8.32.0": + version: 8.32.0 + resolution: "eslint@npm:8.32.0" dependencies: - "@eslint/eslintrc": ^1.3.3 - "@humanwhocodes/config-array": ^0.11.6 + "@eslint/eslintrc": ^1.4.1 + "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 @@ -3693,7 +3810,7 @@ __metadata: file-entry-cache: ^6.0.1 find-up: ^5.0.0 glob-parent: ^6.0.2 - globals: ^13.15.0 + globals: ^13.19.0 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 import-fresh: ^3.0.0 @@ -3714,7 +3831,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 153b022d309e1b647a73b1bb0fa98912add699b06e279084155f23c6f2b5fc5abd05411fc1ba81608a24bbfaf044ca079544c16fffa6fc987b8f676c9960a2c4 + checksum: 23c8fb3c57291eecd9c1448faf603226a8f885022a2cd96e303459bf72e39b7f54987c6fb948f0f9eecaf7085600e6eb0663482a35ea83da12e9f9141a22b91e languageName: node linkType: hard @@ -4017,15 +4134,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd - languageName: node - linkType: hard - "find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -4083,6 +4191,15 @@ __metadata: languageName: node linkType: hard +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + "format@npm:^0.2.0": version: 0.2.2 resolution: "format@npm:0.2.2" @@ -4249,6 +4366,17 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.1.3": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.3 + checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + languageName: node + linkType: hard + "get-stream@npm:^3.0.0": version: 3.0.0 resolution: "get-stream@npm:3.0.0" @@ -4329,12 +4457,21 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.15.0": - version: 13.17.0 - resolution: "globals@npm:13.17.0" +"globals@npm:^13.19.0": + version: 13.19.0 + resolution: "globals@npm:13.19.0" dependencies: type-fest: ^0.20.2 - checksum: fbaf4112e59b92c9f5575e85ce65e9e17c0b82711196ec5f58beb08599bbd92fd72703d6dfc9b080381fd35b644e1b11dcf25b38cc2341ec21df942594cbc8ce + checksum: a000dbd00bcf28f0941d8a29c3522b1c3b8e4bfe4e60e262c477a550c3cbbe8dbe2925a6905f037acd40f9a93c039242e1f7079c76b0fd184bc41dcc3b5c8e2e + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: ^1.1.3 + checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 languageName: node linkType: hard @@ -4352,6 +4489,15 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -4422,6 +4568,13 @@ __metadata: languageName: node linkType: hard +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -4609,10 +4762,10 @@ __metadata: languageName: node linkType: hard -"imagescript@npm:^1.2.9": - version: 1.2.9 - resolution: "imagescript@npm:1.2.9" - checksum: 518fed374b09493e8961f8390b07a2f592a46517d7262f57a9b34c5de0f8ff308bc0cd9cdf9cb7b79bee4948772ce60764484b33102430622d218f514249af32 +"imagescript@npm:^1.2.15": + version: 1.2.15 + resolution: "imagescript@npm:1.2.15" + checksum: 401a1f66648f0bff00519e27fbfedb15a12156769dfd78ee4d5b9cbad6c67cf08fa0579c4d3441cf0e1c562c1ad1956bf797cc737940ce2ccb2e8739d68f649b languageName: node linkType: hard @@ -4647,10 +4800,10 @@ __metadata: languageName: node linkType: hard -"inflection@npm:^1.13.4": - version: 1.13.4 - resolution: "inflection@npm:1.13.4" - checksum: 6744feede9998ad8abd2b1db4af79f494a166e656a0aa949d90c8f4a945c1d07038a3756bf7af78c8f6fce368ba213a7ebf35da3edeffd39f1da0ff465eed6eb +"inflection@npm:^2.0.1": + version: 2.0.1 + resolution: "inflection@npm:2.0.1" + checksum: bb095b495e10a77afc043cc349ae0f7c8c53e4d1fbcd7781111c18d17bde87ce31ea08bd883774bcbb2ff50c301dd4835b5448c80eb50b5e4e080165b6030f3b languageName: node linkType: hard @@ -4714,8 +4867,8 @@ __metadata: dependencies: contentlayer: "workspace:*" remark-mdx-images: ^2.0.0 - typescript: ^4.8.4 - vite: ^3.2.3 + typescript: ^4.9.4 + vite: ^4.0.4 vitest: 0.12.10 languageName: unknown linkType: soft @@ -4731,6 +4884,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.0.4": + version: 1.0.4 + resolution: "internal-slot@npm:1.0.4" + dependencies: + get-intrinsic: ^1.1.3 + has: ^1.0.3 + side-channel: ^1.0.4 + checksum: 8974588d06bab4f675573a3b52975370facf6486df51bc0567a982c7024fa29495f10b76c0d4dc742dd951d1b72024fdc1e31bb0bedf1678dc7aacacaf5a4f73 + languageName: node + linkType: hard + "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -4762,6 +4926,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.1": + version: 3.0.1 + resolution: "is-array-buffer@npm:3.0.1" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-typed-array: ^1.1.10 + checksum: f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -4811,6 +4986,13 @@ __metadata: languageName: node linkType: hard +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + languageName: node + linkType: hard + "is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": version: 1.2.4 resolution: "is-callable@npm:1.2.4" @@ -4829,7 +5011,16 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0": + version: 2.11.0 + resolution: "is-core-module@npm:2.11.0" + dependencies: + has: ^1.0.3 + checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + languageName: node + linkType: hard + +"is-core-module@npm:^2.9.0": version: 2.10.0 resolution: "is-core-module@npm:2.10.0" dependencies: @@ -5032,6 +5223,19 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": + version: 1.1.10 + resolution: "is-typed-array@npm:1.1.10" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + languageName: node + linkType: hard + "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -5151,6 +5355,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.2.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -5254,16 +5465,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 - languageName: node - linkType: hard - "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -6199,6 +6400,18 @@ __metadata: languageName: node linkType: hard +"mlly@npm:^1.0.0, mlly@npm:^1.1.0": + version: 1.1.0 + resolution: "mlly@npm:1.1.0" + dependencies: + acorn: ^8.8.1 + pathe: ^1.0.0 + pkg-types: ^1.0.1 + ufo: ^1.0.1 + checksum: d53147a2f5f83499589c47a00e00df30cbae2e630dfcfdfdeee2b70b49aff6612f2fa13195a1c6268b8f8ecd6064cb9a35febbdf895b2cbfeacdf9a9b3e31493 + languageName: node + linkType: hard + "moment@npm:^2.29.1": version: 2.29.4 resolution: "moment@npm:2.29.4" @@ -6213,13 +6426,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -6282,17 +6488,17 @@ __metadata: version: 0.0.0-use.local resolution: "next-contentlayer-example@workspace:examples/next-contentlayer-example" dependencies: - "@types/react": 18.0.25 + "@types/react": 18.0.26 autoprefixer: ^10.4.13 contentlayer: latest date-fns: 2.29.3 - next: 13.0.2 + next: 13.1.2 next-contentlayer: latest - postcss: ^8.4.18 + postcss: ^8.4.21 react: 18.2.0 react-dom: 18.2.0 - tailwindcss: ^3.2.2 - typescript: 4.8.4 + tailwindcss: ^3.2.4 + typescript: 4.9.4 languageName: unknown linkType: soft @@ -6302,10 +6508,10 @@ __metadata: dependencies: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" - "@types/react": ^18.0.25 - "@types/react-dom": ^18.0.8 - next: ^13.0.2 - typescript: ^4.8.4 + "@types/react": ^18.0.26 + "@types/react-dom": ^18.0.10 + next: ^13.1.2 + typescript: ^4.9.4 peerDependencies: next: ^12 || ^13 react: "*" @@ -6313,29 +6519,28 @@ __metadata: languageName: unknown linkType: soft -"next@npm:13.0.2, next@npm:^13.0.2": - version: 13.0.2 - resolution: "next@npm:13.0.2" - dependencies: - "@next/env": 13.0.2 - "@next/swc-android-arm-eabi": 13.0.2 - "@next/swc-android-arm64": 13.0.2 - "@next/swc-darwin-arm64": 13.0.2 - "@next/swc-darwin-x64": 13.0.2 - "@next/swc-freebsd-x64": 13.0.2 - "@next/swc-linux-arm-gnueabihf": 13.0.2 - "@next/swc-linux-arm64-gnu": 13.0.2 - "@next/swc-linux-arm64-musl": 13.0.2 - "@next/swc-linux-x64-gnu": 13.0.2 - "@next/swc-linux-x64-musl": 13.0.2 - "@next/swc-win32-arm64-msvc": 13.0.2 - "@next/swc-win32-ia32-msvc": 13.0.2 - "@next/swc-win32-x64-msvc": 13.0.2 - "@swc/helpers": 0.4.11 +"next@npm:13.1.2, next@npm:^13.1.2": + version: 13.1.2 + resolution: "next@npm:13.1.2" + dependencies: + "@next/env": 13.1.2 + "@next/swc-android-arm-eabi": 13.1.2 + "@next/swc-android-arm64": 13.1.2 + "@next/swc-darwin-arm64": 13.1.2 + "@next/swc-darwin-x64": 13.1.2 + "@next/swc-freebsd-x64": 13.1.2 + "@next/swc-linux-arm-gnueabihf": 13.1.2 + "@next/swc-linux-arm64-gnu": 13.1.2 + "@next/swc-linux-arm64-musl": 13.1.2 + "@next/swc-linux-x64-gnu": 13.1.2 + "@next/swc-linux-x64-musl": 13.1.2 + "@next/swc-win32-arm64-msvc": 13.1.2 + "@next/swc-win32-ia32-msvc": 13.1.2 + "@next/swc-win32-x64-msvc": 13.1.2 + "@swc/helpers": 0.4.14 caniuse-lite: ^1.0.30001406 postcss: 8.4.14 - styled-jsx: 5.1.0 - use-sync-external-store: 1.2.0 + styled-jsx: 5.1.1 peerDependencies: fibers: ">= 3.1.0" node-sass: ^6.0.0 || ^7.0.0 @@ -6378,7 +6583,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: f6fea2ee34a8c490834cbd7688cfb346337a4dc8530282bf50ee94e20277ad66cb00a614c92c07f8b00832795eaa3a10847f10c8d540789b0b1b1f2914a3b239 + checksum: bc9aedfc70b979bb33a2190adca3719f8b0012d345a1bc44a6efac320ff599de1e39ade7ba7bae8e5f0d57ebcffb8c4ecc8b7da55565be6a59574896568f0685 languageName: node linkType: hard @@ -6549,6 +6754,13 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.12.2": + version: 1.12.3 + resolution: "object-inspect@npm:1.12.3" + checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db + languageName: node + linkType: hard + "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -6568,14 +6780,26 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.5": - version: 1.1.5 - resolution: "object.values@npm:1.1.5" +"object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - checksum: 0f17e99741ebfbd0fa55ce942f6184743d3070c61bd39221afc929c8422c4907618c8da694c6915bc04a83ab3224260c779ba37fc07bb668bdc5f33b66a902a4 + define-properties: ^1.1.4 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6": + version: 1.1.6 + resolution: "object.values@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e languageName: node linkType: hard @@ -6597,10 +6821,10 @@ __metadata: languageName: node linkType: hard -"oo-ascii-tree@npm:^1.70.0": - version: 1.70.0 - resolution: "oo-ascii-tree@npm:1.70.0" - checksum: 0fc42841f68edf25e3c65da48c86328a3937c17ded7ad5d28e2f32e09b3e3043bfb42a6c166fe704c793782f1d00244b64b6275794b942965134fe3e4bf788d9 +"oo-ascii-tree@npm:^1.73.0": + version: 1.73.0 + resolution: "oo-ascii-tree@npm:1.73.0" + checksum: 76d09efebe7ae467c436f6ad14045959b1810ed71246f77e77d4bee413d96ae7ba6a96264644d2319471869f430c492ac5d90b18d5aa5b8ec995f51d43bde83a languageName: node linkType: hard @@ -6665,15 +6889,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd - languageName: node - linkType: hard - "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -6692,15 +6907,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 - languageName: node - linkType: hard - "p-locate@npm:^4.1.0": version: 4.1.0 resolution: "p-locate@npm:4.1.0" @@ -6742,13 +6948,6 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -6803,13 +7002,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -6852,6 +7044,20 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^0.2.0": + version: 0.2.0 + resolution: "pathe@npm:0.2.0" + checksum: 9a8149ce152088f30d15b0b03a7c128ba21f16b4dc1f3f90fe38eee9f6d0f1d6da8e4e47bd2a4f9e14aaac7c30ed01cfc86216479011de2bdc598b65e6f19f41 + languageName: node + linkType: hard + +"pathe@npm:^1.0.0": + version: 1.0.0 + resolution: "pathe@npm:1.0.0" + checksum: 7b71a4930a5b46111c92149632f74b0e87bade3eabe6c9168dcc4846857a4e124eacc0c2bf044fe0d2a8b7f87ae62b9b2cb11938c61899d485cc36dd1a243a23 + languageName: node + linkType: hard + "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" @@ -6906,6 +7112,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^1.0.1": + version: 1.0.1 + resolution: "pkg-types@npm:1.0.1" + dependencies: + jsonc-parser: ^3.2.0 + mlly: ^1.0.0 + pathe: ^1.0.0 + checksum: fe73cc22fb72ddb09227e2837a7b2ed1e0706a18e69a58a6ce13cde2b7eab122cb98de44d5c54fca5715d203ef3d2eb004b3ec84a3c05decb11e7c49a80fe2f9 + languageName: node + linkType: hard + "postcss-import@npm:^14.1.0": version: 14.1.0 resolution: "postcss-import@npm:14.1.0" @@ -6998,6 +7215,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.20, postcss@npm:^8.4.21": + version: 8.4.21 + resolution: "postcss@npm:8.4.21" + dependencies: + nanoid: ^3.3.4 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679 + languageName: node + linkType: hard + "prebuild-install@npm:^7.1.1": version: 7.1.1 resolution: "prebuild-install@npm:7.1.1" @@ -7048,12 +7276,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.7.1": - version: 2.7.1 - resolution: "prettier@npm:2.7.1" +"prettier@npm:^2.8.3": + version: 2.8.3 + resolution: "prettier@npm:2.8.3" bin: prettier: bin-prettier.js - checksum: 55a4409182260866ab31284d929b3cb961e5fdb91fe0d2e099dac92eaecec890f36e524b4c19e6ceae839c99c6d7195817579cdffc8e2c80da0cb794463a748b + checksum: 92f2ceb522d454370e02082aa74ad27388672f7cee8975028b59517c069fe643bdc73e322675c8faf2ff173d7a626d1a6389f26b474000308e793aa25fff46e5 languageName: node linkType: hard @@ -7446,7 +7674,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": +"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.19.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -7459,7 +7687,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" dependencies: @@ -7528,9 +7756,9 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^2.79.1": - version: 2.79.1 - resolution: "rollup@npm:2.79.1" +"rollup@npm:^3.7.0": + version: 3.10.0 + resolution: "rollup@npm:3.10.0" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -7538,7 +7766,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 6a2bf167b3587d4df709b37d149ad0300692cc5deb510f89ac7bdc77c8738c9546ae3de9322b0968e1ed2b0e984571f5f55aae28fa7de4cfcb1bc5402a4e2be6 + checksum: 31a882689c58d084ac36362aeaf2422dc4b80d671bd88c856693c37d63a26ddac9b9819dfba7f79c2d50d5207868b0e3d75f728fe551bbc347cf5dedf8ece18e languageName: node linkType: hard @@ -7583,6 +7811,17 @@ __metadata: languageName: node linkType: hard +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-regex: ^1.1.4 + checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -7618,6 +7857,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.3.0": + version: 6.3.0 + resolution: "semver@npm:6.3.0" + bin: + semver: ./bin/semver.js + checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + languageName: node + linkType: hard + "semver@npm:^7.3.5, semver@npm:^7.3.7": version: 7.3.7 resolution: "semver@npm:7.3.7" @@ -7647,9 +7895,9 @@ __metadata: languageName: node linkType: hard -"sharp@npm:^0.31.2": - version: 0.31.2 - resolution: "sharp@npm:0.31.2" +"sharp@npm:^0.31.3": + version: 0.31.3 + resolution: "sharp@npm:0.31.3" dependencies: color: ^4.2.3 detect-libc: ^2.0.1 @@ -7660,7 +7908,7 @@ __metadata: simple-get: ^4.0.1 tar-fs: ^2.1.1 tunnel-agent: ^0.6.0 - checksum: 076717b7a073ea47bb522ff2931b74b6608daeb6f7ae334e4848d47fdf4d23bcb18cd49044fd5fb27ef27a1a4aa87d141894d67d1c4bb15a6e2e63cf4dbe329e + checksum: 29fd1dfbc616c6389f53f366cec342b4353d9f2a37e98952ca273db38dca57dfa0f336322d6d763f0fae876042ead22fd86ffe26d70c32ade2458d421db60d04 languageName: node linkType: hard @@ -7720,6 +7968,13 @@ __metadata: languageName: node linkType: hard +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -7843,7 +8098,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 @@ -7917,6 +8172,13 @@ __metadata: languageName: node linkType: hard +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + "stream-transform@npm:^2.1.3": version: 2.1.3 resolution: "stream-transform@npm:2.1.3" @@ -7958,6 +8220,17 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimend@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimend@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + languageName: node + linkType: hard + "string.prototype.trimstart@npm:^1.0.5": version: 1.0.5 resolution: "string.prototype.trimstart@npm:1.0.5" @@ -7969,6 +8242,17 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimstart@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimstart@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + languageName: node + linkType: hard + "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -8050,12 +8334,12 @@ __metadata: languageName: node linkType: hard -"strip-literal@npm:^0.4.2": - version: 0.4.2 - resolution: "strip-literal@npm:0.4.2" +"strip-literal@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-literal@npm:1.0.0" dependencies: - acorn: ^8.8.0 - checksum: 831cdcaba61bc82c14ef5ca423a64bb8044b3b128abd15dff454d3fd05b0dbc7b4403760a7a636923d3c2e71a8e65174cef28ee9aef61f9a66819f865da4fdda + acorn: ^8.8.1 + checksum: ada9b60f322ce3e3fd167b65a186ab77a8c76b8f9074dcdbad4c1a810b46f21c9dca30d4d807e98af580cbe99bfbccd6d8176f69183a454ae2868d8ddd6d4f88 languageName: node linkType: hard @@ -8068,9 +8352,9 @@ __metadata: languageName: node linkType: hard -"styled-jsx@npm:5.1.0": - version: 5.1.0 - resolution: "styled-jsx@npm:5.1.0" +"styled-jsx@npm:5.1.1": + version: 5.1.1 + resolution: "styled-jsx@npm:5.1.1" dependencies: client-only: 0.0.1 peerDependencies: @@ -8080,7 +8364,7 @@ __metadata: optional: true babel-plugin-macros: optional: true - checksum: e5b70476fd9059147dfe35dd912e537e422a7f900cc88f80456c97da495c655598875d64de2199641d627770a7e55ed08be0fd82646bc386791fdb1d0e5af2b1 + checksum: 523a33b38603492547e861b98e29c873939b04e15fbe5ef16132c6f1e15958126647983c7d4675325038b428a5e91183d996e90141b18bdd1bbadf6e2c45b2fa languageName: node linkType: hard @@ -8109,9 +8393,9 @@ __metadata: languageName: node linkType: hard -"tailwindcss@npm:^3.2.2": - version: 3.2.2 - resolution: "tailwindcss@npm:3.2.2" +"tailwindcss@npm:^3.2.4": + version: 3.2.4 + resolution: "tailwindcss@npm:3.2.4" dependencies: arg: ^5.0.2 chokidar: ^3.5.3 @@ -8141,7 +8425,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 4f29f9d7bed74f70cd90281c4068e20903cbe79949987aae7c6cf197df9c852caa0d9884c19547f55eac09c2468dfe30c25bc8e75482e2654e24ee40d74078f9 + checksum: ec187d180c722ec4f57537f2216c7b21269b525f12aaf353cea464d939c3e6286a1221eb3e1206e45d1f015f296171309ad4d9952899b0245cd07d9500a9401f languageName: node linkType: hard @@ -8340,9 +8624,9 @@ __metadata: languageName: node linkType: hard -"ts-patch@npm:^2.0.2": - version: 2.0.2 - resolution: "ts-patch@npm:2.0.2" +"ts-patch@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-patch@npm:2.1.0" dependencies: chalk: ^4.1.2 glob: ^8.0.3 @@ -8355,14 +8639,14 @@ __metadata: typescript: ">=4.0.0" bin: ts-patch: bin/cli.js - checksum: 5db52fc32311ce8a7f23136eb304011a509841e07746dd8358a4429413ccf92f335fd250dd9db1c6f30b87b615bfa574fa8645043ed08dad716b9a175f432e23 + checksum: 05ab14bb3552b0264c61751009f6a78f5d95b6c695e4bfd8183e7666a617e6ec9653e12a0453a0abc623591a56fd0c0f0c9c590b87be5b177332429db97cbfd1 languageName: node linkType: hard -"ts-pattern@npm:^4.0.5": - version: 4.0.5 - resolution: "ts-pattern@npm:4.0.5" - checksum: b1ecf36afb567ee6adbaee6e885e51775b1a390ed528589ae3bcb1e376412ed0774b54495ffca7be2a324e75268f894d34379b84388930485cf1359b30d5bc8b +"ts-pattern@npm:^4.1.3": + version: 4.1.3 + resolution: "ts-pattern@npm:4.1.3" + checksum: a9462aa0e503dcf8fd1a8d648b02315276f644711bf1c7564a1185cd8b78a7b84fa9bc4f9ecdbb0fd88692c74a28f03e5af1898066d5f3b8744a87508d6a457b languageName: node linkType: hard @@ -8500,30 +8784,48 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^3.2.0": - version: 3.2.0 - resolution: "type-fest@npm:3.2.0" - checksum: 2668b62e8df6ae39074c93cb1e2c267c5f8a16d0d1bb693e71f2ea0b80da14eca5442edbcc5609d1099c49a4aaecda960d7fede3d3253b4126d2c6dfeb41b8c3 +"type-fest@npm:^3.5.2": + version: 3.5.2 + resolution: "type-fest@npm:3.5.2" + checksum: 39411ad25610fd5542b3bc1a3381bfc24a7cd3d422f52e5aa9a0580fd7c8a60140c332ef585637e05117f3e0b7267dbd510e15e13f3dd8ce98fd29fba9c3479f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + is-typed-array: ^1.1.9 + checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 languageName: node linkType: hard -"typescript@npm:4.8.4, typescript@npm:^4.8.4": - version: 4.8.4 - resolution: "typescript@npm:4.8.4" +"typescript@npm:4.9.4, typescript@npm:^4.9.4": + version: 4.9.4 + resolution: "typescript@npm:4.9.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 + checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 languageName: node linkType: hard -"typescript@patch:typescript@4.8.4#~builtin, typescript@patch:typescript@^4.8.4#~builtin": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=a1c5e5" +"typescript@patch:typescript@4.9.4#~builtin, typescript@patch:typescript@^4.9.4#~builtin": + version: 4.9.4 + resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 563a0ef47abae6df27a9a3ab38f75fc681f633ccf1a3502b1108e252e187787893de689220f4544aaf95a371a4eb3141e4a337deb9895de5ac3c1ca76430e5f0 + checksum: 37f6e2c3c5e2aa5934b85b0fddbf32eeac8b1bacf3a5b51d01946936d03f5377fe86255d4e5a4ae628fd0cd553386355ad362c57f13b4635064400f3e8e05b9d + languageName: node + linkType: hard + +"ufo@npm:^1.0.1": + version: 1.0.1 + resolution: "ufo@npm:1.0.1" + checksum: 63024876f21b7cc44267255a8043062046d3215e09212bd682787a13ccf1e0c5d23f7686a7f1bc7ac9f34c7e8a88100af234f42b509db50f17ce638af6ac87cc languageName: node linkType: hard @@ -8697,15 +8999,6 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -8797,6 +9090,24 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:0.27.1": + version: 0.27.1 + resolution: "vite-node@npm:0.27.1" + dependencies: + cac: ^6.7.14 + debug: ^4.3.4 + mlly: ^1.1.0 + pathe: ^0.2.0 + picocolors: ^1.0.0 + source-map: ^0.6.1 + source-map-support: ^0.5.21 + vite: ^3.0.0 || ^4.0.0 + bin: + vite-node: vite-node.mjs + checksum: 1cd6b40395365e30edaf926b7cfec03230c92a99ee6565c79b3b2ac9b35863843ad2f24536e80c1f816b49fae55e7ab9dabf3a40fe61ea65d4d5e4774b0f60af + languageName: node + linkType: hard + "vite@npm:^2.9.9": version: 2.9.14 resolution: "vite@npm:2.9.14" @@ -8826,15 +9137,15 @@ __metadata: languageName: node linkType: hard -"vite@npm:^3.0.0, vite@npm:^3.2.3": - version: 3.2.3 - resolution: "vite@npm:3.2.3" +"vite@npm:^3.0.0 || ^4.0.0, vite@npm:^4.0.4": + version: 4.0.4 + resolution: "vite@npm:4.0.4" dependencies: - esbuild: ^0.15.9 + esbuild: ^0.16.3 fsevents: ~2.3.2 - postcss: ^8.4.18 + postcss: ^8.4.20 resolve: ^1.22.1 - rollup: ^2.79.1 + rollup: ^3.7.0 peerDependencies: "@types/node": ">= 14" less: "*" @@ -8860,7 +9171,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 3c7c618f7fb471cdfaf7f8eb769cb5f4174447e1103cd6221cbc2ae1ea1102bc28dd6a621ead250e6aa42c1e9ee3c8092666ea81078e1d88d2325c484218fd0a + checksum: eb86c8cdfe8dcb6644005486b31cb60bc596f2aa683cb194abb5c0afca7c2a5dfdb02bbc7f83f419ad170227ac9c3b898f4406a6d1433105fb61d79d78e47d52 languageName: node linkType: hard @@ -8896,21 +9207,28 @@ __metadata: languageName: node linkType: hard -"vitest@npm:0.24.5": - version: 0.24.5 - resolution: "vitest@npm:0.24.5" +"vitest@npm:0.27.1": + version: 0.27.1 + resolution: "vitest@npm:0.27.1" dependencies: - "@types/chai": ^4.3.3 + "@types/chai": ^4.3.4 "@types/chai-subset": ^1.3.3 "@types/node": "*" - chai: ^4.3.6 + acorn: ^8.8.1 + acorn-walk: ^8.2.0 + cac: ^6.7.14 + chai: ^4.3.7 debug: ^4.3.4 local-pkg: ^0.4.2 - strip-literal: ^0.4.2 + picocolors: ^1.0.0 + source-map: ^0.6.1 + strip-literal: ^1.0.0 tinybench: ^2.3.1 tinypool: ^0.3.0 tinyspy: ^1.0.2 - vite: ^3.0.0 + vite: ^3.0.0 || ^4.0.0 + vite-node: 0.27.1 + why-is-node-running: ^2.2.2 peerDependencies: "@edge-runtime/vm": "*" "@vitest/browser": "*" @@ -8930,7 +9248,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 801d153082ec9d237d8720783dc939aa8c8a4cdd71625ddac997f99a98664b055a0e3efbcb3af648d44f0b8b80c014d48150b2c281870023628c1bdffa336d08 + checksum: 635b83429c74db4b9e10954ffd7eb21c9927fc83ea4c53e935cf2d8d15636b07b7482fa0c9469a32248da6570bdabfee08b9bc3b57d7b2a52861533115f9c8bc languageName: node linkType: hard @@ -8997,6 +9315,20 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.9": + version: 1.1.9 + resolution: "which-typed-array@npm:1.1.9" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + is-typed-array: ^1.1.10 + checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef + languageName: node + linkType: hard + "which@npm:^1.2.9, which@npm:^1.3.1": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -9019,6 +9351,18 @@ __metadata: languageName: node linkType: hard +"why-is-node-running@npm:^2.2.2": + version: 2.2.2 + resolution: "why-is-node-running@npm:2.2.2" + dependencies: + siginfo: ^2.0.0 + stackback: 0.0.2 + bin: + why-is-node-running: cli.js + checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a + languageName: node + linkType: hard + "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -9187,10 +9531,10 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.19.1": - version: 3.19.1 - resolution: "zod@npm:3.19.1" - checksum: 56e420ea5845912324a8fc61833714a2aec84954e418b52660d76502183c6e62fef9447cbfa64349640c5ce190cf2c24267e006bb80f066183e2f3fa9fe11864 +"zod@npm:^3.20.2": + version: 3.20.2 + resolution: "zod@npm:3.20.2" + checksum: 04172f7e9350372684ccd298d4716908edc9113751295b6c4e1b3ea84e2af8997e504b33ba36f4741417bb2a5dc90bfd40501f6b0e7389df10e42a63d6d8366c languageName: node linkType: hard From 2cd1c4c4f2d6233cc9fad6ecc3782d7c4f3e3f36 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 10:46:26 +0100 Subject: [PATCH 10/19] fix linting --- .../source-files/src/fetchData/mapping/parseFieldData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts b/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts index b9ff56b5..1987bc25 100644 --- a/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts +++ b/packages/@contentlayer/source-files/src/fetchData/mapping/parseFieldData.ts @@ -36,7 +36,7 @@ const codecMap = { reference_polymorphic: zod.string(), } -export type ParsedFieldData = zod.infer +export type ParsedFieldData = zod.infer<(typeof codecMap)[TFieldType]> export const parseFieldData = ({ rawData, From fd9268a61d20a64b12c6d13df551acd721073fb1 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 15:01:49 +0100 Subject: [PATCH 11/19] upgrade esbuild version + fix watch mode --- .vscode/operators.code-snippets | 5 + .../cli/src/commands/DevCommand.ts | 4 +- packages/@contentlayer/core/package.json | 4 +- .../core/src/getConfig/esbuild.ts | 121 ++++++++++++------ .../@contentlayer/utils/src/effect/Effect.ts | 4 + packages/@contentlayer/utils/src/effect/OT.ts | 59 +++++++++ .../@contentlayer/utils/src/effect/index.ts | 2 +- 7 files changed, 157 insertions(+), 42 deletions(-) create mode 100644 packages/@contentlayer/utils/src/effect/OT.ts diff --git a/.vscode/operators.code-snippets b/.vscode/operators.code-snippets index c7db6c85..e38eb48c 100644 --- a/.vscode/operators.code-snippets +++ b/.vscode/operators.code-snippets @@ -9,6 +9,11 @@ "body": ["function* ($) {}"], "description": "Generator FUnction with $ input" }, + "Gen Yield * tmp": { + "prefix": "yy", + "body": ["yield* $($0)"], + "description": "Yield generator calling $()" + }, "Gen Yield *": { "prefix": "!", "body": ["yield* $($0)"], diff --git a/packages/@contentlayer/cli/src/commands/DevCommand.ts b/packages/@contentlayer/cli/src/commands/DevCommand.ts index d6fe4e7a..63db97ec 100644 --- a/packages/@contentlayer/cli/src/commands/DevCommand.ts +++ b/packages/@contentlayer/cli/src/commands/DevCommand.ts @@ -1,6 +1,6 @@ import * as core from '@contentlayer/core' import { errorToString } from '@contentlayer/utils' -import { E, pipe, S, T } from '@contentlayer/utils/effect' +import { E, OT, pipe, S, T } from '@contentlayer/utils/effect' import type { Usage } from 'clipanion' import { BaseCommand } from './_BaseCommand.js' @@ -31,6 +31,8 @@ export class DevCommand extends BaseCommand { core.generateDotpkgStream({ config, verbose: this.verbose, isDev: true }), ), S.tap(E.fold((error) => T.log(errorToString(error)), core.logGenerateInfo)), + OT.withStreamSpan('@contentlayer/cli/commands/DevCommand:stream'), S.runDrain, + OT.withSpan('@contentlayer/cli/commands/DevCommand:executeSafe'), ) } diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index 2187da8d..18521f2f 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -13,7 +13,7 @@ "test": "echo No tests yet" }, "peerDependencies": { - "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x", + "esbuild": "0.17.x", "markdown-wasm": "1.x" }, "peerDependenciesMeta": { @@ -28,7 +28,7 @@ "@contentlayer/utils": "workspace:*", "camel-case": "^4.1.2", "comment-json": "^4.2.3", - "esbuild": "^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x", + "esbuild": "0.17.x", "gray-matter": "^4.0.3", "mdx-bundler": "^9.2.1", "rehype-stringify": "^9.0.3", diff --git a/packages/@contentlayer/core/src/getConfig/esbuild.ts b/packages/@contentlayer/core/src/getConfig/esbuild.ts index cbfba9be..4549be2d 100644 --- a/packages/@contentlayer/core/src/getConfig/esbuild.ts +++ b/packages/@contentlayer/core/src/getConfig/esbuild.ts @@ -18,7 +18,9 @@ export class UnknownEsbuildError extends Tagged('UnknownEsbuildError')<{ readonl toString = () => `UnknownEsbuildError: ${errorToString(this.error)}` } -export class KnownEsbuildError extends Tagged('KnownEsbuildError')<{ readonly error: esbuild.BuildFailure }> { +export class KnownEsbuildError extends Tagged('KnownEsbuildError')<{ + readonly error: esbuild.Message | esbuild.Message[] +}> { toString = () => `KnownEsbuildError: ${JSON.stringify(this.error, null, 2)}` } @@ -27,46 +29,90 @@ class ConcreteEsbuildWatcher implements EsbuildWatcher { constructor( private initialBuildResult: Ref.Ref>, + private buildContext: Ref.Ref>, public buildOptions: esbuild.BuildOptions, private fsEventsHub: H.Hub>>, // public readonly paths: readonly string[], // public readonly options?: Chokidar.WatchOptions ) {} shutdown: T.Effect = pipe( - this.initialBuildResult, - Ref.get, - T.chain((initialBuildResult) => { - if (O.isSome(initialBuildResult)) { - return T.tryCatch( - () => initialBuildResult.value.stop!(), - (error) => new UnknownEsbuildError({ error }), - ) - } - console.log(`This shouldn't happen. Seems like esbuild watcher wasn't running (yet).`) - return T.unit - }), + Ref.get(this.buildContext), + T.chain((buildContext) => + T.tryPromise(async () => { + if (O.isSome(buildContext)) { + return buildContext.value.dispose() + } else { + throw new Error(`This should never happen. Esbuild build context is not set.`) + } + }), + ), T.catchAll((_) => T.unit), ) start: T.Effect = pipe( - T.tryCatchPromise( - () => - esbuild.build({ - ...this.buildOptions, - watch: { - onRebuild: (error, result) => { - if (error) { - T.run(H.publish_(this.fsEventsHub, Ex.succeed(E.left(new KnownEsbuildError({ error }))))) + T.suspend(() => { + const { fsEventsHub, buildOptions, initialBuildResult } = this + const self = this // eslint-disable-line @typescript-eslint/no-this-alias + return T.gen(function* ($) { + const runtime = yield* $(T.runtime()) + + const buildWatchPlugin: esbuild.Plugin = { + name: 'contentlayer-watch-plugin', + setup(build) { + let isFirstBuild = false + + build.onEnd((result) => { + runtime.runFiber(OT.addEvent('esbuild-build-result', { result: JSON.stringify(result) })) + + if (isFirstBuild) { + isFirstBuild = false } else { - T.run(H.publish_(this.fsEventsHub, Ex.succeed(E.right(result!)))) + if (result.errors.length > 0) { + runtime.runFiber( + H.publish_(fsEventsHub, Ex.succeed(E.left(new KnownEsbuildError({ error: result.errors })))), + ) + } else { + runtime.runFiber(H.publish_(fsEventsHub, Ex.succeed(E.right(result!)))) + } } - }, + }) }, - }), - (error) => new UnknownEsbuildError({ error }), - ), - OT.withSpan('esbuild', { attributes: { buildOptions: JSON.stringify(this.buildOptions) } }), - T.tap((initialBuildResult) => Ref.set_(this.initialBuildResult, O.some(initialBuildResult))), - T.tap((initialBuildResult) => H.publish_(this.fsEventsHub, Ex.succeed(E.right(initialBuildResult)))), + } + + const buildContext = yield* $( + T.tryCatchPromise( + () => + esbuild.context({ + ...buildOptions, + plugins: [buildWatchPlugin, ...(buildOptions.plugins ?? [])], + }), + (error) => new UnknownEsbuildError({ error }), + ), + ) + + yield* $(Ref.set_(self.buildContext, O.some(buildContext))) + + yield* $( + T.tryCatchPromise( + // TODO remove `async` once `watch()` returns a Promise (bug in esbuild) + async () => buildContext.watch(), + (error) => new UnknownEsbuildError({ error }), + ), + ) + + yield* $( + pipe( + T.tryCatchPromise( + () => buildContext.rebuild(), + (error) => new UnknownEsbuildError({ error }), + ), + T.tap((res) => Ref.set_(initialBuildResult, O.some(res))), + T.tap((res) => H.publish_(fsEventsHub, Ex.succeed(E.right(res)))), + OT.withSpan('esbuild:initial-rebuild'), + ), + ) + }) + }), + OT.withSpan('esbuild:start', { attributes: { buildOptions: JSON.stringify(this.buildOptions) } }), T.catchAll((error) => H.publish_(this.fsEventsHub, Ex.succeed(E.left(error)))), ) @@ -82,14 +128,13 @@ function concrete(esbuildWatcher: EsbuildWatcher): asserts esbuildWatcher is Con } export const make = (buildOptions: esbuild.BuildOptions): T.Effect => - pipe( - Ref.makeRef>(O.none), - T.zip(H.makeUnbounded>>()), - T.chain(({ tuple: [initialBuildResult, hub] }) => - T.succeedWith(() => new ConcreteEsbuildWatcher(initialBuildResult, buildOptions, hub)), - ), - // T.tap((_) => _.start), - ) + T.gen(function* ($) { + const initialBuildResult = yield* $(Ref.makeRef>(O.none)) + const hub = yield* $(H.makeUnbounded>>()) + const buildContext = yield* $(Ref.makeRef>(O.none)) + + return new ConcreteEsbuildWatcher(initialBuildResult, buildContext, buildOptions, hub) + }) export const subscribe = ( self: EsbuildWatcher, @@ -99,7 +144,7 @@ export const subscribe = ( return self.subscribe } -export const start = (self: EsbuildWatcher): T.Effect => { +const start = (self: EsbuildWatcher): T.Effect => { concrete(self) return self.start diff --git a/packages/@contentlayer/utils/src/effect/Effect.ts b/packages/@contentlayer/utils/src/effect/Effect.ts index b8206f3f..bafc426a 100644 --- a/packages/@contentlayer/utils/src/effect/Effect.ts +++ b/packages/@contentlayer/utils/src/effect/Effect.ts @@ -31,6 +31,10 @@ export const rightOrFail = ( ), ) +export const tryPromiseOrDie = (promise: () => Promise) => pipe(T.tryPromise(promise), T.orDie) + +export const sync = (fn: () => A): T.Effect => T.succeedWith(fn) + export const eitherMap = (mapRight: (a1: A1) => A2) => (effect: T.Effect>, __trace?: string): T.Effect> => diff --git a/packages/@contentlayer/utils/src/effect/OT.ts b/packages/@contentlayer/utils/src/effect/OT.ts new file mode 100644 index 00000000..c42b4b9d --- /dev/null +++ b/packages/@contentlayer/utils/src/effect/OT.ts @@ -0,0 +1,59 @@ +import { Effect as T, Managed as M, Option as O, pipe } from '@effect-ts/core' +import { pretty } from '@effect-ts/core/Effect/Cause/Pretty' +import * as S from '@effect-ts/core/Effect/Experimental/Stream' +import type { Has } from '@effect-ts/core/Has' +import * as OT from '@effect-ts/otel' +import * as OTApi from '@opentelemetry/api' + +export * from '@effect-ts/otel' +export type HasSpan = Has + +export const withStreamSpan = + (name: string, options?: OTApi.SpanOptions, ctx?: OTApi.Context) => + (stream: S.Stream): S.Stream => + pipe( + // NOTE we're using this weird `S.access` + `S.chain` here since `T.access` seems to be buggy + // TODO fix this with Effect 2 🀠 + S.access((r: R & OT.HasTracer) => r), + S.chain((r) => + pipe( + M.gen(function* ($) { + const span = yield* $( + M.makeExit_( + pipe( + T.succeedWith(() => { + const { tracer } = OT.Tracer.read(r) + + const maybeSpan = OT.Span.readOption(r) + if (ctx) { + return tracer.startSpan(name, options, ctx) + } + if (options?.root !== true && O.isSome(maybeSpan)) { + const ctx = OTApi.trace.setSpan(OTApi.context.active(), maybeSpan.value.span) + return tracer.startSpan(name, options, ctx) + } + return tracer.startSpan(name, { ...options, root: true }) + }), + ), + + (s, e) => + T.succeedWith(() => { + if (e._tag === 'Failure') { + s.setAttribute('error.type', 'Fiber Failure') + s.setAttribute('error.message', 'An Effect Has A Failure') + s.setAttribute('error.stack', pretty(e.cause)) + s.setStatus({ code: OTApi.SpanStatusCode.ERROR }) + } else { + s.setStatus({ code: OTApi.SpanStatusCode.OK }) + } + s.end() + }), + ), + ) + + return pipe(stream, S.provideAll({ ...r, ...OT.Span.has(new OT.SpanImpl(span)) })) + }), + S.unwrapManaged, + ), + ), + ) diff --git a/packages/@contentlayer/utils/src/effect/index.ts b/packages/@contentlayer/utils/src/effect/index.ts index 6be488f3..e6ddec45 100644 --- a/packages/@contentlayer/utils/src/effect/index.ts +++ b/packages/@contentlayer/utils/src/effect/index.ts @@ -61,4 +61,4 @@ export * as Q from '@effect-ts/core/Effect/Queue' export * as Ref from '@effect-ts/core/Effect/Ref' -export * as OT from '@effect-ts/otel' +export * as OT from './OT.js' From b2fa8ed6d5bf4edcadaf6cbb169f659249403b82 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 15:05:23 +0100 Subject: [PATCH 12/19] fix yarn.lock file --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index e067b157..2fd29508 100644 --- a/yarn.lock +++ b/yarn.lock @@ -307,7 +307,7 @@ __metadata: "@types/source-map-support": ^0.5.6 camel-case: ^4.1.2 comment-json: ^4.2.3 - esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x + esbuild: 0.17.x gray-matter: ^4.0.3 markdown-wasm: ^1.2.0 mdx-bundler: ^9.2.1 @@ -319,7 +319,7 @@ __metadata: type-fest: ^3.5.2 unified: ^10.1.2 peerDependencies: - esbuild: ^0.12.1 || 0.13.x || 0.14.x || 0.15.x || 0.16.x || 0.17.x + esbuild: 0.17.x markdown-wasm: 1.x peerDependenciesMeta: esbuild: From bb4f4af0f0757656956daa96865674a777a522d3 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Mon, 16 Jan 2023 15:28:08 +0100 Subject: [PATCH 13/19] introduce defineComputedFields & defineFields --- .../@contentlayer/source-files/src/schema/defs/index.ts | 9 ++++++++- .../__test__/fixtures/azimuth-schema/documents/Config.ts | 6 +++--- .../fixtures/azimuth-schema/documents/Landing.ts | 6 +++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/@contentlayer/source-files/src/schema/defs/index.ts b/packages/@contentlayer/source-files/src/schema/defs/index.ts index 75bfe363..6600d7b2 100644 --- a/packages/@contentlayer/source-files/src/schema/defs/index.ts +++ b/packages/@contentlayer/source-files/src/schema/defs/index.ts @@ -108,4 +108,11 @@ export const defineDocumentType = ( def, }) -// export const defineSchema = (_: SchemaDef): SchemaDef => _ +export const defineFields = (fields: TFieldDefs): TFieldDefs => fields + +export const defineComputedFields = < + TDefName extends string, + TComputedFields extends ComputedFields = ComputedFields, +>( + computedFields: TComputedFields, +): TComputedFields => computedFields diff --git a/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Config.ts b/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Config.ts index 3f3b50e6..a26ae432 100644 --- a/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Config.ts +++ b/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Config.ts @@ -1,4 +1,4 @@ -import { defineDocumentType, defineNestedType } from 'contentlayer/source-files' +import { defineDocumentType, defineFields, defineNestedType } from 'contentlayer/source-files' import { Action } from '../nested/Action.js' import { FormField } from '../nested/FormField.js' @@ -142,7 +142,7 @@ const Footer = defineNestedType(() => ({ }, })) -const footerSectionBaseFields = { +const footerSectionBaseFields = defineFields({ title: { type: 'string', label: 'Title', @@ -154,7 +154,7 @@ const footerSectionBaseFields = { required: true, description: 'Needed for contentlayer for polymorphic list types', }, -} as const +}) const footerSectionBaseFieldsExtension = { title: { diff --git a/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Landing.ts b/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Landing.ts index 316130d9..2821181c 100644 --- a/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Landing.ts +++ b/packages/contentlayer-stackbit-yaml-generator/src/__test__/fixtures/azimuth-schema/documents/Landing.ts @@ -1,4 +1,4 @@ -import { defineDocumentType, defineNestedType } from 'contentlayer/source-files' +import { defineDocumentType, defineFields, defineNestedType } from 'contentlayer/source-files' import { Action } from '../nested/Action.js' import { FormField } from '../nested/FormField.js' @@ -52,7 +52,7 @@ export const Landing = defineDocumentType(() => ({ }, })) -const sectionBaseFields = { +const sectionBaseFields = defineFields({ section_id: { type: 'string', description: 'A unique identifier of the section, must not contain whitespace', @@ -66,7 +66,7 @@ const sectionBaseFields = { required: true, description: 'Needed for contentlayer for polymorphic list types', }, -} as const +}) const sectionBaseFieldsExtension = { section_id: { label: 'Section ID' }, From 92626eb0a1727792259614637afcd582f84017dc Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Tue, 17 Jan 2023 11:08:35 +0100 Subject: [PATCH 14/19] new example: node-script-mdx --- .github/workflows/ci.yml | 12 +++++ .../node-script-mdx/contentlayer.config.ts | 47 +++++++++++++++++++ examples/node-script-mdx/my-script.mjs | 3 ++ examples/node-script-mdx/package.json | 10 ++++ examples/node-script-mdx/posts/change-me.mdx | 6 +++ examples/node-script-mdx/posts/click-me.mdx | 6 +++ .../posts/what-is-contentlayer.mdx | 6 +++ .../@contentlayer/core/src/markdown/mdx.ts | 6 +++ yarn.lock | 8 ++++ 9 files changed, 104 insertions(+) create mode 100644 examples/node-script-mdx/contentlayer.config.ts create mode 100644 examples/node-script-mdx/my-script.mjs create mode 100644 examples/node-script-mdx/package.json create mode 100644 examples/node-script-mdx/posts/change-me.mdx create mode 100644 examples/node-script-mdx/posts/click-me.mdx create mode 100644 examples/node-script-mdx/posts/what-is-contentlayer.mdx diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4405c641..7b2ab52f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,3 +51,15 @@ jobs: - run: yarn build - run: yarn start working-directory: examples/node-script + + build-example-node-script-mdx: + strategy: + matrix: + node-version: [14, 16, 17, 18] + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: schickling-actions/checkout-and-install@main + - run: yarn build + - run: yarn start + working-directory: examples/node-script-mdx diff --git a/examples/node-script-mdx/contentlayer.config.ts b/examples/node-script-mdx/contentlayer.config.ts new file mode 100644 index 00000000..2a2db5b6 --- /dev/null +++ b/examples/node-script-mdx/contentlayer.config.ts @@ -0,0 +1,47 @@ +import { defineDocumentType, makeSource } from 'contentlayer/source-files' +import { bundleMDX } from 'mdx-bundler' +import * as ReactDOMServer from 'react-dom/server' +import { getMDXComponent } from 'mdx-bundler/client/index.js' + +const mdxToHtml = async (mdxSource: string) => { + const { code } = await bundleMDX({ source: mdxSource }) + const MDXLayout = getMDXComponent(code) + // TODO add your own components here + const element = MDXLayout({ components: {} })! + const html = ReactDOMServer.renderToString(element) + return html +} + +const Post = defineDocumentType(() => ({ + name: 'Post', + filePathPattern: `**/*.mdx`, + contentType: 'mdx', + fields: { + title: { + type: 'string', + description: 'The title of the post', + required: true, + }, + date: { + type: 'date', + description: 'The date of the post', + required: true, + }, + }, + computedFields: { + url: { + type: 'string', + resolve: (doc) => `/posts/${doc._raw.flattenedPath}`, + }, + mdxHtml: { + type: 'string', + resolve: async (doc) => mdxToHtml(doc.body.raw), + }, + }, +})) + +export default makeSource({ + contentDirPath: 'posts', + documentTypes: [Post], + disableImportAliasWarning: true, +}) diff --git a/examples/node-script-mdx/my-script.mjs b/examples/node-script-mdx/my-script.mjs new file mode 100644 index 00000000..c7dcc04b --- /dev/null +++ b/examples/node-script-mdx/my-script.mjs @@ -0,0 +1,3 @@ +import { allPosts } from './.contentlayer/generated/index.mjs' + +console.log(allPosts) diff --git a/examples/node-script-mdx/package.json b/examples/node-script-mdx/package.json new file mode 100644 index 00000000..50442bfc --- /dev/null +++ b/examples/node-script-mdx/package.json @@ -0,0 +1,10 @@ +{ + "name": "node-script-mdx-example", + "private": true, + "scripts": { + "start": "contentlayer build && node --experimental-json-modules my-script.mjs" + }, + "dependencies": { + "contentlayer": "latest" + } +} diff --git a/examples/node-script-mdx/posts/change-me.mdx b/examples/node-script-mdx/posts/change-me.mdx new file mode 100644 index 00000000..398ddeca --- /dev/null +++ b/examples/node-script-mdx/posts/change-me.mdx @@ -0,0 +1,6 @@ +--- +title: Change me! +date: 2022-03-11 +--- + +When you change a source file, Contentlayer automatically updates the content cache, which prompts Next.js to reload the content on screen. diff --git a/examples/node-script-mdx/posts/click-me.mdx b/examples/node-script-mdx/posts/click-me.mdx new file mode 100644 index 00000000..606cbd32 --- /dev/null +++ b/examples/node-script-mdx/posts/click-me.mdx @@ -0,0 +1,6 @@ +--- +title: Click me! +date: 2022-02-28 +--- + +Blog posts have their own pages. The content source is a markdown file, parsed to HTML by Contentlayer. diff --git a/examples/node-script-mdx/posts/what-is-contentlayer.mdx b/examples/node-script-mdx/posts/what-is-contentlayer.mdx new file mode 100644 index 00000000..07eef20c --- /dev/null +++ b/examples/node-script-mdx/posts/what-is-contentlayer.mdx @@ -0,0 +1,6 @@ +--- +title: What is Contentlayer? +date: 2022-02-22 +--- + +**Contentlayer makes working with content easy.** It is a content preprocessor that validates and transforms your content into type-safe JSON you can easily import into your application. diff --git a/packages/@contentlayer/core/src/markdown/mdx.ts b/packages/@contentlayer/core/src/markdown/mdx.ts index b86802ad..0341a31c 100644 --- a/packages/@contentlayer/core/src/markdown/mdx.ts +++ b/packages/@contentlayer/core/src/markdown/mdx.ts @@ -43,6 +43,11 @@ export const bundleMDX = ({ const getCwd = () => (resolveCwd === 'contentDirPath' ? getCwdFromContentDirPath() : getRelativeCwd()) + // TODO when fixed https://github.com/kentcdodds/mdx-bundler/pull/206 + if (process.env.NODE_ENV === undefined) { + process.env.NODE_ENV = 'development' + } + const mdxOptions: BundleMDXOptions = { mdxOptions: (opts) => { opts.rehypePlugins = [...(opts.rehypePlugins ?? []), ...(rehypePlugins ?? [])] @@ -68,6 +73,7 @@ export const bundleMDX = ({ return res.code }), T.mapError((error) => new UnexpectedMDXError({ error })), + T.tapError(() => OT.addAttribute('mdxString', mdxString)), OT.withSpan('@contentlayer/core/markdown:bundleMDX'), ) diff --git a/yarn.lock b/yarn.lock index 2fd29508..34b951dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6682,6 +6682,14 @@ __metadata: languageName: unknown linkType: soft +"node-script-mdx-example@workspace:examples/node-script-mdx": + version: 0.0.0-use.local + resolution: "node-script-mdx-example@workspace:examples/node-script-mdx" + dependencies: + contentlayer: latest + languageName: unknown + linkType: soft + "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" From 90aaa110d057e4a666fbddcfe3cc04d0beb96059 Mon Sep 17 00:00:00 2001 From: Johannes Schickling Date: Tue, 17 Jan 2023 11:56:24 +0100 Subject: [PATCH 15/19] upgrade stackbit dep --- .../core/src/schema/stackbit-extension.ts | 1 + .../package.json | 4 +- .../__snapshots__/stackbit.spec.ts.snap | 6443 +---------------- .../src/index.ts | 9 +- .../package.json | 2 +- .../src/cli/convert.ts | 9 +- .../src/lib/index.ts | 4 +- yarn.lock | 59 +- 8 files changed, 42 insertions(+), 6489 deletions(-) diff --git a/packages/@contentlayer/core/src/schema/stackbit-extension.ts b/packages/@contentlayer/core/src/schema/stackbit-extension.ts index f288c2a8..34902d7e 100644 --- a/packages/@contentlayer/core/src/schema/stackbit-extension.ts +++ b/packages/@contentlayer/core/src/schema/stackbit-extension.ts @@ -8,6 +8,7 @@ export namespace StackbitExtension { export type Config = { pagesDir?: string dataDir?: string + dirPath?: string } /** Extends a document or object defintion with Stackbit specific properties */ diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index 364bc986..e2f7be86 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -18,7 +18,7 @@ "test": "TZ='GMT' FORCE_COLOR=1 vitest" }, "peerDependencies": { - "@stackbit/sdk": "~0.2.38" + "@stackbit/sdk": "0.3.x" }, "peerDependenciesMeta": { "@stackbit/sdk": { @@ -29,7 +29,7 @@ "@contentlayer/core": "workspace:*", "@contentlayer/source-files": "workspace:*", "@contentlayer/utils": "workspace:*", - "@stackbit/sdk": "~0.2.38" + "@stackbit/sdk": "~0.3.13" }, "devDependencies": { "vite": "^4.0.4", diff --git a/packages/@contentlayer/experimental-source-files-stackbit/src/__test__/__snapshots__/stackbit.spec.ts.snap b/packages/@contentlayer/experimental-source-files-stackbit/src/__test__/__snapshots__/stackbit.spec.ts.snap index 66038e54..4c4f5d16 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/src/__test__/__snapshots__/stackbit.spec.ts.snap +++ b/packages/@contentlayer/experimental-source-files-stackbit/src/__test__/__snapshots__/stackbit.spec.ts.snap @@ -2,6455 +2,24 @@ exports[`kitchen-sink 1`] = ` { - "documentTypeDefMap": { - "data_model_1": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "string_required", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_1", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "referenceSingleToNonDuplicatable", - "type": "reference", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_2", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "referenceSingleToDuplicatable", - "type": "reference", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "data_model_1", - }, - "data_model_2": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": "the default value", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_default", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_1", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "referenceSingleToNonDuplicatable", - "type": "reference", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_2", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "referenceSingleToDuplicatable", - "type": "reference", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "data_model_2", - }, - "page_kitchen_sink": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": undefined, - "description": "Required field, if not specified a validation error will be shown", - "isRequired": true, - "isSystemField": false, - "name": "string_required", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_list", - "of": { - "type": "string", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "color", - "type": "string", - }, - { - "default": undefined, - "description": "Multiline text field, press \\"Shift + Return\\" to add a new line", - "isRequired": false, - "isSystemField": false, - "name": "multiline_text_field", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "markdown_field", - "type": "markdown", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "boolean_field", - "type": "boolean", - }, - { - "default": undefined, - "description": "Integer number, allows only whole numbers", - "isRequired": false, - "isSystemField": false, - "name": "number_integer", - "type": "number", - }, - { - "default": undefined, - "description": "Decimal number, allows fractional numbers", - "isRequired": false, - "isSystemField": false, - "name": "number_float", - "type": "number", - }, - { - "default": undefined, - "description": "Number field with a slider control, min, max, step and unit properties", - "isRequired": false, - "isSystemField": false, - "name": "number_slider", - "type": "number", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "number_list", - "of": { - "type": "number", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "date_field", - "type": "date", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "datetime_field", - "type": "date", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enum_dropdown", - "options": [ - "option_1", - "option_2", - "option_3", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enum_button_group", - "options": [ - "option_1", - "option_2", - "option_3", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enum_palette", - "options": [ - "option-1", - "option-2", - "option-3", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enum_list", - "of": { - "options": [ - "option-1", - "option-2", - "option-3", - ], - "type": "enum", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enum_list_checkbox", - "of": { - "options": [ - "option-1", - "option-2", - "option-3", - ], - "type": "enum", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image_field", - "type": "image", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image_list", - "of": { - "type": "image", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image_cloudinary", - "type": "image", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image_cloudinary_list", - "of": { - "type": "image", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "object_field", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_list", - "of": { - "type": "string", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "object_field", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "string_required", - "type": "string", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "object_list", - "of": { - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - ], - }, - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_single", - "nestedTypeName": "object_model_1", - "type": "nested", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_multiple", - "nestedTypeNames": [ - "object_model_1", - "object_model_2", - ], - "type": "nested_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_1", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "reference_data_single", - "type": "reference", - }, - { - "default": undefined, - "description": undefined, - "documentTypeNames": [ - "data_model_1", - "data_model_2", - ], - "isRequired": false, - "isSystemField": false, - "name": "reference_data_multiple", - "type": "reference_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_single_list", - "of": { - "nestedTypeName": "object_model_1", - "type": "nested", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_multiple_list", - "of": [ - { - "nestedTypeName": "object_model_1", - "type": "nested", - }, - { - "nestedTypeName": "object_model_2", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "object_list", - "of": { - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - ], - }, - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_single", - "nestedTypeName": "object_model_1", - "type": "nested", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_multiple", - "nestedTypeNames": [ - "object_model_1", - "object_model_2", - ], - "type": "nested_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_single_list", - "of": { - "nestedTypeName": "object_model_1", - "type": "nested", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "model_multiple_list", - "of": [ - { - "nestedTypeName": "object_model_1", - "type": "nested", - }, - { - "nestedTypeName": "object_model_2", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "data_model_1", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "reference_data_single", - "type": "reference", - }, - { - "default": undefined, - "description": undefined, - "documentTypeNames": [ - "data_model_1", - "data_model_2", - ], - "isRequired": false, - "isSystemField": false, - "name": "reference_data_multiple", - "type": "reference_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "page_model_1", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "reference_page_single", - "type": "reference", - }, - { - "default": undefined, - "description": undefined, - "documentTypeNames": [ - "page_model_1", - "page_model_2", - ], - "isRequired": false, - "isSystemField": false, - "name": "reference_page_multiple", - "type": "reference_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "reference_data_single_list", - "of": { - "documentTypeName": "data_model_1", - "embedDocument": false, - "type": "reference", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "reference_data_multiple_list", - "of": [ - { - "documentTypeName": "data_model_1", - "embedDocument": false, - "type": "reference", - }, - { - "documentTypeName": "data_model_2", - "embedDocument": false, - "type": "reference", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "reference_page_single_list", - "of": { - "documentTypeName": "page_model_1", - "embedDocument": false, - "type": "reference", - }, - "type": "list", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "reference_page_multiple_list", - "of": [ - { - "documentTypeName": "page_model_1", - "embedDocument": false, - "type": "reference", - }, - { - "documentTypeName": "page_model_2", - "embedDocument": false, - "type": "reference", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "page_kitchen_sink", - }, - "page_model_1": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "string_required", - "type": "string", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "page_model_1", - }, - "page_model_2": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": "the default value", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_default", - "type": "string", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "page_model_2", - }, - }, + "documentTypeDefMap": {}, "hash": "NOT_USED", - "nestedTypeDefMap": { - "object_model_1": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "string_required", - "type": "string", - }, - ], - "name": "object_model_1", - }, - "object_model_2": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_field", - "type": "string", - }, - { - "default": "the default value", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "string_default", - "type": "string", - }, - ], - "name": "object_model_2", - }, - }, + "nestedTypeDefMap": {}, } `; exports[`next-starter 1`] = ` { - "documentTypeDefMap": { - "Page": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": "This is a new page", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "sections", - "of": [ - { - "nestedTypeName": "CardGridSection", - "type": "nested", - }, - { - "nestedTypeName": "HeroSection", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "Page", - }, - "SiteConfig": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "footer", - "nestedTypeName": "FooterConfig", - "type": "nested", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": true, - "name": "SiteConfig", - }, - }, + "documentTypeDefMap": {}, "hash": "NOT_USED", - "nestedTypeDefMap": { - "Button": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Click Me", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": "/", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "string", - }, - { - "default": "primary", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "theme", - "options": [ - "primary", - "secondary", - ], - "type": "enum", - }, - ], - "name": "Button", - }, - "Card": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Card Heading", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "heading", - "type": "string", - }, - { - "default": "Card description goes here ...", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subheading", - "type": "markdown", - }, - { - "default": "/", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "url", - "type": "string", - }, - ], - "name": "Card", - }, - "CardGridSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Card Grid Heading", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "heading", - "type": "string", - }, - { - "default": "Card Grid Subheading", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subheading", - "type": "markdown", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "cards", - "of": { - "nestedTypeName": "Card", - "type": "nested", - }, - "type": "list", - }, - ], - "name": "CardGridSection", - }, - "FooterConfig": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "body", - "type": "markdown", - }, - ], - "name": "FooterConfig", - }, - "HeroSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Hero Heading", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "heading", - "type": "string", - }, - { - "default": "Hero Subheading", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subheading", - "type": "markdown", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "buttons", - "of": { - "nestedTypeName": "Button", - "type": "nested", - }, - "type": "list", - }, - ], - "name": "HeroSection", - }, - }, + "nestedTypeDefMap": {}, } `; exports[`small-business 1`] = ` { - "documentTypeDefMap": { - "Config": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": "https://assets.stackbit.com/components/images/default/favicon.svg", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "favicon", - "type": "image", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "header", - "nestedTypeName": "Header", - "type": "nested", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "footer", - "nestedTypeName": "Footer", - "type": "nested", - }, - { - "default": null, - "description": "Suffix to append to the title tag of all pages, except in pages where the this behavior is disabled (e.g. typically the home page should have the site name as a prefix)", - "isRequired": false, - "isSystemField": false, - "name": "titleSuffix", - "type": "string", - }, - { - "default": null, - "description": "Default image to use for the og:image meta tag in all pages, except in pages that define another image.", - "isRequired": false, - "isSystemField": false, - "name": "defaultSocialImage", - "type": "image", - }, - { - "default": undefined, - "description": "Additional meta tags to set as default in all pages. Tags defined here are low-priority: they may be overriden by page-level settings.", - "isRequired": false, - "isSystemField": false, - "name": "defaultMetaTags", - "of": { - "nestedTypeName": "MetaTag", - "type": "nested", - }, - "type": "list", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": true, - "name": "Config", - }, - "PageLayout": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "layout", - "type": "string", - }, - { - "default": null, - "description": "By default, the tag for this page is determined by the title field (in the Content group). You can override the tag value here.", - "isRequired": false, - "isSystemField": false, - "name": "metaTitle", - "type": "string", - }, - { - "default": null, - "description": "The description tag is used by search engines and for social sharing. By default, the tag is not set.", - "isRequired": false, - "isSystemField": false, - "name": "metaDescription", - "type": "string", - }, - { - "default": true, - "description": "If enabled, the title suffix defined in the site configuration is appended to the title tag of this page.", - "isRequired": false, - "isSystemField": false, - "name": "addTitleSuffix", - "type": "boolean", - }, - { - "default": null, - "description": "Set the image used when sharing this page on social networks (e.g. Facebook, Twitter). If not set, the default social image defined in the site configuration is used.", - "isRequired": false, - "isSystemField": false, - "name": "socialImage", - "type": "image", - }, - { - "default": undefined, - "description": "To add or override any meta tag for this page, add entries to this list. Entries defined here take precedence over any other defaults.", - "isRequired": false, - "isSystemField": false, - "name": "metaTags", - "of": { - "nestedTypeName": "MetaTag", - "type": "nested", - }, - "type": "list", - }, - { - "default": "This is a new page", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": [ - { - "actions": [ - { - "elementId": "hero-main-button", - "label": "Get Started", - "style": "primary", - "type": "Button", - "url": "/", - }, - { - "label": "Learn More", - "style": "secondary", - "type": "Button", - "url": "/", - }, - ], - "colors": "colors-d", - "elementId": "homepage-hero-1", - "media": { - "altText": "Image alt text", - "type": "ImageBlock", - "url": "/images/hero.webp", - }, - "styles": { - "actions": { - "justifyContent": "flex-start", - }, - "self": { - "alignItems": "center", - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "left", - "textDecoration": [ - "underline", - ], - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "text": "Aenean eros ipsum, interdum quis dignissim non, sollicitudin vitae nisl. Aenean vel aliquet elit, at blandit ipsum. Sed eleifend felis sit amet erat molestie, hendrerit malesuada justo ultrices. Nunc volutpat at erat itae interdum. Ut nec massa eget lorem blandit condimentum et at risus.", - "title": "This Is A Big Hero Headline", - "type": "HeroSection", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "sections", - "of": [ - { - "nestedTypeName": "ContactSection", - "type": "nested", - }, - { - "nestedTypeName": "CtaSection", - "type": "nested", - }, - { - "nestedTypeName": "DividerSection", - "type": "nested", - }, - { - "nestedTypeName": "FeatureHighlightSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedItemsSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPeopleSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "HeroSection", - "type": "nested", - }, - { - "nestedTypeName": "MediaGallerySection", - "type": "nested", - }, - { - "nestedTypeName": "QuoteSection", - "type": "nested", - }, - { - "nestedTypeName": "RecentPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "TestimonialsSection", - "type": "nested", - }, - { - "nestedTypeName": "TextSection", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "PageLayout", - }, - "Person": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": "Name", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "firstName", - "type": "string", - }, - { - "default": "Surname", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "lastName", - "type": "string", - }, - { - "default": "Role", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "role", - "type": "string", - }, - { - "default": "With over 10 years in both public and private sectors, Johnna has experience in management consultation, team building, professional development, strategic implementation, and company collaboration.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "bio", - "type": "markdown", - }, - { - "default": { - "altText": "Person photo", - "url": "https://assets.stackbit.com/components/images/default/default-person.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "Person", - }, - "PostFeedLayout": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "layout", - "type": "string", - }, - { - "default": null, - "description": "By default, the <title> tag for this page is determined by the title field (in the Content group). You can override the tag value here.", - "isRequired": false, - "isSystemField": false, - "name": "metaTitle", - "type": "string", - }, - { - "default": null, - "description": "The description tag is used by search engines and for social sharing. By default, the tag is not set.", - "isRequired": false, - "isSystemField": false, - "name": "metaDescription", - "type": "string", - }, - { - "default": true, - "description": "If enabled, the title suffix defined in the site configuration is appended to the title tag of this page.", - "isRequired": false, - "isSystemField": false, - "name": "addTitleSuffix", - "type": "boolean", - }, - { - "default": null, - "description": "Set the image used when sharing this page on social networks (e.g. Facebook, Twitter). If not set, the default social image defined in the site configuration is used.", - "isRequired": false, - "isSystemField": false, - "name": "socialImage", - "type": "image", - }, - { - "default": undefined, - "description": "To add or override any meta tag for this page, add entries to this list. Entries defined here take precedence over any other defaults.", - "isRequired": false, - "isSystemField": false, - "name": "metaTags", - "of": { - "nestedTypeName": "MetaTag", - "type": "nested", - }, - "type": "list", - }, - { - "default": "This is a page title", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": 10, - "description": "Set to zero to show all posts", - "isRequired": false, - "isSystemField": false, - "name": "numOfPostsPerPage", - "type": "number", - }, - { - "default": { - "actions": [], - "colors": "colors-a", - "showAuthor": true, - "showDate": true, - "subtitle": null, - "title": null, - "variant": "variant-a", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "postFeed", - "nestedTypeName": "PagedPostsSection", - "type": "nested", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "topSections", - "of": [ - { - "nestedTypeName": "ContactSection", - "type": "nested", - }, - { - "nestedTypeName": "CtaSection", - "type": "nested", - }, - { - "nestedTypeName": "DividerSection", - "type": "nested", - }, - { - "nestedTypeName": "FeatureHighlightSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedItemsSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPeopleSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "HeroSection", - "type": "nested", - }, - { - "nestedTypeName": "MediaGallerySection", - "type": "nested", - }, - { - "nestedTypeName": "QuoteSection", - "type": "nested", - }, - { - "nestedTypeName": "RecentPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "TestimonialsSection", - "type": "nested", - }, - { - "nestedTypeName": "TextSection", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "bottomSections", - "of": [ - { - "nestedTypeName": "ContactSection", - "type": "nested", - }, - { - "nestedTypeName": "CtaSection", - "type": "nested", - }, - { - "nestedTypeName": "DividerSection", - "type": "nested", - }, - { - "nestedTypeName": "FeatureHighlightSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedItemsSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPeopleSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "HeroSection", - "type": "nested", - }, - { - "nestedTypeName": "MediaGallerySection", - "type": "nested", - }, - { - "nestedTypeName": "QuoteSection", - "type": "nested", - }, - { - "nestedTypeName": "RecentPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "TestimonialsSection", - "type": "nested", - }, - { - "nestedTypeName": "TextSection", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": true, - "name": "PostFeedLayout", - }, - "PostLayout": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "layout", - "type": "string", - }, - { - "default": null, - "description": "By default, the <title> tag for this page is determined by the title field (in the Content group). You can override the tag value here.", - "isRequired": false, - "isSystemField": false, - "name": "metaTitle", - "type": "string", - }, - { - "default": true, - "description": "If enabled, the title suffix defined in the site configuration is appended to the title tag of this page.", - "isRequired": false, - "isSystemField": false, - "name": "addTitleSuffix", - "type": "boolean", - }, - { - "default": undefined, - "description": "To add or override any meta tag for this page, add entries to this list. Entries defined here take precedence over any other defaults.", - "isRequired": false, - "isSystemField": false, - "name": "metaTags", - "of": { - "nestedTypeName": "MetaTag", - "type": "nested", - }, - "type": "list", - }, - { - "default": "This is a blog post title", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "date", - "type": "date", - }, - { - "default": undefined, - "description": undefined, - "documentTypeName": "Person", - "embedDocument": false, - "isRequired": false, - "isSystemField": false, - "name": "author", - "type": "reference", - }, - { - "default": "Nunc rutrum felis dui, ut consequat sapien scelerisque vel. Integer condimentum dignissim justo vel faucibus.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "excerpt", - "type": "string", - }, - { - "default": { - "altText": "Post thumbnail image", - "caption": "", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/post-4.jpeg", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "featuredImage", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": { - "altText": "Post image", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/post-4.jpeg", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "media", - "nestedTypeNames": [ - "ImageBlock", - "VideoBlock", - ], - "type": "nested_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "bottomSections", - "of": [ - { - "nestedTypeName": "ContactSection", - "type": "nested", - }, - { - "nestedTypeName": "CtaSection", - "type": "nested", - }, - { - "nestedTypeName": "DividerSection", - "type": "nested", - }, - { - "nestedTypeName": "FeatureHighlightSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedItemsSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPeopleSection", - "type": "nested", - }, - { - "nestedTypeName": "FeaturedPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "HeroSection", - "type": "nested", - }, - { - "nestedTypeName": "MediaGallerySection", - "type": "nested", - }, - { - "nestedTypeName": "QuoteSection", - "type": "nested", - }, - { - "nestedTypeName": "RecentPostsSection", - "type": "nested", - }, - { - "nestedTypeName": "TestimonialsSection", - "type": "nested", - }, - { - "nestedTypeName": "TextSection", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": null, - "description": "By default, the description tag for this post is taken from the Excerpt field. You can override the tag value here.", - "isRequired": false, - "isSystemField": false, - "name": "metaDescription", - "type": "string", - }, - { - "default": null, - "description": "By default, the \\"og:image\\" meta tag set for social sharing this post points to the Featured Image field (in the Content group). You can override that image here.", - "isRequired": false, - "isSystemField": false, - "name": "socialImage", - "type": "image", - }, - { - "default": undefined, - "description": "Page content", - "isRequired": false, - "isSystemField": false, - "name": "markdown_content", - "type": "markdown", - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "PostLayout", - }, - "ThemeStyle": { - "_tag": "DocumentTypeDef", - "computedFields": [], - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": "The type of the object", - "isRequired": false, - "isSystemField": false, - "name": "type", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "fontHeadlines", - "options": [ - "fontPrimary", - "fontSecondary", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h1", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "5xl", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h2", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "4xl", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h3", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "3xl", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h4", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "2xl", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h5", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "xl", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "h6", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "lg", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "size", - "options": [ - "xs", - "sm", - "base", - "lg", - "xl", - "2xl", - "3xl", - "4xl", - "5xl", - "6xl", - "7xl", - "8xl", - "9xl", - ], - "type": "enum", - }, - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "decoration", - "options": [ - "none", - "underline", - "line-through", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "fontBody", - "options": [ - "fontPrimary", - "fontSecondary", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "main", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "light", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onLight", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "dark", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onDark", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "primary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onPrimary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "secondary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onSecondary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "complementary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onComplementary", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "complementaryAlt", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "onComplementaryAlt", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "buttonPrimary", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "borderRadius", - "options": [ - "none", - "md", - "full", - ], - "type": "enum", - }, - { - "default": 24, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "horizontalPadding", - "type": "number", - }, - { - "default": 12, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "verticalPadding", - "type": "number", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "shadow", - "options": [ - "none", - "md", - "xl", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "buttonSecondary", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "borderRadius", - "options": [ - "none", - "md", - "full", - ], - "type": "enum", - }, - { - "default": "solid", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "borderStyle", - "options": [ - "none", - "solid", - "dashed", - "dotted", - "double", - ], - "type": "enum", - }, - { - "default": 24, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "horizontalPadding", - "type": "number", - }, - { - "default": 12, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "verticalPadding", - "type": "number", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "shadow", - "options": [ - "none", - "md", - "xl", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "link", - "type": "nested_unnamed", - "typeDef": { - "_tag": "NestedUnnamedTypeDef", - "extensions": {}, - "fieldDefs": [ - { - "default": "medium", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "weight", - "options": [ - "normal", - "medium", - ], - "type": "enum", - }, - { - "default": "none", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "case", - "options": [ - "none", - "lowercase", - "capitalize", - "uppercase", - ], - "type": "enum", - }, - { - "default": "normal", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "letterSpacing", - "options": [ - "tighter", - "tight", - "normal", - "wide", - "wider", - ], - "type": "enum", - }, - ], - }, - }, - { - "default": undefined, - "description": "Markdown file body", - "isRequired": true, - "isSystemField": true, - "name": "body", - "type": "markdown", - }, - ], - "isSingleton": false, - "name": "ThemeStyle", - }, - }, + "documentTypeDefMap": {}, "hash": "NOT_USED", - "nestedTypeDefMap": { - "BackgroundImage": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "https://assets.stackbit.com/components/images/default/default-image.png", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "image", - }, - { - "default": "cover", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "backgroundSize", - "options": [ - "auto", - "cover", - "contain", - ], - "type": "enum", - }, - { - "default": "center", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "backgroundPosition", - "options": [ - "bottom", - "center", - "left", - "left-bottom", - "left-top", - "right", - "right-bottom", - "right-top", - "top", - ], - "type": "enum", - }, - { - "default": "no-repeat", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "backgroundRepeat", - "options": [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat", - ], - "type": "enum", - }, - { - "default": 100, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "opacity", - "type": "number", - }, - ], - "name": "BackgroundImage", - }, - "Button": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Learn more", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": "", - "description": "Alternative text for screen readers", - "isRequired": false, - "isSystemField": false, - "name": "altText", - "type": "string", - }, - { - "default": "/", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showIcon", - "type": "boolean", - }, - { - "default": "arrowRight", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "icon", - "options": [ - "apple", - "arrowLeft", - "arrowLeftCircle", - "arrowRight", - "arrowRightCircle", - "cart", - "chevronLeft", - "chevronRight", - "facebook", - "github", - "googlePlay", - "instagram", - "linkedin", - "mail", - "play", - "playCircle", - "reddit", - "send", - "twitter", - "vimeo", - "youtube", - ], - "type": "enum", - }, - { - "default": "right", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "iconPosition", - "options": [ - "left", - "right", - ], - "type": "enum", - }, - { - "default": "secondary", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "style", - "options": [ - "primary", - "secondary", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "Button", - }, - "CheckboxFormControl": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "updates", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Sign me up to receive updates", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isRequired", - "type": "boolean", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "width", - "options": [ - "full", - "1/2", - ], - "type": "enum", - }, - ], - "name": "CheckboxFormControl", - }, - "ContactBlock": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Contact details", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "850-123-5021", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "phoneNumber", - "type": "string", - }, - { - "default": "Phone", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "phoneAltText", - "type": "string", - }, - { - "default": "john@doe.com", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "email", - "type": "string", - }, - { - "default": "Email", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "emailAltText", - "type": "string", - }, - { - "default": "312 Lovely Street, NY", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "address", - "type": "string", - }, - { - "default": "Address", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "addressAltText", - "type": "string", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "ContactBlock", - }, - "ContactSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundSize", - "options": [ - "full", - "inset", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "Aenean eros ipsum, interdum quis dignissim non, sollicitudin vitae nisl. -Aenean vel aliquet elit, at blandit ipsum.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": { - "action": "/.netlify/functions/submission_created", - "destination": "", - "elementId": "contact-form", - "fields": [ - { - "isRequired": true, - "label": "Name", - "name": "name", - "placeholder": "Your name", - "type": "TextFormControl", - "width": "1/2", - }, - { - "isRequired": true, - "label": "Email", - "name": "email", - "placeholder": "Your email", - "type": "EmailFormControl", - "width": "1/2", - }, - { - "isRequired": true, - "label": "Home address", - "name": "home-address", - "placeholder": "Your home address", - "type": "TextFormControl", - "width": "full", - }, - { - "label": "Sign me up to receive updates", - "name": "updates", - "type": "CheckboxFormControl", - "width": "full", - }, - ], - "submitLabel": "Send Message", - "type": "FormBlock", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "form", - "nestedTypeName": "FormBlock", - "type": "nested", - }, - { - "default": { - "altText": "Contact form image", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/contact.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "media", - "nestedTypeNames": [ - "ImageBlock", - "VideoBlock", - ], - "type": "nested_polymorphic", - "typeField": "type", - }, - { - "default": { - "self": { - "alignItems": "center", - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "ContactSection", - }, - "CtaSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundSize", - "options": [ - "full", - "inset", - ], - "type": "enum", - }, - { - "default": "Let's do this", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "The Stackbit theme is flexible and scalable to every need. It can manage any layout and any screen.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": [ - { - "label": "Try it now", - "style": "primary", - "type": "Button", - "url": "/about", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundImage", - "nestedTypeName": "BackgroundImage", - "type": "nested", - }, - { - "default": { - "actions": { - "justifyContent": "flex-start", - }, - "self": { - "alignItems": "center", - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "CtaSection", - }, - "DividerSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "Divider", - "description": "The value of the field is used for presentation purposes in Stackbit", - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": { - "self": { - "borderStyle": "solid", - "borderWidth": 1, - "justifyContent": "center", - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "DividerSection", - }, - "EmailFormControl": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Name", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "hideLabel", - "type": "boolean", - }, - { - "default": "Your name", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "placeholder", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isRequired", - "type": "boolean", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "width", - "options": [ - "full", - "1/2", - ], - "type": "enum", - }, - ], - "name": "EmailFormControl", - }, - "FeatureHighlightSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundSize", - "options": [ - "full", - "inset", - ], - "type": "enum", - }, - { - "default": "This Is A Feature Title", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "The section subtitle", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": "Aenean eros ipsum, interdum quis dignissim non, sollicitudin vitae nisl. -Aenean vel aliquet elit, at blandit ipsum. Sed eleifend felis sit amet -erat molestie, hendrerit malesuada justo ultrices. Nunc volutpat at erat -vitae interdum. Ut nec massa eget lorem blandit condimentum et at risus.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": [ - { - "elementId": "hero-main-button", - "label": "Get Started", - "style": "primary", - "type": "Button", - "url": "/", - }, - { - "label": "Learn More", - "style": "secondary", - "type": "Button", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundImage", - "nestedTypeName": "BackgroundImage", - "type": "nested", - }, - { - "default": { - "actions": { - "justifyContent": "flex-start", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "boxShadow": "none", - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "left", - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "FeatureHighlightSection", - }, - "FeaturedItem": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "", - "description": "The unique ID for an HTML element, must not contain whitespace", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "Item Title", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae. explicabo.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": { - "altText": "Item image", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/default-image.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "featuredImage", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "self": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "FeaturedItem", - }, - "FeaturedItemsSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "Featured Items", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "The section subtitle", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": [ - { - "featuredImage": { - "altText": "Item image", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/default-image.png", - }, - "styles": { - "actions": { - "justifyContent": "flex-start", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "left", - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "text": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae. explicabo.", - "title": "Item Title", - "type": "FeaturedItem", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "items", - "of": { - "nestedTypeName": "FeaturedItem", - "type": "nested", - }, - "type": "list", - }, - { - "default": [ - { - "label": "Apply Now", - "style": "primary", - "type": "Button", - "url": "#", - }, - { - "label": "Learn More", - "style": "secondary", - "type": "Button", - "url": "#", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": 3, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "columns", - "type": "number", - }, - { - "default": 16, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "spacingX", - "type": "number", - }, - { - "default": 16, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "spacingY", - "type": "number", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enableHover", - "type": "boolean", - }, - { - "default": { - "actions": { - "justifyContent": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "FeaturedItemsSection", - }, - "FeaturedPeopleSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - ], - "type": "enum", - }, - { - "default": "About us", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "Featured people section example", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": [ - "content/data/team/desmond-eagle.json", - "content/data/team/dianne-ameter.json", - "content/data/team/hilary-ouse.json", - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "people", - "of": { - "documentTypeName": "Person", - "embedDocument": false, - "type": "reference", - }, - "type": "list", - }, - { - "default": { - "actions": { - "justifyContent": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "FeaturedPeopleSection", - }, - "FeaturedPostsSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showDate", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showAuthor", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showExcerpt", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showReadMoreLink", - "type": "boolean", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "readMoreLinkLabel", - "type": "string", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - "variant-d", - ], - "type": "enum", - }, - { - "default": [ - { - "label": "View all", - "style": "primary", - "type": "Button", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "actions": { - "justifyContent": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - { - "default": "Featured", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "Featured blog posts section example", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": [ - "content/pages/blog/post-three.md", - "content/pages/blog/post-two.md", - "content/pages/blog/post-one.md", - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "posts", - "of": { - "documentTypeName": "PostLayout", - "embedDocument": false, - "type": "reference", - }, - "type": "list", - }, - ], - "name": "FeaturedPostsSection", - }, - "Footer": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - ], - "type": "enum", - }, - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": { - "altText": "Your logo image", - "caption": "", - "default": null, - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/default-image.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "logo", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": "Your Brand", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "A description of your brand", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": { - "email": "john@doe.com", - "emailAltText": "Email us", - "phoneAltText": "Call us", - "phoneNumber": "850-123-5021", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "contacts", - "nestedTypeName": "ContactBlock", - "type": "nested", - }, - { - "default": "Copyright text", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "copyrightText", - "type": "markdown", - }, - { - "default": [ - { - "altText": "Projects", - "label": "Projects", - "type": "Link", - "url": "/", - }, - { - "altText": "Documentation", - "label": "Documentation", - "type": "Link", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "primaryLinks", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": [ - { - "altText": "facebook", - "elementId": false, - "icon": "facebook", - "label": "", - "showIcon": true, - "type": "Social", - "url": "/", - }, - { - "altText": "twitter", - "elementId": false, - "icon": "twitter", - "label": "", - "showIcon": true, - "type": "Social", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "socialLinks", - "of": { - "nestedTypeName": "Social", - "type": "nested", - }, - "type": "list", - }, - { - "default": [ - { - "altText": "Privacy Policy", - "label": "Privacy Policy", - "type": "Link", - "url": "/", - }, - { - "altText": "Terms & Conditions", - "label": "Terms & Conditions", - "type": "Link", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "legalLinks", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "self": { - "padding": [ - "pt-16", - "pb-16", - "pl-4", - "pr-4", - ], - "width": "narrow", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "Footer", - }, - "FormBlock": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": [ - { - "isRequired": true, - "label": "Name", - "name": "name", - "placeholder": "Your name", - "type": "TextFormControl", - "width": "1/2", - }, - { - "isRequired": true, - "label": "Email", - "name": "email", - "placeholder": "Your email", - "type": "EmailFormControl", - "width": "1/2", - }, - { - "isRequired": false, - "label": "Home Address", - "name": "home-address", - "placeholder": "Your home address", - "type": "TextFormControl", - "width": "full", - }, - { - "label": "Sign me up to receive updates", - "name": "updates", - "type": "CheckboxFormControl", - "width": "full", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "fields", - "of": [ - { - "nestedTypeName": "TextFormControl", - "type": "nested", - }, - { - "nestedTypeName": "EmailFormControl", - "type": "nested", - }, - { - "nestedTypeName": "TextareaFormControl", - "type": "nested", - }, - { - "nestedTypeName": "CheckboxFormControl", - "type": "nested", - }, - { - "nestedTypeName": "SelectFormControl", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": "Send Message", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "submitLabel", - "type": "string", - }, - { - "default": "contact-form", - "description": "The unique ID used for id and name attributes in the HTML form. Must not contain whitespace.", - "isRequired": true, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "/.netlify/functions/submission_created", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "action", - "type": "string", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "destination", - "type": "string", - }, - { - "default": { - "submitLabel": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "FormBlock", - }, - "Header": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "headerVariant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - ], - "type": "enum", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isSticky", - "type": "boolean", - }, - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "primaryColors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "secondaryColors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "Your Brand", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isTitleVisible", - "type": "boolean", - }, - { - "default": { - "altText": "Your logo image", - "caption": "", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/default-image.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "logo", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": [ - { - "altText": "Home", - "label": "Home", - "type": "Link", - "url": "/", - }, - { - "altText": "Blog", - "label": "Blog", - "type": "Link", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "primaryLinks", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": [ - { - "altText": "Sign up", - "label": "Sign up", - "style": "primary", - "type": "Button", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "secondaryLinks", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "self": { - "padding": [ - "pt-5", - "pb-5", - "pl-4", - "pr-4", - ], - "width": "narrow", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "Header", - }, - "HeroSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundSize", - "options": [ - "full", - "inset", - ], - "type": "enum", - }, - { - "default": "This Is A Big Hero Headline", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "The section subtitle", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": "Aenean eros ipsum, interdum quis dignissim non, sollicitudin vitae nisl. -Aenean vel aliquet elit, at blandit ipsum. Sed eleifend felis sit amet -erat molestie, hendrerit malesuada justo ultrices. Nunc volutpat at erat -vitae interdum. Ut nec massa eget lorem blandit condimentum et at risus.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": [ - { - "elementId": "hero-main-button", - "label": "Get Started", - "style": "primary", - "type": "Button", - "url": "/", - }, - { - "label": "Learn More", - "style": "secondary", - "type": "Button", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "altText": "Hero section image", - "type": "ImageBlock", - "url": "/images/hero.webp", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "media", - "nestedTypeNames": [ - "FormBlock", - "ImageBlock", - "VideoBlock", - ], - "type": "nested_polymorphic", - "typeField": "type", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundImage", - "nestedTypeName": "BackgroundImage", - "type": "nested", - }, - { - "default": { - "actions": { - "justifyContent": "flex-start", - }, - "self": { - "alignItems": "center", - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "left", - }, - "text": { - "textAlign": "left", - }, - "title": { - "textAlign": "left", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "HeroSection", - }, - "ImageBlock": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "https://assets.stackbit.com/components/images/default/default-image.png", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "image", - }, - { - "default": "altText of the image", - "description": "Alternative text for screen readers", - "isRequired": false, - "isSystemField": false, - "name": "altText", - "type": "string", - }, - { - "default": "Caption of the image", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "caption", - "type": "string", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "ImageBlock", - }, - "Link": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Learn more", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": "", - "description": "Alternative text for screen readers", - "isRequired": false, - "isSystemField": false, - "name": "altText", - "type": "string", - }, - { - "default": "/", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showIcon", - "type": "boolean", - }, - { - "default": "arrowRight", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "icon", - "options": [ - "apple", - "arrowLeft", - "arrowLeftCircle", - "arrowRight", - "arrowRightCircle", - "cart", - "chevronLeft", - "chevronRight", - "facebook", - "github", - "googlePlay", - "instagram", - "linkedin", - "mail", - "play", - "playCircle", - "reddit", - "send", - "twitter", - "vimeo", - "youtube", - ], - "type": "enum", - }, - { - "default": "right", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "iconPosition", - "options": [ - "left", - "right", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "Link", - }, - "MediaGallerySection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "Gallery", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "This is the subtitle", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": [ - { - "altText": "Image one", - "caption": "Image one caption", - "type": "ImageBlock", - "url": "/images/gallery-1.jpg", - }, - { - "altText": "Image two", - "caption": "Image two caption", - "type": "ImageBlock", - "url": "/images/gallery-2.jpg", - }, - { - "altText": "Image three", - "caption": "Image three caption", - "type": "ImageBlock", - "url": "/images/gallery-3.jpg", - }, - { - "altText": "Image four", - "caption": "Image four caption", - "type": "ImageBlock", - "url": "/images/gallery-4.jpg", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "images", - "of": { - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - "type": "list", - }, - { - "default": 16, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "spacing", - "type": "number", - }, - { - "default": 4, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "columns", - "type": "number", - }, - { - "default": "1:1", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "aspectRatio", - "options": [ - "1:1", - "3:2", - "2:3", - "4:3", - "3:4", - "16:9", - "auto", - ], - "type": "enum", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showCaption", - "type": "boolean", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "enableHover", - "type": "boolean", - }, - { - "default": { - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "full", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "MediaGallerySection", - }, - "MetaTag": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "og:title", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "property", - "options": [ - "og:title", - "og:type", - "og:image", - "og:image:alt", - "og:url", - "og:description", - "og:locale", - "og:site_name", - "og:video", - "twitter:card", - "twitter:site", - "twitter:creator", - "twitter:description", - "twitter:title", - "twitter:image", - "twitter:image:alt", - "twitter:player", - ], - "type": "enum", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "content", - "type": "string", - }, - ], - "name": "MetaTag", - }, - "PagedPostsSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showExcerpt", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showReadMoreLink", - "type": "boolean", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "readMoreLinkLabel", - "type": "string", - }, - { - "default": { - "actions": { - "justifyContent": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - { - "default": null, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": null, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showDate", - "type": "boolean", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showAuthor", - "type": "boolean", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - "variant-d", - ], - "type": "enum", - }, - { - "default": [], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - ], - "name": "PagedPostsSection", - }, - "QuoteSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "β€œIt’s great to see someone taking action while still maintaining a -sustainable fish supply to home cooks.”", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "quote", - "type": "markdown", - }, - { - "default": "Johnna Doe", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Product Marketing Manager at Acme", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": { - "opacity": 30, - "type": "BackgroundImage", - "url": "https://assets.stackbit.com/components/images/default/bg.jpg", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "backgroundImage", - "nestedTypeName": "BackgroundImage", - "type": "nested", - }, - { - "default": { - "name": { - "fontWeight": 400, - "textAlign": "center", - }, - "quote": { - "textAlign": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "title": { - "fontWeight": 400, - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "QuoteSection", - }, - "RecentPostsSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showDate", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showAuthor", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showExcerpt", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "showReadMoreLink", - "type": "boolean", - }, - { - "default": "", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "readMoreLinkLabel", - "type": "string", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - "variant-d", - ], - "type": "enum", - }, - { - "default": [ - { - "label": "View all", - "style": "primary", - "type": "Button", - "url": "/", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "actions", - "of": [ - { - "nestedTypeName": "Button", - "type": "nested", - }, - { - "nestedTypeName": "Link", - "type": "nested", - }, - ], - "type": "list_polymorphic", - "typeField": "type", - }, - { - "default": { - "actions": { - "justifyContent": "center", - }, - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - { - "default": "Recent Posts", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "Latest blog posts section example", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": 6, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "recentCount", - "type": "number", - }, - ], - "name": "RecentPostsSection", - }, - "SelectFormControl": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "city", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "City", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "hideLabel", - "type": "boolean", - }, - { - "default": "Please choose...", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "defaultValue", - "type": "string", - }, - { - "default": [ - "New York", - "San Francisco", - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "options", - "of": { - "type": "string", - }, - "type": "list", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isRequired", - "type": "boolean", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "width", - "options": [ - "full", - "1/2", - ], - "type": "enum", - }, - ], - "name": "SelectFormControl", - }, - "Social": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Facebook", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": "", - "description": "Alternative text for screen readers", - "isRequired": false, - "isSystemField": false, - "name": "altText", - "type": "string", - }, - { - "default": "/", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "url", - "type": "string", - }, - { - "default": "facebook", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "icon", - "options": [ - "facebook", - "github", - "instagram", - "linkedin", - "reddit", - "twitter", - "vimeo", - "youtube", - ], - "type": "enum", - }, - { - "default": "link", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "style", - "options": [ - "link", - "primary", - "secondary", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "Social", - }, - "Testimonial": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "β€œIt’s great to see someone taking action while still maintaining a sustainable fish supply to home cooks.”", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "quote", - "type": "markdown", - }, - { - "default": "Johnna Doe", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Product Marketing Manager at Acme", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": { - "altText": "Person photo", - "url": "https://assets.stackbit.com/components/images/default/default-person.png", - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "image", - "nestedTypeName": "ImageBlock", - "type": "nested", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": { - "name": { - "fontWeight": 400, - }, - "title": { - "fontWeight": 400, - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "Testimonial", - }, - "TestimonialsSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - "variant-c", - ], - "type": "enum", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": undefined, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": [ - { - "image": { - "altText": "Person photo", - "type": "ImageBlock", - "url": "https://assets.stackbit.com/components/images/default/default-person.png", - }, - "name": "Johnna Doe", - "quote": "β€œIt’s great to see someone taking action while still maintaining a -sustainable fish supply to home cooks.”", - "title": "Product Marketing Manager at Acme", - "type": "Testimonial", - }, - ], - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "testimonials", - "of": { - "nestedTypeName": "Testimonial", - "type": "nested", - }, - "type": "list", - }, - { - "default": { - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "TestimonialsSection", - }, - "TextFormControl": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "home-address", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Home address", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "hideLabel", - "type": "boolean", - }, - { - "default": "Your home address", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "placeholder", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isRequired", - "type": "boolean", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "width", - "options": [ - "full", - "1/2", - ], - "type": "enum", - }, - ], - "name": "TextFormControl", - }, - "TextSection": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "colors-d", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "colors", - "options": [ - "colors-a", - "colors-b", - "colors-c", - "colors-d", - "colors-e", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - { - "default": "variant-a", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "variant", - "options": [ - "variant-a", - "variant-b", - ], - "type": "enum", - }, - { - "default": "The Section Title", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "The section subtitle", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "subtitle", - "type": "string", - }, - { - "default": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium -doloremque laudantium, totam rem aperiam. Eaque ipsa quae ab illo -inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. -Sed ut perspiciatis undeomnis iste natus error sit voluptatem accusantium -doloremque laudantium, totam rem aperiam. Eaque ipsa quae ab illo -inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "text", - "type": "markdown", - }, - { - "default": { - "self": { - "borderColor": "border-dark", - "borderRadius": "none", - "borderStyle": "none", - "borderWidth": 0, - "height": "auto", - "justifyContent": "center", - "margin": [ - "mt-0", - "mb-0", - "ml-0", - "mr-0", - ], - "padding": [ - "pt-12", - "pb-12", - "pl-4", - "pr-4", - ], - "width": "wide", - }, - "subtitle": { - "fontWeight": 400, - "textAlign": "center", - }, - "text": { - "textAlign": "center", - }, - "title": { - "textAlign": "center", - }, - }, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "styles", - "type": "json", - }, - ], - "name": "TextSection", - }, - "TextareaFormControl": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "description", - "description": undefined, - "isRequired": true, - "isSystemField": false, - "name": "name", - "type": "string", - }, - { - "default": "Description", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "label", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "hideLabel", - "type": "boolean", - }, - { - "default": "Please describe", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "placeholder", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "isRequired", - "type": "boolean", - }, - { - "default": "full", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "width", - "options": [ - "full", - "1/2", - ], - "type": "enum", - }, - ], - "name": "TextareaFormControl", - }, - "VideoBlock": { - "_tag": "NestedTypeDef", - "description": undefined, - "extensions": {}, - "fieldDefs": [ - { - "default": "Title of the video", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "title", - "type": "string", - }, - { - "default": "https://youtu.be/CXnUX2EkicE", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "url", - "type": "string", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "autoplay", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "loop", - "type": "boolean", - }, - { - "default": false, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "muted", - "type": "boolean", - }, - { - "default": true, - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "controls", - "type": "boolean", - }, - { - "default": "16:9", - "description": undefined, - "isRequired": false, - "isSystemField": false, - "name": "aspectRatio", - "options": [ - "4:3", - "16:9", - ], - "type": "enum", - }, - { - "default": "", - "description": "A unique ID for the HTML element. Must not contain whitespace.", - "isRequired": false, - "isSystemField": false, - "name": "elementId", - "type": "string", - }, - ], - "name": "VideoBlock", - }, - }, + "nestedTypeDefMap": {}, } `; diff --git a/packages/@contentlayer/experimental-source-files-stackbit/src/index.ts b/packages/@contentlayer/experimental-source-files-stackbit/src/index.ts index 004c1fc6..080c8448 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/src/index.ts +++ b/packages/@contentlayer/experimental-source-files-stackbit/src/index.ts @@ -43,7 +43,7 @@ export type ContentlayerOverrideNestedType = { * ``` */ export const loadStackbitConfigAsDocumentTypes = <TDocumentTypeNames extends core.GetDocumentTypeNamesGen>( - options: Stackbit.ConfigLoaderOptions = { dirPath: '' }, + options: { dirPath: string } = { dirPath: '' }, overrideArgs: ContentlayerOverrideArgs<TDocumentTypeNames> = { documentTypes: {}, nestedTypes: {} }, ): Promise<SourceFiles.DocumentType[]> => Stackbit.loadConfig(options).then((configResult) => { @@ -69,7 +69,7 @@ export const loadStackbitConfigAsDocumentTypes = <TDocumentTypeNames extends cor * ``` */ export const stackbitConfigToDocumentTypes = <TDocumentTypeNames extends core.GetDocumentTypeNamesGen>( - stackbitConfig: Stackbit.Config | Stackbit.YamlConfig, + stackbitConfig: Stackbit.Config, overrideArgs: ContentlayerOverrideArgs<TDocumentTypeNames> = { documentTypes: {}, nestedTypes: {} }, ): SourceFiles.DocumentType[] => { const validatedStackbitConfig = validateStackbitConfig(stackbitConfig) @@ -147,7 +147,7 @@ const patchNestedType = (nestedType: SourceFiles.NestedType, patch: PartialDeep< nestedType.def = defineNestedType(() => mergeDeep({ ...previousDef, ...patch })).def } -const validateStackbitConfig = (stackbitConfig: Stackbit.Config | Stackbit.YamlConfig): Stackbit.Config => { +const validateStackbitConfig = (stackbitConfig: Stackbit.Config): Stackbit.Config => { if (Array.isArray(stackbitConfig.models)) { return stackbitConfig as Stackbit.Config } @@ -166,4 +166,5 @@ const isDocumentLikeModel = ( ): model is Stackbit.PageModel | Stackbit.DataModel | Stackbit.ConfigModel => model.type === 'data' || model.type === 'page' || model.type === 'config' -const isImageModel = (model: Stackbit.Model): model is Stackbit.ImageModel => model.type === 'image' +const isImageModel = (model: Stackbit.Model | Stackbit.ImageModel): model is Stackbit.ImageModel => + model.type === 'image' diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 83c46662..4523632a 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -17,7 +17,7 @@ "dependencies": { "@contentlayer/core": "workspace:*", "@contentlayer/utils": "workspace:*", - "@stackbit/sdk": "^0.2.35", + "@stackbit/sdk": "^0.3.13", "clipanion": "^3.2.0-rc.14", "typanion": "3.12.1", "yaml": "^1.10.2" diff --git a/packages/contentlayer-stackbit-yaml-generator/src/cli/convert.ts b/packages/contentlayer-stackbit-yaml-generator/src/cli/convert.ts index 10c4fbdf..984d69d2 100644 --- a/packages/contentlayer-stackbit-yaml-generator/src/cli/convert.ts +++ b/packages/contentlayer-stackbit-yaml-generator/src/cli/convert.ts @@ -1,11 +1,12 @@ import type * as core from '@contentlayer/core' import * as utils from '@contentlayer/utils' import type * as Stackbit from '@stackbit/sdk' +import type * as StackbitTypes from '@stackbit/types' export const convertSchema = ( { documentTypeDefMap, nestedTypeDefMap }: core.SchemaDef, extensions: core.PluginExtensions, -): Stackbit.YamlConfig => { +): StackbitTypes.StackbitConfig => { // TODO this needs to be more dynamic/configurable const urlPathFieldName = 'url_path' const documentTypeDefs = Object.values(documentTypeDefMap) @@ -37,7 +38,7 @@ const documentOrObjectDefToStackbitYamlModel = ({ def: core.DocumentTypeDef | core.NestedTypeDef type: Stackbit.YamlModel['type'] urlPathFieldName: string -}): { model: Stackbit.YamlModel; name: string } => { +}): { model: StackbitTypes.NamelessModel; name: string } => { const ext = def.extensions.stackbit const fields = def._tag === 'DocumentTypeDef' @@ -68,7 +69,8 @@ const documentOrObjectDefToStackbitYamlModel = ({ case 'data': return { name, model: { ...modelCommon, type: 'data', singleInstance } } case 'config': - return { name, model: { ...modelCommon, type: 'config', singleInstance } } + // return { name, model: { ...modelCommon, type: 'config', singleInstance } } + throw new Error('Config models are not supported anymore') case 'object': return { name, model: { ...modelCommon, type: 'object' } } case 'page': @@ -115,6 +117,7 @@ const fieldDefToStackbitField = ({ return { ...commonField, type: 'object', fields: [] } case 'list': case 'list_polymorphic': + // @ts-expect-error TODO fix this together with some help from Stackbit return { ...commonField, type: 'list', items: listFieldDefToStackbitFieldListItems(fieldDef) } case 'image': return { ...commonField, type: 'string' } diff --git a/packages/contentlayer-stackbit-yaml-generator/src/lib/index.ts b/packages/contentlayer-stackbit-yaml-generator/src/lib/index.ts index 15fc277b..61a8805a 100644 --- a/packages/contentlayer-stackbit-yaml-generator/src/lib/index.ts +++ b/packages/contentlayer-stackbit-yaml-generator/src/lib/index.ts @@ -1,5 +1,5 @@ -import type { YamlConfig } from '@stackbit/sdk' +import type * as StackbitTypes from '@stackbit/types' -export type Transform = (config: YamlConfig) => YamlConfig +export type Transform = (config: StackbitTypes.StackbitConfig) => StackbitTypes.StackbitConfig export const defineTransform = (transform: Transform): Transform => transform diff --git a/yarn.lock b/yarn.lock index 34b951dc..0675f34a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -336,11 +336,11 @@ __metadata: "@contentlayer/core": "workspace:*" "@contentlayer/source-files": "workspace:*" "@contentlayer/utils": "workspace:*" - "@stackbit/sdk": ~0.2.38 + "@stackbit/sdk": ~0.3.13 vite: ^4.0.4 vitest: 0.27.1 peerDependencies: - "@stackbit/sdk": ~0.2.38 + "@stackbit/sdk": 0.3.x peerDependenciesMeta: "@stackbit/sdk": optional: true @@ -1433,32 +1433,15 @@ __metadata: languageName: node linkType: hard -"@stackbit/sdk@npm:^0.2.35": - version: 0.2.35 - resolution: "@stackbit/sdk@npm:0.2.35" +"@stackbit/sdk@npm:^0.3.13, @stackbit/sdk@npm:~0.3.13": + version: 0.3.13 + resolution: "@stackbit/sdk@npm:0.3.13" dependencies: "@octokit/rest": ^18.3.5 - "@stackbit/utils": ^0.2.3 - acorn: ^8.2.4 - esbuild: ^0.14.42 - fs-extra: ^9.1.0 - joi: ^17.4.0 - js-yaml: ^4.0.0 - lodash: ^4.17.20 - micromatch: ^4.0.2 - moment: ^2.29.1 - semver: ^7.3.5 - checksum: a7e536e4ea5b30478c9042b378612d87bb19ef94d166111cc814f2f70d8749bfa20991c4cba6d2172f94f6ad3973364b02e3d307643bea1197c98e8f367647da - languageName: node - linkType: hard - -"@stackbit/sdk@npm:~0.2.38": - version: 0.2.38 - resolution: "@stackbit/sdk@npm:0.2.38" - dependencies: - "@octokit/rest": ^18.3.5 - "@stackbit/utils": ^0.2.5 + "@stackbit/types": ^0.1.9 + "@stackbit/utils": ^0.2.14 acorn: ^8.2.4 + chokidar: ^3.5.3 esbuild: ^0.14.42 fs-extra: ^9.1.0 joi: ^17.4.0 @@ -1467,31 +1450,27 @@ __metadata: micromatch: ^4.0.2 moment: ^2.29.1 semver: ^7.3.5 - checksum: b6b7f1b6cf805fbe72addb3d170c216b7972fbd9f2f96f4842d7af76bc02ccf83dd93df79d63aad27f9a0ff3761906c688051fce3f6bb7a30570482dd1427def + checksum: a8715484658d7df9b7c29036b85385edb732830fe4b4527247aca8dbb02ca5c9321a879d6d9c90084935b7e60aa9f9f021176f1d4a10ff37bdb76c20fb6e4687 languageName: node linkType: hard -"@stackbit/utils@npm:^0.2.3": - version: 0.2.3 - resolution: "@stackbit/utils@npm:0.2.3" - dependencies: - "@iarna/toml": ^2.2.5 - fs-extra: ^9.1.0 - js-yaml: ^4.0.0 - lodash: ^4.17.21 - checksum: accca336d89f2b8f71b028ee43587d2a71b9b5d3b3e0b66bbb081ef60ee7cffc8e6f822fbd89ed3593b3da5297a7948f2dc499e837a4f78f0a6cb18acaa4b911 +"@stackbit/types@npm:^0.1.9": + version: 0.1.9 + resolution: "@stackbit/types@npm:0.1.9" + checksum: 007bcd333e3acca26e3678f0feb225e81e9a4b5e179a3df33599ff40d9d2b4abd9ff8b5f8284895f42b90da889be2f7e61a90a05dbb7c96bc9d4098aaf8cafde languageName: node linkType: hard -"@stackbit/utils@npm:^0.2.5": - version: 0.2.5 - resolution: "@stackbit/utils@npm:0.2.5" +"@stackbit/utils@npm:^0.2.14": + version: 0.2.14 + resolution: "@stackbit/utils@npm:0.2.14" dependencies: "@iarna/toml": ^2.2.5 fs-extra: ^9.1.0 js-yaml: ^4.0.0 lodash: ^4.17.21 - checksum: 27fd30a9d1d15a673821b79b793fa94bf2db03c6b56f6f8dfe796c5cdfb5f5e46516931c6e0f71fd8bc23b6e20bf694f2a297eb64a431bb85b31d5f2ac53a86f + strip-ansi: ^6.0.1 + checksum: 0069c2db79a1b99019a9deafc9f3193f147c73487060fce21b2813219955fcc3beeb6375f91094c2ee96f70730880905278583269614b63a71d82aa891c36e99 languageName: node linkType: hard @@ -3037,7 +3016,7 @@ __metadata: dependencies: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" - "@stackbit/sdk": ^0.2.35 + "@stackbit/sdk": ^0.3.13 clipanion: ^3.2.0-rc.14 contentlayer: "workspace:*" typanion: 3.12.1 From 75d8ad9581598715eace8b66b6f9de6d3475fec7 Mon Sep 17 00:00:00 2001 From: Johannes Schickling <schickling.j@gmail.com> Date: Tue, 17 Jan 2023 12:17:34 +0100 Subject: [PATCH 16/19] Released 0.2.10-dev.4 --- packages/@contentlayer/cli/package.json | 2 +- packages/@contentlayer/client/package.json | 2 +- packages/@contentlayer/core/package.json | 2 +- .../experimental-source-files-stackbit/package.json | 2 +- packages/@contentlayer/source-contentful/package.json | 2 +- packages/@contentlayer/source-files/package.json | 2 +- packages/@contentlayer/utils/package.json | 2 +- packages/contentlayer-stackbit-yaml-generator/package.json | 2 +- packages/contentlayer/package.json | 2 +- packages/next-contentlayer/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index 96e295f3..7f0ae1b6 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/cli", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/client/package.json b/packages/@contentlayer/client/package.json index 82fc6759..d1c397ee 100644 --- a/packages/@contentlayer/client/package.json +++ b/packages/@contentlayer/client/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/client", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index 18521f2f..9ccf6391 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/core", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index e2f7be86..a732c98a 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/experimental-source-files-stackbit", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index b1f7e21a..ddfcf718 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-contentful", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index f6a0b876..cc90ec29 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-files", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index 8700ce08..64602b0e 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/utils", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "exports": { "./package.json": { diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 4523632a..39c871df 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer-stackbit-yaml-generator", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index d276f580..c869e948 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "bin": "./bin/cli.cjs", "type": "module", "engines": { diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index 08fc8ba7..8cbc32ae 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "next-contentlayer", - "version": "0.2.10-dev.3", + "version": "0.2.10-dev.4", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false, From 71eda532a83d84293b828429aa3afe3ea9ded6cb Mon Sep 17 00:00:00 2001 From: Johannes Schickling <schickling.j@gmail.com> Date: Tue, 17 Jan 2023 16:46:37 +0100 Subject: [PATCH 17/19] remote content source (experimental) --- .github/workflows/ci.yml | 12 +++ .../node-script-remote-content/.gitignore | 1 + .../contentlayer.config.ts | 86 +++++++++++++++++++ .../node-script-remote-content/my-script.mjs | 6 ++ .../node-script-remote-content/package.json | 10 +++ .../source-remote-files/package.json | 22 +++++ .../source-remote-files/src/index.ts | 49 +++++++++++ .../source-remote-files/tsconfig.json | 11 +++ packages/contentlayer/package.json | 7 ++ .../src/source-remote-files/index.ts | 1 + packages/contentlayer/tsconfig.json | 1 + yarn.lock | 19 ++++ 12 files changed, 225 insertions(+) create mode 100644 examples/node-script-remote-content/.gitignore create mode 100644 examples/node-script-remote-content/contentlayer.config.ts create mode 100644 examples/node-script-remote-content/my-script.mjs create mode 100644 examples/node-script-remote-content/package.json create mode 100644 packages/@contentlayer/source-remote-files/package.json create mode 100644 packages/@contentlayer/source-remote-files/src/index.ts create mode 100644 packages/@contentlayer/source-remote-files/tsconfig.json create mode 100644 packages/contentlayer/src/source-remote-files/index.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b2ab52f..5c2556bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,3 +63,15 @@ jobs: - run: yarn build - run: yarn start working-directory: examples/node-script-mdx + + build-example-node-script-remote-content: + strategy: + matrix: + node-version: [14, 16, 17, 18] + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: schickling-actions/checkout-and-install@main + - run: yarn build + - run: yarn start + working-directory: examples/node-script-remote-content diff --git a/examples/node-script-remote-content/.gitignore b/examples/node-script-remote-content/.gitignore new file mode 100644 index 00000000..052717a6 --- /dev/null +++ b/examples/node-script-remote-content/.gitignore @@ -0,0 +1 @@ +nextjs-repo \ No newline at end of file diff --git a/examples/node-script-remote-content/contentlayer.config.ts b/examples/node-script-remote-content/contentlayer.config.ts new file mode 100644 index 00000000..1224b9ff --- /dev/null +++ b/examples/node-script-remote-content/contentlayer.config.ts @@ -0,0 +1,86 @@ +import { defineDocumentType } from 'contentlayer/source-files' +import { spawn } from 'node:child_process' +import { makeSource } from 'contentlayer/source-remote-files' + +const Post = defineDocumentType(() => ({ + name: 'Post', + filePathPattern: `docs/**/*.md`, + fields: { + title: { + type: 'string', + required: false, + }, + description: { + type: 'string', + required: false, + }, + }, + computedFields: { + url: { + type: 'string', + resolve: (doc) => `/posts/${doc._raw.flattenedPath}`, + }, + }, +})) + +const syncContentFromGit = async (contentDir: string) => { + const syncRun = async () => { + const gitUrl = 'https://github.com/vercel/next.js.git' + await runBashCommand(` + if [ -d "${contentDir}" ]; + then + cd "${contentDir}"; git pull; + else + git clone --depth 1 --single-branch ${gitUrl} ${contentDir}; + fi + `) + } + + let wasCancelled = false + let syncInterval + + const syncLoop = async () => { + console.log('Syncing content files from git') + + await syncRun() + + if (wasCancelled) return + + syncInterval = setTimeout(syncLoop, 1000 * 60) + } + + // Block until the first sync is done + await syncLoop() + + return () => { + wasCancelled = true + clearTimeout(syncInterval) + } +} + +const runBashCommand = (command: string) => + new Promise((resolve, reject) => { + const child = spawn(command, [], { shell: true }) + + child.stdout.setEncoding('utf8') + child.stdout.on('data', (data) => process.stdout.write(data)) + + child.stderr.setEncoding('utf8') + child.stderr.on('data', (data) => process.stderr.write(data)) + + child.on('close', function (code) { + if (code === 0) { + resolve(void 0) + } else { + reject(new Error(`Command failed with exit code ${code}`)) + } + }) + }) + +export default makeSource({ + syncFiles: syncContentFromGit, + contentDirPath: 'nextjs-repo', + contentDirInclude: ['docs'], + documentTypes: [Post], + disableImportAliasWarning: true, +}) diff --git a/examples/node-script-remote-content/my-script.mjs b/examples/node-script-remote-content/my-script.mjs new file mode 100644 index 00000000..553cc6ff --- /dev/null +++ b/examples/node-script-remote-content/my-script.mjs @@ -0,0 +1,6 @@ +import { allPosts } from './.contentlayer/generated/index.mjs' + +const postUrls = allPosts.map(post => post.url) + +console.log(`Found ${postUrls.length} posts:`); +console.log(postUrls) diff --git a/examples/node-script-remote-content/package.json b/examples/node-script-remote-content/package.json new file mode 100644 index 00000000..4b2a45ee --- /dev/null +++ b/examples/node-script-remote-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "node-script-remote-content-example", + "private": true, + "scripts": { + "start": "contentlayer build && node --experimental-json-modules my-script.mjs" + }, + "dependencies": { + "contentlayer": "latest" + } +} diff --git a/packages/@contentlayer/source-remote-files/package.json b/packages/@contentlayer/source-remote-files/package.json new file mode 100644 index 00000000..3e70a0e0 --- /dev/null +++ b/packages/@contentlayer/source-remote-files/package.json @@ -0,0 +1,22 @@ +{ + "name": "@contentlayer/source-remote-files", + "version": "0.2.10-dev.4", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js" + } + }, + "types": "./dist/index.d.ts", + "files": [ + "./dist/*.{js,ts,map}", + "./dist/!(__test__)/**/*.{js,ts,map}", + "./src", + "./package.json" + ], + "dependencies": { + "@contentlayer/core": "workspace:*", + "@contentlayer/source-files": "workspace:*", + "@contentlayer/utils": "workspace:*" + } +} diff --git a/packages/@contentlayer/source-remote-files/src/index.ts b/packages/@contentlayer/source-remote-files/src/index.ts new file mode 100644 index 00000000..08d36e25 --- /dev/null +++ b/packages/@contentlayer/source-remote-files/src/index.ts @@ -0,0 +1,49 @@ +import * as core from '@contentlayer/core' +import * as SourceFiles from '@contentlayer/source-files' +import { unknownToAbsolutePosixFilePath } from '@contentlayer/utils' +import { M, OT, pipe, S, T } from '@contentlayer/utils/effect' + +type CancelFn = () => void + +type Args = SourceFiles.Args & { + syncFiles: ( + /** Provided `contentDirPath` (as absolute file path) */ + contentDirPath: string, + ) => Promise<CancelFn> +} + +export const makeSource: core.MakeSourcePlugin<Args> = async (rawArgs) => { + const { + restArgs: { syncFiles, ...args }, + } = await core.processArgs(rawArgs) + + const sourcePlugin = await SourceFiles.makeSource(rawArgs) + + return { + ...sourcePlugin, + fetchData: (fetchDataArgs) => + pipe( + M.gen(function* ($) { + const contentDirPath = yield* $( + pipe( + core.getCwd, + T.map((cwd) => unknownToAbsolutePosixFilePath(args.contentDirPath, cwd)), + ), + ) + + // TODO acutally cancel the syncing when the process is terminated + const cancelRemoteSyncing = yield* $( + pipe( + T.tryPromiseOrDie(() => syncFiles(contentDirPath)), + OT.withSpan('syncFiles'), + ), + ) + + yield* $(M.finalizer(T.sync(() => cancelRemoteSyncing()))) + + return sourcePlugin.fetchData(fetchDataArgs) + }), + S.unwrapManaged, + ), + } +} diff --git a/packages/@contentlayer/source-remote-files/tsconfig.json b/packages/@contentlayer/source-remote-files/tsconfig.json new file mode 100644 index 00000000..87b918d9 --- /dev/null +++ b/packages/@contentlayer/source-remote-files/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "module": "ES2020", + "rootDir": "./src", + "outDir": "./dist", + "tsBuildInfoFile": "./dist/.tsbuildinfo.json" + }, + "include": ["./src"], + "references": [{ "path": "../source-files" }, { "path": "../utils" }, { "path": "../core" }] +} diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index c869e948..274eb5e2 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -14,6 +14,9 @@ "./source-files/schema": { "import": "./dist/source-files/schema/index.js" }, + "./source-remote-files": { + "import": "./dist/source-remote-files/index.js" + }, "./client": { "import": "./dist/client/index.js" }, @@ -39,6 +42,9 @@ "source-files/schema": [ "./dist/source-files/schema" ], + "source-remote-files": [ + "./dist/source-remote-files" + ], "client": [ "./dist/client" ], @@ -70,6 +76,7 @@ "@contentlayer/client": "workspace:*", "@contentlayer/core": "workspace:*", "@contentlayer/source-files": "workspace:*", + "@contentlayer/source-remote-files": "workspace:*", "@contentlayer/utils": "workspace:*" }, "devDependencies": { diff --git a/packages/contentlayer/src/source-remote-files/index.ts b/packages/contentlayer/src/source-remote-files/index.ts new file mode 100644 index 00000000..7f72211f --- /dev/null +++ b/packages/contentlayer/src/source-remote-files/index.ts @@ -0,0 +1 @@ +export * from '@contentlayer/source-remote-files' diff --git a/packages/contentlayer/tsconfig.json b/packages/contentlayer/tsconfig.json index 69c3542e..9e8fe0c2 100644 --- a/packages/contentlayer/tsconfig.json +++ b/packages/contentlayer/tsconfig.json @@ -11,6 +11,7 @@ { "path": "../@contentlayer/cli" }, { "path": "../@contentlayer/client" }, { "path": "../@contentlayer/source-files" }, + { "path": "../@contentlayer/source-remote-files" }, { "path": "../@contentlayer/utils" }, { "path": "../@contentlayer/core" } ] diff --git a/yarn.lock b/yarn.lock index 0675f34a..92ec397e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -385,6 +385,16 @@ __metadata: languageName: unknown linkType: soft +"@contentlayer/source-remote-files@workspace:*, @contentlayer/source-remote-files@workspace:packages/@contentlayer/source-remote-files": + version: 0.0.0-use.local + resolution: "@contentlayer/source-remote-files@workspace:packages/@contentlayer/source-remote-files" + dependencies: + "@contentlayer/core": "workspace:*" + "@contentlayer/source-files": "workspace:*" + "@contentlayer/utils": "workspace:*" + languageName: unknown + linkType: soft + "@contentlayer/utils@workspace:*, @contentlayer/utils@workspace:packages/@contentlayer/utils": version: 0.0.0-use.local resolution: "@contentlayer/utils@workspace:packages/@contentlayer/utils" @@ -3037,6 +3047,7 @@ __metadata: "@contentlayer/client": "workspace:*" "@contentlayer/core": "workspace:*" "@contentlayer/source-files": "workspace:*" + "@contentlayer/source-remote-files": "workspace:*" "@contentlayer/utils": "workspace:*" typescript: ^4.9.4 bin: @@ -6669,6 +6680,14 @@ __metadata: languageName: unknown linkType: soft +"node-script-remote-content-example@workspace:examples/node-script-remote-content": + version: 0.0.0-use.local + resolution: "node-script-remote-content-example@workspace:examples/node-script-remote-content" + dependencies: + contentlayer: latest + languageName: unknown + linkType: soft + "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" From bc5a857a7b53e7ac5b214e7627eb2c52cf76d620 Mon Sep 17 00:00:00 2001 From: Johannes Schickling <schickling.j@gmail.com> Date: Tue, 17 Jan 2023 17:01:40 +0100 Subject: [PATCH 18/19] Released 0.2.10-dev.5 --- packages/@contentlayer/cli/package.json | 2 +- packages/@contentlayer/client/package.json | 2 +- packages/@contentlayer/core/package.json | 2 +- .../experimental-source-files-stackbit/package.json | 2 +- packages/@contentlayer/source-contentful/package.json | 2 +- packages/@contentlayer/source-files/package.json | 2 +- packages/@contentlayer/source-remote-files/package.json | 2 +- packages/@contentlayer/utils/package.json | 2 +- packages/contentlayer-stackbit-yaml-generator/package.json | 2 +- packages/contentlayer/package.json | 2 +- packages/next-contentlayer/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index 7f0ae1b6..d45afd6f 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/cli", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/client/package.json b/packages/@contentlayer/client/package.json index d1c397ee..6428c5b2 100644 --- a/packages/@contentlayer/client/package.json +++ b/packages/@contentlayer/client/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/client", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index 9ccf6391..37d81071 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/core", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index a732c98a..fe3159f8 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/experimental-source-files-stackbit", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index ddfcf718..46986e1b 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-contentful", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index cc90ec29..6bd27b55 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-files", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-remote-files/package.json b/packages/@contentlayer/source-remote-files/package.json index 3e70a0e0..9f8b69cb 100644 --- a/packages/@contentlayer/source-remote-files/package.json +++ b/packages/@contentlayer/source-remote-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-remote-files", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index 64602b0e..b47f3fbc 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/utils", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "exports": { "./package.json": { diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 39c871df..6e8d4b35 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer-stackbit-yaml-generator", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index 274eb5e2..d59a3f56 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "bin": "./bin/cli.cjs", "type": "module", "engines": { diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index 8cbc32ae..2e1de1b3 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "next-contentlayer", - "version": "0.2.10-dev.4", + "version": "0.2.10-dev.5", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false, From 237b1a941ea3f6341a1eb29589b29756a5bad3f4 Mon Sep 17 00:00:00 2001 From: Johannes Schickling <schickling.j@gmail.com> Date: Wed, 18 Jan 2023 14:33:03 +0100 Subject: [PATCH 19/19] Released 0.3.0 --- packages/@contentlayer/cli/package.json | 2 +- packages/@contentlayer/client/package.json | 2 +- packages/@contentlayer/core/package.json | 2 +- .../experimental-source-files-stackbit/package.json | 2 +- packages/@contentlayer/source-contentful/package.json | 2 +- packages/@contentlayer/source-files/package.json | 2 +- packages/@contentlayer/source-remote-files/package.json | 2 +- packages/@contentlayer/utils/package.json | 2 +- packages/contentlayer-stackbit-yaml-generator/package.json | 2 +- packages/contentlayer/package.json | 2 +- packages/next-contentlayer/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/@contentlayer/cli/package.json b/packages/@contentlayer/cli/package.json index d45afd6f..f0b93926 100644 --- a/packages/@contentlayer/cli/package.json +++ b/packages/@contentlayer/cli/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/cli", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/client/package.json b/packages/@contentlayer/client/package.json index 6428c5b2..02be37fe 100644 --- a/packages/@contentlayer/client/package.json +++ b/packages/@contentlayer/client/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/client", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/core/package.json b/packages/@contentlayer/core/package.json index 37d81071..84fb9f69 100644 --- a/packages/@contentlayer/core/package.json +++ b/packages/@contentlayer/core/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/core", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/experimental-source-files-stackbit/package.json b/packages/@contentlayer/experimental-source-files-stackbit/package.json index fe3159f8..73df4142 100644 --- a/packages/@contentlayer/experimental-source-files-stackbit/package.json +++ b/packages/@contentlayer/experimental-source-files-stackbit/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/experimental-source-files-stackbit", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index 46986e1b..c6ec716c 100644 --- a/packages/@contentlayer/source-contentful/package.json +++ b/packages/@contentlayer/source-contentful/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-contentful", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/@contentlayer/source-files/package.json b/packages/@contentlayer/source-files/package.json index 6bd27b55..28a2ff2f 100644 --- a/packages/@contentlayer/source-files/package.json +++ b/packages/@contentlayer/source-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-files", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/source-remote-files/package.json b/packages/@contentlayer/source-remote-files/package.json index 9f8b69cb..9f8d590f 100644 --- a/packages/@contentlayer/source-remote-files/package.json +++ b/packages/@contentlayer/source-remote-files/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/source-remote-files", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": { ".": { diff --git a/packages/@contentlayer/utils/package.json b/packages/@contentlayer/utils/package.json index b47f3fbc..61f58082 100644 --- a/packages/@contentlayer/utils/package.json +++ b/packages/@contentlayer/utils/package.json @@ -1,6 +1,6 @@ { "name": "@contentlayer/utils", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "exports": { "./package.json": { diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 6e8d4b35..b2af409d 100644 --- a/packages/contentlayer-stackbit-yaml-generator/package.json +++ b/packages/contentlayer-stackbit-yaml-generator/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer-stackbit-yaml-generator", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", diff --git a/packages/contentlayer/package.json b/packages/contentlayer/package.json index d59a3f56..b4e76d29 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.10-dev.5", + "version": "0.3.0", "bin": "./bin/cli.cjs", "type": "module", "engines": { diff --git a/packages/next-contentlayer/package.json b/packages/next-contentlayer/package.json index 2e1de1b3..3391d5f1 100644 --- a/packages/next-contentlayer/package.json +++ b/packages/next-contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "next-contentlayer", - "version": "0.2.10-dev.5", + "version": "0.3.0", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false,