From c5aff4bb9879c8137e7d0573d92cd9a642c0d4f6 Mon Sep 17 00:00:00 2001 From: Robert Herber Date: Fri, 20 Oct 2023 15:47:29 +0200 Subject: [PATCH] Some more typ fixes --- apps/cms-ui/components/UpsertEntry.tsx | 1 + .../graphql/Mutation/addSupplement.ts | 2 +- .../graphql/Query/mySupplementIntakes.ts | 2 +- packages/auth-anonymous/graphql/Query/me.ts | 6 ++---- packages/auth-api-token/tsconfig.json | 9 +-------- .../graphql/Mutation/updatePermissions.test.ts | 6 +++--- packages/cms/dynamicSchema/createDynamicSchema.ts | 8 ++++++++ packages/cms/dynamicSchema/utils.ts | 12 ++++++++---- packages/cms/graphql/Mutation/addFieldsToEntity.ts | 5 ++++- packages/routes/utils/initializePlugin.ts | 7 ++++--- packages/routes/utils/readRoutes.ts | 2 +- packages/todo/graphql/Mutation/createTodo.ts | 2 +- packages/todo/graphql/Mutation/updateTodoStatus.ts | 2 +- 13 files changed, 36 insertions(+), 28 deletions(-) diff --git a/apps/cms-ui/components/UpsertEntry.tsx b/apps/cms-ui/components/UpsertEntry.tsx index f27ccfc7..f8cee97c 100644 --- a/apps/cms-ui/components/UpsertEntry.tsx +++ b/apps/cms-ui/components/UpsertEntry.tsx @@ -55,6 +55,7 @@ const UpsertEntry: React.FC<{ const [, createEntry] = useMutation(useMemo(() => buildUpsertEntryMutation(entity), [entity])) + // @ts-expect-error fix later const defaults = useMemo(() => fields.reduce((acc, field) => { // eslint-disable-next-line no-nested-ternary, functional/immutable-data, unicorn/no-nested-ternary // @ts-expect-error fix later diff --git a/apps/supplement-stack/graphql/Mutation/addSupplement.ts b/apps/supplement-stack/graphql/Mutation/addSupplement.ts index 57995e6c..14d36875 100644 --- a/apps/supplement-stack/graphql/Mutation/addSupplement.ts +++ b/apps/supplement-stack/graphql/Mutation/addSupplement.ts @@ -14,7 +14,7 @@ const addSupplement: MutationResolvers['addSupplement'] = async (parent, { const supplement: DocumentForInsert = { amountInGrams, foodId: new ObjectId(foodId), - userId: new ObjectId(decodedToken.userId as string), + userId: new ObjectId(decodedToken!.userId), intakeTime, } diff --git a/apps/supplement-stack/graphql/Query/mySupplementIntakes.ts b/apps/supplement-stack/graphql/Query/mySupplementIntakes.ts index 9bd1b093..cfe527a5 100644 --- a/apps/supplement-stack/graphql/Query/mySupplementIntakes.ts +++ b/apps/supplement-stack/graphql/Query/mySupplementIntakes.ts @@ -6,7 +6,7 @@ import type { QueryResolvers } from '../schema.generated' const mySupplementIntakes: QueryResolvers['mySupplementIntakes'] = async (_, __, { decodedToken }) => { const results = await Supplements.find({ - userId: new ObjectId(decodedToken.userId), + userId: new ObjectId(decodedToken!.userId), }) return results diff --git a/packages/auth-anonymous/graphql/Query/me.ts b/packages/auth-anonymous/graphql/Query/me.ts index 6f5a4e6b..029a3bf1 100644 --- a/packages/auth-anonymous/graphql/Query/me.ts +++ b/packages/auth-anonymous/graphql/Query/me.ts @@ -1,8 +1,6 @@ import type { QueryResolvers } from '../schema.generated' +import type { TokenContents } from '@zemble/core' -const me: QueryResolvers['me'] = (_, __, { decodedToken, token }) => { - console.log({ decodedToken, token }) - return decodedToken! -} +const me: QueryResolvers['me'] = (_, __, { decodedToken }) => decodedToken as TokenContents export default me diff --git a/packages/auth-api-token/tsconfig.json b/packages/auth-api-token/tsconfig.json index 0b29ffa6..4082f16a 100644 --- a/packages/auth-api-token/tsconfig.json +++ b/packages/auth-api-token/tsconfig.json @@ -1,10 +1,3 @@ { - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "esModuleInterop": true, - "moduleResolution": "node", - "module": "CommonJS", - "noImplicitAny": false, - "types": [ "bun-types" ] - } + "extends": "../../tsconfig.json" } diff --git a/packages/cms-users/graphql/Mutation/updatePermissions.test.ts b/packages/cms-users/graphql/Mutation/updatePermissions.test.ts index 404778ae..4a889b88 100644 --- a/packages/cms-users/graphql/Mutation/updatePermissions.test.ts +++ b/packages/cms-users/graphql/Mutation/updatePermissions.test.ts @@ -38,7 +38,7 @@ describe('Mutation.updatePermissions', () => { { silenceErrors: true }, ) - expect(errors?.[0].message).toEqual(`Accessing 'Mutation.updatePermissions' requires authentication.`) + expect(errors?.[0]?.message).toEqual(`Accessing 'Mutation.updatePermissions' requires authentication.`) }) it('Should succeed', async () => { @@ -91,7 +91,7 @@ describe('Mutation.updatePermissions', () => { silenceErrors: true, }) - expect(errors?.[0].message).toEqual('User not found') + expect(errors?.[0]?.message).toEqual('User not found') }) it('Should fail if removing user-admin permission from self', async () => { @@ -116,6 +116,6 @@ describe('Mutation.updatePermissions', () => { silenceErrors: true, }) - expect(errors?.[0].message).toEqual('You cannot remove your own user-admin permission') + expect(errors?.[0]?.message).toEqual('You cannot remove your own user-admin permission') }) }) diff --git a/packages/cms/dynamicSchema/createDynamicSchema.ts b/packages/cms/dynamicSchema/createDynamicSchema.ts index d59969fa..c382397b 100644 --- a/packages/cms/dynamicSchema/createDynamicSchema.ts +++ b/packages/cms/dynamicSchema/createDynamicSchema.ts @@ -43,11 +43,15 @@ const fieldResolver = (parent: EntityEntryType, field: AnyField, displayNameFiel return parent._id.toHexString() } if (field.name === 'displayName') { + // @ts-expect-error sdfgsdfg return displayNameField && parent[displayNameField] + // @ts-expect-error sdfgsdfg ? parent[displayNameField].toString() : parent._id.toHexString() } + // @ts-expect-error sdfgsdfg if (parent[field.name] !== undefined && parent[field.name] !== null) { + // @ts-expect-error sdfgsdfg return parent[field.name] } if (field.__typename === 'ArrayField') { @@ -98,7 +102,9 @@ export default async () => { resolve: async (externalId: string) => { const resolved = await getById.load(externalId) + // @ts-expect-error sdfgsdfg return entity.displayNameField && resolved?.[entity.displayNameField] + // @ts-expect-error sdfgsdfg ? resolved[entity.displayNameField].toString() : resolved?._id.toHexString() }, @@ -133,7 +139,9 @@ export default async () => { }, { displayName: { type: GraphQLString, + // @ts-expect-error sdfgsdfg resolve: (parent: EntityEntryType) => (entity.displayNameField && parent[entity.displayNameField] + // @ts-expect-error sdfgsdfg ? parent[entity.displayNameField].toString() : parent._id.toHexString()), }, diff --git a/packages/cms/dynamicSchema/utils.ts b/packages/cms/dynamicSchema/utils.ts index beeea834..2b724e2c 100644 --- a/packages/cms/dynamicSchema/utils.ts +++ b/packages/cms/dynamicSchema/utils.ts @@ -166,10 +166,14 @@ export const createTraverser = (entity: EntitySchemaType) => { const mapArrayFields = ( fieldName: string, data: Record | readonly Record[], - ) => (Array.isArray(data) ? data : [data]).map((el: Record): Record => ({ - __typename: (capitalize(entity.nameSingular) + capitalize(fieldName) + capitalize(Object.keys(el)[0])), - ...traverseData(el), - })) + ) => (Array.isArray(data) ? data : [data]).map((el: Record): Record => { + const ending = capitalize(Object.keys(el)[0]!) + + return ({ + __typename: (capitalize(entity.nameSingular) + capitalize(fieldName) + ending), + ...traverseData(el), + }) + }) return traverseData } diff --git a/packages/cms/graphql/Mutation/addFieldsToEntity.ts b/packages/cms/graphql/Mutation/addFieldsToEntity.ts index 7c6d848d..c71350ef 100644 --- a/packages/cms/graphql/Mutation/addFieldsToEntity.ts +++ b/packages/cms/graphql/Mutation/addFieldsToEntity.ts @@ -91,7 +91,10 @@ const addFieldsToEntity: MutationResolvers['addFieldsToEntity'] = async (_, { na ], }), {})) - const fieldsFailingValidation = fieldsRequiringValidation.filter((fieldName) => failingDocs.some((doc) => !doc[fieldName] && doc[fieldName] !== false)) + const fieldsFailingValidation = fieldsRequiringValidation.filter(( + fieldName, + // @ts-expect-error fix sometime + ) => failingDocs.some((doc) => !doc[fieldName] && doc[fieldName] !== false)) if (failingDocs.length > 0) { throw new GraphQLError(`Cannot require ${fieldsFailingValidation.join(', ')} on entity ${namePlural}. Either provide a default value or add it without requiring these fields.`) diff --git a/packages/routes/utils/initializePlugin.ts b/packages/routes/utils/initializePlugin.ts index c5e476b9..9ba5d146 100644 --- a/packages/routes/utils/initializePlugin.ts +++ b/packages/routes/utils/initializePlugin.ts @@ -98,8 +98,9 @@ const initializeRoutes = async ( const routesAndFilenames = await readRoutes(routePath) const routePromises = Object.keys(routesAndFilenames).map(async (route) => { - const relativePath = path.join(config.rootUrl ?? '', routesAndFilenames[route].relativePath.toLowerCase()) - const filename = routesAndFilenames[route].filename.toLowerCase() + const val = routesAndFilenames[route]! + const relativePath = path.join(config.rootUrl ?? '', val.relativePath.toLowerCase()) + const filename = val.filename.toLowerCase() const is404 = filename.startsWith('404') @@ -145,7 +146,7 @@ const initializeRoutes = async ( }) }, { headers: { - 'Content-Type': conentType, + 'Content-Type': conentType!, 'X-Content-Type-Options': 'nosniff', 'Content-Length': fileStream.readableLength.toString(), 'Transfer-Encoding': 'chunked', diff --git a/packages/routes/utils/readRoutes.ts b/packages/routes/utils/readRoutes.ts index 0d1aa8e5..e9b4bbfe 100644 --- a/packages/routes/utils/readRoutes.ts +++ b/packages/routes/utils/readRoutes.ts @@ -1,7 +1,7 @@ import * as fs from 'node:fs' import * as path from 'node:path' -type PathsWithMetadata = Record +export type PathsWithMetadata = Record export const readRoutes = async (rootDir: string, prefix = ''): Promise => fs.readdirSync(path.join(rootDir, prefix)).reduce(async (prev, filename) => { const route = path.join(rootDir, prefix, filename) diff --git a/packages/todo/graphql/Mutation/createTodo.ts b/packages/todo/graphql/Mutation/createTodo.ts index 6406e7f1..6810422a 100644 --- a/packages/todo/graphql/Mutation/createTodo.ts +++ b/packages/todo/graphql/Mutation/createTodo.ts @@ -2,7 +2,7 @@ import type { MutationResolvers } from '../schema.generated' const createTodo: MutationResolvers['createTodo'] = async (_, { title }, { pubsub, decodedToken, kv }) => { const id = Math.random().toString(36).substring(7) - const { userId } = decodedToken + const { userId } = decodedToken! const todo = { title, id, completed: false } await kv(userId).set(id, { title, id, completed: false }) diff --git a/packages/todo/graphql/Mutation/updateTodoStatus.ts b/packages/todo/graphql/Mutation/updateTodoStatus.ts index 43b1de56..4952a401 100644 --- a/packages/todo/graphql/Mutation/updateTodoStatus.ts +++ b/packages/todo/graphql/Mutation/updateTodoStatus.ts @@ -3,7 +3,7 @@ import type { MutationResolvers, Todo } from '../schema.generated' const updateTodoStatus: MutationResolvers['updateTodoStatus'] = async (_, { id, completed, }, { pubsub, decodedToken, kv }) => { - const { userId } = decodedToken + const { userId } = decodedToken! const todoIdWithUser = `${userId}_${id}` const previous = await kv(userId).get(todoIdWithUser)