From 4c13176c52fd010b2037b871fc6289cf0e0299cd Mon Sep 17 00:00:00 2001 From: Catalin Pit <25515812+catalinpit@users.noreply.github.com> Date: Mon, 2 Sep 2024 14:16:48 +0300 Subject: [PATCH 1/4] feat: update createFields api endpoint (#1311) Allow users to add 1 or more fields to a document via the /document//fields API Endpoint. --- packages/api/v1/contract.ts | 3 +- packages/api/v1/implementation.ts | 224 ++++++++++++------ packages/api/v1/schema.ts | 31 ++- .../lib/server-only/field/create-field.ts | 35 ++- .../lib/server-only/field/update-field.ts | 4 + 5 files changed, 200 insertions(+), 97 deletions(-) diff --git a/packages/api/v1/contract.ts b/packages/api/v1/contract.ts index e8efeffe68..d6f8000a41 100644 --- a/packages/api/v1/contract.ts +++ b/packages/api/v1/contract.ts @@ -21,6 +21,7 @@ import { ZSendDocumentForSigningMutationSchema, ZSuccessfulDeleteTemplateResponseSchema, ZSuccessfulDocumentResponseSchema, + ZSuccessfulFieldCreationResponseSchema, ZSuccessfulFieldResponseSchema, ZSuccessfulGetDocumentResponseSchema, ZSuccessfulGetTemplateResponseSchema, @@ -236,7 +237,7 @@ export const ApiContractV1 = c.router( path: '/api/v1/documents/:id/fields', body: ZCreateFieldMutationSchema, responses: { - 200: ZSuccessfulFieldResponseSchema, + 200: ZSuccessfulFieldCreationResponseSchema, 400: ZUnsuccessfulResponseSchema, 401: ZUnsuccessfulResponseSchema, 404: ZUnsuccessfulResponseSchema, diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts index ad9aaaac45..bec720812f 100644 --- a/packages/api/v1/implementation.ts +++ b/packages/api/v1/implementation.ts @@ -1,4 +1,5 @@ import { createNextRoute } from '@ts-rest/next'; +import { match } from 'ts-pattern'; import { getServerLimits } from '@documenso/ee/server-only/limits/server'; import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; @@ -15,7 +16,6 @@ import { getDocumentById } from '@documenso/lib/server-only/document/get-documen import { resendDocument } from '@documenso/lib/server-only/document/resend-document'; import { sendDocument } from '@documenso/lib/server-only/document/send-document'; import { updateDocument } from '@documenso/lib/server-only/document/update-document'; -import { createField } from '@documenso/lib/server-only/field/create-field'; import { deleteField } from '@documenso/lib/server-only/field/delete-field'; import { getFieldById } from '@documenso/lib/server-only/field/get-field-by-id'; import { updateField } from '@documenso/lib/server-only/field/update-field'; @@ -32,6 +32,13 @@ import { deleteTemplate } from '@documenso/lib/server-only/template/delete-templ import { findTemplates } from '@documenso/lib/server-only/template/find-templates'; import { getTemplateById } from '@documenso/lib/server-only/template/get-template-by-id'; import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta'; +import { + ZCheckboxFieldMeta, + ZDropdownFieldMeta, + ZNumberFieldMeta, + ZRadioFieldMeta, + ZTextFieldMeta, +} from '@documenso/lib/types/field-meta'; import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; import { getFile } from '@documenso/lib/universal/upload/get-file'; import { putPdfFile } from '@documenso/lib/universal/upload/put-file'; @@ -39,6 +46,8 @@ import { getPresignGetUrl, getPresignPostUrl, } from '@documenso/lib/universal/upload/server-actions'; +import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs'; +import { prisma } from '@documenso/prisma'; import { DocumentDataType, DocumentStatus, SigningStatus } from '@documenso/prisma/client'; import { ApiContractV1 } from './contract'; @@ -870,100 +879,167 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { createField: authenticatedMiddleware(async (args, user, team) => { const { id: documentId } = args.params; - const { recipientId, type, pageNumber, pageWidth, pageHeight, pageX, pageY, fieldMeta } = - args.body; + const fields = Array.isArray(args.body) ? args.body : [args.body]; - if (pageNumber <= 0) { - return { - status: 400, - body: { - message: 'Invalid page number', - }, - }; - } - - const document = await getDocumentById({ - id: Number(documentId), - userId: user.id, - teamId: team?.id, + const document = await prisma.document.findFirst({ + select: { id: true, status: true }, + where: { + id: Number(documentId), + ...(team?.id + ? { + team: { + id: team.id, + members: { some: { userId: user.id } }, + }, + } + : { + userId: user.id, + teamId: null, + }), + }, }); if (!document) { return { status: 404, - body: { - message: 'Document not found', - }, + body: { message: 'Document not found' }, }; } if (document.status === DocumentStatus.COMPLETED) { return { status: 400, - body: { - message: 'Document is already completed', - }, - }; - } - - const recipient = await getRecipientById({ - id: Number(recipientId), - documentId: Number(documentId), - }).catch(() => null); - - if (!recipient) { - return { - status: 404, - body: { - message: 'Recipient not found', - }, - }; - } - - if (recipient.signingStatus === SigningStatus.SIGNED) { - return { - status: 400, - body: { - message: 'Recipient has already signed the document', - }, + body: { message: 'Document is already completed' }, }; } try { - const field = await createField({ - documentId: Number(documentId), - recipientId: Number(recipientId), - userId: user.id, - teamId: team?.id, - type, - pageNumber, - pageX, - pageY, - pageWidth, - pageHeight, - fieldMeta, - requestMetadata: extractNextApiRequestMetadata(args.req), + const createdFields = await prisma.$transaction(async (tx) => { + return Promise.all( + fields.map(async (fieldData) => { + const { + recipientId, + type, + pageNumber, + pageWidth, + pageHeight, + pageX, + pageY, + fieldMeta, + } = fieldData; + + if (pageNumber <= 0) { + throw new Error('Invalid page number'); + } + + const recipient = await getRecipientById({ + id: Number(recipientId), + documentId: Number(documentId), + }).catch(() => null); + + if (!recipient) { + throw new Error('Recipient not found'); + } + + if (recipient.signingStatus === SigningStatus.SIGNED) { + throw new Error('Recipient has already signed the document'); + } + + const advancedField = ['NUMBER', 'RADIO', 'CHECKBOX', 'DROPDOWN', 'TEXT'].includes( + type, + ); + + if (advancedField && !fieldMeta) { + throw new Error( + 'Field meta is required for this type of field. Please provide the appropriate field meta object.', + ); + } + + if (fieldMeta && fieldMeta.type.toLowerCase() !== String(type).toLowerCase()) { + throw new Error('Field meta type does not match the field type'); + } + + const result = match(type) + .with('RADIO', () => ZRadioFieldMeta.safeParse(fieldMeta)) + .with('CHECKBOX', () => ZCheckboxFieldMeta.safeParse(fieldMeta)) + .with('DROPDOWN', () => ZDropdownFieldMeta.safeParse(fieldMeta)) + .with('NUMBER', () => ZNumberFieldMeta.safeParse(fieldMeta)) + .with('TEXT', () => ZTextFieldMeta.safeParse(fieldMeta)) + .with('SIGNATURE', 'INITIALS', 'DATE', 'EMAIL', 'NAME', () => ({ + success: true, + data: {}, + })) + .with('FREE_SIGNATURE', () => ({ + success: false, + error: 'FREE_SIGNATURE is not supported', + data: {}, + })) + .exhaustive(); + + if (!result.success) { + throw new Error('Field meta parsing failed'); + } + + const field = await tx.field.create({ + data: { + documentId: Number(documentId), + recipientId: Number(recipientId), + type, + page: pageNumber, + positionX: pageX, + positionY: pageY, + width: pageWidth, + height: pageHeight, + customText: '', + inserted: false, + fieldMeta: result.data, + }, + include: { + Recipient: true, + }, + }); + + await tx.documentAuditLog.create({ + data: createDocumentAuditLogData({ + type: 'FIELD_CREATED', + documentId: Number(documentId), + user: { + id: team?.id ?? user.id, + email: team?.name ?? user.email, + name: team ? '' : user.name, + }, + data: { + fieldId: field.secondaryId, + fieldRecipientEmail: field.Recipient?.email ?? '', + fieldRecipientId: recipientId, + fieldType: field.type, + }, + requestMetadata: extractNextApiRequestMetadata(args.req), + }), + }); + + return { + id: field.id, + documentId: Number(field.documentId), + recipientId: field.recipientId ?? -1, + type: field.type, + pageNumber: field.page, + pageX: Number(field.positionX), + pageY: Number(field.positionY), + pageWidth: Number(field.width), + pageHeight: Number(field.height), + customText: field.customText, + fieldMeta: ZFieldMetaSchema.parse(field.fieldMeta), + inserted: field.inserted, + }; + }), + ); }); - const remappedField = { - id: field.id, - documentId: field.documentId, - recipientId: field.recipientId ?? -1, - type: field.type, - pageNumber: field.page, - pageX: Number(field.positionX), - pageY: Number(field.positionY), - pageWidth: Number(field.width), - pageHeight: Number(field.height), - customText: field.customText, - fieldMeta: ZFieldMetaSchema.parse(field.fieldMeta), - inserted: field.inserted, - }; - return { status: 200, body: { - ...remappedField, + fields: createdFields, documentId: Number(documentId), }, }; diff --git a/packages/api/v1/schema.ts b/packages/api/v1/schema.ts index 42205d5403..1800b53dc6 100644 --- a/packages/api/v1/schema.ts +++ b/packages/api/v1/schema.ts @@ -293,7 +293,7 @@ export type TSuccessfulRecipientResponseSchema = z.infer; -export const ZUpdateFieldMutationSchema = ZCreateFieldMutationSchema.partial(); +export const ZUpdateFieldMutationSchema = ZCreateFieldSchema.partial(); export type TUpdateFieldMutationSchema = z.infer; @@ -314,6 +319,26 @@ export const ZDeleteFieldMutationSchema = null; export type TDeleteFieldMutationSchema = typeof ZDeleteFieldMutationSchema; +const ZSuccessfulFieldSchema = z.object({ + id: z.number(), + documentId: z.number(), + recipientId: z.number(), + type: z.nativeEnum(FieldType), + pageNumber: z.number(), + pageX: z.number(), + pageY: z.number(), + pageWidth: z.number(), + pageHeight: z.number(), + customText: z.string(), + fieldMeta: ZFieldMetaSchema, + inserted: z.boolean(), +}); + +export const ZSuccessfulFieldCreationResponseSchema = z.object({ + fields: z.union([ZSuccessfulFieldSchema, z.array(ZSuccessfulFieldSchema)]), + documentId: z.number(), +}); + export const ZSuccessfulFieldResponseSchema = z.object({ id: z.number(), documentId: z.number(), diff --git a/packages/lib/server-only/field/create-field.ts b/packages/lib/server-only/field/create-field.ts index 9aafc7ab85..da1a26276d 100644 --- a/packages/lib/server-only/field/create-field.ts +++ b/packages/lib/server-only/field/create-field.ts @@ -110,24 +110,21 @@ export const createField = async ({ } const result = match(type) - .with('RADIO', () => { - return ZRadioFieldMeta.safeParse(fieldMeta); - }) - .with('CHECKBOX', () => { - return ZCheckboxFieldMeta.safeParse(fieldMeta); - }) - .with('DROPDOWN', () => { - return ZDropdownFieldMeta.safeParse(fieldMeta); - }) - .with('NUMBER', () => { - return ZNumberFieldMeta.safeParse(fieldMeta); - }) - .with('TEXT', () => { - return ZTextFieldMeta.safeParse(fieldMeta); - }) - .otherwise(() => { - return { success: false, data: {} }; - }); + .with('RADIO', () => ZRadioFieldMeta.safeParse(fieldMeta)) + .with('CHECKBOX', () => ZCheckboxFieldMeta.safeParse(fieldMeta)) + .with('DROPDOWN', () => ZDropdownFieldMeta.safeParse(fieldMeta)) + .with('NUMBER', () => ZNumberFieldMeta.safeParse(fieldMeta)) + .with('TEXT', () => ZTextFieldMeta.safeParse(fieldMeta)) + .with('SIGNATURE', 'INITIALS', 'DATE', 'EMAIL', 'NAME', () => ({ + success: true, + data: {}, + })) + .with('FREE_SIGNATURE', () => ({ + success: false, + error: 'FREE_SIGNATURE is not supported', + data: {}, + })) + .exhaustive(); if (!result.success) { throw new Error('Field meta parsing failed'); @@ -145,7 +142,7 @@ export const createField = async ({ height: pageHeight, customText: '', inserted: false, - fieldMeta: advancedField ? result.data : undefined, + fieldMeta: result.data, }, include: { Recipient: true, diff --git a/packages/lib/server-only/field/update-field.ts b/packages/lib/server-only/field/update-field.ts index a8e84d043c..5fc415b4bd 100644 --- a/packages/lib/server-only/field/update-field.ts +++ b/packages/lib/server-only/field/update-field.ts @@ -37,6 +37,10 @@ export const updateField = async ({ requestMetadata, fieldMeta, }: UpdateFieldOptions) => { + if (type === 'FREE_SIGNATURE') { + throw new Error('Cannot update a FREE_SIGNATURE field'); + } + const oldField = await prisma.field.findFirstOrThrow({ where: { id: fieldId, From 5f4972d63b547657016925cd8155f15c3b310342 Mon Sep 17 00:00:00 2001 From: Mythie Date: Tue, 3 Sep 2024 09:27:51 +1000 Subject: [PATCH 2/4] v1.7.0-rc.3 --- apps/marketing/package.json | 2 +- apps/web/package.json | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/marketing/package.json b/apps/marketing/package.json index 3b122d0f4e..e175f293e1 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/marketing", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/apps/web/package.json b/apps/web/package.json index 47d7ceda62..fea1881fab 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/web", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/package-lock.json b/package-lock.json index f0029d294d..2a8585c65a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@documenso/root", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@documenso/root", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "workspaces": [ "apps/*", "packages/*" @@ -81,7 +81,7 @@ }, "apps/marketing": { "name": "@documenso/marketing", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "license": "AGPL-3.0", "dependencies": { "@documenso/assets": "*", @@ -424,7 +424,7 @@ }, "apps/web": { "name": "@documenso/web", - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "license": "AGPL-3.0", "dependencies": { "@documenso/api": "*", diff --git a/package.json b/package.json index 3c7fa4c87d..32072a0d6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.7.0-rc.2", + "version": "1.7.0-rc.3", "scripts": { "build": "turbo run build", "build:web": "turbo run build --filter=@documenso/web", From fd7c1fea1ca21b30f49036907003fd84e5461697 Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Tue, 3 Sep 2024 09:48:54 +1000 Subject: [PATCH 3/4] chore: upgrade next (#1300) --- .github/actions/cache-build/action.yml | 4 +- .github/actions/node-install/action.yml | 2 +- apps/documentation/package.json | 4 +- .../pages/users/signing-documents/fields.mdx | 84 +- .../pages/users/signing-documents/index.mdx | 24 +- apps/documentation/pages/users/templates.mdx | 16 +- apps/marketing/package.json | 27 +- apps/web/package.json | 27 +- package-lock.json | 748 +++++------------- package.json | 17 +- packages/ee/package.json | 4 +- packages/lib/package.json | 4 +- packages/ui/package.json | 17 +- 13 files changed, 292 insertions(+), 686 deletions(-) diff --git a/.github/actions/cache-build/action.yml b/.github/actions/cache-build/action.yml index e1eb4da22b..056b9a193c 100644 --- a/.github/actions/cache-build/action.yml +++ b/.github/actions/cache-build/action.yml @@ -3,7 +3,7 @@ description: 'Cache or restore if necessary' inputs: node_version: required: false - default: v18.x + default: v20.x runs: using: 'composite' steps: @@ -17,7 +17,7 @@ runs: **/.turbo/** **/dist/** - key: prod-build-${{ github.run_id }} + key: prod-build-${{ github.run_id }}-${{ hashFiles('package-lock.json') }} restore-keys: prod-build- - run: npm run build diff --git a/.github/actions/node-install/action.yml b/.github/actions/node-install/action.yml index 77483a9a4b..59b542fc8b 100644 --- a/.github/actions/node-install/action.yml +++ b/.github/actions/node-install/action.yml @@ -2,7 +2,7 @@ name: 'Setup node and cache node_modules' inputs: node_version: required: false - default: v18.x + default: v20.x runs: using: 'composite' diff --git a/apps/documentation/package.json b/apps/documentation/package.json index 0c555f39af..7ab519307c 100644 --- a/apps/documentation/package.json +++ b/apps/documentation/package.json @@ -16,7 +16,7 @@ "@documenso/tailwind-config": "*", "@documenso/trpc": "*", "@documenso/ui": "*", - "next": "14.0.3", + "next": "14.2.6", "next-plausible": "^3.12.0", "nextra": "^2.13.4", "nextra-theme-docs": "^2.13.4", @@ -32,4 +32,4 @@ "tailwindcss": "^3.3.0", "typescript": "^5" } -} +} \ No newline at end of file diff --git a/apps/documentation/pages/users/signing-documents/fields.mdx b/apps/documentation/pages/users/signing-documents/fields.mdx index bf02dd0588..005ed25957 100644 --- a/apps/documentation/pages/users/signing-documents/fields.mdx +++ b/apps/documentation/pages/users/signing-documents/fields.mdx @@ -15,7 +15,7 @@ The signature field collects the signer's signature. It's required for each reci The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. -![The signature field in the Documenso document editor](public/document-signing/signature-field-document-editor-view.webp) +![The signature field in the Documenso document editor](/document-signing/signature-field-document-editor-view.webp) ### Document Signing View @@ -23,11 +23,11 @@ The recipient will see the signature field when they open the document to sign. The recipient must click on the signature field to open the signing view, where they can sign using their mouse, touchpad, or touchscreen. -![The signature field in the Documenso document signing view](public/document-signing/signature-field-document-signing-view.webp) +![The signature field in the Documenso document signing view](/document-signing/signature-field-document-signing-view.webp) The image below shows the signature field signed by the recipient. -![The signature field signed by the user in the Documenso document signing view](public/document-signing/signed-signature-field.webp) +![The signature field signed by the user in the Documenso document signing view](/document-signing/signed-signature-field.webp) After signing, the recipient can click the "Complete" button to complete the signing process. @@ -39,7 +39,7 @@ The email field is used to collect the signer's email address. The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. -![The email field in the Documenso document editor](public/document-signing/email-field-document-editor-view.webp) +![The email field in the Documenso document editor](/document-signing/email-field-document-editor-view.webp) ### Document Signing View @@ -47,11 +47,11 @@ When the recipient opens the document to sign, they will see the email field. The recipient must click on the email field to automatically sign the field with the email associated with their account. -![The email field in the Documenso document signing view](public/document-signing/email-field-document-signing-view.webp) +![The email field in the Documenso document signing view](/document-signing/email-field-document-signing-view.webp) The image below shows the email field signed by the recipient. -![The email field signed by the user in the Documenso document signing view](public/document-signing/signed-email-field.webp) +![The email field signed by the user in the Documenso document signing view](/document-signing/signed-email-field.webp) After entering their email address, the recipient can click the "Complete" button to complete the signing process. @@ -63,7 +63,7 @@ The name field is used to collect the signer's name. The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. -![The name field in the Documenso document editor](public/document-signing/name-field-document-editor-view.webp) +![The name field in the Documenso document editor](/document-signing/name-field-document-editor-view.webp) ### Document Signing View @@ -71,11 +71,11 @@ When the recipient opens the document to sign, they will see the name field. The recipient must click on the name field, which will automatically sign the field with the name associated with their account. -![The name field in the Documenso document signing view](public/document-signing/name-field-document-signing-view.webp) +![The name field in the Documenso document signing view](/document-signing/name-field-document-signing-view.webp) The image below shows the name field signed by the recipient. -![The name field signed by the user in the Documenso document signing view](public/document-signing/name-field-signed.webp) +![The name field signed by the user in the Documenso document signing view](/document-signing/name-field-signed.webp) After entering their name, the recipient can click the "Complete" button to complete the signing process. @@ -87,7 +87,7 @@ The date field is used to collect the date of the signature. The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign. -![The date field in the Documenso document editor](public/document-signing/date-field-document-editor-view.webp) +![The date field in the Documenso document editor](/document-signing/date-field-document-editor-view.webp) ### Document Signing View @@ -95,11 +95,11 @@ When the recipient opens the document to sign, they will see the date field. The recipient must click on the date field to automatically sign the field with the current date and time. -![The date field in the Documenso document signing view](public/document-signing/date-field-document-signing-view.webp) +![The date field in the Documenso document signing view](/document-signing/date-field-document-signing-view.webp) The image below shows the date field signed by the recipient. -![The date field signed by the user in the Documenso document signing view](public/document-signing/date-field-signed.webp) +![The date field signed by the user in the Documenso document signing view](/document-signing/date-field-signed.webp) After entering the date, the recipient can click the "Complete" button to complete the signing process. @@ -111,11 +111,11 @@ The text field is used to collect text input from the signer. Place the text field on the document where you want the signer to enter text. The text field comes with additional settings that can be configured. -![The text field in the Documenso document editor](public/document-signing/text-field-document-editor-view.webp) +![The text field in the Documenso document editor](/document-signing/text-field-document-editor-view.webp) To open the settings, click on the text field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. -![The text field settings in the Documenso document editor](public/document-signing/text-field-advanced-settings-document-editor-view.webp) +![The text field settings in the Documenso document editor](/document-signing/text-field-advanced-settings-document-editor-view.webp) The text field settings include: @@ -137,7 +137,7 @@ It also comes with a couple of rules: Let's look at the following example. -![A text field with the settings configured by the user in the Documenso document editor](public/document-signing/text-field-with-filled-advanced-settings.webp) +![A text field with the settings configured by the user in the Documenso document editor](/document-signing/text-field-with-filled-advanced-settings.webp) The field is configured as follows: @@ -156,23 +156,23 @@ What the recipient sees when they open the document to sign depends on the setti In this case, the recipient sees the text field signed with the default value. -![Text field with the default value signed by the user in the Documenso document signing view](public/document-signing/text-field-autosigned.webp) +![Text field with the default value signed by the user in the Documenso document signing view](/document-signing/text-field-autosigned.webp) The recipient can modify the text field value since the field is not read-only. To change the value, the recipient must click the field to un-sign it. Once it's unsigned, the field uses the label set by the sender. -![Unsigned text field in the Documenso document signing view](public/document-signing/text-field-unsigned.webp) +![Unsigned text field in the Documenso document signing view](/document-signing/text-field-unsigned.webp) To sign the field with a different value, the recipient needs to click on the field and enter the new value. -![Text field with the text input in the Documenso document signing view](public/document-signing/text-field-input-modal.webp) +![Text field with the text input in the Documenso document signing view](/document-signing/text-field-input-modal.webp) Since the text field has a character limit, the recipient must enter a value that doesn't exceed the limit. Otherwise, an error message will appear, and the field will not be signed. The image below illustrates the text field signed with a new value. -![Text field signed with a new value](public/document-signing/text-field-new-value-signed.webp) +![Text field signed with a new value](/document-signing/text-field-new-value-signed.webp) After signing the field, the recipient can click the "Complete" button to complete the signing process. @@ -184,11 +184,11 @@ The number field is used for collecting a number input from the signer. Place the number field on the document where you want the signer to enter a number. The number field comes with additional settings that can be configured. -![The number field in the Documenso document editor](public/document-signing/number-field-document-editor.webp) +![The number field in the Documenso document editor](/document-signing/number-field-document-editor.webp) To open the settings, click on the number field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. -![The number field in the Documenso document editor](public/document-signing/number-field-document-editor-view.webp) +![The number field in the Documenso document editor](/document-signing/number-field-document-editor-view.webp) The number field settings include: @@ -221,7 +221,7 @@ In this example, the number field is configured as follows: - Validation: - Min value: 5, Max value: 50 -![A number field with the label configured by the user in the Documenso document editor](public/document-signing/number-field-label.webp) +![A number field with the label configured by the user in the Documenso document editor](/document-signing/number-field-label.webp) Since the field has a label set, the label is displayed instead of the default number field value - "Add number". @@ -231,23 +231,23 @@ What the recipient sees when they open the document to sign depends on the setti The recipient sees the number field signed with the default value in this case. -![Number field with the default value signed by the user in the Documenso document signing view](public/document-signing/number-field-autosigned.webp) +![Number field with the default value signed by the user in the Documenso document signing view](/document-signing/number-field-autosigned.webp) Since the number field is not read-only, the recipient can modify its value. To change the value, the recipient must click the field to un-sign it. Once it's unsigned, the field uses the label set by the sender. -![Unsigned number field in the Documenso document signing view](public/document-signing/number-field-unsigned.webp) +![Unsigned number field in the Documenso document signing view](/document-signing/number-field-unsigned.webp) To sign the field with a different value, the recipient needs to click on the field and enter the new value. -![Number field with the number input in the Documenso document signing view](public/document-signing/number-field-input-modal.webp) +![Number field with the number input in the Documenso document signing view](/document-signing/number-field-input-modal.webp) Since the number field has a validation rule set, the recipient must enter a value that meets the rules. In this example, the value needs to be between 5 and 50. Otherwise, an error message will appear, and the field will not be signed. The image below illustrates the text field signed with a new value. -![Number field signed with a new value](public/document-signing/number-field-signed-with-another-value.webp) +![Number field signed with a new value](/document-signing/number-field-signed-with-another-value.webp) After signing the field, the recipient can click the "Complete" button to complete the signing process. @@ -259,11 +259,11 @@ The radio field is used to collect a single choice from the signer. Place the radio field on the document where you want the signer to select a choice. The radio field comes with additional settings that can be configured. -![The radio field in the Documenso document editor](public/document-signing/radio-field-document-editor-view.webp) +![The radio field in the Documenso document editor](/document-signing/radio-field-document-editor-view.webp) To open the settings, click on the radio field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. -![The radio field advanced settings in the Documenso document editor](public/document-signing/radio-field-advanced-settings-document-editor-view.webp) +![The radio field advanced settings in the Documenso document editor](/document-signing/radio-field-advanced-settings-document-editor-view.webp) The radio field settings include: @@ -293,7 +293,7 @@ In this example, the radio field is configured as follows: - Empty value - Option 3 -![The radio field with the settings configured by the user in the Documenso document editor](public/document-signing/radio-field-options-document-editor-view.webp) +![The radio field with the settings configured by the user in the Documenso document editor](/document-signing/radio-field-options-document-editor-view.webp) Since the field contains radio options, it displays them instead of the default radio field value, "Radio". @@ -303,11 +303,11 @@ What the recipient sees when they open the document to sign depends on the setti In this case, the recipient sees the radio field unsigned because the sender didn't select a value. -![Radio field with no value selected in the Documenso document signing view](public/document-signing/radio-field-unsigned.webp) +![Radio field with no value selected in the Documenso document signing view](/document-signing/radio-field-unsigned.webp) The recipient can select one of the options by clicking on the radio button next to the option. -![Radio field with the value selected by the user in the Documenso document signing view](public/document-signing/radio-field-signed.webp) +![Radio field with the value selected by the user in the Documenso document signing view](/document-signing/radio-field-signed.webp) After signing the field, the recipient can click the "Complete" button to complete the signing process. @@ -319,11 +319,11 @@ The checkbox field is used to collect multiple choices from the signer. Place the checkbox field on the document where you want the signer to select choices. The checkbox field comes with additional settings that can be configured. -![The checkbox field in the Documenso document editor](public/document-signing/checkbox-document-editor-view.webp) +![The checkbox field in the Documenso document editor](/document-signing/checkbox-document-editor-view.webp) To open the settings, click on the checkbox field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. -![The checkbox field settings in the Documenso document editor](public/document-signing/checkbox-advanced-settings.webp) +![The checkbox field settings in the Documenso document editor](/document-signing/checkbox-advanced-settings.webp) The checkbox field settings include the following: @@ -356,7 +356,7 @@ In this example, the checkbox field is configured as follows: - Option 3 (checked) - Empty value -![The checkbox field with the settings configured by the user in the Documenso document editor](public/document-signing/checkbox-advanced-settings-document-editor-view.webp) +![The checkbox field with the settings configured by the user in the Documenso document editor](/document-signing/checkbox-advanced-settings-document-editor-view.webp) Since the field contains checkbox options, it displays them instead of the default checkbox field value, "Checkbox". @@ -366,7 +366,7 @@ What the recipient sees when they open the document to sign depends on the setti In this case, the recipient sees the checkbox field signed with the values selected by the sender. -![Checkbox field with the values selected by the user in the Documenso document signing view](public/document-signing/checkbox-field-document-signing-view.webp) +![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-document-signing-view.webp) Since the field is required, the recipient can either sign with the values selected by the sender or modify the values. @@ -377,11 +377,11 @@ The values can be modified in 2 ways: The image below illustrates the checkbox field with the values cleared by the recipient. Since the field is required, it has a red border instead of the yellow one (non-required fields). -![Checkbox field the values cleared by the user in the Documenso document signing view](public/document-signing/checkbox-field-unsigned.webp) +![Checkbox field the values cleared by the user in the Documenso document signing view](/document-signing/checkbox-field-unsigned.webp) Then, the recipient can select values other than the ones chosen by the sender. -![Checkbox field with the values selected by the user in the Documenso document signing view](public/document-signing/checkbox-field-custom-sign.webp) +![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-custom-sign.webp) After signing the field, the recipient can click the "Complete" button to complete the signing process. @@ -393,11 +393,11 @@ The dropdown/select field collects a single choice from a list of options. Place the dropdown/select field on the document where you want the signer to select a choice. The dropdown/select field comes with additional settings that can be configured. -![The dropdown/select field in the Documenso document editor](public/document-signing/select-field-sliders.webp) +![The dropdown/select field in the Documenso document editor](/document-signing/select-field-sliders.webp) To open the settings, click on the dropdown/select field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen. -![The dropdown/select field settings in the Documenso document editor](public/document-signing/select-field-advanced-settings-panel.webp) +![The dropdown/select field settings in the Documenso document editor](/document-signing/select-field-advanced-settings-panel.webp) The dropdown/select field settings include: @@ -433,14 +433,14 @@ What the recipient sees when they open the document to sign depends on the setti In this case, the recipient sees the dropdown/select field with the default label, "-- Select ---" since the sender has not set a default value. -![Dropdown/select field in the Documenso document signing view](public/document-signing/select-field-unsigned.webp) +![Dropdown/select field in the Documenso document signing view](/document-signing/select-field-unsigned.webp) The recipient can modify the dropdown/select field value since the field is not read-only. To change the value, the recipient must click on the field for the dropdown list to appear. -![Dropdown/select field with the dropdown list in the Documenso document signing view](public/document-signing/select-field-unsigned-dropdown.webp) +![Dropdown/select field with the dropdown list in the Documenso document signing view](/document-signing/select-field-unsigned-dropdown.webp) The recipient can select one of the options from the list. The image below illustrates the dropdown/select field signed with a new value. -![Dropdown/select field signed with a value](public/document-signing/select-field-signed.webp) +![Dropdown/select field signed with a value](/document-signing/select-field-signed.webp) After signing the field, the recipient can click the "Complete" button to complete the signing process. diff --git a/apps/documentation/pages/users/signing-documents/index.mdx b/apps/documentation/pages/users/signing-documents/index.mdx index df43b5851d..a0a32399d2 100644 --- a/apps/documentation/pages/users/signing-documents/index.mdx +++ b/apps/documentation/pages/users/signing-documents/index.mdx @@ -18,17 +18,17 @@ The guide assumes you have a Documenso account. If you don't, you can create a f Navigate to the [Documenso dashboard](https://app.documenso.com/documents) and click on the "Add a document" button. Select the document you want to upload and wait for the upload to complete. -![Documenso dashboard](public/document-signing/documenso-documents-dashboard.webp) +![Documenso dashboard](/document-signing/documenso-documents-dashboard.webp) After the upload is complete, you will be redirected to the document's page. You can configure the document's settings and add recipients and fields here. -![Documenso document overview](public/document-signing/documenso-uploaded-document.webp) +![Documenso document overview](/document-signing/documenso-uploaded-document.webp) ### (Optional) Advanced Options Click on the "Advanced options" button to access additional settings for the document. You can set an external ID, date format, time zone, and the redirect URL. -![Advanced settings for a document uploaded in the Documenso dashboard](public/document-signing/documenso-uploaded-document-advanced-options.webp) +![Advanced settings for a document uploaded in the Documenso dashboard](/document-signing/documenso-uploaded-document-advanced-options.webp) The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s). @@ -45,7 +45,7 @@ The available options are: - **Require account** - The recipient must be signed in to view the document. - **None** - The document can be accessed directly by the URL sent to the recipient. -![Document access settings in the Documenso dashboard](public/document-signing/documenso-enterprise-document-access.webp) +![Document access settings in the Documenso dashboard](/document-signing/documenso-enterprise-document-access.webp) The "Document Access" feature is only available for Enterprise accounts. @@ -61,7 +61,7 @@ The available options are: - **Require 2FA** - The recipient must have an account and 2FA enabled via their settings. - **None** - No authentication required. -![Document recipient action authentication in the Documenso dashboard](public/document-signing/document-enterprise-recipient-action-authentication.webp) +![Document recipient action authentication in the Documenso dashboard](/document-signing/document-enterprise-recipient-action-authentication.webp) This can be overridden by setting the authentication requirements directly for each recipient in the next step. @@ -75,11 +75,11 @@ Click the "+ Add Signer" button to add a new recipient. You can configure the re You can choose any option from the ["Recipient Authentication"](#optional-recipient-authentication) section, or you can set it to "Inherit authentication method" to use the global action signing authentication method configured in the "General Settings" step. -![The required authentication method for a recipient](public/document-signing/documenso-document-recipient-authentication-method.webp) +![The required authentication method for a recipient](/document-signing/documenso-document-recipient-authentication-method.webp) You can also set the recipient's role, which determines their actions and permissions in the document. -![The recipient role](public/document-signing/documenso-document-recipient-role.webp) +![The recipient role](/document-signing/documenso-document-recipient-role.webp) #### Roles @@ -96,7 +96,7 @@ Documenso has 4 roles for recipients with different permissions and actions. Documenso supports 9 different field types that can be added to the document. Each field type collects various information from the recipients when they sign the document. -![The available field types in the Documenso dashboard](public/document-signing/documenso-document-fields.webp) +![The available field types in the Documenso dashboard](/document-signing/documenso-document-fields.webp) The available field types are: @@ -121,13 +121,13 @@ All fields can be placed anywhere on the document and resized as needed. Signer Roles require at least 1 signature field. You will get an error message if you try to send a document without a signature field. -![Error message when trying to send a document without a signature field](public/document-signing/documenso-no-signature-field-found.webp) +![Error message when trying to send a document without a signature field](/document-signing/documenso-no-signature-field-found.webp) ### Email Settings Before sending the document, you can configure the email settings and customize the subject line, message, and sender name. -![Email settings in the Documenso dashboard](public/document-signing/documenso-document-email-settings.webp) +![Email settings in the Documenso dashboard](/document-signing/documenso-document-email-settings.webp) If you leave the email subject and message empty, Documenso will use the default email template. @@ -135,13 +135,13 @@ If you leave the email subject and message empty, Documenso will use the default After configuring the document, click the "Send" button to send the document to the recipients. The recipients will receive an email with a link to sign the document. -![The email sent to the recipients with the signing link](public/document-signing/documenso-sign-email.webp) +![The email sent to the recipients with the signing link](/document-signing/documenso-sign-email.webp) #### Signing Link If you need to copy the signing link for each recipient, you can do so by clicking on the recipient whose link you want to copy. The signing link is copied automatically to your clipboard. -![How to copy the signing link for each recipient from the Documenso dashboard](public/document-signing/documenso-signing-links.webp) +![How to copy the signing link for each recipient from the Documenso dashboard](/document-signing/documenso-signing-links.webp) The signing link has the following format: diff --git a/apps/documentation/pages/users/templates.mdx b/apps/documentation/pages/users/templates.mdx index ba7fc7fd8b..aa3c86798e 100644 --- a/apps/documentation/pages/users/templates.mdx +++ b/apps/documentation/pages/users/templates.mdx @@ -10,15 +10,15 @@ Documenso allows you to create templates, which are reusable documents. Template To create a new template, navigate to the ["Templates" page](https://app.documenso.com/templates) and click on the "New Template" button. -![Documenso template page](public/templates/documenso-template-page.webp) +![Documenso template page](/templates/documenso-template-page.webp) Clicking on the "New Template" button opens a new modal to upload the document you want to use as a template. Select the document and wait for Documenso to upload it to your account. -![Upload a new template document in the Documenso dashboard](public/templates/documenso-template-page-upload-document.webp) +![Upload a new template document in the Documenso dashboard](/templates/documenso-template-page-upload-document.webp) Once the upload is complete, Documenso opens the template configuration page. -![A successfuly uploaded document in the Documenso dashboard](public/templates/documenso-template-page-uploaded-document.webp) +![A successfuly uploaded document in the Documenso dashboard](/templates/documenso-template-page-uploaded-document.webp) You can then configure the template by adding recipients, fields, and other options. @@ -28,7 +28,7 @@ When you send a document for signing, Documenso emails the recipients with a lin Documenso uses a generic subject and message but also allows you to customize them for each document and template. -![Configuring the email options for the Documenso template](public/templates/documenso-template-page-uploaded-document-email-options.webp) +![Configuring the email options for the Documenso template](/templates/documenso-template-page-uploaded-document-email-options.webp) To configure the email options, click the "Email Options" tab and fill in the subject and message fields. Every time you use this template for signing, Documenso will use the custom subject and message you provided. They can also be overridden before sending the document. @@ -36,7 +36,7 @@ To configure the email options, click the "Email Options" tab and fill in the su The template also has advanced options that you can configure. These options include settings such as the external ID, date format, time zone and the redirect URL. -![Configuring the advanced options for the Documenso template](public/templates/documenso-template-page-uploaded-document-advanced-options.webp) +![Configuring the advanced options for the Documenso template](/templates/documenso-template-page-uploaded-document-advanced-options.webp) The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s). @@ -50,7 +50,7 @@ You can add placeholders for the template recipients. Placeholders specify where You can also add recipients directly to the template. Recipients are the people who will receive the document for signing. -![Adding placeholder recipients for the Documenso template](public/templates/documenso-template-recipients.webp) +![Adding placeholder recipients for the Documenso template](/templates/documenso-template-recipients.webp) If you add placeholders to the template, you must replace them with actual recipients when creating a document from it. See the modal from the ["Use a Template"](#use-a-template) section. @@ -70,7 +70,7 @@ Documenso provides the following field types: - **Checkbox** - Collects multiple choices from the signer - **Dropdown/Select** - Collects a single choice from a list of choices -![Adding fields for the Documenso template](public/templates/documenso-template-page-fields.webp) +![Adding fields for the Documenso template](/templates/documenso-template-page-fields.webp) After adding the fields, press the "Save Template" button to save the template. @@ -85,7 +85,7 @@ Click on the "Use Template" button to create a new document from the template. B After filling in the recipients, click the "Create Document" button to create the document in your account. -![Use an available Documenso template](public/templates/documenso-use-template.webp) +![Use an available Documenso template](/templates/documenso-use-template.webp) You can also send the document straight to the recipients for signing by checking the "Send document" checkbox. diff --git a/apps/marketing/package.json b/apps/marketing/package.json index e175f293e1..20b8741a9f 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -20,7 +20,8 @@ "@documenso/trpc": "*", "@documenso/ui": "*", "@hookform/resolvers": "^3.1.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@openstatus/react": "^0.0.3", "cmdk": "^0.2.1", "contentlayer": "^0.3.4", @@ -31,16 +32,16 @@ "lucide-react": "^0.279.0", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "next-axiom": "^1.1.1", "next-contentlayer": "^0.3.4", "next-plausible": "^3.10.1", "perfect-freehand": "^1.2.0", "posthog-js": "^1.77.3", - "react": "18.2.0", + "react": "^18", "react-confetti": "^6.1.0", - "react-dom": "18.2.0", + "react-dom": "^18", "react-hook-form": "^7.43.9", "react-icons": "^4.11.0", "recharts": "^2.7.2", @@ -49,18 +50,10 @@ "zod": "^3.22.4" }, "devDependencies": { - "@lingui/loader": "^4.11.1", - "@lingui/swc-plugin": "4.0.6", + "@lingui/loader": "^4.11.3", + "@lingui/swc-plugin": "4.0.8", "@types/node": "20.1.0", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7" - }, - "overrides": { - "next-auth": { - "next": "$next" - }, - "next-contentlayer": { - "next": "$next" - } + "@types/react": "^18", + "@types/react-dom": "^18" } -} +} \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json index fea1881fab..8e0ae4ad39 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -23,7 +23,8 @@ "@documenso/trpc": "*", "@documenso/ui": "*", "@hookform/resolvers": "^3.1.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.3", "@tanstack/react-query": "^4.29.5", @@ -34,7 +35,7 @@ "lucide-react": "^0.279.0", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "next-axiom": "^1.1.1", "next-plausible": "^3.10.1", @@ -43,8 +44,8 @@ "perfect-freehand": "^1.2.0", "posthog-js": "^1.75.3", "posthog-node": "^3.1.1", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "^18", + "react-dom": "^18", "react-dropzone": "^14.2.3", "react-hook-form": "^7.43.9", "react-hotkeys-hook": "^4.4.1", @@ -60,24 +61,16 @@ }, "devDependencies": { "@documenso/tailwind-config": "*", - "@lingui/loader": "^4.11.1", - "@lingui/swc-plugin": "4.0.6", + "@lingui/loader": "^4.11.3", + "@lingui/swc-plugin": "4.0.8", "@simplewebauthn/types": "^9.0.1", "@types/formidable": "^2.0.6", "@types/luxon": "^3.3.1", "@types/node": "20.1.0", "@types/papaparse": "^5.3.14", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7", + "@types/react": "^18", + "@types/react-dom": "^18", "@types/ua-parser-js": "^0.7.39", "typescript": "5.2.2" - }, - "overrides": { - "next-auth": { - "next": "$next" - }, - "next-contentlayer": { - "next": "$next" - } } -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2a8585c65a..32d44b66f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,16 +13,15 @@ ], "dependencies": { "@documenso/pdf-sign": "^0.1.0", - "@lingui/core": "^4.11.1", - "@lingui/macro": "^4.11.2", + "@lingui/core": "^4.11.3", "inngest-cli": "^0.29.1", "next-runtime-env": "^3.2.0", - "react": "18.2.0" + "react": "^18" }, "devDependencies": { "@commitlint/cli": "^17.7.1", "@commitlint/config-conventional": "^17.7.0", - "@lingui/cli": "^4.11.1", + "@lingui/cli": "^4.11.3", "@trigger.dev/cli": "^2.3.18", "dotenv": "^16.3.1", "dotenv-cli": "^7.3.0", @@ -49,7 +48,7 @@ "@documenso/tailwind-config": "*", "@documenso/trpc": "*", "@documenso/ui": "*", - "next": "14.0.3", + "next": "14.2.6", "next-plausible": "^3.12.0", "nextra": "^2.13.4", "nextra-theme-docs": "^2.13.4", @@ -90,7 +89,8 @@ "@documenso/trpc": "*", "@documenso/ui": "*", "@hookform/resolvers": "^3.1.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@openstatus/react": "^0.0.3", "cmdk": "^0.2.1", "contentlayer": "^0.3.4", @@ -101,16 +101,16 @@ "lucide-react": "^0.279.0", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "next-axiom": "^1.1.1", "next-contentlayer": "^0.3.4", "next-plausible": "^3.10.1", "perfect-freehand": "^1.2.0", "posthog-js": "^1.77.3", - "react": "18.2.0", + "react": "^18", "react-confetti": "^6.1.0", - "react-dom": "18.2.0", + "react-dom": "^18", "react-hook-form": "^7.43.9", "react-icons": "^4.11.0", "recharts": "^2.7.2", @@ -119,11 +119,11 @@ "zod": "^3.22.4" }, "devDependencies": { - "@lingui/loader": "^4.11.1", - "@lingui/swc-plugin": "4.0.6", + "@lingui/loader": "^4.11.3", + "@lingui/swc-plugin": "4.0.8", "@types/node": "20.1.0", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7" + "@types/react": "^18", + "@types/react-dom": "^18" } }, "apps/marketing/node_modules/@radix-ui/primitive": { @@ -435,7 +435,8 @@ "@documenso/trpc": "*", "@documenso/ui": "*", "@hookform/resolvers": "^3.1.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.3", "@tanstack/react-query": "^4.29.5", @@ -446,7 +447,7 @@ "lucide-react": "^0.279.0", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "next-axiom": "^1.1.1", "next-plausible": "^3.10.1", @@ -455,8 +456,8 @@ "perfect-freehand": "^1.2.0", "posthog-js": "^1.75.3", "posthog-node": "^3.1.1", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "^18", + "react-dom": "^18", "react-dropzone": "^14.2.3", "react-hook-form": "^7.43.9", "react-hotkeys-hook": "^4.4.1", @@ -472,15 +473,15 @@ }, "devDependencies": { "@documenso/tailwind-config": "*", - "@lingui/loader": "^4.11.1", - "@lingui/swc-plugin": "4.0.6", + "@lingui/loader": "^4.11.3", + "@lingui/swc-plugin": "4.0.8", "@simplewebauthn/types": "^9.0.1", "@types/formidable": "^2.0.6", "@types/luxon": "^3.3.1", "@types/node": "20.1.0", "@types/papaparse": "^5.3.14", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7", + "@types/react": "^18", + "@types/react-dom": "^18", "@types/ua-parser-js": "^0.7.39", "typescript": "5.2.2" } @@ -1899,9 +1900,10 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -3684,34 +3686,36 @@ "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==" }, "node_modules/@lingui/babel-plugin-extract-messages": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-4.11.2.tgz", - "integrity": "sha512-CjIUy55ICw2nQpJeO9Yhoc65nbDje3b/8Ghbux8OUMbtEYguMKi1pA21eYPYDjTUnjglVTDtapEtLN0iNPWHdg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-4.11.3.tgz", + "integrity": "sha512-wLiquhtxE7qUmoKl4UStFI1XgrCkk9zwxc8z62LPpbutkyxO21B5k8fBUGlgWoKJaXbpvS8VIU8j2663q99JnQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } }, "node_modules/@lingui/cli": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-4.11.2.tgz", - "integrity": "sha512-onwASvA6KffAos+ceP1K1Hx0mPg6vb3s9Rw7VXSyaUQih225GXlrTZbYKOZkM1XgfMmhN+7kgFrRaqxjiKnLLQ==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-4.11.3.tgz", + "integrity": "sha512-ykJLmQciK81I0Cd/iLg8dSpESV9Hnsbw5+G98IEAf4exvoUGRJ2UzkeNc/HeGx3D5Fg+TI8YNWwCbZ7NAOsDCQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.21.0", "@babel/generator": "^7.21.1", "@babel/parser": "^7.21.2", "@babel/runtime": "^7.21.0", "@babel/types": "^7.21.2", - "@lingui/babel-plugin-extract-messages": "4.11.2", - "@lingui/conf": "4.11.2", - "@lingui/core": "4.11.2", - "@lingui/format-po": "4.11.2", - "@lingui/message-utils": "4.11.2", + "@lingui/babel-plugin-extract-messages": "4.11.3", + "@lingui/conf": "4.11.3", + "@lingui/core": "4.11.3", + "@lingui/format-po": "4.11.3", + "@lingui/message-utils": "4.11.3", "babel-plugin-macros": "^3.0.1", "chalk": "^4.1.0", "chokidar": "3.5.1", - "cli-table": "0.3.6", + "cli-table": "^0.3.11", "commander": "^10.0.0", "convert-source-map": "^2.0.0", "date-fns": "^3.6.0", @@ -4410,9 +4414,10 @@ } }, "node_modules/@lingui/conf": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-4.11.2.tgz", - "integrity": "sha512-Kw45dRa3biV8CLg50R0e4vCfU750H5fFJ8zBUAIEtWkksKsRDOvf3l1qxfUF76xuLSCPhdLjYfnmW0FqMe/kdg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-4.11.3.tgz", + "integrity": "sha512-KwUJDrbzlZEXmlmqttpB/Sd9hiIo0sqccsZaYTHzW/uULZT9T11aw/f6RcPLCVJeSKazg/7dJhR1cKlxKzvjKA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.0", @@ -4426,12 +4431,13 @@ } }, "node_modules/@lingui/core": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/core/-/core-4.11.2.tgz", - "integrity": "sha512-5wFmpHeDbLXEqaEUwlayS4SoqrCbDI3/bVRlwhmdNCeUcUYWh+7dTDlQnp4tPek1x1dEppABIkdN/0qLDdKcBQ==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/core/-/core-4.11.3.tgz", + "integrity": "sha512-IjJxn0Kvzv+ICnGlMqn8wRIQLikCJVrolb1oyi6GqtbiuPiwKYeU0D6Hbe146lMaTN8juc3tOCBS+Fr02XqFIQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", - "@lingui/message-utils": "4.11.2", + "@lingui/message-utils": "4.11.3", "unraw": "^3.0.0" }, "engines": { @@ -4439,13 +4445,14 @@ } }, "node_modules/@lingui/format-po": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-4.11.2.tgz", - "integrity": "sha512-o5TxpiIjtwObkOipsuNw3zaiHlikhivFfd70paps4Nb5w0Fiaa6pKqvLmIqgsxx7/bgmySr0S/vu8hpAerr4Kg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-4.11.3.tgz", + "integrity": "sha512-RgEkoo0aEAk7X1xGrApcpqkz6GLdzkRLGw2jo3mmCVR0P7P9sWbJL/cd01GmR+HzAOo8Zx5oIayaKh9iyJS8tA==", "dev": true, + "license": "MIT", "dependencies": { - "@lingui/conf": "4.11.2", - "@lingui/message-utils": "4.11.2", + "@lingui/conf": "4.11.3", + "@lingui/message-utils": "4.11.3", "date-fns": "^3.6.0", "pofile": "^1.1.4" }, @@ -4458,20 +4465,22 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" } }, "node_modules/@lingui/loader": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/loader/-/loader-4.11.2.tgz", - "integrity": "sha512-pQZj7J1iDtp81JjqtWX0pBGX21gwZpk1awKpn9Z8cquFVT2ai8I/0rMhJ3EnKUdutxDhvPDDjYq3AEFkEweXPw==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/loader/-/loader-4.11.3.tgz", + "integrity": "sha512-K0482e0d+KRlljylkOAp6DkOKHboevAqR2nRRipwa8BGV1nJsnSwkvrlny+/OazZK0Dvr7w6tmBODx8KS318Ng==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", - "@lingui/cli": "4.11.2", - "@lingui/conf": "4.11.2" + "@lingui/cli": "4.11.3", + "@lingui/conf": "4.11.3" }, "engines": { "node": ">=16.0.0" @@ -4481,15 +4490,16 @@ } }, "node_modules/@lingui/macro": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-4.11.2.tgz", - "integrity": "sha512-hipoxMwwD5uKl9t6PHK7Ey/yb6pIgRyFLal2TfkqOH/HCsDR9j6Dusj74szJqzpclJv7zfWgJxk52X/pb+OYpg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-4.11.3.tgz", + "integrity": "sha512-D0me8ZRtH0ylSavhKZu0FYf5mJ1y6kDMMPjYVDyiT5ooOI/5jjv9LIAqrdYGCBygnwsxOG1dzDw6+3s5GTs+Bg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", - "@lingui/conf": "4.11.2", - "@lingui/core": "4.11.2", - "@lingui/message-utils": "4.11.2" + "@lingui/conf": "4.11.3", + "@lingui/core": "4.11.3", + "@lingui/message-utils": "4.11.3" }, "engines": { "node": ">=16.0.0" @@ -4500,11 +4510,12 @@ } }, "node_modules/@lingui/macro/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -4513,9 +4524,10 @@ } }, "node_modules/@lingui/message-utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-4.11.2.tgz", - "integrity": "sha512-3oJk7ZKExk4NVa4d3CM0z0iNqIokaFOWeu7lYVzu0oEX7DP6OxNjlCAtObIhJCB0FdIPz8sXxhDkyDHFj+eIvw==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-4.11.3.tgz", + "integrity": "sha512-ZSw3OoKbknOw3nSrqt194g2F8r0guKow9csb46zlL7zX/yOWCaj767wvSvMoglZtVvurfQs4NPv2cohYlWORNw==", + "license": "MIT", "dependencies": { "@messageformat/parser": "^5.0.0", "js-sha256": "^0.10.1" @@ -4525,12 +4537,13 @@ } }, "node_modules/@lingui/react": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@lingui/react/-/react-4.11.2.tgz", - "integrity": "sha512-OKHCg3yPW2xhYWoY2kOz+eP7qpdkab+4tERUvJ9QJ9bzQ6OnPLCagaRftB3nqdKuWzKoA5F2VG2QLUhF7DjpGA==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@lingui/react/-/react-4.11.3.tgz", + "integrity": "sha512-FuorwDsz5zDpUNpyj7J8ZKqJrrVxOz1EtQ3aJGJsmnTtVO01N3nR3ckMzpYvZ71XXdDEvhUC9ihmiKbFvpaZ/w==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", - "@lingui/core": "4.11.2" + "@lingui/core": "4.11.3" }, "engines": { "node": ">=16.0.0" @@ -4540,10 +4553,11 @@ } }, "node_modules/@lingui/swc-plugin": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@lingui/swc-plugin/-/swc-plugin-4.0.6.tgz", - "integrity": "sha512-jW32d+t/faHGrgzZXzGbDmadElqHQ9FvGf2aoq7YelXBPG9cf/lAkZlpxNjAzRhbscupB0YPtBjC49XoIIzKMg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@lingui/swc-plugin/-/swc-plugin-4.0.8.tgz", + "integrity": "sha512-zWvfFAvo2NOV+yFAjTbuEE0x53XEJlBS3EQ1R4xswjWSgpXWbLg45Rg37Ai2Ud0qeQkQLZnL93yt7dOwstX5eQ==", "dev": true, + "license": "MIT", "peerDependencies": { "@lingui/macro": "4" }, @@ -5054,17 +5068,19 @@ } }, "node_modules/@next/env": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz", - "integrity": "sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==" + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.6.tgz", + "integrity": "sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g==", + "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.3.tgz", - "integrity": "sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.6.tgz", + "integrity": "sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -5074,12 +5090,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.3.tgz", - "integrity": "sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.6.tgz", + "integrity": "sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -5089,12 +5106,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.3.tgz", - "integrity": "sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.6.tgz", + "integrity": "sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -5104,12 +5122,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.3.tgz", - "integrity": "sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.6.tgz", + "integrity": "sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -5119,12 +5138,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.3.tgz", - "integrity": "sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.6.tgz", + "integrity": "sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -5134,12 +5154,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.3.tgz", - "integrity": "sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.6.tgz", + "integrity": "sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -5149,12 +5170,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.3.tgz", - "integrity": "sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.6.tgz", + "integrity": "sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -5164,12 +5186,13 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.3.tgz", - "integrity": "sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz", + "integrity": "sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -5179,12 +5202,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.3.tgz", - "integrity": "sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.6.tgz", + "integrity": "sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -6426,7 +6450,7 @@ "version": "1.43.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz", "integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==", - "dev": true, + "devOptional": true, "dependencies": { "playwright": "1.43.1" }, @@ -6441,12 +6465,12 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } @@ -6455,7 +6479,7 @@ "version": "1.43.1", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz", "integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==", - "dev": true, + "devOptional": true, "dependencies": { "playwright-core": "1.43.1" }, @@ -6473,7 +6497,7 @@ "version": "1.43.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz", "integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==", - "dev": true, + "devOptional": true, "bin": { "playwright-core": "cli.js" }, @@ -9939,13 +9963,11 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@swc/helpers": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", - "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", @@ -13467,9 +13489,9 @@ } }, "node_modules/cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dev": true, "dependencies": { "colors": "1.0.3" @@ -14126,6 +14148,7 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } @@ -18362,7 +18385,9 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true }, "node_modules/global-dirs": { "version": "0.1.1", @@ -23986,17 +24011,18 @@ } }, "node_modules/next": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.0.3.tgz", - "integrity": "sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.6.tgz", + "integrity": "sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g==", + "license": "MIT", "dependencies": { - "@next/env": "14.0.3", - "@swc/helpers": "0.5.2", + "@next/env": "14.2.6", + "@swc/helpers": "0.5.5", "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0" + "styled-jsx": "5.1.1" }, "bin": { "next": "dist/bin/next" @@ -24005,18 +24031,19 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.0.3", - "@next/swc-darwin-x64": "14.0.3", - "@next/swc-linux-arm64-gnu": "14.0.3", - "@next/swc-linux-arm64-musl": "14.0.3", - "@next/swc-linux-x64-gnu": "14.0.3", - "@next/swc-linux-x64-musl": "14.0.3", - "@next/swc-win32-arm64-msvc": "14.0.3", - "@next/swc-win32-ia32-msvc": "14.0.3", - "@next/swc-win32-x64-msvc": "14.0.3" + "@next/swc-darwin-arm64": "14.2.6", + "@next/swc-darwin-x64": "14.2.6", + "@next/swc-linux-arm64-gnu": "14.2.6", + "@next/swc-linux-arm64-musl": "14.2.6", + "@next/swc-linux-x64-gnu": "14.2.6", + "@next/swc-linux-x64-musl": "14.2.6", + "@next/swc-win32-arm64-msvc": "14.2.6", + "@next/swc-win32-ia32-msvc": "14.2.6", + "@next/swc-win32-x64-msvc": "14.2.6" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -24025,6 +24052,9 @@ "@opentelemetry/api": { "optional": true }, + "@playwright/test": { + "optional": true + }, "sass": { "optional": true } @@ -24153,6 +24183,16 @@ "react-dom": "*" } }, + "node_modules/next/node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, "node_modules/nextra": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.13.4.tgz", @@ -34626,18 +34666,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -35331,156 +35359,6 @@ "zod": "^3.22.4" } }, - "packages/api/node_modules/@next/env": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", - "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==", - "peer": true - }, - "packages/api/node_modules/@next/swc-darwin-arm64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", - "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-darwin-x64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", - "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", - "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-linux-arm64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", - "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-linux-x64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", - "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-linux-x64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", - "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", - "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", - "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/api/node_modules/@next/swc-win32-x64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", - "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, "packages/api/node_modules/@ts-rest/next": { "version": "3.30.5", "resolved": "https://registry.npmjs.org/@ts-rest/next/-/next-3.30.5.tgz", @@ -35496,52 +35374,6 @@ } } }, - "packages/api/node_modules/next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", - "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", - "peer": true, - "dependencies": { - "@next/env": "13.5.6", - "@swc/helpers": "0.5.2", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.31", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.14.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.5.6", - "@next/swc-darwin-x64": "13.5.6", - "@next/swc-linux-arm64-gnu": "13.5.6", - "@next/swc-linux-arm64-musl": "13.5.6", - "@next/swc-linux-x64-gnu": "13.5.6", - "@next/swc-linux-x64-musl": "13.5.6", - "@next/swc-win32-arm64-msvc": "13.5.6", - "@next/swc-win32-ia32-msvc": "13.5.6", - "@next/swc-win32-x64-msvc": "13.5.6" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, "packages/app-tests": { "name": "@documenso/app-tests", "version": "0.0.0", @@ -35583,9 +35415,9 @@ "@documenso/prisma": "*", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", - "react": "18.2.0", + "react": "^18", "ts-pattern": "^5.0.5", "zod": "^3.22.4" } @@ -36781,13 +36613,13 @@ "luxon": "^3.4.0", "micro": "^10.0.1", "nanoid": "^4.0.2", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "oslo": "^0.17.0", "pdf-lib": "^1.17.1", "pg": "^8.11.3", "playwright": "1.43.0", - "react": "18.2.0", + "react": "^18", "remeda": "^1.27.1", "sharp": "0.32.6", "stripe": "^12.7.0", @@ -36961,156 +36793,6 @@ }, "devDependencies": {} }, - "packages/trpc/node_modules/@next/env": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", - "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==", - "peer": true - }, - "packages/trpc/node_modules/@next/swc-darwin-arm64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", - "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-darwin-x64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", - "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", - "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-linux-arm64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", - "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-linux-x64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", - "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-linux-x64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", - "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", - "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", - "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "packages/trpc/node_modules/@next/swc-win32-x64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", - "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, "packages/trpc/node_modules/@ts-rest/next": { "version": "3.30.5", "resolved": "https://registry.npmjs.org/@ts-rest/next/-/next-3.30.5.tgz", @@ -37126,52 +36808,6 @@ } } }, - "packages/trpc/node_modules/next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", - "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", - "peer": true, - "dependencies": { - "@next/env": "13.5.6", - "@swc/helpers": "0.5.2", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.31", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.14.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.5.6", - "@next/swc-darwin-x64": "13.5.6", - "@next/swc-linux-arm64-gnu": "13.5.6", - "@next/swc-linux-arm64-musl": "13.5.6", - "@next/swc-linux-x64-gnu": "13.5.6", - "@next/swc-linux-x64-musl": "13.5.6", - "@next/swc-win32-arm64-msvc": "13.5.6", - "@next/swc-win32-ia32-msvc": "13.5.6", - "@next/swc-win32-x64-msvc": "13.5.6" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, "packages/tsconfig": { "name": "@documenso/tsconfig", "version": "0.0.0", @@ -37184,7 +36820,8 @@ "dependencies": { "@documenso/lib": "*", "@hookform/resolvers": "^3.3.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@radix-ui/react-accordion": "^1.1.1", "@radix-ui/react-alert-dialog": "^1.0.3", "@radix-ui/react-aspect-ratio": "^1.0.2", @@ -37219,12 +36856,12 @@ "framer-motion": "^10.12.8", "lucide-react": "^0.279.0", "luxon": "^3.4.2", - "next": "14.0.3", + "next": "14.2.6", "pdfjs-dist": "3.11.174", - "react": "18.2.0", + "react": "^18", "react-colorful": "^5.6.1", "react-day-picker": "^8.7.1", - "react-dom": "18.2.0", + "react-dom": "^18", "react-hook-form": "^7.45.4", "react-pdf": "7.7.3", "react-rnd": "^10.4.1", @@ -37237,23 +36874,12 @@ "@documenso/tailwind-config": "*", "@documenso/tsconfig": "*", "@types/luxon": "^3.3.2", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7", - "react": "18.2.0", + "@types/react": "^18", + "@types/react-dom": "^18", + "react": "^18", "typescript": "5.2.2" } }, - "packages/ui/node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "packages/ui/node_modules/react-pdf": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.3.tgz", diff --git a/package.json b/package.json index 32072a0d6a..14162bcc41 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "devDependencies": { "@commitlint/cli": "^17.7.1", "@commitlint/config-conventional": "^17.7.0", - "@lingui/cli": "^4.11.1", + "@lingui/cli": "^4.11.3", "@trigger.dev/cli": "^2.3.18", "dotenv": "^16.3.1", "dotenv-cli": "^7.3.0", @@ -63,22 +63,15 @@ ], "dependencies": { "@documenso/pdf-sign": "^0.1.0", - "@lingui/core": "^4.11.1", - "@lingui/macro": "^4.11.2", + "@lingui/core": "^4.11.3", "inngest-cli": "^0.29.1", "next-runtime-env": "^3.2.0", - "react": "18.2.0" + "react": "^18" }, "overrides": { - "next-auth": { - "next": "14.0.3" - }, - "next-contentlayer": { - "next": "14.0.3" - }, - "react": "18.2.0" + "next": "14.2.6" }, "trigger.dev": { "endpointId": "documenso-app" } -} +} \ No newline at end of file diff --git a/packages/ee/package.json b/packages/ee/package.json index 3ceb5539df..9e72f27c34 100644 --- a/packages/ee/package.json +++ b/packages/ee/package.json @@ -17,9 +17,9 @@ "@documenso/prisma": "*", "luxon": "^3.4.0", "micro": "^10.0.1", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", - "react": "18.2.0", + "react": "^18", "ts-pattern": "^5.0.5", "zod": "^3.22.4" } diff --git a/packages/lib/package.json b/packages/lib/package.json index 03a4e9cc71..1add5b3943 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -41,13 +41,13 @@ "luxon": "^3.4.0", "micro": "^10.0.1", "nanoid": "^4.0.2", - "next": "14.0.3", + "next": "14.2.6", "next-auth": "4.24.5", "oslo": "^0.17.0", "pdf-lib": "^1.17.1", "pg": "^8.11.3", "playwright": "1.43.0", - "react": "18.2.0", + "react": "^18", "remeda": "^1.27.1", "sharp": "0.32.6", "stripe": "^12.7.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index c5d406fcd4..146238b6f5 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -20,15 +20,16 @@ "@documenso/tailwind-config": "*", "@documenso/tsconfig": "*", "@types/luxon": "^3.3.2", - "@types/react": "18.2.18", - "@types/react-dom": "18.2.7", - "react": "18.2.0", + "@types/react": "^18", + "@types/react-dom": "^18", + "react": "^18", "typescript": "5.2.2" }, "dependencies": { "@documenso/lib": "*", "@hookform/resolvers": "^3.3.0", - "@lingui/react": "^4.11.1", + "@lingui/macro": "^4.11.3", + "@lingui/react": "^4.11.3", "@radix-ui/react-accordion": "^1.1.1", "@radix-ui/react-alert-dialog": "^1.0.3", "@radix-ui/react-aspect-ratio": "^1.0.2", @@ -63,12 +64,12 @@ "framer-motion": "^10.12.8", "lucide-react": "^0.279.0", "luxon": "^3.4.2", - "next": "14.0.3", + "next": "14.2.6", "pdfjs-dist": "3.11.174", - "react": "18.2.0", + "react": "^18", "react-colorful": "^5.6.1", "react-day-picker": "^8.7.1", - "react-dom": "18.2.0", + "react-dom": "^18", "react-hook-form": "^7.45.4", "react-pdf": "7.7.3", "react-rnd": "^10.4.1", @@ -77,4 +78,4 @@ "ts-pattern": "^5.0.5", "zod": "^3.22.4" } -} +} \ No newline at end of file From 210081c5203ad80b9088410963deeb2e3a5915ac Mon Sep 17 00:00:00 2001 From: Ajeet Pratap Singh Date: Tue, 3 Sep 2024 15:46:14 +0530 Subject: [PATCH 4/4] fix: a grammer error (#1316) ## Description In this PR, I've fixed a small grammar error. ## Related Issue Fixes: #1315 ## Changes Made It replaces `"wont"` with `"won't"` and `"Only your signing experience is"` with `"Only your signing experience will be"` ## Checklist - [x] I have tested these changes locally and they work as expected. - [x] I have added/updated tests that prove the effectiveness of these changes. - [x] I have updated the documentation to reflect these changes, if applicable. - [x] I have followed the project's coding style guidelines. - [x] I have addressed the code review feedback from the previous submission, if applicable. ## Summary by CodeRabbit - **Bug Fixes** - Updated text in the Document Share Button for enhanced clarity and grammatical accuracy. --------- Co-authored-by: ajeet <109718740+ajeetcode@users.noreply.github.com> --- packages/ui/components/document/document-share-button.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/ui/components/document/document-share-button.tsx b/packages/ui/components/document/document-share-button.tsx index 59a58b4961..bcf8888382 100644 --- a/packages/ui/components/document/document-share-button.tsx +++ b/packages/ui/components/document/document-share-button.tsx @@ -142,8 +142,9 @@ export const DocumentShareButton = ({ Share your signing experience! - Don't worry, the document you signed or sent wont be shared; only your signing - experience is. Share your signing card and showcase your signature! + Rest assured, your document is strictly confidential and will never be shared. Only your + signing experience will be highlighted. Share your personalized signing card to showcase + your signature!