diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4405c641..5c2556bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,3 +51,27 @@ 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 + + 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/.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/.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/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/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/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 2cd6131e..f0b93926 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.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", @@ -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/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/client/package.json b/packages/@contentlayer/client/package.json index af6f23a8..02be37fe 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.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 b2458b10..84fb9f69 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.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", @@ -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.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.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/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/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/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/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 552592de..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.9", + "version": "0.3.0", "type": "module", "exports": { ".": { @@ -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,10 +29,10 @@ "@contentlayer/core": "workspace:*", "@contentlayer/source-files": "workspace:*", "@contentlayer/utils": "workspace:*", - "@stackbit/sdk": "~0.2.38" + "@stackbit/sdk": "~0.3.13" }, "devDependencies": { - "vite": "^3.2.3", - "vitest": "0.24.5" + "vite": "^4.0.4", + "vitest": "0.27.1" } } 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/source-contentful/package.json b/packages/@contentlayer/source-contentful/package.json index 64835466..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.9", + "version": "0.3.0", "type": "module", "exports": "./dist/index.js", "types": "./dist/index.d.ts", @@ -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 2adb91e7..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.9", + "version": "0.3.0", "type": "module", "exports": { ".": { @@ -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/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<core.PluginOptions> }) => { + 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 = <A>(eff: T.Effect<OT.HasTracer & HasClock & HasConsole & HasDocumentContext & HasCwd, unknown, A>) => - pipe(eff, provideTracing('contentlayer-test'), provideConsole, provideTestDocumentContext, provideCwd, T.runPromise) - -const provideTestDocumentContext = provideDocumentContext({ - rawContent: __unusedValue, - relativeFilePath: __unusedValue, - rawDocumentData: __unusedValue, - documentTypeDef: __unusedValue, -}) +const runPromise = <A>(eff: T.Effect<OT.HasTracer & HasClock & HasConsole & HasCwd, unknown, A>) => + 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 = <K extends keyof DocumentContext>(key: K) => T.accessService(DocumentContext)((_) => _[key]) +export const getDocumentContext = T.accessService(DocumentContext)((_) => _) + export type HasDocumentContext = Has<DocumentContext> 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<HasDocumentContext & OT.HasTracer & HasConsole, core.UnexpectedMarkdownError, core.Markdown> => 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..4e514bc1 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<string, any> /** 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,41 @@ const getDataForFieldDef = ({ }: { fieldDef: core.FieldDef rawFieldData: any - documentTypeName: string + isRootDocument: boolean coreSchemaDef: core.SchemaDef options: core.PluginOptions documentFilePath: RelativePosixFilePath contentDirPath: AbsolutePosixFilePath }): T.Effect<OT.HasTracer & HasConsole & HasDocumentContext & core.HasCwd, MakeDocumentInternalError, any> => T.gen(function* ($) { - if (rawFieldData === undefined && fieldDef.default) { + if ((rawFieldData === undefined || rawFieldData === null) && fieldDef.default !== undefined) { 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 })}`, + fieldDef.isRequired === false || fieldDef.isSystemField === true, + `Inconsistent data found: ${rawFieldData} ${JSON.stringify( + { + fieldDef, + documentFilePath, + rootDocTypeName: documentTypeDef.name, + isRootDocument, + }, + null, + 2, + )}`, ) - return undefined + return rawFieldData } - const documentTypeDef = coreSchemaDef.documentTypeDefMap[documentTypeName]! const parseFieldDataEff = <TFieldType extends core.FieldDefType>(fieldType: TFieldType) => parseFieldData({ rawData: rawFieldData, fieldType, - documentFilePath, fieldName: fieldDef.name, - documentTypeDef, }) switch (fieldDef.type) { @@ -198,7 +205,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -212,7 +219,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: fieldDef.typeDef.fieldDefs, - typeName: '__UNNAMED__', + nestedTypeName: '__UNNAMED__', coreSchemaDef, options, documentFilePath, @@ -224,6 +231,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 +239,7 @@ const getDataForFieldDef = ({ documentFilePath, fieldName: fieldDef.name, validNestedTypeNames: fieldDef.nestedTypeNames, - documentTypeDef: coreSchemaDef.documentTypeDefMap[documentTypeName]!, + documentTypeDef, }), ), ) @@ -243,7 +251,7 @@ const getDataForFieldDef = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -264,7 +272,6 @@ const getDataForFieldDef = ({ fieldDef, coreSchemaDef, options, - documentTypeName, documentFilePath, contentDirPath, }), @@ -272,12 +279,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 +310,6 @@ const getDataForListItem = ({ fieldDef, coreSchemaDef, options, - documentTypeName, documentFilePath, contentDirPath, }: { @@ -312,19 +317,15 @@ const getDataForListItem = ({ fieldDef: core.ListFieldDef | core.ListPolymorphicFieldDef coreSchemaDef: core.SchemaDef options: core.PluginOptions - documentTypeName: string documentFilePath: RelativePosixFilePath contentDirPath: AbsolutePosixFilePath }): T.Effect<OT.HasTracer & HasConsole & HasDocumentContext & core.HasCwd, MakeDocumentInternalError, any> => T.gen(function* ($) { - const documentTypeDef = coreSchemaDef.documentTypeDefMap[documentTypeName]! const parseFieldDataEff = <TFieldType extends core.FieldDefType>(fieldType: TFieldType) => parseFieldData({ rawData: rawItemData, fieldType, - documentFilePath, fieldName: fieldDef.name, - documentTypeDef, }) if (fieldDef.type === 'list_polymorphic') { @@ -336,6 +337,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 +345,7 @@ const getDataForListItem = ({ documentFilePath, fieldName: fieldDef.name, validNestedTypeNames, - documentTypeDef: coreSchemaDef.documentTypeDefMap[documentTypeName]!, + documentTypeDef, }), ), ) @@ -352,7 +354,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData: rawItemData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -369,7 +371,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData, fieldDefs: nestedTypeDef.fieldDefs, - typeName: nestedTypeDef.name, + nestedTypeName: nestedTypeDef.name, coreSchemaDef, options, documentFilePath, @@ -383,7 +385,7 @@ const getDataForListItem = ({ makeNestedDocument({ rawObjectData, fieldDefs: fieldDef.of.typeDef.fieldDefs, - typeName: '__UNNAMED__', + nestedTypeName: '__UNNAMED__', coreSchemaDef, options, documentFilePath, @@ -395,12 +397,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..1987bc25 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(), @@ -36,32 +36,23 @@ const codecMap = { reference_polymorphic: zod.string(), } -export type ParsedFieldData<TFieldType extends core.FieldDefType> = zod.infer<typeof codecMap[TFieldType]> +export type ParsedFieldData<TFieldType extends core.FieldDefType> = zod.infer<(typeof codecMap)[TFieldType]> export const parseFieldData = <TFieldType extends core.FieldDefType>({ rawData, fieldType, - documentTypeDef, - documentFilePath, fieldName, }: { rawData: unknown fieldType: TFieldType - documentTypeDef: core.DocumentTypeDef - documentFilePath: RelativePosixFilePath + /** Only needed for error handling */ fieldName: string -}): T.Effect<unknown, FetchDataError.IncompatibleFieldDataError, ParsedFieldData<TFieldType>> => { +}): T.Effect<HasDocumentContext, FetchDataError.IncompatibleFieldDataError, ParsedFieldData<TFieldType>> => { 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/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<ValidateDocumentDataError> = 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<FetchDataError.IncompatibleFieldDataError | FetchDataError.ReferencedFileDoesNotExistError> + 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<string, any> + 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<string, any> + 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/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 = <DefName extends string>( def, }) -// export const defineSchema = (_: SchemaDef): SchemaDef => _ +export const defineFields = <TFieldDefs extends FieldDefs>(fields: TFieldDefs): TFieldDefs => fields + +export const defineComputedFields = < + TDefName extends string, + TComputedFields extends ComputedFields<TDefName> = ComputedFields<TDefName>, +>( + computedFields: TComputedFields, +): TComputedFields => computedFields diff --git a/packages/@contentlayer/source-remote-files/package.json b/packages/@contentlayer/source-remote-files/package.json new file mode 100644 index 00000000..9f8d590f --- /dev/null +++ b/packages/@contentlayer/source-remote-files/package.json @@ -0,0 +1,22 @@ +{ + "name": "@contentlayer/source-remote-files", + "version": "0.3.0", + "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/utils/package.json b/packages/@contentlayer/utils/package.json index 90a71766..61f58082 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.3.0", "type": "module", "exports": { "./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/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 = <R, E1, EE1, A>( ), ) +export const tryPromiseOrDie = <A>(promise: () => Promise<A>) => pipe(T.tryPromise(promise), T.orDie) + +export const sync = <A>(fn: () => A): T.Effect<unknown, never, A> => T.succeedWith(fn) + export const eitherMap = <A1, A2>(mapRight: (a1: A1) => A2) => <R, E1, EE1>(effect: T.Effect<R, E1, E.Either<EE1, A1>>, __trace?: string): T.Effect<R, E1, E.Either<EE1, A2>> => 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<OT.Span> + +export const withStreamSpan = + (name: string, options?: OTApi.SpanOptions, ctx?: OTApi.Context) => + <R, E, A>(stream: S.Stream<R & HasSpan, E, A>): S.Stream<R & OT.HasTracer, E, A> => + 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' diff --git a/packages/contentlayer-stackbit-yaml-generator/package.json b/packages/contentlayer-stackbit-yaml-generator/package.json index 3948eca1..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.9", + "version": "0.3.0", "type": "module", "bin": "./dist/cli/index.js", "exports": "./dist/lib/index.js", @@ -17,15 +17,15 @@ "dependencies": { "@contentlayer/core": "workspace:*", "@contentlayer/utils": "workspace:*", - "@stackbit/sdk": "^0.2.35", - "clipanion": "^3.2.0-rc.13", + "@stackbit/sdk": "^0.3.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-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' }, 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/packages/contentlayer/package.json b/packages/contentlayer/package.json index 9784af23..b4e76d29 100644 --- a/packages/contentlayer/package.json +++ b/packages/contentlayer/package.json @@ -1,6 +1,6 @@ { "name": "contentlayer", - "version": "0.2.9", + "version": "0.3.0", "bin": "./bin/cli.cjs", "type": "module", "engines": { @@ -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,10 +76,11 @@ "@contentlayer/client": "workspace:*", "@contentlayer/core": "workspace:*", "@contentlayer/source-files": "workspace:*", + "@contentlayer/source-remote-files": "workspace:*", "@contentlayer/utils": "workspace:*" }, "devDependencies": { - "typescript": "^4.8.4" + "typescript": "^4.9.4" }, "author": "schickling", "homepage": "https://github.com/contentlayerdev/contentlayer", 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/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 47e087fd..3391d5f1 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.3.0", "type": "module", "main": "./dist/index-cjs.cjs", "sideEffects": false, @@ -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..92ec397e 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.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.17.x markdown-wasm: 1.x peerDependenciesMeta: esbuild: @@ -336,11 +336,11 @@ __metadata: "@contentlayer/core": "workspace:*" "@contentlayer/source-files": "workspace:*" "@contentlayer/utils": "workspace:*" - "@stackbit/sdk": ~0.2.38 - vite: ^3.2.3 - vitest: 0.24.5 + "@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 @@ -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,32 @@ __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 + +"@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 @@ -404,10 +414,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 +516,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 +764,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 +894,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 @@ -1286,32 +1443,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 @@ -1320,40 +1460,36 @@ __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 -"@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 +1560,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 +1712,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 +1726,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 +1740,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 +1760,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 +1799,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 +1833,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 +1852,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 +1896,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 +1921,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 +1987,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 +2012,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 +2184,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 +2211,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: 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: 2a652b3e8dc0bebb6117e42a5ab5738af0203a14c27341d7bb2431467bdb4b348e2c5dc555dfcda8af0a5e4075c400b85311ded73861c87290a71a17c3e0a257 + checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 languageName: node linkType: hard @@ -2133,6 +2290,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 +2451,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 +2591,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 +2773,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 +3006,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 @@ -2840,13 +3026,13 @@ __metadata: dependencies: "@contentlayer/core": "workspace:*" "@contentlayer/utils": "workspace:*" - "@stackbit/sdk": ^0.2.35 - clipanion: ^3.2.0-rc.13 + "@stackbit/sdk": ^0.3.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 @@ -2861,8 +3047,9 @@ __metadata: "@contentlayer/client": "workspace:*" "@contentlayer/core": "workspace:*" "@contentlayer/source-files": "workspace:*" + "@contentlayer/source-remote-files": "workspace:*" "@contentlayer/utils": "workspace:*" - typescript: ^4.8.4 + typescript: ^4.9.4 bin: contentlayer: ./bin/cli.cjs languageName: unknown @@ -2979,15 +3166,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 +3219,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 +3453,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 +3484,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 +3556,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-64: + "@esbuild/android-arm64": optional: true - esbuild-android-arm64: + "@esbuild/android-x64": optional: true - esbuild-darwin-64: + "@esbuild/darwin-arm64": optional: true - esbuild-darwin-arm64: + "@esbuild/darwin-x64": optional: true - esbuild-freebsd-64: + "@esbuild/freebsd-arm64": optional: true - esbuild-freebsd-arm64: + "@esbuild/freebsd-x64": optional: true - esbuild-linux-32: + "@esbuild/linux-arm": optional: true - esbuild-linux-64: + "@esbuild/linux-arm64": optional: true - esbuild-linux-arm: + "@esbuild/linux-ia32": + optional: true + "@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 +3654,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 +3776,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 +3800,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 +3821,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 153b022d309e1b647a73b1bb0fa98912add699b06e279084155f23c6f2b5fc5abd05411fc1ba81608a24bbfaf044ca079544c16fffa6fc987b8f676c9960a2c4 + checksum: 23c8fb3c57291eecd9c1448faf603226a8f885022a2cd96e303459bf72e39b7f54987c6fb948f0f9eecaf7085600e6eb0663482a35ea83da12e9f9141a22b91e languageName: node linkType: hard @@ -4017,15 +4124,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 +4181,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 +4356,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 +4447,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 +4479,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 +4558,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 +4752,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 +4790,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 +4857,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 +4874,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 +4916,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 +4976,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 +5001,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 +5213,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 +5345,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 +5455,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 +6390,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 +6416,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 +6478,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 +6498,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 +6509,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 +6573,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: f6fea2ee34a8c490834cbd7688cfb346337a4dc8530282bf50ee94e20277ad66cb00a614c92c07f8b00832795eaa3a10847f10c8d540789b0b1b1f2914a3b239 + checksum: bc9aedfc70b979bb33a2190adca3719f8b0012d345a1bc44a6efac320ff599de1e39ade7ba7bae8e5f0d57ebcffb8c4ecc8b7da55565be6a59574896568f0685 languageName: node linkType: hard @@ -6477,6 +6672,22 @@ __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 + +"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" @@ -6549,6 +6760,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 +6786,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 +6827,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 +6895,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 +6913,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 +6954,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 +7008,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 +7050,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 +7118,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 +7221,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 +7282,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 +7680,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 +7693,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": +"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b" dependencies: @@ -7528,9 +7762,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 +7772,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 6a2bf167b3587d4df709b37d149ad0300692cc5deb510f89ac7bdc77c8738c9546ae3de9322b0968e1ed2b0e984571f5f55aae28fa7de4cfcb1bc5402a4e2be6 + checksum: 31a882689c58d084ac36362aeaf2422dc4b80d671bd88c856693c37d63a26ddac9b9819dfba7f79c2d50d5207868b0e3d75f728fe551bbc347cf5dedf8ece18e languageName: node linkType: hard @@ -7583,6 +7817,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 +7863,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 +7901,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 +7914,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 +7974,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 +8104,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 +8178,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 +8226,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 +8248,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 +8340,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 +8358,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 +8370,7 @@ __metadata: optional: true babel-plugin-macros: optional: true - checksum: e5b70476fd9059147dfe35dd912e537e422a7f900cc88f80456c97da495c655598875d64de2199641d627770a7e55ed08be0fd82646bc386791fdb1d0e5af2b1 + checksum: 523a33b38603492547e861b98e29c873939b04e15fbe5ef16132c6f1e15958126647983c7d4675325038b428a5e91183d996e90141b18bdd1bbadf6e2c45b2fa languageName: node linkType: hard @@ -8109,9 +8399,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 +8431,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 4f29f9d7bed74f70cd90281c4068e20903cbe79949987aae7c6cf197df9c852caa0d9884c19547f55eac09c2468dfe30c25bc8e75482e2654e24ee40d74078f9 + checksum: ec187d180c722ec4f57537f2216c7b21269b525f12aaf353cea464d939c3e6286a1221eb3e1206e45d1f015f296171309ad4d9952899b0245cd07d9500a9401f languageName: node linkType: hard @@ -8340,9 +8630,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 +8645,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 +8790,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<compat/typescript>, typescript@patch:typescript@^4.8.4#~builtin<compat/typescript>": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin<compat/typescript>::version=4.8.4&hash=a1c5e5" +"typescript@patch:typescript@4.9.4#~builtin<compat/typescript>, typescript@patch:typescript@^4.9.4#~builtin<compat/typescript>": + version: 4.9.4 + resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin<compat/typescript>::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 +9005,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 +9096,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 +9143,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 +9177,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 3c7c618f7fb471cdfaf7f8eb769cb5f4174447e1103cd6221cbc2ae1ea1102bc28dd6a621ead250e6aa42c1e9ee3c8092666ea81078e1d88d2325c484218fd0a + checksum: eb86c8cdfe8dcb6644005486b31cb60bc596f2aa683cb194abb5c0afca7c2a5dfdb02bbc7f83f419ad170227ac9c3b898f4406a6d1433105fb61d79d78e47d52 languageName: node linkType: hard @@ -8896,21 +9213,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 +9254,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 801d153082ec9d237d8720783dc939aa8c8a4cdd71625ddac997f99a98664b055a0e3efbcb3af648d44f0b8b80c014d48150b2c281870023628c1bdffa336d08 + checksum: 635b83429c74db4b9e10954ffd7eb21c9927fc83ea4c53e935cf2d8d15636b07b7482fa0c9469a32248da6570bdabfee08b9bc3b57d7b2a52861533115f9c8bc languageName: node linkType: hard @@ -8997,6 +9321,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 +9357,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 +9537,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