From 6233229fe1e76b82b00f78f9ddfe6b3ce4469847 Mon Sep 17 00:00:00 2001 From: Carlos Cuesta Date: Thu, 5 Jan 2023 11:43:01 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Replace=20`jsonlint`=20wit?= =?UTF-8?q?h=20`ajv-cli`=20(#1253)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ♻️ Update schema to `draft2020` * ♻️ Replace `jsonlint` with `ajv-cli` * 🚚 Rename `api` endpoint from `.tsx` to `.ts` * 🔧 Use prettier on .ts files in gitmojis --- packages/gitmojis/.lintstagedrc.json | 3 +- packages/gitmojis/package.json | 4 +- packages/gitmojis/src/schema.json | 42 +++-- .../src/components/GitmojiList/index.tsx | 8 +- .../api/gitmojis/{index.tsx => index.ts} | 11 +- yarn.lock | 144 +++++++++--------- 6 files changed, 102 insertions(+), 110 deletions(-) rename packages/website/src/pages/api/gitmojis/{index.tsx => index.ts} (56%) diff --git a/packages/gitmojis/.lintstagedrc.json b/packages/gitmojis/.lintstagedrc.json index 758e8fd..2a123b8 100644 --- a/packages/gitmojis/.lintstagedrc.json +++ b/packages/gitmojis/.lintstagedrc.json @@ -1,3 +1,4 @@ { - "./src/*.json": ["prettier --write ./src/*.json"] + "./src/*.json": ["prettier --write ./src/*.json"], + "./src/*.ts": ["prettier --write ./src/*.ts"] } diff --git a/packages/gitmojis/package.json b/packages/gitmojis/package.json index 94913d7..dd6326a 100644 --- a/packages/gitmojis/package.json +++ b/packages/gitmojis/package.json @@ -8,11 +8,11 @@ ], "types": "src/gitmojis.d.ts", "scripts": { - "lint": "jsonlint ./src/gitmojis.json -V ./src/schema.json", + "lint": "ajv --spec=draft2020 validate -s ./src/schema.json -d ./src/gitmojis.json", "publishPackage": "npm publish" }, "devDependencies": { - "jsonlint": "^1.6.3", + "ajv-cli": "^5.0.0", "lint-staged": "^13.0.0", "prettier": "2.8.1" }, diff --git a/packages/gitmojis/src/schema.json b/packages/gitmojis/src/schema.json index 6f10483..106fadb 100644 --- a/packages/gitmojis/src/schema.json +++ b/packages/gitmojis/src/schema.json @@ -1,46 +1,40 @@ { "type": "object", - "$schema": "http://json-schema.org/draft-03/schema", - "id": "http://jsonschema.net", - "required": true, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "required": ["gitmojis"], "properties": { "gitmojis": { "type": "array", - "id": "http://jsonschema.net/gitmojis", - "required": true, + "minItems": 1, + "uniqueItems": true, "items": { "type": "object", - "id": "http://jsonschema.net/gitmojis/0", - "required": true, + "required": [ + "emoji", + "entity", + "code", + "description", + "name", + "semver" + ], "properties": { "code": { - "type": "string", - "id": "http://jsonschema.net/gitmojis/0/code", - "required": true + "type": "string" }, "entity": { - "type": "string", - "id": "http://jsonschema.net/gitmojis/0/entity" + "type": "string" }, "description": { - "type": "string", - "id": "http://jsonschema.net/gitmojis/0/description", - "required": true + "type": "string" }, "emoji": { - "type": "string", - "id": "http://jsonschema.net/gitmojis/0/emoji", - "required": true + "type": "string" }, "name": { - "type": "string", - "id": "http://jsonschema.net/gitmojis/0/name", - "required": true + "type": "string" }, "semver": { - "enum": ["major", "minor", "patch", null], - "id": "http://jsonschema.net/gitmojis/0/semver", - "required": true + "enum": ["major", "minor", "patch", null] } } } diff --git a/packages/website/src/components/GitmojiList/index.tsx b/packages/website/src/components/GitmojiList/index.tsx index 47d3894..2710e77 100644 --- a/packages/website/src/components/GitmojiList/index.tsx +++ b/packages/website/src/components/GitmojiList/index.tsx @@ -1,18 +1,14 @@ import { useEffect, useState } from 'react' import Clipboard from 'clipboard' import { useRouter } from 'next/router' +import type { Gitmoji as GitmojiType } from 'gitmojis' import Gitmoji from './Gitmoji' import Toolbar from './Toolbar' import useLocalStorage from './hooks/useLocalStorage' type Props = { - gitmojis: Array<{ - code: string - description: string - emoji: string - name: string - }> + gitmojis: readonly GitmojiType[] } const GitmojiList = (props: Props) => { diff --git a/packages/website/src/pages/api/gitmojis/index.tsx b/packages/website/src/pages/api/gitmojis/index.ts similarity index 56% rename from packages/website/src/pages/api/gitmojis/index.tsx rename to packages/website/src/pages/api/gitmojis/index.ts index 08b9225..31a347b 100644 --- a/packages/website/src/pages/api/gitmojis/index.tsx +++ b/packages/website/src/pages/api/gitmojis/index.ts @@ -1,11 +1,14 @@ import type { NextApiRequest, NextApiResponse } from 'next' -import gitmojisData from 'gitmojis' +import { gitmojis } from 'gitmojis' -const gitmojis = (request: NextApiRequest, response: NextApiResponse): void => { +const getGitmojis = ( + request: NextApiRequest, + response: NextApiResponse +): void => { const { method } = request if (method === 'GET') { - response.status(200).json(gitmojisData) + response.status(200).json({ gitmojis }) return } @@ -13,4 +16,4 @@ const gitmojis = (request: NextApiRequest, response: NextApiResponse): void => { response.status(405).json({ error: `Error: method ${method} not allowed` }) } -export default gitmojis +export default getGitmojis diff --git a/yarn.lock b/yarn.lock index ea8fa47..6ef2554 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2520,13 +2520,6 @@ __metadata: languageName: node linkType: hard -"JSV@npm:^4.0.x": - version: 4.0.2 - resolution: "JSV@npm:4.0.2" - checksum: 9e2e070b2149d4ffed6c135dedb5f8cebb870dc63c0ca6d3cb647067248c7ca15d1a934ee46e9d2ac0e468436d0f70bc1b63cd5f93e705ee9aa0669430e6e66f - languageName: node - linkType: hard - "abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" @@ -2634,6 +2627,28 @@ __metadata: languageName: node linkType: hard +"ajv-cli@npm:^5.0.0": + version: 5.0.0 + resolution: "ajv-cli@npm:5.0.0" + dependencies: + ajv: ^8.0.0 + fast-json-patch: ^2.0.0 + glob: ^7.1.0 + js-yaml: ^3.14.0 + json-schema-migrate: ^2.0.0 + json5: ^2.1.3 + minimist: ^1.2.0 + peerDependencies: + ts-node: ">=9.0.0" + peerDependenciesMeta: + ts-node: + optional: true + bin: + ajv: dist/index.js + checksum: e8ba29f618c653abba3a08d8784f8c882b5ac560dab587540af4d53d8230acb93af07c37165a0461294adb4015ba8ceb09916017a66754c782f950f9679ae94a + languageName: node + linkType: hard + "ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" @@ -2655,6 +2670,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.0.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + languageName: node + linkType: hard + "ajv@npm:^8.6.0": version: 8.11.0 resolution: "ajv@npm:8.11.0" @@ -2722,13 +2749,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:~1.0.0": - version: 1.0.0 - resolution: "ansi-styles@npm:1.0.0" - checksum: 6dd47dccb268b4cc1fd0dd6617067a7acd34ad2761f0438800fdd55c0d45f50a90787acd82806009c2bf467f4e2920166be03e19b23529038c1c4527d80f598b - languageName: node - linkType: hard - "anymatch@npm:^3.0.3": version: 3.1.2 resolution: "anymatch@npm:3.1.2" @@ -3225,17 +3245,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:~0.4.0": - version: 0.4.0 - resolution: "chalk@npm:0.4.0" - dependencies: - ansi-styles: ~1.0.0 - has-color: ~0.1.0 - strip-ansi: ~0.1.0 - checksum: e8f04f387b9fbf746fdce4b61a633f8a0d28224d8b022603db0f2d137471a18c5bc0bc33b243df09c361688f12bd3ab8a9dd1f8b4450d5a361bfe83aadbde739 - languageName: node - linkType: hard - "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -4372,6 +4381,13 @@ __metadata: languageName: node linkType: hard +"fast-deep-equal@npm:^2.0.1": + version: 2.0.1 + resolution: "fast-deep-equal@npm:2.0.1" + checksum: b701835a87985e0ec4925bdf1f0c1e7eb56309b5d12d534d5b4b69d95a54d65bb16861c081781ead55f73f12d6c60ba668713391ee7fbf6b0567026f579b7b0b + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -4405,6 +4421,15 @@ __metadata: languageName: node linkType: hard +"fast-json-patch@npm:^2.0.0": + version: 2.2.1 + resolution: "fast-json-patch@npm:2.2.1" + dependencies: + fast-deep-equal: ^2.0.1 + checksum: 955aebb3f873d1fb0452a5d8c34865ce4c3c6cdafeb7d3ad98d43b467de9a5a0d304132f8595fd2b373f8f4d200605947e865286b180f3a55e8377a634893164 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -4731,7 +4756,7 @@ __metadata: version: 0.0.0-use.local resolution: "gitmojis@workspace:packages/gitmojis" dependencies: - jsonlint: ^1.6.3 + ajv-cli: ^5.0.0 lint-staged: ^13.0.0 prettier: 2.8.1 languageName: unknown @@ -4769,7 +4794,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.3, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:^7.0.3, glob@npm:^7.1.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4896,13 +4921,6 @@ __metadata: languageName: node linkType: hard -"has-color@npm:~0.1.0": - version: 0.1.7 - resolution: "has-color@npm:0.1.7" - checksum: 5753d76b1330bc1f5a07171f222ed0718f5ec2d64d5677800e434f183a99f7042f5cda43c9625a2d0f0204063aa03499a66f1c15283d789773b3544f18f93f58 - languageName: node - linkType: hard - "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -5989,7 +6007,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": +"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -6077,6 +6095,15 @@ __metadata: languageName: node linkType: hard +"json-schema-migrate@npm:^2.0.0": + version: 2.0.0 + resolution: "json-schema-migrate@npm:2.0.0" + dependencies: + ajv: ^8.0.0 + checksum: 21537305f3a5102695cfeeab997d565516297b240ee560bf7fe5c01ea4d56b65e0fbc4e9a4f9a32819e2cb1874daf43b06eb580e623d0aade0cf50d03ae40418 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -6125,6 +6152,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:^2.1.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + languageName: node + linkType: hard + "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -6138,18 +6174,6 @@ __metadata: languageName: node linkType: hard -"jsonlint@npm:^1.6.3": - version: 1.6.3 - resolution: "jsonlint@npm:1.6.3" - dependencies: - JSV: ^4.0.x - nomnom: ^1.5.x - bin: - jsonlint: lib/cli.js - checksum: be0972cf552ff1ec589db5d7b20ff31064561fbe4605708f5a260e2dcc18e26acd5bf842ba10dd157706232aca6d6c9116d21005cb3e8fb5ec9d9b01c8869677 - languageName: node - linkType: hard - "jsonpointer@npm:^5.0.0": version: 5.0.1 resolution: "jsonpointer@npm:5.0.1" @@ -6854,16 +6878,6 @@ __metadata: languageName: node linkType: hard -"nomnom@npm:^1.5.x": - version: 1.8.1 - resolution: "nomnom@npm:1.8.1" - dependencies: - chalk: ~0.4.0 - underscore: ~1.6.0 - checksum: cc6f538062741e8914b65352499c444a754d18a95f8c4b336b9183367c44335f00a9d3beb54648f6a76d5434702a3d71bf37c23ef4c960d39595ed72d376c6fd - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -8221,15 +8235,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:~0.1.0": - version: 0.1.1 - resolution: "strip-ansi@npm:0.1.1" - bin: - strip-ansi: cli.js - checksum: 31f1d4d3b86e6d968aa568bf47d712626dd748aff7d576a98ba2ed378dd60dfb1475898254b62479779231e50a38f0b7ea0b66d3b22d14cde38b769c1c747d33 - languageName: node - linkType: hard - "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -8719,13 +8724,6 @@ __metadata: languageName: node linkType: hard -"underscore@npm:~1.6.0": - version: 1.6.0 - resolution: "underscore@npm:1.6.0" - checksum: bfb837d95164077bd2751247dd9797546287c060d86c3a730f590948dbc132b426238e37df7bea28f39d3e3abf571de5b974809ee3c32d309280fed851588ef9 - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0"