diff --git a/sanity/bun.lock b/sanity/bun.lock index 9798c32f..aa13449e 100644 --- a/sanity/bun.lock +++ b/sanity/bun.lock @@ -15,6 +15,7 @@ }, "devDependencies": { "@sanity/eslint-config-studio": "^6.0.0", + "@types/node": "^22", "@types/react": "^19.2.18", "eslint": "^10.9.0", "typescript": "^7.0.2", @@ -756,6 +757,8 @@ "@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="], + "@types/node": ["@types/node@22.20.5", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA=="], + "@types/prismjs": ["@types/prismjs@1.26.6", "", {}, "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw=="], "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="], @@ -1922,7 +1925,7 @@ "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], @@ -1996,6 +1999,8 @@ "undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], "unicode-match-property-ecmascript": ["unicode-match-property-ecmascript@2.0.0", "", { "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="], @@ -2142,8 +2147,6 @@ "@oclif/core/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@oclif/core/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - "@oclif/core/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], "@oclif/plugin-not-found/fast-levenshtein": ["fast-levenshtein@3.0.0", "", { "dependencies": { "fastest-levenshtein": "^1.0.7" } }, "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ=="], diff --git a/sanity/package.json b/sanity/package.json index c606376d..f2cc3fbc 100644 --- a/sanity/package.json +++ b/sanity/package.json @@ -9,7 +9,8 @@ "start": "sanity start", "build": "sanity build", "deploy": "sanity deploy", - "deploy-graphql": "sanity graphql deploy" + "deploy-graphql": "sanity graphql deploy", + "typecheck": "tsc" }, "keywords": [ "sanity" @@ -25,6 +26,7 @@ }, "devDependencies": { "@sanity/eslint-config-studio": "^6.0.0", + "@types/node": "^22", "@types/react": "^19.2.18", "eslint": "^10.9.0", "typescript": "^7.0.2" diff --git a/sanity/sanity.cli.js b/sanity/sanity.cli.js deleted file mode 100644 index bcc83c5c..00000000 --- a/sanity/sanity.cli.js +++ /dev/null @@ -1,8 +0,0 @@ -import { defineCliConfig } from 'sanity/cli'; - -export default defineCliConfig({ - api: { - projectId: process.env.SANITY_STUDIO_PROJECT_ID, - dataset: process.env.SANITY_STUDIO_DATASET, - }, -}); diff --git a/sanity/sanity.cli.ts b/sanity/sanity.cli.ts new file mode 100644 index 00000000..05699759 --- /dev/null +++ b/sanity/sanity.cli.ts @@ -0,0 +1,8 @@ +import { defineCliConfig } from 'sanity/cli'; + +export default defineCliConfig({ + api: { + projectId: process.env.SANITY_STUDIO_PROJECT_ID!, + dataset: process.env.SANITY_STUDIO_DATASET!, + }, +}); diff --git a/sanity/sanity.config.js b/sanity/sanity.config.ts similarity index 80% rename from sanity/sanity.config.js rename to sanity/sanity.config.ts index 7c397dc1..780628fe 100644 --- a/sanity/sanity.config.js +++ b/sanity/sanity.config.ts @@ -9,8 +9,8 @@ export default defineConfig({ name: 'default', title: 'generate-sanity', - projectId: process.env.SANITY_STUDIO_PROJECT_ID, - dataset: process.env.SANITY_STUDIO_DATASET, + projectId: process.env.SANITY_STUDIO_PROJECT_ID!, + dataset: process.env.SANITY_STUDIO_DATASET!, plugins: [structureTool(), visionTool(), colorInput()], diff --git a/sanity/schemas/application.js b/sanity/schemas/application.ts similarity index 87% rename from sanity/schemas/application.js rename to sanity/schemas/application.ts index 2ef69a31..1d017b30 100644 --- a/sanity/schemas/application.js +++ b/sanity/schemas/application.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'application', @@ -19,7 +19,7 @@ export default defineType({ name: 'activeApplication', title: 'Active Application', type: 'boolean', - validation: (rule) => rule.required(), + validation: rule => rule.required(), }), defineField({ name: 'applicationLink', @@ -34,4 +34,4 @@ export default defineType({ applicationLink: 'applicationLink', }, }, -}) +}); diff --git a/sanity/schemas/copy.js b/sanity/schemas/copy.ts similarity index 90% rename from sanity/schemas/copy.js rename to sanity/schemas/copy.ts index e2521305..f0122cbe 100644 --- a/sanity/schemas/copy.js +++ b/sanity/schemas/copy.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'copy', @@ -28,4 +28,4 @@ export default defineType({ subtitle: 'header', }, }, -}) +}); diff --git a/sanity/schemas/director.js b/sanity/schemas/director.ts similarity index 94% rename from sanity/schemas/director.js rename to sanity/schemas/director.ts index 32a364d8..607c3eb0 100644 --- a/sanity/schemas/director.js +++ b/sanity/schemas/director.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'director', @@ -50,4 +50,4 @@ export default defineType({ media: 'image', }, }, -}) +}); diff --git a/sanity/schemas/generateLink.js b/sanity/schemas/generateLink.ts similarity index 90% rename from sanity/schemas/generateLink.js rename to sanity/schemas/generateLink.ts index 065cc72a..2b4f0661 100644 --- a/sanity/schemas/generateLink.js +++ b/sanity/schemas/generateLink.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'generateLink', @@ -29,4 +29,4 @@ export default defineType({ title: 'title', }, }, -}) +}); diff --git a/sanity/schemas/index.jsx b/sanity/schemas/index.jsx deleted file mode 100644 index 27577b6b..00000000 --- a/sanity/schemas/index.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import application from './application' -import copy from './copy' -import director from './director' -import generateLink from './generateLink' -import pastProjects from './pastProject' -import showcase from './showcase' -import value from './value' -import team from './team' - -export const schemaTypes = [ - application, - copy, - director, - generateLink, - pastProjects, - showcase, - value, - team, -] diff --git a/sanity/schemas/index.ts b/sanity/schemas/index.ts new file mode 100644 index 00000000..2bdc849d --- /dev/null +++ b/sanity/schemas/index.ts @@ -0,0 +1,10 @@ +import application from './application'; +import copy from './copy'; +import director from './director'; +import generateLink from './generateLink'; +import pastProjects from './pastProject'; +import showcase from './showcase'; +import team from './team'; +import value from './value'; + +export const schemaTypes = [application, copy, director, generateLink, pastProjects, showcase, value, team]; diff --git a/sanity/schemas/pastProject.js b/sanity/schemas/pastProject.ts similarity index 95% rename from sanity/schemas/pastProject.js rename to sanity/schemas/pastProject.ts index 7f62aba7..e736ce90 100644 --- a/sanity/schemas/pastProject.js +++ b/sanity/schemas/pastProject.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'pastProject', @@ -60,4 +60,4 @@ export default defineType({ media: 'image', }, }, -}) +}); diff --git a/sanity/schemas/showcase.js b/sanity/schemas/showcase.ts similarity index 91% rename from sanity/schemas/showcase.js rename to sanity/schemas/showcase.ts index 601d4eba..d874a400 100644 --- a/sanity/schemas/showcase.js +++ b/sanity/schemas/showcase.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'showcase', @@ -28,4 +28,4 @@ export default defineType({ media: 'image', }, }, -}) +}); diff --git a/sanity/schemas/team.js b/sanity/schemas/team.ts similarity index 85% rename from sanity/schemas/team.js rename to sanity/schemas/team.ts index b2f71846..07a4da6d 100644 --- a/sanity/schemas/team.js +++ b/sanity/schemas/team.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'team', @@ -32,7 +32,7 @@ export default defineType({ name: 'tags', title: 'Tags', type: 'array', - of: [{type: 'string'}], + of: [{ type: 'string' }], }), defineField({ name: 'teamDescription', @@ -48,7 +48,7 @@ export default defineType({ name: 'contributorRoles', title: 'Contributor Roles', type: 'array', - of: [{type: 'reference', to: [{type: 'application'}]}], + of: [{ type: 'reference', to: [{ type: 'application' }] }], }), defineField({ name: 'leadDescription', @@ -59,7 +59,7 @@ export default defineType({ name: 'leadRoles', title: 'Lead Roles', type: 'array', - of: [{type: 'reference', to: [{type: 'application'}]}], + of: [{ type: 'reference', to: [{ type: 'application' }] }], }), defineField({ name: 'chiefDescription', @@ -70,7 +70,7 @@ export default defineType({ name: 'chiefRoles', title: 'Chief Roles', type: 'array', - of: [{type: 'reference', to: [{type: 'application'}]}], + of: [{ type: 'reference', to: [{ type: 'application' }] }], }), defineField({ name: 'externalLink', @@ -89,4 +89,4 @@ export default defineType({ media: 'image', }, }, -}) +}); diff --git a/sanity/schemas/value.js b/sanity/schemas/value.ts similarity index 92% rename from sanity/schemas/value.js rename to sanity/schemas/value.ts index 8ca99102..7f0317a7 100644 --- a/sanity/schemas/value.js +++ b/sanity/schemas/value.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity' +import { defineField, defineType } from 'sanity'; export default defineType({ name: 'value', @@ -40,4 +40,4 @@ export default defineType({ media: 'image', }, }, -}) +}); diff --git a/sanity/tsconfig.json b/sanity/tsconfig.json new file mode 100644 index 00000000..99879b6b --- /dev/null +++ b/sanity/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "bundler", + "jsx": "preserve", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "types": ["node"] + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", "dist", ".sanity"] +}