diff --git a/_includes/community b/_includes/community index b81462a65..903010740 160000 --- a/_includes/community +++ b/_includes/community @@ -1 +1 @@ -Subproject commit b81462a65d1f9d4941edfa8a4eff8189c2ef1068 +Subproject commit 903010740745b96f9b21204c4b578bb77d84cb53 diff --git a/components/AmbassadorsCard.tsx b/components/AmbassadorsCard.tsx index ad287ce64..68b0b49c8 100644 --- a/components/AmbassadorsCard.tsx +++ b/components/AmbassadorsCard.tsx @@ -55,11 +55,11 @@ const SocialIcon = ({ platform }: { platform: SocialIcons }) => { twitter: ( - + ), linkedin: ( @@ -114,7 +114,7 @@ const AmbassadorCard = ({ ambassador }: { ambassador: Ambassador }) => { contributions = [], } = ambassador; - const SocialIconss: SocialIcons[] = [ + const SocialIcons: SocialIcons[] = [ 'github', 'twitter', 'mastodon', @@ -122,7 +122,7 @@ const AmbassadorCard = ({ ambassador }: { ambassador: Ambassador }) => { ]; return ( -
+
@@ -137,7 +137,7 @@ const AmbassadorCard = ({ ambassador }: { ambassador: Ambassador }) => { onError={() => setImgSrc(`/img/ambassadors/${name}.jpg`)} /> -
+

{name}

@@ -157,8 +157,8 @@ const AmbassadorCard = ({ ambassador }: { ambassador: Ambassador }) => {

)} -
- {SocialIconss.map((platform) => { +
+ {SocialIcons.map((platform) => { const username = ambassador[platform]; return username ? ( (

- Copyright © 2024 JSON Schema.  + Copyright © {new Date().getFullYear()} JSON Schema.  All rights reserved.

diff --git a/components/Sidebar.tsx b/components/Sidebar.tsx index 194938bba..d996f0526 100644 --- a/components/Sidebar.tsx +++ b/components/Sidebar.tsx @@ -386,6 +386,7 @@ export const DocsNav = ({ setOpen={setOpen} /> + { h4: { component: Headline4 }, strong: { component: ({ children }) => ( - + {children} ), diff --git a/context.ts b/context.ts index 2d7bbee79..9f8022ea5 100644 --- a/context.ts +++ b/context.ts @@ -21,6 +21,7 @@ export const SectionContext = React.createContext< | 'reference' | 'roadmap' | 'ambassador' + | 'pro-help' >(null); export const BlockContext = React.createContext(null); export const FullMarkdownContext = React.createContext(null); diff --git a/data/tooling-data.yaml b/data/tooling-data.yaml index 710113da9..49268ff35 100644 --- a/data/tooling-data.yaml +++ b/data/tooling-data.yaml @@ -3046,4 +3046,63 @@ license: 'Apache-2.0' source: 'https://github.com/pubg/protoc-gen-jsonschema' supportedDialects: - draft: ['4', '6', '7', '2019-09', '2020-12'] \ No newline at end of file + draft: ['4', '6', '7', '2019-09', '2020-12'] + +- name: swift-json-schema + description: 'swift-json-schema support generating JSON schema using Swift result builders or from Swift types directly using macros.' + environments: ['macOS', 'iOS', 'tvOS', 'watchOS', 'visionOS', 'Linux'] + toolingTypes: ['validator', 'code-to-schema', 'model-to-schema'] + languages: ['Swift'] + maintainers: + - name: 'Austin Evans' + username: 'ajevans99' + platform: 'github' + license: 'MIT' + source: 'https://github.com/ajevans99/swift-json-schema' + supportedDialects: + draft: ['2020-12'] + +- name: 'Liquid JSON Schema Editor' + description: 'Graphical JSON Schema editor for draft-04, draft-06, draft-07, 2019-09 and 2020-12, with split source code and graphical editing. Includes validation of JSON files based on JSON Schema, JSON Sample Generator and JSON Schema Documentation Generator.' + toolingTypes: ['validator', 'documentation', 'editor'] + languages: ['C#', '.NET'] + environments: ['Microsoft Windows'] + maintainers: + - name: 'Liquid Technologies Ltd' + platform: 'other' + creators: + - name: 'Liquid Technologies Ltd' + platform: 'other' + homepage: 'https://www.liquid-technologies.com/json-schema-editor' + license: 'Proprietary and Freeware' + supportedDialects: + draft: ['4', '6', '7', '2019-09', '2020-12'] + +- name: 'JSON Schema Editor' + description: 'The JSON schema editor provides an easy UI for building JSON Schema. In addition, users can convert their json schema into SQL, GraphQL, and Protocol Buffers formats. Lastly this tool allows users to generate sample data that conforms to the json schema they have defined.' + toolingTypes: ['editor'] + maintainers: + - name: 'robclarabase' + username: 'robclarabase' + platform: 'github' + license: 'MIT' + source: 'https://github.com/Clarabase/json-schema-editor' + homepage: 'https://json-schema-editor.onrender.com/' + supportedDialects: + draft: ['2020-12'] + +- name: JSV + description: 'A generic JSON Schema validator for Elixir' + environments: ['Linux', 'MacOS', 'Windows','Embedded platform'] + toolingTypes: ['validator'] + languages: ['Elixir', 'Erlang'] + maintainers: + - name: 'Ludovic Demblans' + username: 'lud' + platform: 'github' + license: 'MIT' + source: 'https://github.com/lud/jsv' + homepage: 'https://hex.pm/packages/jsv' + supportedDialects: + draft: ['2020-12', '7'] + toolingListingNotes: 'JSON Schema Validation for Elixir according to the latest specifications. Supports compile-time schema builds, custom dialects and custom formats.' diff --git a/package.json b/package.json index e1de179bb..f16fc54c5 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@docsearch/react": "3.8.0", "@types/jsonpath": "^0.2.4", "axios": "1.7.7", - "babel-loader": "^9.1.3", + "babel-loader": "^9.2.1", "classnames": "^2.5.1", "feed": "^4.2.2", "file-saver": "^2.0.5", @@ -43,7 +43,7 @@ "next": "14.2.14", "next-sitemap": "^4.2.3", "next-themes": "^0.3.0", - "node-ical": "0.19.0", + "node-ical": "0.20.1", "react": "18.3.1", "react-dom": "18.3.1", "react-syntax-highlighter": "^15.6.1", diff --git a/pages/[slug].page.tsx b/pages/[slug].page.tsx index 4bd646418..e5b50c255 100644 --- a/pages/[slug].page.tsx +++ b/pages/[slug].page.tsx @@ -7,6 +7,7 @@ import getStaticMarkdownProps from '~/lib/getStaticMarkdownProps'; import { Headline1 } from '~/components/Headlines'; import { SectionContext } from '~/context'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticPaths() { return getStaticMarkdownPaths('pages'); @@ -31,6 +32,12 @@ export default function StaticMarkdownPage({ {frontmatter.title} + ); diff --git a/pages/implementers/[slug].page.tsx b/pages/implementers/[slug].page.tsx index c86202c00..2006baa1f 100644 --- a/pages/implementers/[slug].page.tsx +++ b/pages/implementers/[slug].page.tsx @@ -7,6 +7,7 @@ import getStaticMarkdownProps from '~/lib/getStaticMarkdownProps'; import { Headline1 } from '~/components/Headlines'; import { SectionContext } from '~/context'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticPaths() { return getStaticMarkdownPaths('pages/implementers'); @@ -31,6 +32,12 @@ export default function StaticMarkdownPage({ {frontmatter.title} + ); diff --git a/pages/implementers/_index.md b/pages/implementers/_index.md index 4468d75d0..0258345f0 100644 --- a/pages/implementers/_index.md +++ b/pages/implementers/_index.md @@ -1,6 +1,12 @@ --- title: "For Implementers" section: docs +prev: + label: Structuring a complex schema + url: /understanding-json-schema/structuring +next: + label: Common Interfaces across Implementations + url: /implementers/interfaces --- For Implementers diff --git a/pages/implementers/index.page.tsx b/pages/implementers/index.page.tsx index 425d1f4c9..0b4f034ea 100644 --- a/pages/implementers/index.page.tsx +++ b/pages/implementers/index.page.tsx @@ -6,6 +6,7 @@ import StyledMarkdown from '~/components/StyledMarkdown'; import { DocsHelp } from '~/components/DocsHelp'; import { SectionContext } from '~/context'; import Card from '~/components/Card'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const block1 = fs.readFileSync('pages/implementers/_index.md', 'utf-8'); @@ -17,13 +18,19 @@ export async function getStaticProps() { }; } -export default function ContentExample({ blocks }: { blocks: any[] }) { +export default function ContentExample({ + blocks, +}: { + blocks: any[]; + frontmatter: any; + content: any; +}) { const markdownFile = '_indexPage'; return ( -
+
+ ); diff --git a/pages/implementers/interfaces.md b/pages/implementers/interfaces.md index c0a54629b..193d5500b 100644 --- a/pages/implementers/interfaces.md +++ b/pages/implementers/interfaces.md @@ -1,6 +1,12 @@ --- title: Common Interfaces across JSON Schema Implementations section: implementers +prev: + label: For Implementers + url: /implementers +next: + label: Specification + url: /specification --- JSON Schema is extremely widely used and nearly equally widely implemented. diff --git a/pages/index.page.tsx b/pages/index.page.tsx index a3a73dd31..cfb5f8ce8 100644 --- a/pages/index.page.tsx +++ b/pages/index.page.tsx @@ -576,13 +576,17 @@ const Home = (props: any) => { className='border-b border-black' > sponsor -
{' '} - or a{' '} + + , a{' '} backer + {' '} + or hiring our{' '} + + pro services .

diff --git a/pages/learn/getting-started-step-by-step/getting-started-step-by-step.md b/pages/learn/getting-started-step-by-step/getting-started-step-by-step.md index 5926ddb1c..8c3b145f4 100644 --- a/pages/learn/getting-started-step-by-step/getting-started-step-by-step.md +++ b/pages/learn/getting-started-step-by-step/getting-started-step-by-step.md @@ -1,6 +1,12 @@ --- title: Creating your first schema section: docs +prev: + label: Overview + url: /learn +next: + label: Miscellaneous examples + url: /learn/miscellaneous-examples --- JSON Schema is a vocabulary that you can use to annotate and validate JSON documents. This tutorial guides you through the process of creating a JSON Schema. diff --git a/pages/learn/getting-started-step-by-step/index.page.tsx b/pages/learn/getting-started-step-by-step/index.page.tsx index b1b8b7eb2..a56351ed8 100644 --- a/pages/learn/getting-started-step-by-step/index.page.tsx +++ b/pages/learn/getting-started-step-by-step/index.page.tsx @@ -9,6 +9,7 @@ import StyledMarkdown from '~/components/StyledMarkdown'; import { SectionContext } from '~/context'; import { DocsHelp } from '~/components/DocsHelp'; import GettingStarted from '~/components/GettingStarted'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const block1 = fs.readFileSync( @@ -28,7 +29,13 @@ export async function getStaticProps() { }; } -export default function StyledValidator({ blocks }: { blocks: any[] }) { +export default function StyledValidator({ + blocks, +}: { + blocks: any[]; + frontmatter: any; + content: any; +}) { const newTitle = 'Creating your first schema'; return ( @@ -40,6 +47,12 @@ export default function StyledValidator({ blocks }: { blocks: any[] }) { + ); diff --git a/pages/learn/glossary.md b/pages/learn/glossary.md index 6668ef2a6..8983e078b 100644 --- a/pages/learn/glossary.md +++ b/pages/learn/glossary.md @@ -1,6 +1,12 @@ --- title: JSON Schema Glossary section: docs +prev: + label: Other Examples + url: /learn/json-schema-examples +next: + label: JSON Schema Keywords + url: /understanding-json-schema/keywords --- This document collects short explanations of terminology one may encounter within the JSON Schema community. diff --git a/pages/learn/index.page.tsx b/pages/learn/index.page.tsx index 1cac2c83d..09a897f74 100644 --- a/pages/learn/index.page.tsx +++ b/pages/learn/index.page.tsx @@ -5,6 +5,7 @@ import { Headline1 } from '~/components/Headlines'; import { SectionContext } from '~/context'; import Card from '~/components/Card'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export default function Welcome() { const markdownFile = '_indexPage'; @@ -39,6 +40,12 @@ export default function Welcome() { link='https://tour.json-schema.org/' />
+ ); diff --git a/pages/learn/json-schema-examples.md b/pages/learn/json-schema-examples.md index c91259267..fa4e63e85 100644 --- a/pages/learn/json-schema-examples.md +++ b/pages/learn/json-schema-examples.md @@ -5,8 +5,8 @@ prev: label: Modeling a file system url: /learn/file-system next: - label: Miscellaneous examples - url: /learn/miscellaneous-examples + label: JSON Scehma Glossary + url: /learn/glossary --- In this page, you will find examples illustrating different use cases to help you get the most out of your JSON Schemas. These examples cover a wide range of scenarios, and each example comes with accompanying JSON data and explanation, showcasing how JSON Schemas can be applied to various domains. You can modify these examples to suit your specific needs, as this is just one of the many ways you can utilize JSON Schemas. diff --git a/pages/learn/miscellaneous-examples.md b/pages/learn/miscellaneous-examples.md index d943e77b7..9943ca36e 100644 --- a/pages/learn/miscellaneous-examples.md +++ b/pages/learn/miscellaneous-examples.md @@ -1,6 +1,9 @@ --- section: docs title: Miscellaneous Examples +prev : + label: Creating your first Schema + url: /learn/getting-started-step-by-step next: label: Modelling a file system url: /learn/file-system diff --git a/pages/overview/case-studies/index.page.tsx b/pages/overview/case-studies/index.page.tsx index b79b1352d..a76fdf3a1 100644 --- a/pages/overview/case-studies/index.page.tsx +++ b/pages/overview/case-studies/index.page.tsx @@ -31,10 +31,8 @@ export default function ContentExample() { {newTitle}

- {/* Please fix below dummy text and make it two to three liner so that we can remove the bug of layout shifting :) */} - Learn how organizations are adopting and benefiting from JSON Schema. - Please replace this text with a two to three liner so that we can avoid - the layout shifting bug. + Learn how organizations are adopting JSON Schema to improve data + management, ensure consistency, and streamline workflows across systems.

{data.map((element, index) => ( diff --git a/pages/overview/code-of-conduct/index.page.tsx b/pages/overview/code-of-conduct/index.page.tsx index f4ebff025..c4f5526ff 100644 --- a/pages/overview/code-of-conduct/index.page.tsx +++ b/pages/overview/code-of-conduct/index.page.tsx @@ -39,8 +39,8 @@ export default function Content({ diff --git a/pages/pro-help/index.page.tsx b/pages/pro-help/index.page.tsx new file mode 100644 index 000000000..99eb27681 --- /dev/null +++ b/pages/pro-help/index.page.tsx @@ -0,0 +1,217 @@ +import React from 'react'; +import fs from 'fs'; +import { getLayout } from '~/components/SiteLayout'; +import Head from 'next/head'; +import { Headline1 } from '~/components/Headlines'; +import { SectionContext } from '~/context'; +import { DocsHelp } from '~/components/DocsHelp'; + +interface ContractorLink { + title: string; + url: string; +} + +interface Contractor { + name: string; + bio: string; + email?: string; + website?: string; + github: string; + x?: string; + mastodon?: string; + linkedin?: string; + incorporatedIn: string[]; + type: string; + links: ContractorLink[]; +} + +export async function getStaticProps() { + const contractorData = JSON.parse( + fs.readFileSync( + '_includes/community/programs/contractors/contractors.json', + 'utf-8', + ), + ) as Contractor[]; + + return { + props: { + contractorData, + }, + }; +} + +interface ProHelpPageProps { + contractorData: Contractor[]; +} + +export default function ProHelp({ contractorData }: ProHelpPageProps) { + const newTitle = 'Need pro help with JSON Schema?'; + + return ( + + + {newTitle} + +
+
+
+ {newTitle} +

+ Whether you need training, personalized advice, or custom JSON + Schema solutions, some members of the JSON Schema Technical Steering + Committee (TSC) and Ambassadors programs offer pro services beyond + community support. Don't hesitate in reaching out to discuss + further. +

+
+

+ Hiring our top contributors also helps funding the JSON Schema + open-source organization, and as a consequence, the specifications + that build on top of it, such as{' '} + + OpenAPI + + , + + AsyncAPI + + , + + RAML + + , + + W3C WoT + + , and many more. +

+
+ Available Members +
+ {contractorData.map((contractor) => ( +
+

+ {contractor.name} + + {contractor.type} + +

+ +
+ +
+

{contractor.bio}

+

+ Previous work and relevant links +

+ +
+
+
+ ))} +
+
+
+
+
+ +
+
+ ); +} + +ProHelp.getLayout = getLayout; diff --git a/pages/specification-links.md b/pages/specification-links.md index a327ef50d..18bf4a524 100644 --- a/pages/specification-links.md +++ b/pages/specification-links.md @@ -1,6 +1,12 @@ --- title: Specification Links section: docs +prev: + label: Specification + url: /specification +next: + label: Migration + url: /specification/migration --- @@ -498,8 +504,8 @@ The next unreleased draft is a work in progress. You can [give feedback and get The specification links here link to the raw sources. We do not provide rendered [work-in-progress](work-in-progress) drafts except near the very end of a publication cycle, during the final review period. - - Core: [jsonschema-core.md](https://github.com/json-schema-org/json-schema-spec/blob/main/jsonschema-core.md) - - Validation: [jsonschema-validation.md](https://github.com/json-schema-org/json-schema-spec/blob/main/jsonschema-validation.md) + - Core: [jsonschema-core.md](https://github.com/json-schema-org/json-schema-spec/blob/main/specs/jsonschema-core.md) + - Validation: [jsonschema-validation.md](https://github.com/json-schema-org/json-schema-spec/blob/main/specs/jsonschema-validation.md) - Hyper-Schema: [jsonschema-hyperschema.xml](https://github.com/json-schema-org/json-hyperschema-spec/blob/main/jsonschema-hyperschema.xml) - Relative JSON Pointer: [relative-json-pointer.xml](https://github.com/json-schema-org/json-schema-spec/blob/master/relative-json-pointer.xml) - [JSON Schema meta-schema](https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json) diff --git a/pages/specification.md b/pages/specification.md index 1f449f52f..f013bd903 100644 --- a/pages/specification.md +++ b/pages/specification.md @@ -1,6 +1,12 @@ --- title: Specification [#section] section: docs +prev: + label: Common Interfaces across Implementations + url: /implementers/interfaces +next: + label: Specification Links + url: /specification-links --- The current version is *2020-12*! diff --git a/pages/specification/json-hyper-schema/_index.md b/pages/specification/json-hyper-schema/_index.md index 585f10464..298abdb71 100644 --- a/pages/specification/json-hyper-schema/_index.md +++ b/pages/specification/json-hyper-schema/_index.md @@ -1,5 +1,11 @@ --- title: JSON Hyper-Schema +prev: + label: Release Notes + url: /specification/release-notes +next: + label: What is JSON Schema? + url: /overview/what-is-jsonschema --- ### Introduction diff --git a/pages/specification/json-hyper-schema/index.page.tsx b/pages/specification/json-hyper-schema/index.page.tsx index b1ce3264f..84892ff74 100644 --- a/pages/specification/json-hyper-schema/index.page.tsx +++ b/pages/specification/json-hyper-schema/index.page.tsx @@ -6,6 +6,7 @@ import StyledMarkdown from '~/components/StyledMarkdown'; import { SectionContext } from '~/context'; import { Headline1 } from '~/components/Headlines'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const index = fs.readFileSync( @@ -44,6 +45,12 @@ export default function ImplementationsPages({ + ); diff --git a/pages/specification/migration/_index.md b/pages/specification/migration/_index.md index 734bd0b33..f6e44d8a5 100644 --- a/pages/specification/migration/_index.md +++ b/pages/specification/migration/_index.md @@ -1,6 +1,12 @@ --- title: Migrating from older drafts section: docs +prev: + label: Specification Links + url: /specification-links +next: + label: Release Notes + url: /specification/release-notes --- The release notes discuss the changes impacting users and implementers: diff --git a/pages/specification/migration/index.page.tsx b/pages/specification/migration/index.page.tsx index fbba9bd33..c2a53b5e3 100644 --- a/pages/specification/migration/index.page.tsx +++ b/pages/specification/migration/index.page.tsx @@ -7,6 +7,7 @@ import { Headline1 } from '~/components/Headlines'; import { SectionContext } from '~/context'; import Card from '~/components/Card'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const index = fs.readFileSync( @@ -42,7 +43,7 @@ export default function ImplementationsPages({ {frontmatter.title} -
+
+ ); diff --git a/pages/specification/release-notes/_index.md b/pages/specification/release-notes/_index.md index bfe2815c1..33276297c 100644 --- a/pages/specification/release-notes/_index.md +++ b/pages/specification/release-notes/_index.md @@ -1,6 +1,12 @@ --- title: Release notes type: docs +prev: + label: Migration + url: /specification/migration +next: + label: JSON Hyper-Schema + url: /specification/json-hyper-schema --- Find below the Release Notes of all JSON Schema drafts: diff --git a/pages/specification/release-notes/index.page.tsx b/pages/specification/release-notes/index.page.tsx index 50ea7f7d5..9a7029188 100644 --- a/pages/specification/release-notes/index.page.tsx +++ b/pages/specification/release-notes/index.page.tsx @@ -7,6 +7,7 @@ import { Headline1 } from '~/components/Headlines'; import { SectionContext } from '~/context'; import Card from '~/components/Card'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const index = fs.readFileSync( @@ -42,7 +43,7 @@ export default function ImplementationsPages({ {frontmatter.title} -
+
+ ); diff --git a/pages/understanding-json-schema/[slug].page.tsx b/pages/understanding-json-schema/[slug].page.tsx index 6174f5ea1..3c09f4669 100644 --- a/pages/understanding-json-schema/[slug].page.tsx +++ b/pages/understanding-json-schema/[slug].page.tsx @@ -7,6 +7,7 @@ import getStaticMarkdownProps from '~/lib/getStaticMarkdownProps'; import { Headline1 } from '~/components/Headlines'; import { DocsHelp } from '~/components/DocsHelp'; import { SectionContext } from '~/context'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticPaths() { return getStaticMarkdownPaths('pages/understanding-json-schema'); @@ -31,6 +32,12 @@ export default function StaticMarkdownPage({ {frontmatter.title || 'NO TITLE!'} + ); diff --git a/pages/understanding-json-schema/_index.md b/pages/understanding-json-schema/_index.md index e5ac9fef9..66cc89413 100644 --- a/pages/understanding-json-schema/_index.md +++ b/pages/understanding-json-schema/_index.md @@ -1,6 +1,12 @@ --- title: "Understanding JSON Schema" section: docs +prev: + label: JSON Schema Keywords + url: /understanding-json-schema/keywords +next: + label: Conventions + url: /understanding-json-schema/conventions --- Understanding JSON Schema diff --git a/pages/understanding-json-schema/about.md b/pages/understanding-json-schema/about.md index f1c4ac62d..86175eb4e 100644 --- a/pages/understanding-json-schema/about.md +++ b/pages/understanding-json-schema/about.md @@ -1,6 +1,12 @@ --- title: "What is a schema?" section: "docs" +prev: + label: Conventions used + url: /understanding-json-schema/conventions +next: + label: The basics + url: /understanding-json-schema/basics --- If you\'ve ever used XML Schema, RelaxNG or ASN.1 you probably already diff --git a/pages/understanding-json-schema/basics.md b/pages/understanding-json-schema/basics.md index 9bfd597a7..c8eafe600 100644 --- a/pages/understanding-json-schema/basics.md +++ b/pages/understanding-json-schema/basics.md @@ -1,6 +1,12 @@ --- title: The basics section: docs +prev: + label: What is a Schema? + url: /understanding-json-schema/about +next: + label: JSON Schema reference + url: /understanding-json-schema/reference --- In [What is a schema?](../understanding-json-schema/about), we described what a [schema](../learn/glossary#schema) is, diff --git a/pages/understanding-json-schema/conventions.md b/pages/understanding-json-schema/conventions.md index 7979db58c..cc0cfd869 100644 --- a/pages/understanding-json-schema/conventions.md +++ b/pages/understanding-json-schema/conventions.md @@ -1,6 +1,12 @@ --- section: docs title: "Conventions used in this documentation" +prev: + label: Understanding JSON Schema + url: /understanding-json-schema +next: + label: What is a Schema? + url: /understanding-json-schema/about --- ## Language-specific notes diff --git a/pages/understanding-json-schema/index.page.tsx b/pages/understanding-json-schema/index.page.tsx index e8f6fa8e6..546e25018 100644 --- a/pages/understanding-json-schema/index.page.tsx +++ b/pages/understanding-json-schema/index.page.tsx @@ -5,6 +5,7 @@ import matter from 'gray-matter'; import StyledMarkdown from '~/components/StyledMarkdown'; import { DocsHelp } from '~/components/DocsHelp'; import { SectionContext } from '~/context'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const block1 = fs.readFileSync( @@ -19,12 +20,24 @@ export async function getStaticProps() { }; } -export default function ContentExample({ blocks }: { blocks: any[] }) { +export default function ContentExample({ + blocks, +}: { + blocks: any[]; + frontmatter: any; + content: any; +}) { const markdownFile = '_indexPage'; return ( + ); diff --git a/pages/understanding-json-schema/keywords/index.page.tsx b/pages/understanding-json-schema/keywords/index.page.tsx index ffa2e72f0..d1988d505 100644 --- a/pages/understanding-json-schema/keywords/index.page.tsx +++ b/pages/understanding-json-schema/keywords/index.page.tsx @@ -9,6 +9,7 @@ import { Headline1, Headline4 } from '~/components/Headlines'; import { DocsHelp } from '~/components/DocsHelp'; import Link from 'next/link'; import Image from 'next/image'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const datas = yaml.load( @@ -86,7 +87,12 @@ export default function StaticMarkdownPage({ datas }: { datas: DataObject[] }) { ), )}
- + ); diff --git a/pages/understanding-json-schema/reference/[slug].page.tsx b/pages/understanding-json-schema/reference/[slug].page.tsx index acab32f4c..94a13a954 100644 --- a/pages/understanding-json-schema/reference/[slug].page.tsx +++ b/pages/understanding-json-schema/reference/[slug].page.tsx @@ -7,6 +7,7 @@ import getStaticMarkdownPaths from '~/lib/getStaticMarkdownPaths'; import getStaticMarkdownProps from '~/lib/getStaticMarkdownProps'; import { SectionContext } from '~/context'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticPaths() { return getStaticMarkdownPaths('pages/understanding-json-schema/reference'); @@ -34,6 +35,12 @@ export default function StaticMarkdownPage({ {frontmatter.title || 'NO TITLE!'} + ); diff --git a/pages/understanding-json-schema/reference/annotations.md b/pages/understanding-json-schema/reference/annotations.md index 3913a6f5b..d72f906a2 100644 --- a/pages/understanding-json-schema/reference/annotations.md +++ b/pages/understanding-json-schema/reference/annotations.md @@ -1,6 +1,12 @@ --- title: "Annotations" section: docs +prev: + label: Generic keywords + url: /understanding-json-schema/reference/generic +next: + label: Comments + url: /understanding-json-schema/reference/comments --- JSON Schema includes a few [keywords](../../learn/glossary#keyword), that aren\'t strictly used for diff --git a/pages/understanding-json-schema/reference/array.md b/pages/understanding-json-schema/reference/array.md index b6b9e05a5..1a217f76c 100644 --- a/pages/understanding-json-schema/reference/array.md +++ b/pages/understanding-json-schema/reference/array.md @@ -1,6 +1,12 @@ --- title: "array" section: docs +prev: + label: Object + url: /understanding-json-schema/reference/object +next: + label: Boolean + url: /understanding-json-schema/reference/boolean --- diff --git a/pages/understanding-json-schema/reference/boolean.md b/pages/understanding-json-schema/reference/boolean.md index 29952b167..a622406a5 100644 --- a/pages/understanding-json-schema/reference/boolean.md +++ b/pages/understanding-json-schema/reference/boolean.md @@ -1,6 +1,12 @@ --- title: "boolean" section: docs +prev: + label: Array + url: /understanding-json-schema/reference/array +next: + label: 'Null' + url: /understanding-json-schema/reference/null --- diff --git a/pages/understanding-json-schema/reference/combining.md b/pages/understanding-json-schema/reference/combining.md index e6777dcb7..afe883a6c 100644 --- a/pages/understanding-json-schema/reference/combining.md +++ b/pages/understanding-json-schema/reference/combining.md @@ -1,6 +1,12 @@ --- title: "Schema Composition" section: docs +prev: + label: 'Media: string-encoding non-JSON data' + url: /understanding-json-schema/reference/non_json_data +next: + label: Applying Subschemas Conditionally + url: /understanding-json-schema/reference/conditionals --- diff --git a/pages/understanding-json-schema/reference/comments.md b/pages/understanding-json-schema/reference/comments.md index 0dcaebda1..bd806aa3e 100644 --- a/pages/understanding-json-schema/reference/comments.md +++ b/pages/understanding-json-schema/reference/comments.md @@ -1,6 +1,12 @@ --- title: "Comments" section: docs +prev: + label: Annotations + url: /understanding-json-schema/reference/annotations +next: + label: Enumerated values + url: /understanding-json-schema/reference/enum --- diff --git a/pages/understanding-json-schema/reference/conditionals.md b/pages/understanding-json-schema/reference/conditionals.md index 7579ccfdd..e02f259d0 100644 --- a/pages/understanding-json-schema/reference/conditionals.md +++ b/pages/understanding-json-schema/reference/conditionals.md @@ -1,6 +1,12 @@ --- title: "Applying Subschemas Conditionally" section: docs +prev: + label: Schema Composition + url: /understanding-json-schema/reference/combining +next: + label: Declaring a Dialect + url: /understanding-json-schema/reference/schema --- diff --git a/pages/understanding-json-schema/reference/const.md b/pages/understanding-json-schema/reference/const.md index e5131231a..7e0fe134e 100644 --- a/pages/understanding-json-schema/reference/const.md +++ b/pages/understanding-json-schema/reference/const.md @@ -1,6 +1,12 @@ --- title: "Constant values" section: docs +prev: + label: Enumerated values + url: /understanding-json-schema/reference/enum +next: + label: 'Media: string-encoding non-JSON data' + url: /understanding-json-schema/reference/non_json_data --- diff --git a/pages/understanding-json-schema/reference/enum.md b/pages/understanding-json-schema/reference/enum.md index c3807be37..2883bbad7 100644 --- a/pages/understanding-json-schema/reference/enum.md +++ b/pages/understanding-json-schema/reference/enum.md @@ -1,6 +1,12 @@ --- title: "Enumerated values" section: docs +prev: + label: Comments + url: /understanding-json-schema/reference/comments +next: + label: Constant values + url: /understanding-json-schema/reference/const --- The `enum` [keyword](../../learn/glossary#keyword) is used to restrict a value to a fixed set of values. diff --git a/pages/understanding-json-schema/reference/generic.md b/pages/understanding-json-schema/reference/generic.md index 5e4fca49e..e8145c429 100644 --- a/pages/understanding-json-schema/reference/generic.md +++ b/pages/understanding-json-schema/reference/generic.md @@ -1,6 +1,12 @@ --- title: "Generic keywords" section: docs +prev: + label: Type Specific Keywords + url: /understanding-json-schema/reference/type +next: + label: 'Media : string-encoding non-JSON data' + url: /understanding-json-schema/reference/non_json_data --- * [Annotations](../../understanding-json-schema/reference/annotations) diff --git a/pages/understanding-json-schema/reference/index.page.tsx b/pages/understanding-json-schema/reference/index.page.tsx index 19953a9d4..e14bdf13b 100644 --- a/pages/understanding-json-schema/reference/index.page.tsx +++ b/pages/understanding-json-schema/reference/index.page.tsx @@ -5,6 +5,7 @@ import matter from 'gray-matter'; import StyledMarkdown from '~/components/StyledMarkdown'; import { SectionContext } from '~/context'; import { DocsHelp } from '~/components/DocsHelp'; +import NextPrevButton from '~/components/NavigationButtons'; export async function getStaticProps() { const block1 = fs.readFileSync( @@ -19,11 +20,23 @@ export async function getStaticProps() { }; } -export default function ContentExample({ blocks }: { blocks: any[] }) { +export default function ContentExample({ + blocks, +}: { + blocks: any[]; + frontmatter: any; + content: any; +}) { const markdownFile = '_indexPage'; return ( + ); diff --git a/pages/understanding-json-schema/reference/non_json_data.md b/pages/understanding-json-schema/reference/non_json_data.md index c82d304d6..8726b055f 100644 --- a/pages/understanding-json-schema/reference/non_json_data.md +++ b/pages/understanding-json-schema/reference/non_json_data.md @@ -1,6 +1,12 @@ --- title: "Media: string-encoding non-JSON data" section: docs +prev: + label: Generic Keywords + url: /understanding-json-schema/reference/generic +next: + label: Schema Composition + url: /understanding-json-schema/reference/combining --- diff --git a/pages/understanding-json-schema/reference/null.md b/pages/understanding-json-schema/reference/null.md index 90047e4f5..5a234a80b 100644 --- a/pages/understanding-json-schema/reference/null.md +++ b/pages/understanding-json-schema/reference/null.md @@ -1,6 +1,12 @@ --- title: "null" section: docs +prev: + label: boolean + url: /understanding-json-schema/reference/boolean +next: + label: Generic Keywords + url: /understanding-json-schema/reference/generic --- When a [schema](../../learn/glossary#schema) specifies a `type` of `null`, it has only one acceptable value: `null`. diff --git a/pages/understanding-json-schema/reference/numeric.md b/pages/understanding-json-schema/reference/numeric.md index dbe32eaf5..76824a13d 100644 --- a/pages/understanding-json-schema/reference/numeric.md +++ b/pages/understanding-json-schema/reference/numeric.md @@ -1,6 +1,12 @@ --- title: "Numeric types" section: docs +prev: + label: Regular Expressions + url: /understanding-json-schema/reference/regular_expressions +next: + label: Object + url: /understanding-json-schema/reference/object --- diff --git a/pages/understanding-json-schema/reference/object.md b/pages/understanding-json-schema/reference/object.md index 421a21aeb..3efff3364 100644 --- a/pages/understanding-json-schema/reference/object.md +++ b/pages/understanding-json-schema/reference/object.md @@ -1,6 +1,12 @@ --- title: "object" section: docs +prev: + label: Numeric Types + url: /understanding-json-schema/reference/numeric +next: + label: Array + url: /understanding-json-schema/reference/array --- diff --git a/pages/understanding-json-schema/reference/regular_expressions.md b/pages/understanding-json-schema/reference/regular_expressions.md index 1b85ee9fc..b04d452b2 100644 --- a/pages/understanding-json-schema/reference/regular_expressions.md +++ b/pages/understanding-json-schema/reference/regular_expressions.md @@ -1,6 +1,12 @@ --- title: "Regular Expressions" section: docs +prev: + label: String + url: /understanding-json-schema/reference/string +next: + label: Numeric types + url: /understanding-json-schema/reference/numeric --- @@ -85,14 +91,17 @@ The following example checks that the string starts with `{{` and ends with `}}` and that it also allows multiline strings. ```json - { - "type": "string", - "pattern": "^\\{\\{(.|[\\r\\n])*\\}\\}$", - } +// props { "isSchema": true } +{ + "type": "string", + "pattern": "^\\{\\{(.|[\\r\\n])*\\}\\}$", +} ``` ```json - "{{ foo\nbar }}" +// props { "indent": true, "valid": true } +"{{ foo\nbar }}" ``` ```json - "{ foo }" +// props { "indent": true, "valid": false } +"{ foo }" ``` diff --git a/pages/understanding-json-schema/reference/schema.md b/pages/understanding-json-schema/reference/schema.md index 17bff8bcd..d428a1337 100644 --- a/pages/understanding-json-schema/reference/schema.md +++ b/pages/understanding-json-schema/reference/schema.md @@ -1,6 +1,12 @@ --- title: "Declaring a Dialect" section: docs +prev: + label: Applying Subschemas Conditionally + url: /understanding-json-schema/reference/conditionals +next: + label: Structuring a complex schema + url: /understanding-json-schema/structuring --- A version of JSON Schema is called a [dialect](../../learn/glossary#dialect). A dialect represents the diff --git a/pages/understanding-json-schema/reference/string.md b/pages/understanding-json-schema/reference/string.md index a91cf75ca..dde680a68 100644 --- a/pages/understanding-json-schema/reference/string.md +++ b/pages/understanding-json-schema/reference/string.md @@ -1,6 +1,12 @@ --- title: string section: docs +prev: + label: Type-specific keywords + url: /understanding-json-schema/reference/type +next: + label: Regular expressions + url: /understanding-json-schema/reference/regular_expressions --- The `string` type is used for strings of text. It may contain Unicode characters. @@ -115,129 +121,3 @@ with an optional area code: // props { "indent": true, "valid": false } "(800)FLOWERS" ``` - -## Format[#format] - -The `format` keyword allows for basic semantic identification of certain -kinds of string values that are commonly used. For example, because JSON -doesn\'t have a \"DateTime\" type, dates need to be encoded as strings. -`format` allows the schema author to indicate that the string value -should be interpreted as a date. By default, `format` is just an -annotation and does not effect validation. - -Optionally, validator [implementations](../../learn/glossary#implementation) can provide a configuration option -to enable `format` to function as an assertion rather than just an -annotation. That means that validation will fail if, for example, a -value with a `date` format isn\'t in a form that can be parsed as a -date. This can allow values to be constrained beyond what the other -tools in JSON Schema, including [Regular Expressions](../../understanding-json-schema/reference/regular_expressions) can -do. - -> Implementations may provide validation for only a subset of the built-in -> formats or do partial validation for a given format. For example, some -> implementations may consider a string an email if it contains a `@`, -> while others might do additional checks for other aspects of a well -> formed email address. - -There is a bias toward networking-related formats in the JSON Schema -specification, most likely due to its heritage in web technologies. -However, custom formats may also be used, as long as the parties -exchanging the JSON documents also exchange information about the custom -format types. A JSON Schema validator will ignore any format type that -it does not understand. - -### Built-in formats[#built-in-formats] - -The following is the list of formats specified in the JSON Schema -specification. - -#### Dates and times - -Dates and times are represented in [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). This is a subset -of the date format also commonly known as [ISO8601 format](https://www.iso.org/iso-8601-date-and-time-format.html). - -- `"date-time"`: Date and time together, for example, - `2018-11-13T20:20:39+00:00`. -- `"time"`: Time, for example, `20:20:39+00:00` -- `"date"`: Date, for example, `2018-11-13`. -- `"duration"`: A duration as defined by the [ISO 8601 ABNF for \"duration\"](https://datatracker.ietf.org/doc/html/rfc3339#appendix-A). - For example, `P3D` expresses a duration of 3 days. - - - -#### Email addresses - -- `"email"`: Internet email address, see [RFC 5321, section 4.1.2](http://tools.ietf.org/html/rfc5321#section-4.1.2). -- `"idn-email"`: The internationalized form of an Internet email - address, see [RFC 6531](https://tools.ietf.org/html/rfc6531). - - - -#### Hostnames - -- `"hostname"`: Internet host name, see [RFC 1123, section 2.1](https://datatracker.ietf.org/doc/html/rfc1123#section-2.1). -- `"idn-hostname"`: An internationalized Internet host name, see - [RFC5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890#section-2.3.2.3). - - - -#### IP Addresses - -- `"ipv4"`: IPv4 address, according to dotted-quad ABNF syntax as - defined in [RFC 2673, section 3.2](http://tools.ietf.org/html/rfc2673#section-3.2). -- `"ipv6"`: IPv6 address, as defined in [RFC 2373, section 2.2](http://tools.ietf.org/html/rfc2373#section-2.2). - - - -#### Resource identifiers - -- `"uuid"`: A Universally Unique Identifier as defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122). Example: - `3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a` -- `"uri"`: A universal resource identifier (URI), according to - [RFC3986](http://tools.ietf.org/html/rfc3986). -- `"uri-reference"`: A URI Reference (either a URI or a - relative-reference), according to [RFC3986, section 4.1](http://tools.ietf.org/html/rfc3986#section-4.1). -- `"iri"`: The internationalized equivalent of a \"uri\", according to - [RFC3987](https://tools.ietf.org/html/rfc3987). -- `"iri-reference"`: The internationalized equivalent of a - \"uri-reference\", according to - [RFC3987](https://tools.ietf.org/html/rfc3987) - -If the values in the schema have the ability to be relative to a -particular source path (such as a link from a webpage), it is generally -better practice to use `"uri-reference"` (or `"iri-reference"`) rather -than `"uri"` (or `"iri"`). `"uri"` should only be used when the path -must be absolute. - - - -#### URI template - -- `"uri-template"`: A URI Template (of any level) according to - [RFC6570](https://tools.ietf.org/html/rfc6570). If you don\'t - already know what a URI Template is, you probably don\'t need this - value. - - - -#### JSON Pointer - -- `"json-pointer"`: A JSON Pointer, according to - [RFC6901](https://tools.ietf.org/html/rfc6901). There is more - discussion on the use of JSON Pointer within JSON Schema in - [Structuring a complex schema](../../understanding-json-schema/structuring). Note that this should be used only when - the entire string contains only JSON Pointer content, e.g. - `/foo/bar`. JSON Pointer URI fragments, e.g. `#/foo/bar/` should use - `"uri-reference"`. -- `"relative-json-pointer"`: A [relative JSON pointer](https://tools.ietf.org/html/draft-handrews-relative-json-pointer-01). - - - -#### Regular Expressions - -- `"regex"`: A regular expression, which should be valid according to - the [ECMA 262](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) - [dialect](../../learn/glossary#dialect). - -Be careful, in practice, JSON schema validators are only required to -accept the safe subset of [regular expressions](../../understanding-json-schema/reference/regular_expressions) described elsewhere in this document. diff --git a/pages/understanding-json-schema/reference/type.md b/pages/understanding-json-schema/reference/type.md index ed2fd52ce..dd3698476 100644 --- a/pages/understanding-json-schema/reference/type.md +++ b/pages/understanding-json-schema/reference/type.md @@ -1,6 +1,12 @@ --- title: "Type-specific keywords" section: docs +prev: + label: JSON Schema Reference + url: /understanding-json-schema/reference +next: + label: Generic Keywords + url: /understanding-json-schema/reference/generic --- The `type` [keyword](../../learn/glossary#keyword) is fundamental to JSON Schema. It specifies the data @@ -175,3 +181,64 @@ types. For example, numeric types have a way of specifying a numeric range, that would not be applicable to other types. In this reference, these validation keywords are described along with each of their corresponding types in the following chapters. + +## Format[#format] + +The `format` keyword conveys semantic information for values that may be difficult or impossible to describe using JSON Schema. Typically, this semantic information is described by other documents. The JSON Schema Validation specification defines several formats, but this keyword also allows schema authors to define their own formats. + +For example, because JSON doesn't have a "DateTime" type, dates need to be encoded as strings. `format` allows the schema author to indicate that the string value should be interpreted as a date. By default, `format` is just an annotation and does not affect validation. + +Optionally, validator [implementations](../../learn/glossary#implementation) can provide a configuration option to enable `format` to function as an assertion rather than just an annotation. That means that validation fails when, for example, a value with a `date` format isn't in a form that can be parsed as a date. This allows values to be constrained beyond what other tools in JSON Schema, including [Regular Expressions](../../understanding-json-schema/reference/regular_expressions), can do. + +> Implementations may provide validation for only a subset of the built-in formats or do partial validation for a given format. For example, some implementations may consider a string an email if it contains an `@`, while others might perform additional checks for other aspects of a well-formed email address. + +The JSON Schema specification has a bias toward networking-related formats due to its roots in web technologies. However, custom formats may also be used if the parties exchanging the JSON documents share information about the custom format types. A JSON Schema validator will ignore any format type it does not understand. + +### Built-in Formats + +It should be noted that `format` is not limited to a specific set of valid values or types. Users may define their own custom keywords including ones that work with JSON data types other than `string`, such as `number`. Below, we cover the formats specified in the JSON Schema specification. + +#### Dates and Times + +Dates and times are represented in [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). RFC 3339 is a specification from the Internet Engineering Task Force (IETF). + +- `"date-time"`: Date and time together, for example, `2018-11-13T20:20:39+00:00`. +- `"time"`: Time, for example, `20:20:39+00:00`. +- `"date"`: Date, for example, `2018-11-13`. +- `"duration"`: A duration as defined by the [ISO 8601 ABNF for "duration"](https://datatracker.ietf.org/doc/html/rfc3339#appendix-A). For example, `P3D` expresses a duration of 3 days. + +#### Email Addresses + +- `"email"`: Internet email address, see [RFC 5321, section 4.1.2](http://tools.ietf.org/html/rfc5321#section-4.1.2). +- `"idn-email"`: The internationalized form of an Internet email address, see [RFC 6531](https://tools.ietf.org/html/rfc6531). + +#### Hostnames + +- `"hostname"`: Internet host name, see [RFC 1123, section 2.1](https://datatracker.ietf.org/doc/html/rfc1123#section-2.1). +- `"idn-hostname"`: An internationalized Internet host name, see [RFC5890, section 2.3.2.3](https://tools.ietf.org/html/rfc5890#section-2.3.2.3). + +#### IP Addresses + +- `"ipv4"`: IPv4 address, according to dotted-quad ABNF syntax as defined in [RFC 2673, section 3.2](http://tools.ietf.org/html/rfc2673#section-3.2). +- `"ipv6"`: IPv6 address, as defined in [RFC 2373, section 2.2](http://tools.ietf.org/html/rfc2373#section-2.2). + +#### Resource Identifiers + +- `"uuid"`: A Universally Unique Identifier as defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122). Example: `3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a`. +- `"uri"`: A universal resource identifier (URI), according to [RFC3986](http://tools.ietf.org/html/rfc3986). +- `"uri-reference"`: A URI Reference (either a URI or a relative-reference), according to [RFC3986, section 4.1](http://tools.ietf.org/html/rfc3986#section-4.1). +- `"iri"`: The internationalized equivalent of a "uri", according to [RFC3987](https://tools.ietf.org/html/rfc3987). +- `"iri-reference"`: The internationalized equivalent of a "uri-reference", according to [RFC3987](https://tools.ietf.org/html/rfc3987). + +#### URI Template + +- `"uri-template"`: A URI Template (of any level) according to [RFC6570](https://tools.ietf.org/html/rfc6570). If you don\'t already know what a URI Template is, you probably don\'t need this value. + +#### JSON Pointer + +- `"json-pointer"`: A JSON Pointer, according to [RFC6901](https://tools.ietf.org/html/rfc6901). There is more discussion on using JSON Pointer within JSON Schema in [Structuring a complex schema](../../understanding-json-schema/structuring). Note that this should be used only when the entire string contains only JSON Pointer content, e.g., `/foo/bar`. JSON Pointer URI fragments, e.g., `#/foo/bar/` should use `"uri-reference"`. +- `"relative-json-pointer"`: A [relative JSON pointer](https://tools.ietf.org/html/draft-handrews-relative-json-pointer-01). + +#### Regular Expressions + +- `"regex"`: A regular expression that should be valid according to the [ECMA 262](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) [dialect](../../learn/glossary#dialect). Be careful, in practice, JSON Schema validators are only required to accept the safe subset of [regular expressions](../../understanding-json-schema/reference/regular_expressions) described elsewhere in this document. diff --git a/pages/understanding-json-schema/structuring.md b/pages/understanding-json-schema/structuring.md index e5624a20b..1084966bf 100644 --- a/pages/understanding-json-schema/structuring.md +++ b/pages/understanding-json-schema/structuring.md @@ -1,6 +1,12 @@ --- title: "Structuring a complex schema" section: docs +prev: + label: Declaring a dialect + url: /understanding-json-schema/reference/schema +next: + label: For Implementers + url: /implementers --- diff --git a/styles/globals.css b/styles/globals.css index 5288d6aa4..ca0e0b2cc 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -66,6 +66,7 @@ border-radius: 4px; */ .DocSearch-Button { margin: 0; width: 39px; + background: none; } .DocSearch-Button-Placeholder { diff --git a/yarn.lock b/yarn.lock index 799b44764..4080446cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4548,6 +4548,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.7.7": + version: 1.7.9 + resolution: "axios@npm:1.7.9" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/b7a41e24b59fee5f0f26c1fc844b45b17442832eb3a0fb42dd4f1430eb4abc571fe168e67913e8a1d91c993232bd1d1ab03e20e4d1fee8c6147649b576fc1b0b + languageName: node + linkType: hard + "axobject-query@npm:^3.2.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" @@ -4557,16 +4568,16 @@ __metadata: languageName: node linkType: hard -"babel-loader@npm:^9.1.3": - version: 9.1.3 - resolution: "babel-loader@npm:9.1.3" +"babel-loader@npm:^9.2.1": + version: 9.2.1 + resolution: "babel-loader@npm:9.2.1" dependencies: find-cache-dir: "npm:^4.0.0" schema-utils: "npm:^4.0.0" peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + checksum: 10c0/efb82faff4c7c27e9c15bb28bf11c73200e61cf365118a9514e8d74dd489d0afc2a0d5aaa62cb4254eefc2ab631579224d95a03fd245410f28ea75e24de54ba4 languageName: node linkType: hard @@ -8307,7 +8318,7 @@ __metadata: "@typescript-eslint/parser": "npm:^6.21.0" autoprefixer: "npm:^10.4.20" axios: "npm:1.7.7" - babel-loader: "npm:^9.1.3" + babel-loader: "npm:^9.2.1" babel-plugin-istanbul: "npm:^7.0.0" classnames: "npm:^2.5.1" cypress: "npm:^13.13.1" @@ -8336,7 +8347,7 @@ __metadata: next: "npm:14.2.14" next-sitemap: "npm:^4.2.3" next-themes: "npm:^0.3.0" - node-ical: "npm:0.19.0" + node-ical: "npm:0.20.1" nyc: "npm:^17.1.0" postcss: "npm:^8.4.41" prettier: "npm:3.3.3" @@ -9151,15 +9162,15 @@ __metadata: languageName: node linkType: hard -"node-ical@npm:0.19.0": - version: 0.19.0 - resolution: "node-ical@npm:0.19.0" +"node-ical@npm:0.20.1": + version: 0.20.1 + resolution: "node-ical@npm:0.20.1" dependencies: - axios: "npm:1.7.7" + axios: "npm:^1.7.7" moment-timezone: "npm:^0.5.45" rrule: "npm:2.8.1" uuid: "npm:^10.0.0" - checksum: 10c0/15788f5a658eccb0b3ec7e692f8e882612a5e55926ab7d55e4540bdb88963e548f35388486a2d95e75caa939db840560ff4a159db46ffa509ec35df40c62b12c + checksum: 10c0/3e95ece63f0420f96b611913e0134660120bf2e87da8b1afbc73b6db2cbe2ad20d9b76ad912fa80b20923c64f0002869d98edaa53d143aa5989d223ff12ef621 languageName: node linkType: hard