diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 2cea5708..a4685e26 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -14,5 +14,7 @@ "lint": "eslint \"{src,tests}/**/*.ts\" --fix", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" }, - "dependencies": {} + "dependencies": { + "@keyshade/schema": "workspace:*" + } } diff --git a/packages/api-client/src/controllers/workspace.ts b/packages/api-client/src/controllers/workspace.ts index dbb46a29..e98913d4 100644 --- a/packages/api-client/src/controllers/workspace.ts +++ b/packages/api-client/src/controllers/workspace.ts @@ -1,7 +1,7 @@ import { APIClient } from '@api-client/core/client' import { parsePaginationUrl } from '@api-client/core/pagination-parser' import { parseResponse } from '@api-client/core/response-parser' -import { ClientResponse } from '@api-client/types/index.types' +import { ClientResponse } from '@keyshade/schema' import { CreateWorkspaceRequest, CreateWorkspaceResponse, @@ -17,7 +17,7 @@ import { GlobalSearchResponse, UpdateWorkspaceRequest, UpdateWorkspaceResponse -} from '@api-client/types/workspace.types' +} from '@keyshade/schema' export default class WorkspaceController { private apiClient: APIClient diff --git a/packages/api-client/src/types/workspace.types.d.ts b/packages/api-client/src/types/workspace.types.d.ts deleted file mode 100644 index 8737417f..00000000 --- a/packages/api-client/src/types/workspace.types.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { PageRequest, PageResponse } from './index.types' - -export interface Workspace { - id: string - name: string - slug: string - icon: string - isFreeTier: boolean - createdAt: string - updatedAt: string - ownerId: string - isDefault: boolean - lastUpdatedBy: string -} - -export interface CreateWorkspaceRequest { - name: string - icon?: string -} - -export interface CreateWorkspaceResponse extends Workspace {} - -export interface UpdateWorkspaceRequest - extends Partial { - workspaceSlug: string -} - -export interface UpdateWorkspaceResponse extends Workspace {} - -export interface DeleteWorkspaceRequest { - workspaceSlug: string -} - -export interface DeleteWorkspaceResponse {} - -export interface GetWorkspaceRequest { - workspaceSlug: string -} - -export interface GetWorkspaceResponse extends Workspace {} - -export interface GetAllWorkspacesOfUserRequest extends PageRequest {} - -export interface GetAllWorkspacesOfUserResponse - extends PageResponse {} - -export interface ExportDataRequest { - workspaceSlug: string -} - -export interface ExportDataResponse { - name: string - icon: string - workspaceRoles: { - name: string - description: string - colorCode: string - hasAdminAuthority: boolean - authorities: string[] - }[] - projects: { - name: string - description: string - publicKey: string - privateKey: string - storePrivateKey: boolean - accessLevel: 'GLOBAL' | 'PRIVATE' | 'INTERNAL' - environments: { - name: string - description: string - }[] - secrets: { - name: string - note: string - rotateAt: string - versions: { - value: string - version: number - }[] - }[] - variables: { - name: string - note: string - versions: { - value: string - version: number - }[] - }[] - }[] -} - -export interface GlobalSearchRequest { - workspaceSlug: string - search: string -} - -export interface GlobalSearchResponse { - projects: { - slug: string - name: string - description: string - }[] - environments: { - slug: string - name: string - description: string - }[] - secrets: { - slug: string - name: string - note: string - }[] - variables: { - slug: string - name: string - note: string - }[] -} diff --git a/packages/schema/package.json b/packages/schema/package.json index 2a5dc5e1..6118fc31 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -4,6 +4,12 @@ "main": "dist/src/index.js", "description": "This package holds the schemas that other applications can use to validate the input data.", "private": true, + "exports": { + ".": { + "types": "./dist/src/index.d.ts", + "default": "./dist/src/index.js" + } + }, "scripts": { "build": "tsc && tsc-alias", "watch": "tsc -w", @@ -13,5 +19,7 @@ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "test": "jest" }, - "dependencies": {} + "dependencies": { + "zod": "^3.23.6" + } } diff --git a/packages/schema/src/api-key.ts b/packages/schema/src/api-key.ts index 8034fc08..0fa14982 100644 --- a/packages/schema/src/api-key.ts +++ b/packages/schema/src/api-key.ts @@ -1,5 +1,5 @@ import z from 'zod' -import { expiresAfterEnum } from './enums' +import { expiresAfterEnum } from '@/enums' export const CreateApiKeySchema = z.object({ name: z.string(), diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index 876aff32..55dd6912 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -1,10 +1,18 @@ +//Export all Schemas and types + +export * from './pagination/pagination' +export * from './pagination/pagination.types' + export * from './api-key' export * from './environment' export * from './integration' export * from './project' export * from './secret' export * from './variable' -export * from './workspace' + +export * from './workspace/workspace' +export * from './workspace/workspace.types' + export * from './workspace-role' export * from './enums' diff --git a/packages/schema/src/integration.ts b/packages/schema/src/integration.ts index f44378f1..b3af0c0e 100644 --- a/packages/schema/src/integration.ts +++ b/packages/schema/src/integration.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { eventTypeEnum, integrationTypeEnum } from './enums' +import { eventTypeEnum, integrationTypeEnum } from '@/enums' export const CreateIntegrationSchema = z.object({ name: z.string(), diff --git a/packages/schema/src/pagination/pagination.ts b/packages/schema/src/pagination/pagination.ts new file mode 100644 index 00000000..797d9485 --- /dev/null +++ b/packages/schema/src/pagination/pagination.ts @@ -0,0 +1,46 @@ +import { z } from 'zod' + +export const PageRequestSchema = z.object({ + page: z.number().optional(), + limit: z.number().optional(), + sort: z.string().optional(), + order: z.string().optional(), + search: z.string().optional() +}) + +export const PageResponseSchema = (itemSchema: z.ZodType) => + z.object({ + items: z.array(itemSchema), + metadata: z.object({ + page: z.number(), + perPage: z.number(), + pageCount: z.number(), + totalCount: z.number(), + links: z.object({ + self: z.string(), + first: z.string(), + previous: z.string().nullable(), + next: z.string().nullable(), + last: z.string() + }) + }) + }) + +export const ResponseErrorSchema = z.object({ + message: z.string(), + error: z.string(), + statusCode: z.number() +}) + +export const ClientResponseSchema = (dataSchema: z.ZodType) => + z + .object({ + success: z.boolean(), + error: ResponseErrorSchema.nullable(), + data: dataSchema.nullable() + }) + .refine((obj) => + obj.success + ? obj.data !== null && obj.error == null + : obj.data == null && obj.error !== null + ) diff --git a/packages/schema/src/pagination/pagination.types.ts b/packages/schema/src/pagination/pagination.types.ts new file mode 100644 index 00000000..1f9514fb --- /dev/null +++ b/packages/schema/src/pagination/pagination.types.ts @@ -0,0 +1,17 @@ +import { z } from 'zod' +import { + ClientResponseSchema, + PageRequestSchema, + PageResponseSchema, + ResponseErrorSchema +} from './pagination' + +export type PageRequest = z.infer + +export type PageResponse = z.infer>> + +export type ResponseError = z.infer + +export type ClientResponse = z.infer< + ReturnType> +> diff --git a/packages/schema/src/project.ts b/packages/schema/src/project.ts index 2710af2b..c53afc9b 100644 --- a/packages/schema/src/project.ts +++ b/packages/schema/src/project.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { projectAccessLevelEnum } from './enums' +import { projectAccessLevelEnum } from '@/enums' import { CreateEnvironmentSchema } from './environment' export const CreateProjectSchema = z.object({ diff --git a/packages/schema/src/secret.ts b/packages/schema/src/secret.ts index c3ad04ce..4c15dfdc 100644 --- a/packages/schema/src/secret.ts +++ b/packages/schema/src/secret.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { rotateAfterEnum } from './enums' +import { rotateAfterEnum } from '@/enums' export const CreateSecretSchema = z.object({ name: z.string(), diff --git a/packages/schema/src/workspace-role.ts b/packages/schema/src/workspace-role.ts index 358dbdc2..fabf873b 100644 --- a/packages/schema/src/workspace-role.ts +++ b/packages/schema/src/workspace-role.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { authorityEnum } from './enums' +import { authorityEnum } from '@/enums' export const CreateWorkspaceRoleSchema = z.object({ name: z.string(), diff --git a/packages/schema/src/workspace.ts b/packages/schema/src/workspace.ts deleted file mode 100644 index 7164eee5..00000000 --- a/packages/schema/src/workspace.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from 'zod' - -export const CreateWorkspaceSchema = z.object({ - name: z.string(), - icon: z.string().optional(), - isDefault: z.boolean().optional() -}) - -export const UpdateWorkspaceSchema = CreateWorkspaceSchema.partial() - -export const InviteMemberSchema = z.object({ - email: z.string(), - roleIds: z.array(z.string()).optional() -}) diff --git a/packages/schema/src/workspace/workspace.ts b/packages/schema/src/workspace/workspace.ts new file mode 100644 index 00000000..d5df2cf6 --- /dev/null +++ b/packages/schema/src/workspace/workspace.ts @@ -0,0 +1,149 @@ +import { z } from 'zod' +import { PageRequestSchema, PageResponseSchema } from '@/pagination/pagination' +import { projectAccessLevelEnum, rotateAfterEnum } from '@/enums' + +export const InviteMemberSchema = z.object({ + email: z.string(), + roleSlugs: z.array(z.string()).optional() +}) + +//Request and Response types +export const WorkspaceSchema = z.object({ + id: z.string(), + name: z.string(), + slug: z.string(), + icon: z.string(), + isFreeTier: z.boolean(), + createdAt: z.string(), + updatedAt: z.string(), + ownerId: z.string(), + isDefault: z.boolean(), + lastUpdatedBy: z.string() +}) + +export const CreateWorkspaceRequestSchema = z.object({ + name: z.string(), + icon: z.string().optional(), + isDefault: z.boolean().optional() +}) + +export const CreateWorkspaceResponseSchema = WorkspaceSchema + +export const UpdateWorkspaceRequestSchema = + CreateWorkspaceRequestSchema.partial().extend({ + workspaceSlug: z.string() + }) + +export const UpdateWorkspaceResponseSchema = WorkspaceSchema + +export const DeleteWorkspaceRequestSchema = z.object({ + workspaceSlug: z.string() +}) + +export const DeleteWorkspaceResponseSchema = z.never() + +export const GetWorkspaceRequestSchema = z.object({ + workspaceSlug: z.string() +}) + +export const GetWorkspaceResponseSchema = WorkspaceSchema + +export const GetAllWorkspacesOfUserRequestSchema = PageRequestSchema + +export const GetAllWorkspacesOfUserResponseSchema = + PageResponseSchema(WorkspaceSchema) + +export const ExportDataRequestSchema = z.object({ + workspaceSlug: z.string() +}) + +export const ExportDataResponseSchema = z.object({ + name: z.string(), + icon: z.string(), + workspaceRoles: z.array( + z.object({ + name: z.string(), + description: z.string(), + colorCode: z.string(), + hasAdminAuthority: z.boolean(), + authorities: z.array(z.string()) + }) + ), + projects: z.array( + z.object({ + name: z.string(), + description: z.string(), + publicKey: z.string(), + privateKey: z.string(), + storePrivateKey: z.boolean(), + accessLevel: projectAccessLevelEnum, + environments: z.array( + z.object({ + name: z.string(), + description: z.string() + }) + ), + secrets: z.array( + z.object({ + name: z.string(), + note: z.string(), + rotateAt: rotateAfterEnum, + versions: z.array( + z.object({ + value: z.string(), + version: z.number() + }) + ) + }) + ), + variables: z.array( + z.object({ + name: z.string(), + note: z.string(), + versions: z.array( + z.object({ + value: z.string(), + version: z.number() + }) + ) + }) + ) + }) + ) +}) + +export const GlobalSearchRequestSchema = z.object({ + workspaceSlug: z.string(), + search: z.string() +}) + +export const GlobalSearchResponseSchema = z.object({ + projects: z.array( + z.object({ + slug: z.string(), + name: z.string(), + description: z.string() + }) + ), + environments: z.array( + z.object({ + slug: z.string(), + name: z.string(), + description: z.string() + }) + ), + secrets: z.array( + z.object({ + slug: z.string(), + name: z.string(), + note: z.string() + }) + ), + variables: z.array( + z.object({ + slug: z.string(), + name: z.string(), + note: z.string() + }) + ) +}) diff --git a/packages/schema/src/workspace/workspace.types.ts b/packages/schema/src/workspace/workspace.types.ts new file mode 100644 index 00000000..71cb4336 --- /dev/null +++ b/packages/schema/src/workspace/workspace.types.ts @@ -0,0 +1,62 @@ +import { z } from 'zod' +import { + WorkspaceSchema, + CreateWorkspaceRequestSchema, + CreateWorkspaceResponseSchema, + UpdateWorkspaceRequestSchema, + UpdateWorkspaceResponseSchema, + DeleteWorkspaceRequestSchema, + DeleteWorkspaceResponseSchema, + GetWorkspaceRequestSchema, + GetWorkspaceResponseSchema, + GetAllWorkspacesOfUserResponseSchema, + ExportDataRequestSchema, + ExportDataResponseSchema, + GlobalSearchRequestSchema, + GlobalSearchResponseSchema +} from './workspace' +import { PageRequestSchema } from '..' + +export type Workspace = z.infer + +export type CreateWorkspaceRequest = z.infer< + typeof CreateWorkspaceRequestSchema +> + +export type CreateWorkspaceResponse = z.infer< + typeof CreateWorkspaceResponseSchema +> + +export type UpdateWorkspaceRequest = z.infer< + typeof UpdateWorkspaceRequestSchema +> + +export type UpdateWorkspaceResponse = z.infer< + typeof UpdateWorkspaceResponseSchema +> + +export type DeleteWorkspaceRequest = z.infer< + typeof DeleteWorkspaceRequestSchema +> + +export type DeleteWorkspaceResponse = z.infer< + typeof DeleteWorkspaceResponseSchema +> + +export type GetWorkspaceRequest = z.infer + +export type GetWorkspaceResponse = z.infer + +export type GetAllWorkspacesOfUserRequest = z.infer + +export type GetAllWorkspacesOfUserResponse = z.infer< + typeof GetAllWorkspacesOfUserResponseSchema +> + +export type ExportDataRequest = z.infer + +export type ExportDataResponse = z.infer + +export type GlobalSearchRequest = z.infer + +export type GlobalSearchResponse = z.infer diff --git a/packages/schema/tests/api-key.spec.ts b/packages/schema/tests/api-key.spec.ts index 91c1f58b..0191d092 100644 --- a/packages/schema/tests/api-key.spec.ts +++ b/packages/schema/tests/api-key.spec.ts @@ -16,13 +16,13 @@ describe('API Key Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should not validate if required values are not specified', () => { const result = CreateApiKeySchema.safeParse({}) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) }) diff --git a/packages/schema/tests/environment.spec.ts b/packages/schema/tests/environment.spec.ts index 75ff31f1..0adbb494 100644 --- a/packages/schema/tests/environment.spec.ts +++ b/packages/schema/tests/environment.spec.ts @@ -15,13 +15,13 @@ describe('Environment Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) it('should not validate if required values are not specified', () => { const result = CreateEnvironmentSchema.safeParse({}) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) }) diff --git a/packages/schema/tests/integration.spec.ts b/packages/schema/tests/integration.spec.ts index 63a63768..9d47730b 100644 --- a/packages/schema/tests/integration.spec.ts +++ b/packages/schema/tests/integration.spec.ts @@ -31,7 +31,7 @@ describe('Integration Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should not validate if required values are not specified', () => { @@ -40,7 +40,7 @@ describe('Integration Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should validate with optional fields omitted', () => { diff --git a/packages/schema/tests/pagination.spec.ts b/packages/schema/tests/pagination.spec.ts new file mode 100644 index 00000000..e206a97a --- /dev/null +++ b/packages/schema/tests/pagination.spec.ts @@ -0,0 +1,194 @@ +import { z } from 'zod' +import { + PageRequestSchema, + PageResponseSchema, + ResponseErrorSchema, + ClientResponseSchema +} from '@/pagination/pagination' + +describe('Pagination Schema Tests', () => { + // Tests for PageRequestSchema + it('should validate a valid PageRequestSchema', () => { + const result = PageRequestSchema.safeParse({ + page: 1, + limit: 10 + }) + + expect(result.success).toBe(true) + }) + + it('should not validate an invalid PageRequestSchema with incorrect types', () => { + const result = PageRequestSchema.safeParse({ + page: 'one' // should be a number + }) + + expect(result.success).toBe(false) + }) + + // Tests for PageResponseSchema + const itemSchema = z.object({ + id: z.string(), + name: z.string() + }) + + it('should validate a valid PageResponseSchema', () => { + const result = PageResponseSchema(itemSchema).safeParse({ + items: [{ id: '123', name: 'Test' }], + metadata: { + page: 1, + perPage: 10, + pageCount: 1, + totalCount: 1, + links: { + self: 'http://example.com/page/1', + first: 'http://example.com/page/1', + previous: null, + next: null, + last: 'http://example.com/page/1' + } + } + }) + + expect(result.success).toBe(true) + }) + + it('should not validate an invalid PageResponseSchema with incorrect items type', () => { + const result = PageResponseSchema(itemSchema).safeParse({ + items: 'not-an-array', // should be an array + metadata: { + page: 1, + perPage: 10, + pageCount: 1, + totalCount: 1, + links: { + self: 'http://example.com/page/1', + first: 'http://example.com/page/1', + previous: null, + next: null, + last: 'http://example.com/page/1' + } + } + }) + + expect(result.success).toBe(false) + }) + + it('should not validate an invalid PageResponseSchema with missing metadata fields', () => { + const result = PageResponseSchema(itemSchema).safeParse({ + items: [{ id: '123', name: 'Test' }], + metadata: { + page: 1, + perPage: 10, + pageCount: 1, + // totalCount is missing + links: { + self: 'http://example.com/page/1', + first: 'http://example.com/page/1', + previous: null, + next: null, + last: 'http://example.com/page/1' + } + } + }) + + expect(result.success).toBe(false) + }) + + // Tests for ResponseErrorSchema + it('should validate a valid ResponseErrorSchema', () => { + const result = ResponseErrorSchema.safeParse({ + message: 'An error occurred', + error: 'ERROR_CODE', + statusCode: 400 + }) + + expect(result.success).toBe(true) + }) + + it('should not validate an invalid ResponseErrorSchema with missing fields', () => { + const result = ResponseErrorSchema.safeParse({ + message: 'An error occurred', + error: 'ERROR_CODE' + }) + + expect(result.success).toBe(false) + }) + + // Tests for ClientResponseSchema + const dataSchema = z.object({ + id: z.string(), + name: z.string() + }) + + it('should validate when success is true and data is present', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: true, + error: null, + data: { id: '123', name: 'Test' } + }) + + expect(result.success).toBe(true) + }) + + it('should validate when success is false and error is present', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: false, + error: { + message: 'An error occurred', + error: 'ERROR_CODE', + statusCode: 400 + }, + data: null + }) + + expect(result.success).toBe(true) + }) + + it('should not validate when success is true and data is null', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: true, + error: null, + data: null + }) + + expect(result.success).toBe(false) + }) + + it('should not validate when success is false and error is null', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: false, + error: null, + data: null + }) + + expect(result.success).toBe(false) + }) + + it('should not validate when success is true and error is present', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: true, + error: { + message: 'An error occurred', + error: 'ERROR_CODE', + statusCode: 400 + }, + data: { id: '123', name: 'Test' } + }) + + expect(result.success).toBe(false) + }) + + it('should not validate when success is false and data is present', () => { + const result = ClientResponseSchema(dataSchema).safeParse({ + success: false, + error: { + message: 'An error occurred', + error: 'ERROR_CODE', + statusCode: 400 + }, + data: { id: '123', name: 'Test' } + }) + + expect(result.success).toBe(false) + }) +}) diff --git a/packages/schema/tests/project.spec.ts b/packages/schema/tests/project.spec.ts index 9b662081..42815628 100644 --- a/packages/schema/tests/project.spec.ts +++ b/packages/schema/tests/project.spec.ts @@ -19,7 +19,7 @@ describe('Project Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should validate if only required fields are specified for CreateProjectSchema', () => { @@ -63,6 +63,6 @@ describe('Project Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) }) diff --git a/packages/schema/tests/secret.spec.ts b/packages/schema/tests/secret.spec.ts index 9dcebed0..e0652523 100644 --- a/packages/schema/tests/secret.spec.ts +++ b/packages/schema/tests/secret.spec.ts @@ -27,7 +27,7 @@ describe('Secret Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should not validate if invalid types are specified for CreateSecretSchema', () => { @@ -37,7 +37,7 @@ describe('Secret Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should validate if optional fields are omitted for CreateSecretSchema', () => { diff --git a/packages/schema/tests/variable.spec.ts b/packages/schema/tests/variable.spec.ts index 059f45f8..feeb23bc 100644 --- a/packages/schema/tests/variable.spec.ts +++ b/packages/schema/tests/variable.spec.ts @@ -25,7 +25,7 @@ describe('Variable Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) it('should not validate if invalid types are specified for CreateVariableSchema', () => { @@ -35,7 +35,7 @@ describe('Variable Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should validate if optional fields are omitted for CreateVariableSchema', () => { diff --git a/packages/schema/tests/workspace-role.spec.ts b/packages/schema/tests/workspace-role.spec.ts index 41eb897a..7a3becce 100644 --- a/packages/schema/tests/workspace-role.spec.ts +++ b/packages/schema/tests/workspace-role.spec.ts @@ -34,7 +34,7 @@ describe('Workspace Role Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) it('should not validate if invalid types are specified for CreateWorkspaceRoleSchema', () => { @@ -44,7 +44,7 @@ describe('Workspace Role Schema Tests', () => { }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) it('should validate if all optional fields are provided for CreateWorkspaceRoleSchema', () => { diff --git a/packages/schema/tests/workspace.spec.ts b/packages/schema/tests/workspace.spec.ts index 561ea431..556552e5 100644 --- a/packages/schema/tests/workspace.spec.ts +++ b/packages/schema/tests/workspace.spec.ts @@ -1,83 +1,451 @@ -import { CreateWorkspaceSchema, InviteMemberSchema } from '@/workspace' +import { + InviteMemberSchema, + CreateWorkspaceRequestSchema, + UpdateWorkspaceRequestSchema, + DeleteWorkspaceRequestSchema, + GetWorkspaceRequestSchema, + ExportDataRequestSchema, + GlobalSearchRequestSchema, + CreateWorkspaceResponseSchema, + UpdateWorkspaceResponseSchema, + DeleteWorkspaceResponseSchema, + GetWorkspaceResponseSchema, + ExportDataResponseSchema, + GetAllWorkspacesOfUserResponseSchema, + GlobalSearchResponseSchema, + GetAllWorkspacesOfUserRequestSchema +} from '@/workspace/workspace' describe('Workspace Schema Tests', () => { - it('should validate if proper input is specified for CreateWorkspaceSchema', () => { - const result = CreateWorkspaceSchema.safeParse({ + it('should validate if proper input is specified for InviteMemberSchema', () => { + const result = InviteMemberSchema.safeParse({ + email: 'test@example.com', + roleSlugs: ['role1', 'role2'] + }) + + expect(result.success).toBe(true) + }) + + it('should validate if only required fields are specified for InviteMemberSchema', () => { + const result = InviteMemberSchema.safeParse({ + email: 'test@example.com' + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if required fields are missing for InviteMemberSchema', () => { + const result = InviteMemberSchema.safeParse({ + roleSlugs: ['role1'] + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(1) + }) + + it('should not validate if invalid types are specified for InviteMemberSchema', () => { + const result = InviteMemberSchema.safeParse({ + email: 123, + roleSlugs: 'invalid_role' + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(2) + }) + + it('should not validate if roleIds are specified instead of roleSlugs for InviteMemberSchema', () => { + const result = InviteMemberSchema.safeParse({ + roleIds: ['role1', 'role2'] //should be roleSlugs + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(1) + }) + + it('should validate if proper input is specified for CreateWorkspaceRequestSchema', () => { + const result = CreateWorkspaceRequestSchema.safeParse({ name: 'Workspace Test', - isDefault: true + icon: 'icon.png' }) expect(result.success).toBe(true) }) - it('should validate if only required fields are specified for CreateWorkspaceSchema', () => { - const result = CreateWorkspaceSchema.safeParse({ + it('should validate if only required fields are specified for CreateWorkspaceRequestSchema', () => { + const result = CreateWorkspaceRequestSchema.safeParse({ name: 'Workspace Test' }) expect(result.success).toBe(true) }) - it('should validate if optional fields are omitted for CreateWorkspaceSchema', () => { - const result = CreateWorkspaceSchema.safeParse({ + it('should validate if optional fields are omitted for CreateWorkspaceRequestSchema', () => { + const result = CreateWorkspaceRequestSchema.safeParse({ name: 'Workspace Test' }) expect(result.success).toBe(true) }) - it('should not validate if required fields are missing for CreateWorkspaceSchema', () => { - const result = CreateWorkspaceSchema.safeParse({ + it('should not validate if required fields are missing for CreateWorkspaceRequestSchema', () => { + const result = CreateWorkspaceRequestSchema.safeParse({ isDefault: true }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(1) }) - it('should not validate if invalid types are specified for CreateWorkspaceSchema', () => { - const result = CreateWorkspaceSchema.safeParse({ + it('should not validate if invalid types are specified for CreateWorkspaceRequestSchema', () => { + const result = CreateWorkspaceRequestSchema.safeParse({ name: 123, isDefault: 'true' }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues).toHaveLength(2) }) - it('should validate if proper input is specified for InviteMemberSchema', () => { - const result = InviteMemberSchema.safeParse({ - email: 'test@example.com', - roleIds: ['role1', 'role2'] + it('should validate with proper input for CreateWorkspaceResponseSchema', () => { + const result = CreateWorkspaceResponseSchema.safeParse({ + id: 'workspace-id', + name: 'Workspace Test', + slug: 'workspace-slug', + icon: 'icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-01T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' }) expect(result.success).toBe(true) }) - it('should validate if only required fields are specified for InviteMemberSchema', () => { - const result = InviteMemberSchema.safeParse({ - email: 'test@example.com' + it('should not validate if required fields are missing for CreateWorkspaceResponseSchema', () => { + const result = CreateWorkspaceResponseSchema.safeParse({ + id: 'workspace-id', + name: 'Workspace Test', + // slug is missing + icon: 'icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-01T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(1) + expect(result.error?.issues[0].path).toEqual(['slug']) + }) + + it('should validate if proper input is specified for UpdateWorkspaceRequestSchema', () => { + const result = UpdateWorkspaceRequestSchema.safeParse({ + name: 'Updated Workspace Test', + icon: 'new-icon.png', + workspaceSlug: 'workspace-slug' }) expect(result.success).toBe(true) }) - it('should not validate if required fields are missing for InviteMemberSchema', () => { - const result = InviteMemberSchema.safeParse({ - roleIds: ['role1'] + it('should validate if only required fields are specified for UpdateWorkspaceRequestSchema', () => { + const result = UpdateWorkspaceRequestSchema.safeParse({ + workspaceSlug: 'workspace-slug' + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if invalid types are provided for UpdateWorkspaceRequestSchema', () => { + const result = UpdateWorkspaceRequestSchema.safeParse({ + name: 123 // should be a string }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(1) + expect(result.error?.issues).toHaveLength(2) + expect(result.error?.issues[0].path).toEqual(['name']) + expect(result.error?.issues[1].path).toEqual(['workspaceSlug']) }) - it('should not validate if invalid types are specified for InviteMemberSchema', () => { - const result = InviteMemberSchema.safeParse({ - email: 123, - roleIds: 'invalid_role' + it('should validate with proper input for UpdateWorkspaceResponseSchema', () => { + const result = UpdateWorkspaceResponseSchema.safeParse({ + id: 'workspace-id', + name: 'Updated Workspace', + slug: 'workspace-slug', + icon: 'new-icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-02T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if required fields are missing for UpdateWorkspaceResponseSchema', () => { + const result = UpdateWorkspaceResponseSchema.safeParse({ + id: 'workspace-id', + name: 'Updated Workspace', + // slug is missing + icon: 'new-icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-02T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(1) + expect(result.error?.issues[0].path).toEqual(['slug']) + }) + + it('should validate if proper input is specified for DeleteWorkspaceRequestSchema', () => { + const result = DeleteWorkspaceRequestSchema.safeParse({ + workspaceSlug: 'workspace-slug' + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if unexpected fields are provided for DeleteWorkspaceResponseSchema', () => { + const result = DeleteWorkspaceResponseSchema.safeParse({ + unexpectedField: 'value' + }) + + expect(result.success).toBe(false) + expect(result.error?.issues).toHaveLength(1) + }) + + it('should validate if proper input is specified for GetWorkspaceRequestSchema', () => { + const result = GetWorkspaceRequestSchema.safeParse({ + workspaceSlug: 'workspace-slug' + }) + + expect(result.success).toBe(true) + }) + + it('should validate with proper input for GetWorkspaceResponseSchema', () => { + const result = GetWorkspaceResponseSchema.safeParse({ + id: 'workspace-id', + name: 'Workspace Test', + slug: 'workspace-slug', + icon: 'icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-01T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' + }) + + expect(result.success).toBe(true) + }) + + it('should validate when correct page and limit are provided for GetAllWorkspacesOfUserRequestSchema', () => { + const result = GetAllWorkspacesOfUserRequestSchema.safeParse({ + page: 1, + limit: 10 + }) + + expect(result.success).toBe(true) + }) + + it('should validate with proper input for GetAllWorkspacesOfUserResponseSchema', () => { + const result = GetAllWorkspacesOfUserResponseSchema.safeParse({ + items: [ + { + id: 'workspace-id', + name: 'Workspace Test', + slug: 'workspace-slug', + icon: 'icon.png', + isFreeTier: true, + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2024-10-01T00:00:00Z', + ownerId: 'owner-id', + isDefault: false, + lastUpdatedBy: 'user-id' + } + ], + metadata: { + page: 1, + perPage: 10, + pageCount: 1, + totalCount: 1, + links: { + self: 'http://example.com/page/1', + first: 'http://example.com/page/1', + previous: null, + next: null, + last: 'http://example.com/page/1' + } + } + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if items are not an array in GetAllWorkspacesOfUserResponseSchema', () => { + const result = GetAllWorkspacesOfUserResponseSchema.safeParse({ + items: 'not-an-array', + total: 1, + page: 1, + limit: 10 + }) + + expect(result.success).toBe(false) + expect(result.error?.issues[0].path).toEqual(['items']) + }) + + it('should validate if proper input is specified for ExportDataRequestSchema', () => { + const result = ExportDataRequestSchema.safeParse({ + workspaceSlug: 'workspace-slug' + }) + + expect(result.success).toBe(true) + }) + + it('should validate with proper input for ExportDataResponseSchema', () => { + const result = ExportDataResponseSchema.safeParse({ + name: 'Workspace Test', + icon: 'icon.png', + workspaceRoles: [ + { + name: 'Admin', + description: 'Administrator role', + colorCode: '#FF0000', + hasAdminAuthority: true, + authorities: ['ALL'] + } + ], + projects: [ + { + name: 'Project A', + description: 'Description of Project A', + publicKey: 'public-key', + privateKey: 'private-key', + storePrivateKey: true, + accessLevel: 'GLOBAL', + environments: [ + { + name: 'Development', + description: 'Development Environment' + } + ], + secrets: [ + { + name: 'API_KEY', + note: 'API Key for external service', + rotateAt: '720', + versions: [ + { + value: 'secret-value', + version: 1 + } + ] + } + ], + variables: [ + { + name: 'ENV_VAR', + note: 'Environment Variable', + versions: [ + { + value: 'variable-value', + version: 1 + } + ] + } + ] + } + ] + }) + + expect(result.success).toBe(true) + }) + + it('should not validate if required fields are missing in ExportDataResponseSchema', () => { + const result = ExportDataResponseSchema.safeParse({ + // name is missing + icon: 'icon.png', + workspaceRoles: [], + projects: [] + }) + + expect(result.success).toBe(false) + expect(result.error?.issues[0].path).toEqual(['name']) + }) + + it('should validate if proper input is specified for GlobalSearchRequestSchema', () => { + const result = GlobalSearchRequestSchema.safeParse({ + workspaceSlug: 'workspace-slug', + search: 'search-term' + }) + + expect(result.success).toBe(true) + }) + + it('should validate with proper input for GlobalSearchResponseSchema', () => { + const result = GlobalSearchResponseSchema.safeParse({ + projects: [ + { + slug: 'project-slug', + name: 'Project Name', + description: 'Project Description' + } + ], + environments: [ + { + slug: 'environment-slug', + name: 'Environment Name', + description: 'Environment Description' + } + ], + secrets: [ + { + slug: 'secret-slug', + name: 'Secret Name', + note: 'Secret Note' + } + ], + variables: [ + { + slug: 'variable-slug', + name: 'Variable Name', + note: 'Variable Note' + } + ] + }) + + expect(result.success).toBe(true) + }) + + it('should not validate when required fields are missing for GlobalSearchResponseSchema', () => { + const result = GlobalSearchResponseSchema.safeParse({ + projects: [ + { + slug: 'project-slug', + name: 'Project Name' + // description is missing + } + ], + environments: [], + secrets: [], + variables: [] }) expect(result.success).toBe(false) - expect(result.error.issues).toHaveLength(2) + expect(result.error?.issues[0]?.path).toEqual([ + 'projects', + 0, + 'description' + ]) }) }) diff --git a/packages/schema/tsconfig.json b/packages/schema/tsconfig.json index 139d8bf4..43cc6568 100644 --- a/packages/schema/tsconfig.json +++ b/packages/schema/tsconfig.json @@ -6,7 +6,8 @@ "@/*": ["./src/*"] }, "outDir": "dist", - "plugins": [{ "transform": "typescript-transform-paths" }] + "plugins": [{ "transform": "typescript-transform-paths" }], + "strictNullChecks": true }, "tsc-alias": { "resolveFullPaths": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eeb528a6..de14d3eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: version: 2.5.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2) tsc-alias: specifier: ^1.8.10 version: 1.8.10 @@ -83,7 +83,7 @@ importers: version: 2.36.1 '@sentry/webpack-plugin': specifier: ^2.14.2 - version: 2.22.4(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + version: 2.22.4(webpack@5.94.0(@swc/core@1.7.26)) '@types/jest': specifier: ^29.5.2 version: 29.5.13 @@ -113,7 +113,7 @@ importers: version: 9.1.6 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) prettier: specifier: ^3.0.0 version: 3.3.3 @@ -122,7 +122,7 @@ importers: version: 0.5.14(prettier@3.3.3) ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.6.2) tsconfig: specifier: workspace:* version: link:packages/tsconfig @@ -219,7 +219,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.0.0 - version: 10.4.5(@swc/cli@0.4.0(@swc/core@1.7.26(@swc/helpers@0.5.2))(chokidar@3.6.0))(@swc/core@1.7.26(@swc/helpers@0.5.2)) + version: 10.4.5(@swc/cli@0.4.0(@swc/core@1.7.26)(chokidar@3.6.0))(@swc/core@1.7.26) '@nestjs/schematics': specifier: ^10.0.0 version: 10.1.4(chokidar@3.6.0)(typescript@5.3.3) @@ -255,10 +255,10 @@ importers: version: 7.4.2 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) jest-mock-extended: specifier: ^3.0.5 - version: 3.0.7(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.3.3) + version: 3.0.7(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)))(typescript@5.3.3) prettier: specifier: ^3.0.0 version: 3.3.3 @@ -276,10 +276,10 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.3.3) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)))(typescript@5.3.3) ts-loader: specifier: ^9.4.3 - version: 9.5.1(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + version: 9.5.1(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26)) apps/cli: dependencies: @@ -349,7 +349,7 @@ importers: version: 43.0.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint-plugin-n@16.6.2(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.6.2) tsup: specifier: ^8.1.2 - version: 8.2.4(@swc/core@1.7.26(@swc/helpers@0.5.2))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1) + version: 8.2.4(@swc/core@1.7.26)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1) apps/platform: dependencies: @@ -460,7 +460,7 @@ importers: version: 2.5.2 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2))) + version: 1.0.7(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2))) zod: specifier: ^3.23.8 version: 3.23.8 @@ -473,7 +473,7 @@ importers: version: 8.1.0(typescript@5.6.2) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2))) + version: 0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2))) '@types/dayjs-precise-range': specifier: ^1.0.5 version: 1.0.5 @@ -497,7 +497,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + version: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig @@ -506,13 +506,13 @@ importers: dependencies: '@mdx-js/loader': specifier: ^3.0.1 - version: 3.0.1(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + version: 3.0.1(webpack@5.94.0(@swc/core@1.7.26)) '@mdx-js/react': specifier: ^3.0.1 version: 3.0.1(@types/react@18.3.6)(react@18.3.1) '@next/mdx': specifier: ^14.2.3 - version: 14.2.11(@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))))(@mdx-js/react@3.0.1(@types/react@18.3.6)(react@18.3.1)) + version: 14.2.11(@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26)))(@mdx-js/react@3.0.1(@types/react@18.3.6)(react@18.3.1)) '@tsparticles/engine': specifier: ^3.3.0 version: 3.5.0 @@ -564,7 +564,7 @@ importers: version: 8.1.0(typescript@5.6.2) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2))) + version: 0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2))) '@types/react': specifier: ^18.0.22 version: 18.3.6 @@ -582,18 +582,22 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + version: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig - packages/api-client: {} + packages/api-client: + dependencies: + '@keyshade/schema': + specifier: workspace:* + version: link:../schema packages/eslint-config-custom: devDependencies: '@vercel/style-guide': specifier: ^5.0.0 - version: 5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(prettier@3.3.3)(typescript@4.9.5) + version: 5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(prettier@3.3.3)(typescript@4.9.5) eslint-config-turbo: specifier: ^1.10.12 version: 1.13.4(eslint@8.57.1) @@ -601,7 +605,11 @@ importers: specifier: ^4.5.3 version: 4.9.5 - packages/schema: {} + packages/schema: + dependencies: + zod: + specifier: ^3.23.6 + version: 3.23.8 packages/secret-scan: dependencies: @@ -626,10 +634,10 @@ importers: version: 43.0.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint-plugin-n@16.6.2(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.6.2) jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) tsup: specifier: ^8.1.2 - version: 8.2.4(@swc/core@1.7.26(@swc/helpers@0.5.2))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1) + version: 8.2.4(@swc/core@1.7.26)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -9187,7 +9195,7 @@ snapshots: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9253,7 +9261,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -10008,7 +10016,7 @@ snapshots: '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.6 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10126,7 +10134,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -10192,7 +10200,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10304,7 +10312,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -10318,7 +10326,42 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.16.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -10490,11 +10533,11 @@ snapshots: '@lukeed/csprng@1.1.0': {} - '@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)))': + '@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26))': dependencies: '@mdx-js/mdx': 3.0.1 source-map: 0.7.4 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) transitivePeerDependencies: - supports-color @@ -10554,7 +10597,7 @@ snapshots: got: 11.8.6 os-filter-obj: 2.0.0 - '@nestjs/cli@10.4.5(@swc/cli@0.4.0(@swc/core@1.7.26(@swc/helpers@0.5.2))(chokidar@3.6.0))(@swc/core@1.7.26(@swc/helpers@0.5.2))': + '@nestjs/cli@10.4.5(@swc/cli@0.4.0(@swc/core@1.7.26)(chokidar@3.6.0))(@swc/core@1.7.26)': dependencies: '@angular-devkit/core': 17.3.8(chokidar@3.6.0) '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) @@ -10564,7 +10607,7 @@ snapshots: chokidar: 3.6.0 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26)) glob: 10.4.2 inquirer: 8.2.6 node-emoji: 1.11.0 @@ -10573,7 +10616,7 @@ snapshots: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.3.3 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) webpack-node-externals: 3.0.0 optionalDependencies: '@swc/cli': 0.4.0(@swc/core@1.7.26(@swc/helpers@0.5.2))(chokidar@3.6.0) @@ -10739,11 +10782,11 @@ snapshots: dependencies: glob: 7.1.7 - '@next/mdx@14.2.11(@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))))(@mdx-js/react@3.0.1(@types/react@18.3.6)(react@18.3.1))': + '@next/mdx@14.2.11(@mdx-js/loader@3.0.1(webpack@5.94.0(@swc/core@1.7.26)))(@mdx-js/react@3.0.1(@types/react@18.3.6)(react@18.3.1))': dependencies: source-map: 0.7.4 optionalDependencies: - '@mdx-js/loader': 3.0.1(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + '@mdx-js/loader': 3.0.1(webpack@5.94.0(@swc/core@1.7.26)) '@mdx-js/react': 3.0.1(@types/react@18.3.6)(react@18.3.1) '@next/swc-darwin-arm64@13.5.6': @@ -11612,7 +11655,7 @@ snapshots: conventional-changelog-angular: 7.0.0 conventional-commits-filter: 4.0.0 conventional-commits-parser: 5.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.8 @@ -11626,7 +11669,7 @@ snapshots: conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.8 @@ -11642,7 +11685,7 @@ snapshots: dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) dir-glob: 3.0.1 execa: 5.1.1 lodash: 4.17.21 @@ -11660,7 +11703,7 @@ snapshots: '@octokit/plugin-throttling': 9.3.1(@octokit/core@6.1.2) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) dir-glob: 3.0.1 globby: 14.0.2 http-proxy-agent: 7.0.2 @@ -11697,7 +11740,7 @@ snapshots: conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) get-stream: 7.0.1 import-from-esm: 1.3.4 into-stream: 7.0.0 @@ -11800,12 +11843,12 @@ snapshots: dependencies: '@sentry/types': 7.119.0 - '@sentry/webpack-plugin@2.22.4(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)))': + '@sentry/webpack-plugin@2.22.4(webpack@5.94.0(@swc/core@1.7.26))': dependencies: '@sentry/bundler-plugin-core': 2.22.4 unplugin: 1.0.1 uuid: 9.0.1 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) transitivePeerDependencies: - encoding - supports-color @@ -11830,7 +11873,7 @@ snapshots: '@socket.io/redis-adapter@8.3.0(socket.io-adapter@2.5.5)': dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) notepack.io: 3.0.1 socket.io-adapter: 2.5.5 uid2: 1.0.0 @@ -12048,10 +12091,10 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/forms@0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))': + '@tailwindcss/forms@0.5.9(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + tailwindcss: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -12473,7 +12516,7 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -12493,7 +12536,7 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -12511,7 +12554,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: typescript: 4.9.5 @@ -12524,7 +12567,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: typescript: 5.6.2 @@ -12545,7 +12588,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5) - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 ts-api-utils: 1.3.0(typescript@4.9.5) optionalDependencies: @@ -12557,7 +12600,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -12573,7 +12616,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -12587,7 +12630,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -12602,7 +12645,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -12668,7 +12711,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/style-guide@5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(prettier@3.3.3)(typescript@4.9.5)': + '@vercel/style-guide@5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(prettier@3.3.3)(typescript@4.9.5)': dependencies: '@babel/core': 7.25.2 '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@8.57.1) @@ -12679,10 +12722,10 @@ snapshots: eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)) eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5))(eslint@8.57.1) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5))(eslint@8.57.1) eslint-plugin-react: 7.36.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) eslint-plugin-testing-library: 6.3.0(eslint@8.57.1)(typescript@4.9.5) @@ -12818,13 +12861,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13657,13 +13700,28 @@ snapshots: sha.js: 2.4.11 optional: true - create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -13757,10 +13815,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.7: - dependencies: - ms: 2.1.3 - debug@4.3.7(supports-color@5.5.0): dependencies: ms: 2.1.3 @@ -13986,7 +14040,7 @@ snapshots: engine.io-client@6.5.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) engine.io-parser: 5.2.3 ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 @@ -14006,7 +14060,7 @@ snapshots: base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) engine.io-parser: 5.2.3 ws: 8.17.1 transitivePeerDependencies: @@ -14222,7 +14276,7 @@ snapshots: eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)): dependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -14235,16 +14289,16 @@ snapshots: eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -14262,16 +14316,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-plugin-import@2.30.0)(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 @@ -14301,7 +14345,7 @@ snapshots: eslint: 8.57.1 ignore: 5.3.2 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14357,13 +14401,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) transitivePeerDependencies: - supports-color - typescript @@ -14413,11 +14457,11 @@ snapshots: resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5))(eslint@8.57.1): + eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5))(eslint@8.57.1): dependencies: eslint: 8.57.1 optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@4.9.5) eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3): dependencies: @@ -14528,7 +14572,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -14922,7 +14966,7 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26)): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -14937,7 +14981,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) form-data@4.0.0: dependencies: @@ -15330,7 +15374,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -15342,14 +15386,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -15380,7 +15424,7 @@ snapshots: import-from-esm@1.3.4: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color @@ -15675,7 +15719,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -15749,16 +15793,35 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -15768,7 +15831,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 @@ -15794,7 +15857,38 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.16.5 - ts-node: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): + dependencies: + '@babel/core': 7.25.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.16.5 + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -15869,9 +15963,9 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.3.3): + jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)))(typescript@5.3.3): dependencies: - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) ts-essentials: 10.0.2(typescript@5.3.3) typescript: 5.3.3 @@ -16026,12 +16120,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -16618,7 +16724,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -17256,13 +17362,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): dependencies: lilconfig: 3.1.2 yaml: 2.5.1 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2) postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1): dependencies: @@ -17786,7 +17892,7 @@ snapshots: '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.1.1(typescript@5.6.2)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.6.2) - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) env-ci: 11.1.0 execa: 9.3.1 figures: 6.1.0 @@ -17967,7 +18073,7 @@ snapshots: socket.io-adapter@2.5.5: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) ws: 8.17.1 transitivePeerDependencies: - bufferutil @@ -17977,7 +18083,7 @@ snapshots: socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) engine.io-client: 6.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -17988,7 +18094,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -17997,7 +18103,7 @@ snapshots: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) engine.io: 6.5.5 socket.io-adapter: 2.5.5 socket.io-parser: 4.2.4 @@ -18254,7 +18360,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 @@ -18314,11 +18420,11 @@ snapshots: tailwind-merge@2.5.2: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2))): dependencies: - tailwindcss: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + tailwindcss: 3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) - tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)): + tailwindcss@3.4.11(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -18337,7 +18443,7 @@ snapshots: postcss: 8.4.47 postcss-import: 15.1.0(postcss@8.4.47) postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -18356,14 +18462,14 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.2))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))): + terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(webpack@5.94.0(@swc/core@1.7.26)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.32.0 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.2) @@ -18466,12 +18572,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.3.3): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)))(typescript@5.3.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18485,12 +18591,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18504,7 +18610,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - ts-loader@9.5.1(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))): + ts-loader@9.5.1(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.26)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -18512,9 +18618,30 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.3.3 - webpack: 5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)) + webpack: 5.94.0(@swc/core@1.7.26) + + ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.3.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.16.5 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.26(@swc/helpers@0.5.2) + optional: true - ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.2))(@types/node@20.16.5)(typescript@5.6.2): + ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.16.5)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -18566,13 +18693,13 @@ snapshots: tslib@2.7.0: {} - tsup@8.2.4(@swc/core@1.7.26(@swc/helpers@0.5.2))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1): + tsup@8.2.4(@swc/core@1.7.26)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.1): dependencies: bundle-require: 5.0.0(esbuild@0.23.1) cac: 6.7.14 chokidar: 3.6.0 consola: 3.2.3 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) esbuild: 0.23.1 execa: 5.1.1 globby: 11.1.0 @@ -18909,7 +19036,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2)): + webpack@5.94.0(@swc/core@1.7.26): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -18931,7 +19058,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.26(@swc/helpers@0.5.2))(webpack@5.94.0(@swc/core@1.7.26(@swc/helpers@0.5.2))) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(webpack@5.94.0(@swc/core@1.7.26)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: