Skip to content

Commit 33dbd28

Browse files
DarhkVoydbenjagm
andauthored
[GSoC'24]: Build Data Driven JSON Schema Tooling Web Release (#915)
* [data]: Data Preparation for Improved Data Model (#738) * add validators to updated tooling data * migrate hardcoded tooling data to updated model * refine structure * fix, clean, and add environment field * add dependsOnValidators field * remove empty fields * conform to ecosystem tooling identification schema * remove incorrect draft * fix apache 2.0 license to spdx identifier * [pages][tools]: Redesign UI/UX for Tooling Page (#808) * initial redesign migration * remove environments groupby * add trigger update landscape tooling workflow (#838) * [pages][tools]: Implement Tooling Analytics and Integrate Bowtie Report (#858) * [pages][tools]: Prepare Tooling Page for Release Closes: #780 * improve dropdownmenu and sidebar with svgr logo better sidebar better tooling table * add ToolingTable * fix sidebar and query params * improve tooling data table fix * fix mobile responsive * use css columns in modal * use modal svgr icon remove margins in tooling modal * add initial analytics * add sort by bowtie * add analytics schema and fix sidebar bug * fix CORS error redirect follow is critical. Also, setting content-type header to text/plain is critical, even if sending JSON, as "text/plain" does not trigger the browser's preflight requests (which are unsupported by Google here) * update schema to remove source and homepage * update yarn lock * update call to action and issue template * Pushed changes to improve style * update dependencies * fix json path types build error * remove unused file * update redirects * update internal links * fix linting errors * add backend api * fix bowtie api integration and add skeleton placeholder * fix bowtie served over https * sort toolingData drafts * fix bowtie skeleton width style * fix bowtie skeleton width * add native title based tooltip --------- Co-authored-by: Benjamin Granados <[email protected]> * [data]: Sync and finalise tooling data (#899) * sync tooling data * add tooling data validation workflow and fix JSONSchemaTool interface * fix undefined error * use corepack and yarn in workflow * fix tooling data * fix tooling data draft * Added 2 last tools --------- Co-authored-by: Benjamin Granados <[email protected]> * [web-release-tooling]: Minor fixes web tooling page (#913) * add /implementations to /tools redirects * fix /tools sidebar dropdown scrollbar * fix nav link does not reset filters * fix redirect typo * update yarn lock * fix redirects * move wild card redirect to last * fix dependencies problem --------- Co-authored-by: Benjamin Granados <[email protected]> * Removing old data files * update the implementers workflow --------- Co-authored-by: Benjamin Granados <[email protected]>
1 parent f83ccfe commit 33dbd28

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+5645
-1187
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
name: Add or Modify JSON Schema Tool
2+
description: Submit your tool to be added or updated in the JSON Schema ecosystem.
3+
title: "Add or Modify [Tool Name] in JSON Schema Ecosystem"
4+
labels: ["Status: Triage"]
5+
body:
6+
- type: input
7+
id: name
8+
attributes:
9+
label: "Tool Name"
10+
description: "Please provide the name of your tool."
11+
placeholder: "Enter the tool name"
12+
validations:
13+
required: true
14+
15+
- type: textarea
16+
id: description
17+
attributes:
18+
label: "Tool Description"
19+
description: "Provide a brief description of your tool."
20+
placeholder: "Enter a brief description of the tool"
21+
validations:
22+
required: true
23+
24+
- type: checkboxes
25+
id: actionType
26+
attributes:
27+
label: "Action Type"
28+
description: "Select whether you want to add a new tool or modify an existing one."
29+
options:
30+
- label: "Add Tool"
31+
- label: "Modify Tool"
32+
validations:
33+
required: true
34+
35+
- type: checkboxes
36+
id: toolingTypes
37+
attributes:
38+
label: "Tooling Types"
39+
description: "Select the categories of tooling that best describe your project."
40+
options:
41+
- label: "validator"
42+
- label: "hyper-schema"
43+
- label: "benchmarks"
44+
- label: "documentation"
45+
- label: "LDO-utility"
46+
- label: "code-to-schema"
47+
- label: "data-to-schema"
48+
- label: "model-to-schema"
49+
- label: "schema-to-types"
50+
- label: "schema-to-code"
51+
- label: "schema-to-web-UI"
52+
- label: "schema-to-data"
53+
- label: "util-general-processing"
54+
- label: "util-schema-to-schema"
55+
- label: "util-draft-migration"
56+
- label: "util-format-conversion"
57+
- label: "util-testing"
58+
- label: "editor"
59+
- label: "editor-plugins"
60+
- label: "schema-repository"
61+
- label: "linter"
62+
- label: "linter-plugins"
63+
validations:
64+
required: true
65+
66+
- type: textarea
67+
id: languages
68+
attributes:
69+
label: "Languages"
70+
description: "List the languages your tool is built in or supports."
71+
placeholder: "Enter the languages"
72+
73+
- type: textarea
74+
id: environments
75+
attributes:
76+
label: "Environments"
77+
description: "List the platforms or environments in which your tool operates."
78+
placeholder: "Enter the environments"
79+
80+
- type: textarea
81+
id: dependsOnValidators
82+
attributes:
83+
label: "Dependencies on Validators"
84+
description: "If your tool depends on other validators, please provide their URLs."
85+
placeholder: "Enter URLs of dependent validators"
86+
87+
- type: textarea
88+
id: creators
89+
attributes:
90+
label: "Creators"
91+
description: "Provide information about the creators or authors of the project."
92+
placeholder: "Provide information about the creators or authors of the project. Include their username and platform."
93+
94+
- type: textarea
95+
id: maintainers
96+
attributes:
97+
label: "Maintainers"
98+
description: "Provide information about the maintainers or authors of the project."
99+
placeholder: "Provide information about the maintainers or authors of the project. Include their username and platform."
100+
101+
- type: input
102+
id: license
103+
attributes:
104+
label: "License"
105+
description: "Specify the license under which your project is distributed."
106+
placeholder: "Enter the license"
107+
validations:
108+
required: true
109+
110+
- type: input
111+
id: source
112+
attributes:
113+
label: "Source Repository URL"
114+
description: "Provide the URL of your project's repository."
115+
placeholder: "Enter the source URL"
116+
validations:
117+
required: true
118+
119+
- type: input
120+
id: homepage
121+
attributes:
122+
label: "Homepage URL"
123+
description: "Provide the URL of your project's homepage."
124+
placeholder: "Enter the homepage URL"
125+
126+
- type: checkboxes
127+
id: supportedDialects
128+
attributes:
129+
label: "Supported Dialects"
130+
description: "List the supported JSON Schema dialects. Use the draft version identifiers from the list below."
131+
options:
132+
- label: "1"
133+
- label: "2"
134+
- label: "3"
135+
- label: "4"
136+
- label: "5"
137+
- label: "6"
138+
- label: "7"
139+
- label: "2019-09"
140+
- label: "2020-12"
141+
142+
- type: textarea
143+
id: additionalDialects
144+
attributes:
145+
label: "Additional Dialects"
146+
description: "If there are additional dialects supported, provide their name and source URL."
147+
placeholder: "Enter the additional dialects."
148+
149+
- type: input
150+
id: bowtieIdentifier
151+
attributes:
152+
label: "Bowtie Compliance Testing"
153+
description: "If your tool is tested by Bowtie, provide the Bowtie identifier."
154+
placeholder: "Enter the Bowtie identifier"
155+
156+
- type: textarea
157+
id: toolingListingNotes
158+
attributes:
159+
label: "Tooling Listing Notes"
160+
description: "Add any notes about the tooling which will appear in the tooling listing on the website."
161+
placeholder: "Enter the tooling listing notes."
162+
163+
- type: textarea
164+
id: compliance
165+
attributes:
166+
label: "Compliance"
167+
description: "Provide details on what must be done to make the implementation the most compliant that it can be."
168+
placeholder: "Enter the compliance details."
169+
170+
- type: textarea
171+
id: landscape
172+
attributes:
173+
label: "Landscape Information"
174+
description: "Provide additional information for the JSON Schema landscape diagram, such as your logo or a link to your logo. Indicate if you want to opt-out of the landscape."
175+
placeholder: "Enter the landscape information and preferences."

.github/workflows/new-implementation.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ on:
1010
branches:
1111
- main
1212
paths:
13-
- data/*.yml
14-
- pages/implementations/main.md
13+
- data/tooling-data.yaml
1514

1615
jobs:
1716
comment:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Trigger Update Landscape Tooling Workflow
2+
3+
on:
4+
push:
5+
paths:
6+
- data/tooling-data.yaml
7+
branches:
8+
- main
9+
workflow_dispatch:
10+
11+
12+
jobs:
13+
trigger-workflow:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Create workflow token
18+
id: app-token
19+
uses: actions/create-github-app-token@v1
20+
with:
21+
app-id: ${{ vars.APP_ID }}
22+
private-key: ${{ secrets.PRIVATE_KEY }}
23+
24+
- name: Trigger update landscape repository workflow
25+
env:
26+
AUTH_TOKEN: ${{ steps.app-token.output.token }}
27+
run: |
28+
curl -L \
29+
-X POST \
30+
-H "Accept: application/vnd.github.v3+json" \
31+
-H "Authorization: Bearer $AUTH_TOKEN" \
32+
https://github.com/api/repos/json-schema-org/landscape/actions/workflows/update-landscape-tooling.yml/dispatches \
33+
-d '{"ref":"main"}'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Validate Tooling Data
2+
3+
on:
4+
push:
5+
paths:
6+
- data/tooling-data.yaml
7+
branches:
8+
- main
9+
pull_request:
10+
paths:
11+
- data/tooling-data.yaml
12+
workflow_dispatch:
13+
14+
jobs:
15+
validate-tooling-data:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout Repository
20+
uses: actions/checkout@v4
21+
22+
- name: Corepack enable
23+
run: corepack enable
24+
25+
- name: Set up Node
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
30+
- name: Install dependencies
31+
run: yarn add ajv ajv-formats js-yaml
32+
33+
- name: Validate tooling-data.yaml
34+
run: |
35+
node -e "
36+
const Ajv = require('ajv/dist/2020');
37+
const addFormats = require('ajv-formats');
38+
const path = require('path');
39+
const fs = require('fs');
40+
const yaml = require('js-yaml');
41+
const dataDir = path.join(process.env.GITHUB_WORKSPACE, 'data');
42+
const schemaPath = path.join(dataDir, 'tooling-data.schema.json');
43+
const dataPath = path.join(dataDir, 'tooling-data.yaml');
44+
45+
try {
46+
const schema = JSON.parse(fs.readFileSync(schemaPath, 'utf-8'));
47+
const data = yaml.load(fs.readFileSync(dataPath, 'utf-8'));
48+
const ajv = new Ajv({ allErrors: true });
49+
addFormats(ajv);
50+
const validate = ajv.compile(schema);
51+
const valid = validate(data);
52+
if (!valid) {
53+
console.error('Validation failed:', validate.errors);
54+
process.exit(1);
55+
} else {
56+
console.log('tooling-data.yaml is valid.');
57+
}
58+
} catch (error) {
59+
console.error('Error validating tooling-data.yaml:', error);
60+
process.exit(1);
61+
}"

components/Layout.tsx

+2-6
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ const MainNavigation = () => {
205205

206206
<MainNavLink
207207
className='hidden lg:block hover:underline'
208-
uri='/implementations'
208+
uri='/tools'
209209
label='Tools'
210210
isActive={section === 'tools'}
211211
/>
@@ -294,11 +294,7 @@ const MobileNav = () => {
294294
isActive={section === 'docs'}
295295
/>
296296

297-
<MainNavLink
298-
uri='/implementations'
299-
label='Tools'
300-
isActive={section === 'tools'}
301-
/>
297+
<MainNavLink uri='/tools' label='Tools' isActive={section === 'tools'} />
302298
<MainNavLink uri='/blog' label='Blog' isActive={section === 'blog'} />
303299
<MainNavLink
304300
uri='/community'

data/hyper-libraries-modern.yml

-8
This file was deleted.

0 commit comments

Comments
 (0)