mirror of
https://github.com/documenso/documenso.git
synced 2025-11-22 04:31:39 +10:00
Compare commits
13 Commits
fix/templa
...
chore/dep-
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ff27b3b30 | |||
| 17c6098638 | |||
| e5bde53ee4 | |||
| 0663605ffd | |||
| 1bbe561162 | |||
| fbc156722a | |||
| f5d63fb76c | |||
| 374477e692 | |||
| 11d9bde8f8 | |||
| fa1680aaf1 | |||
| 798b6bd750 | |||
| 8fbace0f61 | |||
| 1bbd04be9b |
@ -23,6 +23,10 @@ NEXT_PRIVATE_OIDC_CLIENT_ID=""
|
|||||||
NEXT_PRIVATE_OIDC_CLIENT_SECRET=""
|
NEXT_PRIVATE_OIDC_CLIENT_SECRET=""
|
||||||
NEXT_PRIVATE_OIDC_PROVIDER_LABEL="OIDC"
|
NEXT_PRIVATE_OIDC_PROVIDER_LABEL="OIDC"
|
||||||
NEXT_PRIVATE_OIDC_SKIP_VERIFY=""
|
NEXT_PRIVATE_OIDC_SKIP_VERIFY=""
|
||||||
|
# Specifies the prompt to use for OIDC signin, explicitly setting
|
||||||
|
# an empty string will omit the prompt parameter.
|
||||||
|
# See: https://www.cerberauth.com/blog/openid-connect-oauth2-prompts/
|
||||||
|
NEXT_PRIVATE_OIDC_PROMPT="login"
|
||||||
|
|
||||||
# [[URLS]]
|
# [[URLS]]
|
||||||
NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000"
|
NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000"
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
|
import type { NextConfig } from 'next';
|
||||||
|
|
||||||
import nextra from 'nextra';
|
import nextra from 'nextra';
|
||||||
|
|
||||||
/** @type {import('next').NextConfig} */
|
const nextConfig: NextConfig = {
|
||||||
const nextConfig = {
|
|
||||||
transpilePackages: [
|
transpilePackages: [
|
||||||
'@documenso/assets',
|
'@documenso/assets',
|
||||||
'@documenso/lib',
|
'@documenso/lib',
|
||||||
@ -4,7 +4,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev -p 3002",
|
"dev": "next dev -p 3002",
|
||||||
"build": "next build && next-sitemap",
|
"build": "next build",
|
||||||
"start": "next start -p 3002",
|
"start": "next start -p 3002",
|
||||||
"lint:fix": "next lint --fix",
|
"lint:fix": "next lint --fix",
|
||||||
"clean": "rimraf .next && rimraf node_modules"
|
"clean": "rimraf .next && rimraf node_modules"
|
||||||
@ -15,18 +15,18 @@
|
|||||||
"@documenso/tailwind-config": "*",
|
"@documenso/tailwind-config": "*",
|
||||||
"@documenso/trpc": "*",
|
"@documenso/trpc": "*",
|
||||||
"@documenso/ui": "*",
|
"@documenso/ui": "*",
|
||||||
"next": "14.2.28",
|
"next": "^15",
|
||||||
"next-plausible": "^3.12.0",
|
"next-plausible": "^3.12.5",
|
||||||
"nextra": "^2.13.4",
|
"nextra": "^3",
|
||||||
"nextra-theme-docs": "^2.13.4",
|
"nextra-theme-docs": "^3",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"react-dom": "^18"
|
"react-dom": "^18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "18.3.27",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"next-sitemap": "^4.2.3",
|
"pagefind": "^1.2.0",
|
||||||
"typescript": "5.6.2"
|
"typescript": "5.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,10 +0,0 @@
|
|||||||
import { PlausibleProvider } from '../providers/plausible.tsx';
|
|
||||||
import '../styles.css';
|
|
||||||
|
|
||||||
export default function App({ Component, pageProps }) {
|
|
||||||
return (
|
|
||||||
<PlausibleProvider>
|
|
||||||
<Component {...pageProps} />
|
|
||||||
</PlausibleProvider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
18
apps/documentation/pages/_app.tsx
Normal file
18
apps/documentation/pages/_app.tsx
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import { PlausibleProvider } from '../providers/plausible';
|
||||||
|
import '../styles.css';
|
||||||
|
|
||||||
|
export type AppProps = {
|
||||||
|
Component: React.ComponentType<any>;
|
||||||
|
pageProps: any;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function App({ Component, pageProps }: AppProps) {
|
||||||
|
return (
|
||||||
|
<PlausibleProvider>
|
||||||
|
<Component {...pageProps} />
|
||||||
|
</PlausibleProvider>
|
||||||
|
);
|
||||||
|
}
|
||||||
34
apps/documentation/pages/_meta.js
Normal file
34
apps/documentation/pages/_meta.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
export default {
|
||||||
|
index: {
|
||||||
|
type: 'page',
|
||||||
|
title: 'Home',
|
||||||
|
display: 'hidden',
|
||||||
|
theme: {
|
||||||
|
timestamp: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
users: {
|
||||||
|
type: 'page',
|
||||||
|
title: 'Users',
|
||||||
|
},
|
||||||
|
developers: {
|
||||||
|
type: 'page',
|
||||||
|
title: 'Developers',
|
||||||
|
},
|
||||||
|
updates: {
|
||||||
|
title: "What's New",
|
||||||
|
type: 'menu',
|
||||||
|
items: {
|
||||||
|
changelog: {
|
||||||
|
title: 'Changelog',
|
||||||
|
href: 'https://documenso.com/changelog',
|
||||||
|
newWindow: true,
|
||||||
|
},
|
||||||
|
blog: {
|
||||||
|
title: 'Blog',
|
||||||
|
href: 'https://documenso.com/blog',
|
||||||
|
newWindow: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
"index": {
|
|
||||||
"type": "page",
|
|
||||||
"title": "Home",
|
|
||||||
"display": "hidden",
|
|
||||||
"theme": {
|
|
||||||
"timestamp": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"users": {
|
|
||||||
"type": "page",
|
|
||||||
"title": "Users"
|
|
||||||
},
|
|
||||||
"developers": {
|
|
||||||
"type": "page",
|
|
||||||
"title": "Developers"
|
|
||||||
},
|
|
||||||
"updates": {
|
|
||||||
"title": "What's New",
|
|
||||||
"type": "menu",
|
|
||||||
"items": {
|
|
||||||
"changelog": {
|
|
||||||
"title": "Changelog",
|
|
||||||
"href": "https://documenso.com/changelog",
|
|
||||||
"newWindow": true
|
|
||||||
},
|
|
||||||
"blog": {
|
|
||||||
"title": "Blog",
|
|
||||||
"href": "https://documenso.com/blog",
|
|
||||||
"newWindow": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
18
apps/documentation/pages/developers/_meta.js
Normal file
18
apps/documentation/pages/developers/_meta.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Introduction',
|
||||||
|
'-- Development & Deployment': {
|
||||||
|
type: 'separator',
|
||||||
|
title: 'Development & Deployment',
|
||||||
|
},
|
||||||
|
'local-development': 'Local Development',
|
||||||
|
'developer-mode': 'Developer Mode',
|
||||||
|
'self-hosting': 'Self Hosting',
|
||||||
|
contributing: 'Contributing',
|
||||||
|
'-- API & Integration Guides': {
|
||||||
|
type: 'separator',
|
||||||
|
title: 'API & Integration Guides',
|
||||||
|
},
|
||||||
|
'public-api': 'Public API',
|
||||||
|
embedding: 'Embedding',
|
||||||
|
webhooks: 'Webhooks',
|
||||||
|
};
|
||||||
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Introduction",
|
|
||||||
"-- Development & Deployment": {
|
|
||||||
"type": "separator",
|
|
||||||
"title": "Development & Deployment"
|
|
||||||
},
|
|
||||||
"local-development": "Local Development",
|
|
||||||
"developer-mode": "Developer Mode",
|
|
||||||
"self-hosting": "Self Hosting",
|
|
||||||
"contributing": "Contributing",
|
|
||||||
"-- API & Integration Guides": {
|
|
||||||
"type": "separator",
|
|
||||||
"title": "API & Integration Guides"
|
|
||||||
},
|
|
||||||
"public-api": "Public API",
|
|
||||||
"embedding": "Embedding",
|
|
||||||
"webhooks": "Webhooks"
|
|
||||||
}
|
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Getting Started',
|
||||||
|
'contributing-translations': 'Contributing Translations',
|
||||||
|
};
|
||||||
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Getting Started",
|
|
||||||
"contributing-translations": "Contributing Translations"
|
|
||||||
}
|
|
||||||
11
apps/documentation/pages/developers/embedding/_meta.js
Normal file
11
apps/documentation/pages/developers/embedding/_meta.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Get Started',
|
||||||
|
react: 'React Integration',
|
||||||
|
vue: 'Vue Integration',
|
||||||
|
svelte: 'Svelte Integration',
|
||||||
|
solid: 'Solid Integration',
|
||||||
|
preact: 'Preact Integration',
|
||||||
|
angular: 'Angular Integration',
|
||||||
|
'css-variables': 'CSS Variables',
|
||||||
|
authoring: 'Authoring',
|
||||||
|
};
|
||||||
@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Get Started",
|
|
||||||
"react": "React Integration",
|
|
||||||
"vue": "Vue Integration",
|
|
||||||
"svelte": "Svelte Integration",
|
|
||||||
"solid": "Solid Integration",
|
|
||||||
"preact": "Preact Integration",
|
|
||||||
"angular": "Angular Integration",
|
|
||||||
"css-variables": "CSS Variables",
|
|
||||||
"authoring": "Authoring"
|
|
||||||
}
|
|
||||||
@ -3,16 +3,16 @@ title: Developer Documentation
|
|||||||
description: Learn how to run Documenso locally, use our API, integrate webhooks, contribute to the project, and self-host Documenso.
|
description: Learn how to run Documenso locally, use our API, integrate webhooks, contribute to the project, and self-host Documenso.
|
||||||
---
|
---
|
||||||
|
|
||||||
import { Card, Cards } from 'nextra/components';
|
import { Cards } from 'nextra/components';
|
||||||
|
|
||||||
# Developer Documentation
|
# Developer Documentation
|
||||||
|
|
||||||
The developer documentation is a comprehensive guide to help you:
|
The developer documentation is a comprehensive guide to help you:
|
||||||
|
|
||||||
<Cards>
|
<Cards>
|
||||||
<Card title="Set up dev environment" href="/developers/local-development" />
|
<Cards.Card title="Set up dev environment" href="/developers/local-development" />
|
||||||
<Card title="Use the API" href="/developers/public-api" />
|
<Cards.Card title="Use the API" href="/developers/public-api" />
|
||||||
<Card title="Integrate webhooks" href="/developers/webhooks" />
|
<Cards.Card title="Integrate webhooks" href="/developers/webhooks" />
|
||||||
<Card title="Contribute to the project" href="/developers/contributing" />
|
<Cards.Card title="Contribute to the project" href="/developers/contributing" />
|
||||||
<Card title="Self-host Documenso" href="/developers/self-hosting" />
|
<Cards.Card title="Self-host Documenso" href="/developers/self-hosting" />
|
||||||
</Cards>
|
</Cards>
|
||||||
|
|||||||
@ -0,0 +1,8 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Get Started',
|
||||||
|
quickstart: 'Developer Quickstart',
|
||||||
|
manual: 'Manual Setup',
|
||||||
|
gitpod: 'Gitpod',
|
||||||
|
'signing-certificate': 'Signing Certificate',
|
||||||
|
translations: 'Translations',
|
||||||
|
};
|
||||||
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Get Started",
|
|
||||||
"quickstart": "Developer Quickstart",
|
|
||||||
"manual": "Manual Setup",
|
|
||||||
"gitpod": "Gitpod",
|
|
||||||
"signing-certificate": "Signing Certificate",
|
|
||||||
"translations": "Translations"
|
|
||||||
}
|
|
||||||
6
apps/documentation/pages/developers/public-api/_meta.js
Normal file
6
apps/documentation/pages/developers/public-api/_meta.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Get Started',
|
||||||
|
authentication: 'Authentication',
|
||||||
|
'rate-limits': 'Rate Limits',
|
||||||
|
versioning: 'Versioning',
|
||||||
|
};
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Get Started",
|
|
||||||
"authentication": "Authentication",
|
|
||||||
"rate-limits": "Rate Limits",
|
|
||||||
"versioning": "Versioning"
|
|
||||||
}
|
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Getting Started',
|
||||||
|
'signing-certificate': 'Signing Certificate',
|
||||||
|
'how-to': 'How To',
|
||||||
|
'setting-up-oauth-providers': 'Setting up OAuth Providers',
|
||||||
|
};
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Getting Started",
|
|
||||||
"signing-certificate": "Signing Certificate",
|
|
||||||
"how-to": "How To",
|
|
||||||
"setting-up-oauth-providers": "Setting up OAuth Providers"
|
|
||||||
}
|
|
||||||
23
apps/documentation/pages/users/_meta.js
Normal file
23
apps/documentation/pages/users/_meta.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Introduction',
|
||||||
|
support: 'Support',
|
||||||
|
'-- How To Use': {
|
||||||
|
type: 'separator',
|
||||||
|
title: 'How To Use',
|
||||||
|
},
|
||||||
|
'get-started': 'Get Started',
|
||||||
|
profile: 'Public Profile',
|
||||||
|
organisations: 'Organisations',
|
||||||
|
documents: 'Documents',
|
||||||
|
templates: 'Templates',
|
||||||
|
branding: 'Branding',
|
||||||
|
'email-domains': 'Email Domains',
|
||||||
|
'direct-links': 'Direct Signing Links',
|
||||||
|
'-- Legal Overview': {
|
||||||
|
type: 'separator',
|
||||||
|
title: 'Legal Overview',
|
||||||
|
},
|
||||||
|
'fair-use': 'Fair Use Policy',
|
||||||
|
licenses: 'Licenses',
|
||||||
|
compliance: 'Compliance',
|
||||||
|
};
|
||||||
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Introduction",
|
|
||||||
"support": "Support",
|
|
||||||
"-- How To Use": {
|
|
||||||
"type": "separator",
|
|
||||||
"title": "How To Use"
|
|
||||||
},
|
|
||||||
"get-started": "Get Started",
|
|
||||||
"profile": "Public Profile",
|
|
||||||
"organisations": "Organisations",
|
|
||||||
"documents": "Documents",
|
|
||||||
"templates": "Templates",
|
|
||||||
"branding": "Branding",
|
|
||||||
"email-domains": "Email Domains",
|
|
||||||
"direct-links": "Direct Signing Links",
|
|
||||||
"-- Legal Overview": {
|
|
||||||
"type": "separator",
|
|
||||||
"title": "Legal Overview"
|
|
||||||
},
|
|
||||||
"fair-use": "Fair Use Policy",
|
|
||||||
"licenses": "Licenses",
|
|
||||||
"compliance": "Compliance"
|
|
||||||
}
|
|
||||||
4
apps/documentation/pages/users/compliance/_meta.js
Normal file
4
apps/documentation/pages/users/compliance/_meta.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
'signature-levels': 'Signature Levels',
|
||||||
|
'standards-and-regulations': 'Standards and Regulations',
|
||||||
|
};
|
||||||
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"signature-levels": "Signature Levels",
|
|
||||||
"standards-and-regulations": "Standards and Regulations"
|
|
||||||
}
|
|
||||||
7
apps/documentation/pages/users/documents/_meta.js
Normal file
7
apps/documentation/pages/users/documents/_meta.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
export default {
|
||||||
|
'sending-documents': 'Sending Documents',
|
||||||
|
'document-preferences': 'Document Preferences',
|
||||||
|
'document-visibility': 'Document Visibility',
|
||||||
|
fields: 'Document Fields',
|
||||||
|
'email-preferences': 'Email Preferences',
|
||||||
|
};
|
||||||
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"sending-documents": "Sending Documents",
|
|
||||||
"document-preferences": "Document Preferences",
|
|
||||||
"document-visibility": "Document Visibility",
|
|
||||||
"fields": "Document Fields",
|
|
||||||
"email-preferences": "Email Preferences"
|
|
||||||
}
|
|
||||||
@ -178,7 +178,7 @@ 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.
|
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 settings include:
|
The dropdown/select field settings include:
|
||||||
|
|
||||||
|
|||||||
5
apps/documentation/pages/users/licenses/_meta.js
Normal file
5
apps/documentation/pages/users/licenses/_meta.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Overview',
|
||||||
|
'community-edition': 'Community Edition',
|
||||||
|
'enterprise-edition': 'Enterprise Edition',
|
||||||
|
};
|
||||||
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Overview",
|
|
||||||
"community-edition": "Community Edition",
|
|
||||||
"enterprise-edition": "Enterprise Edition"
|
|
||||||
}
|
|
||||||
8
apps/documentation/pages/users/organisations/_meta.js
Normal file
8
apps/documentation/pages/users/organisations/_meta.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Introduction',
|
||||||
|
members: 'Members',
|
||||||
|
groups: 'Groups',
|
||||||
|
teams: 'Teams',
|
||||||
|
sso: 'SSO',
|
||||||
|
billing: 'Billing',
|
||||||
|
};
|
||||||
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Introduction",
|
|
||||||
"members": "Members",
|
|
||||||
"groups": "Groups",
|
|
||||||
"teams": "Teams",
|
|
||||||
"sso": "SSO",
|
|
||||||
"billing": "Billing"
|
|
||||||
}
|
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
index: 'Configuration',
|
||||||
|
'microsoft-entra-id': 'Microsoft Entra ID',
|
||||||
|
};
|
||||||
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"index": "Configuration",
|
|
||||||
"microsoft-entra-id": "Microsoft Entra ID"
|
|
||||||
}
|
|
||||||
6
apps/documentation/postcss.config.cjs
Normal file
6
apps/documentation/postcss.config.cjs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
};
|
||||||
22
apps/documentation/public/pdf.worker.min.js
vendored
22
apps/documentation/public/pdf.worker.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,3 +1,7 @@
|
|||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|||||||
@ -8,7 +8,9 @@ module.exports = {
|
|||||||
...baseConfig.content,
|
...baseConfig.content,
|
||||||
`${path.join(require.resolve('@documenso/ui'), '..')}/**/*.{ts,tsx}`,
|
`${path.join(require.resolve('@documenso/ui'), '..')}/**/*.{ts,tsx}`,
|
||||||
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
||||||
|
'./content/**/*.{js,ts,jsx,tsx,mdx}',
|
||||||
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
||||||
|
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
||||||
],
|
],
|
||||||
theme: {
|
theme: {
|
||||||
fontFamily: {
|
fontFamily: {
|
||||||
@ -4,7 +4,7 @@ import { useConfig } from 'nextra-theme-docs';
|
|||||||
const themeConfig: DocsThemeConfig = {
|
const themeConfig: DocsThemeConfig = {
|
||||||
logo: <span>Documenso</span>,
|
logo: <span>Documenso</span>,
|
||||||
head: function useHead() {
|
head: function useHead() {
|
||||||
const config = useConfig<{ title?: string; description?: string }>();
|
const config = useConfig();
|
||||||
|
|
||||||
const title = `${config.frontMatter.title} | Documenso Docs` || 'Documenso Docs';
|
const title = `${config.frontMatter.title} | Documenso Docs` || 'Documenso Docs';
|
||||||
const description = config.frontMatter.description || 'The official Documenso documentation';
|
const description = config.frontMatter.description || 'The official Documenso documentation';
|
||||||
@ -12,6 +12,7 @@ const themeConfig: DocsThemeConfig = {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<meta httpEquiv="Content-Language" content="en" />
|
<meta httpEquiv="Content-Language" content="en" />
|
||||||
|
<title>{title}</title>
|
||||||
<meta name="title" content={title} />
|
<meta name="title" content={title} />
|
||||||
<meta name="og:title" content={title} />
|
<meta name="og:title" content={title} />
|
||||||
<meta name="description" content={description} />
|
<meta name="description" content={description} />
|
||||||
@ -46,7 +47,7 @@ const themeConfig: DocsThemeConfig = {
|
|||||||
},
|
},
|
||||||
docsRepositoryBase: 'https://github.com/documenso/documenso/tree/main/apps/documentation',
|
docsRepositoryBase: 'https://github.com/documenso/documenso/tree/main/apps/documentation',
|
||||||
footer: {
|
footer: {
|
||||||
text: (
|
content: (
|
||||||
<span>
|
<span>
|
||||||
{new Date().getFullYear()} ©{' '}
|
{new Date().getFullYear()} ©{' '}
|
||||||
<a href="https://documen.so" target="_blank">
|
<a href="https://documen.so" target="_blank">
|
||||||
@ -56,12 +57,9 @@ const themeConfig: DocsThemeConfig = {
|
|||||||
</span>
|
</span>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
primaryHue: 100,
|
color: {
|
||||||
primarySaturation: 48.47,
|
hue: 100,
|
||||||
useNextSeoProps() {
|
saturation: 48.47,
|
||||||
return {
|
|
||||||
titleTemplate: '%s | Documenso Docs',
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,17 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["dom", "dom.iterable", "esnext"],
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "bundler",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
@ -18,10 +22,21 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./*"]
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"forceConsistentCasingInFileNames": true
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"target": "ES2017"
|
||||||
},
|
},
|
||||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "tailwind.config.js"],
|
"include": [
|
||||||
"exclude": ["node_modules"]
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
"tailwind.config.js"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +0,0 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
|
||||||
const nextConfig = {};
|
|
||||||
|
|
||||||
module.exports = nextConfig;
|
|
||||||
5
apps/openpage-api/next.config.ts
Normal file
5
apps/openpage-api/next.config.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import type { NextConfig } from 'next';
|
||||||
|
|
||||||
|
const nextConfig: NextConfig = {};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@ -11,12 +11,12 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.7.2",
|
||||||
"next": "14.2.28"
|
"next": "^15"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/react": "18.3.5",
|
"@types/react": "18.3.27",
|
||||||
"typescript": "5.6.2"
|
"typescript": "5.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13,7 +13,7 @@ import {
|
|||||||
DialogHeader,
|
DialogHeader,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
} from '@documenso/ui/primitives/dialog';
|
} from '@documenso/ui/primitives/dialog';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
import { useCurrentTeam } from '~/providers/team';
|
import { useCurrentTeam } from '~/providers/team';
|
||||||
@ -96,7 +96,7 @@ export const DocumentDuplicateDialog = ({
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="p-2 [&>div]:h-[50vh] [&>div]:overflow-y-scroll">
|
<div className="p-2 [&>div]:h-[50vh] [&>div]:overflow-y-scroll">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={envelopeItems[0].id}
|
key={envelopeItems[0].id}
|
||||||
envelopeItem={envelopeItems[0]}
|
envelopeItem={envelopeItems[0]}
|
||||||
token={undefined}
|
token={undefined}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|||||||
|
|
||||||
import { useLingui } from '@lingui/react';
|
import { useLingui } from '@lingui/react';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import type { DocumentData, FieldType } from '@prisma/client';
|
import type { EnvelopeItem, FieldType } from '@prisma/client';
|
||||||
import { ReadStatus, type Recipient, SendStatus, SigningStatus } from '@prisma/client';
|
import { ReadStatus, type Recipient, SendStatus, SigningStatus } from '@prisma/client';
|
||||||
import { base64 } from '@scure/base';
|
import { base64 } from '@scure/base';
|
||||||
import { ChevronsUpDown } from 'lucide-react';
|
import { ChevronsUpDown } from 'lucide-react';
|
||||||
@ -23,7 +23,7 @@ import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/type
|
|||||||
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
||||||
import { FieldSelector } from '@documenso/ui/primitives/field-selector';
|
import { FieldSelector } from '@documenso/ui/primitives/field-selector';
|
||||||
import { Form } from '@documenso/ui/primitives/form/form';
|
import { Form } from '@documenso/ui/primitives/form/form';
|
||||||
import PDFViewer from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { RecipientSelector } from '@documenso/ui/primitives/recipient-selector';
|
import { RecipientSelector } from '@documenso/ui/primitives/recipient-selector';
|
||||||
import { Sheet, SheetContent, SheetTrigger } from '@documenso/ui/primitives/sheet';
|
import { Sheet, SheetContent, SheetTrigger } from '@documenso/ui/primitives/sheet';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
@ -40,7 +40,8 @@ const DEFAULT_WIDTH_PX = MIN_WIDTH_PX * 2.5;
|
|||||||
|
|
||||||
export type ConfigureFieldsViewProps = {
|
export type ConfigureFieldsViewProps = {
|
||||||
configData: TConfigureEmbedFormSchema;
|
configData: TConfigureEmbedFormSchema;
|
||||||
documentData?: DocumentData;
|
presignToken?: string | undefined;
|
||||||
|
envelopeItem?: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
|
||||||
defaultValues?: Partial<TConfigureFieldsFormSchema>;
|
defaultValues?: Partial<TConfigureFieldsFormSchema>;
|
||||||
onBack?: (data: TConfigureFieldsFormSchema) => void;
|
onBack?: (data: TConfigureFieldsFormSchema) => void;
|
||||||
onSubmit: (data: TConfigureFieldsFormSchema) => void;
|
onSubmit: (data: TConfigureFieldsFormSchema) => void;
|
||||||
@ -48,7 +49,8 @@ export type ConfigureFieldsViewProps = {
|
|||||||
|
|
||||||
export const ConfigureFieldsView = ({
|
export const ConfigureFieldsView = ({
|
||||||
configData,
|
configData,
|
||||||
documentData,
|
presignToken,
|
||||||
|
envelopeItem,
|
||||||
defaultValues,
|
defaultValues,
|
||||||
onBack,
|
onBack,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
@ -82,17 +84,25 @@ export const ConfigureFieldsView = ({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const normalizedDocumentData = useMemo(() => {
|
const normalizedDocumentData = useMemo(() => {
|
||||||
if (documentData) {
|
if (envelopeItem) {
|
||||||
return documentData.data;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!configData.documentData) {
|
if (!configData.documentData) {
|
||||||
return null;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
return base64.encode(configData.documentData.data);
|
return base64.encode(configData.documentData.data);
|
||||||
}, [configData.documentData]);
|
}, [configData.documentData]);
|
||||||
|
|
||||||
|
const normalizedEnvelopeItem = useMemo(() => {
|
||||||
|
if (envelopeItem) {
|
||||||
|
return envelopeItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
return { id: '', envelopeId: '' };
|
||||||
|
}, [envelopeItem]);
|
||||||
|
|
||||||
const recipients = useMemo(() => {
|
const recipients = useMemo(() => {
|
||||||
return configData.signers.map<Recipient>((signer, index) => ({
|
return configData.signers.map<Recipient>((signer, index) => ({
|
||||||
id: signer.nativeId || index,
|
id: signer.nativeId || index,
|
||||||
@ -453,12 +463,12 @@ export const ConfigureFieldsView = ({
|
|||||||
{/* Desktop sidebar */}
|
{/* Desktop sidebar */}
|
||||||
{!isMobile && (
|
{!isMobile && (
|
||||||
<div className="order-2 col-span-12 md:order-1 md:col-span-4">
|
<div className="order-2 col-span-12 md:order-1 md:col-span-4">
|
||||||
<div className="bg-widget border-border sticky top-4 max-h-[calc(100vh-2rem)] rounded-lg border p-4 pb-6">
|
<div className="sticky top-4 max-h-[calc(100vh-2rem)] rounded-lg border border-border bg-widget p-4 pb-6">
|
||||||
<h2 className="mb-1 text-lg font-medium">
|
<h2 className="mb-1 text-lg font-medium">
|
||||||
<Trans>Configure Fields</Trans>
|
<Trans>Configure Fields</Trans>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p className="text-muted-foreground mb-6 text-sm">
|
<p className="mb-6 text-sm text-muted-foreground">
|
||||||
<Trans>Configure the fields you want to place on the document.</Trans>
|
<Trans>Configure the fields you want to place on the document.</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -512,7 +522,7 @@ export const ConfigureFieldsView = ({
|
|||||||
{selectedField && (
|
{selectedField && (
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
'text-muted-foreground dark:text-muted-background pointer-events-none fixed z-50 flex cursor-pointer flex-col items-center justify-center bg-white transition duration-200 [container-type:size]',
|
'dark:text-muted-background pointer-events-none fixed z-50 flex cursor-pointer flex-col items-center justify-center bg-white text-muted-foreground transition duration-200 [container-type:size]',
|
||||||
selectedRecipientStyles.base,
|
selectedRecipientStyles.base,
|
||||||
{
|
{
|
||||||
'-rotate-6 scale-90 opacity-50 dark:bg-black/20': !isFieldWithinBounds,
|
'-rotate-6 scale-90 opacity-50 dark:bg-black/20': !isFieldWithinBounds,
|
||||||
@ -534,56 +544,50 @@ export const ConfigureFieldsView = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
{normalizedDocumentData && (
|
<div>
|
||||||
<div>
|
<PDFViewerSuspense
|
||||||
<PDFViewer
|
presignToken={presignToken}
|
||||||
overrideData={normalizedDocumentData}
|
overrideData={normalizedDocumentData}
|
||||||
envelopeItem={{
|
envelopeItem={normalizedEnvelopeItem}
|
||||||
id: '',
|
token={undefined}
|
||||||
envelopeId: '',
|
version="signed"
|
||||||
}}
|
/>
|
||||||
token={undefined}
|
|
||||||
version="signed"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<ElementVisible
|
<ElementVisible
|
||||||
target={`${PDF_VIEWER_PAGE_SELECTOR}[data-page-number="${highestPageNumber}"]`}
|
target={`${PDF_VIEWER_PAGE_SELECTOR}[data-page-number="${highestPageNumber}"]`}
|
||||||
>
|
>
|
||||||
{localFields.map((field, index) => {
|
{localFields.map((field, index) => {
|
||||||
const recipientIndex = recipients.findIndex(
|
const recipientIndex = recipients.findIndex((r) => r.id === field.recipientId);
|
||||||
(r) => r.id === field.recipientId,
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FieldItem
|
<FieldItem
|
||||||
key={field.formId}
|
key={field.formId}
|
||||||
field={field}
|
field={field}
|
||||||
minHeight={MIN_HEIGHT_PX}
|
minHeight={MIN_HEIGHT_PX}
|
||||||
minWidth={MIN_WIDTH_PX}
|
minWidth={MIN_WIDTH_PX}
|
||||||
defaultHeight={DEFAULT_HEIGHT_PX}
|
defaultHeight={DEFAULT_HEIGHT_PX}
|
||||||
defaultWidth={DEFAULT_WIDTH_PX}
|
defaultWidth={DEFAULT_WIDTH_PX}
|
||||||
onResize={(node) => onFieldResize(node, index)}
|
onResize={(node) => onFieldResize(node, index)}
|
||||||
onMove={(node) => onFieldMove(node, index)}
|
onMove={(node) => onFieldMove(node, index)}
|
||||||
onRemove={() => remove(index)}
|
onRemove={() => remove(index)}
|
||||||
onDuplicate={() => onFieldCopy(null, { duplicate: true })}
|
onDuplicate={() => onFieldCopy(null, { duplicate: true })}
|
||||||
onDuplicateAllPages={() => onFieldCopy(null, { duplicateAll: true })}
|
onDuplicateAllPages={() => onFieldCopy(null, { duplicateAll: true })}
|
||||||
onFocus={() => setLastActiveField(field)}
|
onFocus={() => setLastActiveField(field)}
|
||||||
onBlur={() => setLastActiveField(null)}
|
onBlur={() => setLastActiveField(null)}
|
||||||
onAdvancedSettings={() => {
|
onAdvancedSettings={() => {
|
||||||
setCurrentField(field);
|
setCurrentField(field);
|
||||||
setShowAdvancedSettings(true);
|
setShowAdvancedSettings(true);
|
||||||
}}
|
}}
|
||||||
recipientIndex={recipientIndex}
|
recipientIndex={recipientIndex}
|
||||||
active={activeFieldId === field.formId}
|
active={activeFieldId === field.formId}
|
||||||
onFieldActivate={() => setActiveFieldId(field.formId)}
|
onFieldActivate={() => setActiveFieldId(field.formId)}
|
||||||
onFieldDeactivate={() => setActiveFieldId(null)}
|
onFieldDeactivate={() => setActiveFieldId(null)}
|
||||||
disabled={selectedRecipient?.id !== field.recipientId}
|
disabled={selectedRecipient?.id !== field.recipientId}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</ElementVisible>
|
</ElementVisible>
|
||||||
</div>
|
</div>
|
||||||
)}
|
|
||||||
</Form>
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -593,14 +597,14 @@ export const ConfigureFieldsView = ({
|
|||||||
{isMobile && (
|
{isMobile && (
|
||||||
<Sheet open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>
|
<Sheet open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>
|
||||||
<SheetTrigger asChild>
|
<SheetTrigger asChild>
|
||||||
<div className="bg-widget border-border fixed bottom-6 left-6 right-6 z-50 flex items-center justify-between gap-2 rounded-lg border p-4">
|
<div className="fixed bottom-6 left-6 right-6 z-50 flex items-center justify-between gap-2 rounded-lg border border-border bg-widget p-4">
|
||||||
<span className="text-lg font-medium">
|
<span className="text-lg font-medium">
|
||||||
<Trans>Configure Fields</Trans>
|
<Trans>Configure Fields</Trans>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="border-border text-muted-foreground inline-flex h-10 w-10 items-center justify-center rounded-lg border"
|
className="inline-flex h-10 w-10 items-center justify-center rounded-lg border border-border text-muted-foreground"
|
||||||
>
|
>
|
||||||
<ChevronsUpDown className="h-6 w-6" />
|
<ChevronsUpDown className="h-6 w-6" />
|
||||||
</button>
|
</button>
|
||||||
@ -610,13 +614,13 @@ export const ConfigureFieldsView = ({
|
|||||||
<SheetContent
|
<SheetContent
|
||||||
position="bottom"
|
position="bottom"
|
||||||
size="xl"
|
size="xl"
|
||||||
className="bg-widget h-fit max-h-[80vh] overflow-y-auto rounded-t-xl p-4"
|
className="h-fit max-h-[80vh] overflow-y-auto rounded-t-xl bg-widget p-4"
|
||||||
>
|
>
|
||||||
<h2 className="mb-1 text-lg font-medium">
|
<h2 className="mb-1 text-lg font-medium">
|
||||||
<Trans>Configure Fields</Trans>
|
<Trans>Configure Fields</Trans>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p className="text-muted-foreground mb-6 text-sm">
|
<p className="mb-6 text-sm text-muted-foreground">
|
||||||
<Trans>Configure the fields you want to place on the document.</Trans>
|
<Trans>Configure the fields you want to place on the document.</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
||||||
import { Input } from '@documenso/ui/primitives/input';
|
import { Input } from '@documenso/ui/primitives/input';
|
||||||
import { Label } from '@documenso/ui/primitives/label';
|
import { Label } from '@documenso/ui/primitives/label';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
@ -334,7 +334,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
<div className="relative flex w-full flex-col gap-x-6 gap-y-12 md:flex-row">
|
<div className="relative flex w-full flex-col gap-x-6 gap-y-12 md:flex-row">
|
||||||
{/* Viewer */}
|
{/* Viewer */}
|
||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
envelopeItem={envelopeItems[0]}
|
envelopeItem={envelopeItems[0]}
|
||||||
token={recipient.token}
|
token={recipient.token}
|
||||||
version="signed"
|
version="signed"
|
||||||
@ -348,11 +348,11 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
className="group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
className="group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
||||||
data-expanded={isExpanded || undefined}
|
data-expanded={isExpanded || undefined}
|
||||||
>
|
>
|
||||||
<div className="border-border bg-widget flex h-fit w-full flex-col rounded-xl border px-4 py-4 md:min-h-[min(calc(100dvh-2rem),48rem)] md:py-6">
|
<div className="flex h-fit w-full flex-col rounded-xl border border-border bg-widget px-4 py-4 md:min-h-[min(calc(100dvh-2rem),48rem)] md:py-6">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div>
|
<div>
|
||||||
<div className="flex items-center justify-between gap-x-2">
|
<div className="flex items-center justify-between gap-x-2">
|
||||||
<h3 className="text-foreground text-xl font-semibold md:text-2xl">
|
<h3 className="text-xl font-semibold text-foreground md:text-2xl">
|
||||||
<Trans>Sign document</Trans>
|
<Trans>Sign document</Trans>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
className="h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 p-0 md:hidden"
|
||||||
onClick={() => setIsExpanded(false)}
|
onClick={() => setIsExpanded(false)}
|
||||||
>
|
>
|
||||||
<LucideChevronDown className="text-muted-foreground h-5 w-5" />
|
<LucideChevronDown className="h-5 w-5 text-muted-foreground" />
|
||||||
</Button>
|
</Button>
|
||||||
) : pendingFields.length > 0 ? (
|
) : pendingFields.length > 0 ? (
|
||||||
<Button
|
<Button
|
||||||
@ -370,7 +370,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
className="h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 p-0 md:hidden"
|
||||||
onClick={() => setIsExpanded(true)}
|
onClick={() => setIsExpanded(true)}
|
||||||
>
|
>
|
||||||
<LucideChevronUp className="text-muted-foreground h-5 w-5" />
|
<LucideChevronUp className="h-5 w-5 text-muted-foreground" />
|
||||||
</Button>
|
</Button>
|
||||||
) : (
|
) : (
|
||||||
<Button
|
<Button
|
||||||
@ -388,11 +388,11 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="hidden group-data-[expanded]/document-widget:block md:block">
|
<div className="hidden group-data-[expanded]/document-widget:block md:block">
|
||||||
<p className="text-muted-foreground mt-2 text-sm">
|
<p className="mt-2 text-sm text-muted-foreground">
|
||||||
<Trans>Sign the document to complete the process.</Trans>
|
<Trans>Sign the document to complete the process.</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr className="border-border mb-8 mt-4" />
|
<hr className="mb-8 mt-4 border-border" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Form */}
|
{/* Form */}
|
||||||
@ -406,7 +406,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
<Input
|
<Input
|
||||||
type="text"
|
type="text"
|
||||||
id="full-name"
|
id="full-name"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
disabled={isNameLocked}
|
disabled={isNameLocked}
|
||||||
value={fullName}
|
value={fullName}
|
||||||
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
||||||
@ -421,7 +421,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
<Input
|
<Input
|
||||||
type="email"
|
type="email"
|
||||||
id="email"
|
id="email"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
disabled={isEmailLocked}
|
disabled={isEmailLocked}
|
||||||
value={email}
|
value={email}
|
||||||
onChange={(e) => !isEmailLocked && setEmail(e.target.value.trim())}
|
onChange={(e) => !isEmailLocked && setEmail(e.target.value.trim())}
|
||||||
@ -490,7 +490,7 @@ export const EmbedDirectTemplateClientPage = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!hidePoweredBy && (
|
{!hidePoweredBy && (
|
||||||
<div className="bg-primary text-primary-foreground fixed bottom-0 left-0 z-40 rounded-tr px-2 py-1 text-xs font-medium opacity-60 hover:opacity-100">
|
<div className="fixed bottom-0 left-0 z-40 rounded-tr bg-primary px-2 py-1 text-xs font-medium text-primary-foreground opacity-60 hover:opacity-100">
|
||||||
<span>Powered by</span>
|
<span>Powered by</span>
|
||||||
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
||||||
import { Input } from '@documenso/ui/primitives/input';
|
import { Input } from '@documenso/ui/primitives/input';
|
||||||
import { Label } from '@documenso/ui/primitives/label';
|
import { Label } from '@documenso/ui/primitives/label';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { RadioGroup, RadioGroupItem } from '@documenso/ui/primitives/radio-group';
|
import { RadioGroup, RadioGroupItem } from '@documenso/ui/primitives/radio-group';
|
||||||
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
@ -286,7 +286,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
<div className="embed--DocumentContainer relative flex w-full flex-col gap-x-6 gap-y-12 md:flex-row">
|
<div className="embed--DocumentContainer relative flex w-full flex-col gap-x-6 gap-y-12 md:flex-row">
|
||||||
{/* Viewer */}
|
{/* Viewer */}
|
||||||
<div className="embed--DocumentViewer flex-1">
|
<div className="embed--DocumentViewer flex-1">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
envelopeItem={envelopeItems[0]}
|
envelopeItem={envelopeItems[0]}
|
||||||
token={token}
|
token={token}
|
||||||
version="signed"
|
version="signed"
|
||||||
@ -300,11 +300,11 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
className="embed--DocumentWidgetContainer group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
className="embed--DocumentWidgetContainer group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
||||||
data-expanded={isExpanded || undefined}
|
data-expanded={isExpanded || undefined}
|
||||||
>
|
>
|
||||||
<div className="embed--DocumentWidget border-border bg-widget flex w-full flex-col rounded-xl border px-4 py-4 md:py-6">
|
<div className="embed--DocumentWidget flex w-full flex-col rounded-xl border border-border bg-widget px-4 py-4 md:py-6">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div className="embed--DocumentWidgetHeader">
|
<div className="embed--DocumentWidgetHeader">
|
||||||
<div className="flex items-center justify-between gap-x-2">
|
<div className="flex items-center justify-between gap-x-2">
|
||||||
<h3 className="text-foreground text-xl font-semibold md:text-2xl">
|
<h3 className="text-xl font-semibold text-foreground md:text-2xl">
|
||||||
{isAssistantMode ? (
|
{isAssistantMode ? (
|
||||||
<Trans>Assist with signing</Trans>
|
<Trans>Assist with signing</Trans>
|
||||||
) : (
|
) : (
|
||||||
@ -315,18 +315,18 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
{isExpanded ? (
|
{isExpanded ? (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="bg-background dark:bg-foreground h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 bg-background p-0 md:hidden dark:bg-foreground"
|
||||||
onClick={() => setIsExpanded(false)}
|
onClick={() => setIsExpanded(false)}
|
||||||
>
|
>
|
||||||
<LucideChevronDown className="text-muted-foreground dark:text-background h-5 w-5" />
|
<LucideChevronDown className="h-5 w-5 text-muted-foreground dark:text-background" />
|
||||||
</Button>
|
</Button>
|
||||||
) : pendingFields.length > 0 ? (
|
) : pendingFields.length > 0 ? (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="bg-background dark:bg-foreground h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 bg-background p-0 md:hidden dark:bg-foreground"
|
||||||
onClick={() => setIsExpanded(true)}
|
onClick={() => setIsExpanded(true)}
|
||||||
>
|
>
|
||||||
<LucideChevronUp className="text-muted-foreground dark:text-background h-5 w-5" />
|
<LucideChevronUp className="h-5 w-5 text-muted-foreground dark:text-background" />
|
||||||
</Button>
|
</Button>
|
||||||
) : (
|
) : (
|
||||||
<Button
|
<Button
|
||||||
@ -346,7 +346,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="embed--DocumentWidgetContent hidden group-data-[expanded]/document-widget:block md:block">
|
<div className="embed--DocumentWidgetContent hidden group-data-[expanded]/document-widget:block md:block">
|
||||||
<p className="text-muted-foreground mt-2 text-sm">
|
<p className="mt-2 text-sm text-muted-foreground">
|
||||||
{isAssistantMode ? (
|
{isAssistantMode ? (
|
||||||
<Trans>Help complete the document for other signers.</Trans>
|
<Trans>Help complete the document for other signers.</Trans>
|
||||||
) : (
|
) : (
|
||||||
@ -354,7 +354,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr className="border-border mb-8 mt-4" />
|
<hr className="mb-8 mt-4 border-border" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Form */}
|
{/* Form */}
|
||||||
@ -366,7 +366,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
<Trans>Signing for</Trans>
|
<Trans>Signing for</Trans>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<fieldset className="dark:bg-background border-border mt-2 rounded-2xl border bg-white p-3">
|
<fieldset className="mt-2 rounded-2xl border border-border bg-white p-3 dark:bg-background">
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
className="gap-0 space-y-3 shadow-none"
|
className="gap-0 space-y-3 shadow-none"
|
||||||
value={selectedSignerId?.toString()}
|
value={selectedSignerId?.toString()}
|
||||||
@ -377,7 +377,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
.map((r) => (
|
.map((r) => (
|
||||||
<div
|
<div
|
||||||
key={`${assistantSignersId}-${r.id}`}
|
key={`${assistantSignersId}-${r.id}`}
|
||||||
className="bg-widget border-border relative flex flex-col gap-4 rounded-lg border p-4"
|
className="relative flex flex-col gap-4 rounded-lg border border-border bg-widget p-4"
|
||||||
>
|
>
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
@ -395,15 +395,15 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
{r.name}
|
{r.name}
|
||||||
|
|
||||||
{r.id === recipient.id && (
|
{r.id === recipient.id && (
|
||||||
<span className="text-muted-foreground ml-2">
|
<span className="ml-2 text-muted-foreground">
|
||||||
{_(msg`(You)`)}
|
{_(msg`(You)`)}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</Label>
|
</Label>
|
||||||
<p className="text-muted-foreground text-xs">{r.email}</p>
|
<p className="text-xs text-muted-foreground">{r.email}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-muted-foreground text-xs leading-[inherit]">
|
<div className="text-xs leading-[inherit] text-muted-foreground">
|
||||||
{r.fields.length} {r.fields.length === 1 ? 'field' : 'fields'}
|
{r.fields.length} {r.fields.length === 1 ? 'field' : 'fields'}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -424,7 +424,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
<Input
|
<Input
|
||||||
type="text"
|
type="text"
|
||||||
id="full-name"
|
id="full-name"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
disabled={isNameLocked}
|
disabled={isNameLocked}
|
||||||
value={fullName}
|
value={fullName}
|
||||||
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
||||||
@ -439,7 +439,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
<Input
|
<Input
|
||||||
type="email"
|
type="email"
|
||||||
id="email"
|
id="email"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
value={email}
|
value={email}
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
@ -507,7 +507,7 @@ export const EmbedSignDocumentV1ClientPage = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!hidePoweredBy && (
|
{!hidePoweredBy && (
|
||||||
<div className="bg-primary text-primary-foreground fixed bottom-0 left-0 z-40 rounded-tr px-2 py-1 text-xs font-medium opacity-60 hover:opacity-100">
|
<div className="fixed bottom-0 left-0 z-40 rounded-tr bg-primary px-2 py-1 text-xs font-medium text-primary-foreground opacity-60 hover:opacity-100">
|
||||||
<span>Powered by</span>
|
<span>Powered by</span>
|
||||||
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
||||||
import { Input } from '@documenso/ui/primitives/input';
|
import { Input } from '@documenso/ui/primitives/input';
|
||||||
import { Label } from '@documenso/ui/primitives/label';
|
import { Label } from '@documenso/ui/primitives/label';
|
||||||
import PDFViewer from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signature-pad-dialog';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
@ -177,14 +177,14 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="bg-background min-h-screen overflow-hidden">
|
<div className="min-h-screen overflow-hidden bg-background">
|
||||||
<div id="document-field-portal-root" className="relative h-full w-full overflow-y-auto p-8">
|
<div id="document-field-portal-root" className="relative h-full w-full overflow-y-auto p-8">
|
||||||
{match({ isLoading, document })
|
{match({ isLoading, document })
|
||||||
.with({ isLoading: true }, () => (
|
.with({ isLoading: true }, () => (
|
||||||
<div className="flex min-h-[400px] w-full items-center justify-center">
|
<div className="flex min-h-[400px] w-full items-center justify-center">
|
||||||
<div className="flex flex-col items-center gap-4">
|
<div className="flex flex-col items-center gap-4">
|
||||||
<Loader className="text-primary h-8 w-8 animate-spin" />
|
<Loader className="h-8 w-8 animate-spin text-primary" />
|
||||||
<p className="text-muted-foreground text-sm">
|
<p className="text-sm text-muted-foreground">
|
||||||
<Trans>Loading document...</Trans>
|
<Trans>Loading document...</Trans>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -192,7 +192,7 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
))
|
))
|
||||||
.with({ isLoading: false, document: undefined }, () => (
|
.with({ isLoading: false, document: undefined }, () => (
|
||||||
<div className="flex min-h-[400px] w-full items-center justify-center">
|
<div className="flex min-h-[400px] w-full items-center justify-center">
|
||||||
<p className="text-muted-foreground text-sm">
|
<p className="text-sm text-muted-foreground">
|
||||||
<Trans>Failed to load document</Trans>
|
<Trans>Failed to load document</Trans>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -225,7 +225,7 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
'md:mx-auto md:max-w-2xl': document.status === DocumentStatus.COMPLETED,
|
'md:mx-auto md:max-w-2xl': document.status === DocumentStatus.COMPLETED,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
envelopeItem={document.envelopeItems[0]}
|
envelopeItem={document.envelopeItems[0]}
|
||||||
token={token}
|
token={token}
|
||||||
version="signed"
|
version="signed"
|
||||||
@ -243,23 +243,23 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
className="embed--DocumentWidgetContainer group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-0 md:z-auto md:w-[350px] md:px-0"
|
className="embed--DocumentWidgetContainer group/document-widget fixed bottom-8 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-6 md:sticky md:bottom-[unset] md:top-0 md:z-auto md:w-[350px] md:px-0"
|
||||||
data-expanded={isExpanded || undefined}
|
data-expanded={isExpanded || undefined}
|
||||||
>
|
>
|
||||||
<div className="embed--DocumentWidget border-border bg-widget flex w-full flex-col rounded-xl border px-4 py-4 md:py-6">
|
<div className="embed--DocumentWidget flex w-full flex-col rounded-xl border border-border bg-widget px-4 py-4 md:py-6">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div className="embed--DocumentWidgetHeader">
|
<div className="embed--DocumentWidgetHeader">
|
||||||
<div className="flex items-center justify-between gap-x-2">
|
<div className="flex items-center justify-between gap-x-2">
|
||||||
<h3 className="text-foreground text-xl font-semibold md:text-2xl">
|
<h3 className="text-xl font-semibold text-foreground md:text-2xl">
|
||||||
<Trans>Sign document</Trans>
|
<Trans>Sign document</Trans>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<Button variant="outline" className="h-8 w-8 p-0 md:hidden">
|
<Button variant="outline" className="h-8 w-8 p-0 md:hidden">
|
||||||
{isExpanded ? (
|
{isExpanded ? (
|
||||||
<LucideChevronDown
|
<LucideChevronDown
|
||||||
className="text-muted-foreground h-5 w-5"
|
className="h-5 w-5 text-muted-foreground"
|
||||||
onClick={() => setIsExpanded(false)}
|
onClick={() => setIsExpanded(false)}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<LucideChevronUp
|
<LucideChevronUp
|
||||||
className="text-muted-foreground h-5 w-5"
|
className="h-5 w-5 text-muted-foreground"
|
||||||
onClick={() => setIsExpanded(true)}
|
onClick={() => setIsExpanded(true)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
@ -268,11 +268,11 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="embed--DocumentWidgetContent hidden group-data-[expanded]/document-widget:block md:block">
|
<div className="embed--DocumentWidgetContent hidden group-data-[expanded]/document-widget:block md:block">
|
||||||
<p className="text-muted-foreground mt-2 text-sm">
|
<p className="mt-2 text-sm text-muted-foreground">
|
||||||
<Trans>Sign the document to complete the process.</Trans>
|
<Trans>Sign the document to complete the process.</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr className="border-border mb-8 mt-4" />
|
<hr className="mb-8 mt-4 border-border" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Form */}
|
{/* Form */}
|
||||||
@ -288,7 +288,7 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
<Input
|
<Input
|
||||||
type="text"
|
type="text"
|
||||||
id="full-name"
|
id="full-name"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
disabled={isNameLocked}
|
disabled={isNameLocked}
|
||||||
value={fullName}
|
value={fullName}
|
||||||
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
onChange={(e) => !isNameLocked && setFullName(e.target.value)}
|
||||||
@ -303,7 +303,7 @@ export const MultiSignDocumentSigningView = ({
|
|||||||
<Input
|
<Input
|
||||||
type="email"
|
type="email"
|
||||||
id="email"
|
id="email"
|
||||||
className="bg-background mt-2"
|
className="mt-2 bg-background"
|
||||||
value={email}
|
value={email}
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -42,7 +42,7 @@ import { useToast } from '@documenso/ui/primitives/use-toast';
|
|||||||
|
|
||||||
import { ZCreateOrganisationFormSchema } from '../dialogs/organisation-create-dialog';
|
import { ZCreateOrganisationFormSchema } from '../dialogs/organisation-create-dialog';
|
||||||
|
|
||||||
const MotionCard = motion(Card);
|
const MotionCard = motion.create(Card);
|
||||||
|
|
||||||
export type BillingPlansProps = {
|
export type BillingPlansProps = {
|
||||||
plans: InternalClaimPlans;
|
plans: InternalClaimPlans;
|
||||||
@ -101,7 +101,7 @@ export const BillingPlans = ({ plans }: BillingPlansProps) => {
|
|||||||
<CardContent className="flex h-full flex-col p-6">
|
<CardContent className="flex h-full flex-col p-6">
|
||||||
<CardTitle>{price.product.name}</CardTitle>
|
<CardTitle>{price.product.name}</CardTitle>
|
||||||
|
|
||||||
<div className="text-muted-foreground mt-2 text-lg font-medium">
|
<div className="mt-2 text-lg font-medium text-muted-foreground">
|
||||||
{price.friendlyPrice + ' '}
|
{price.friendlyPrice + ' '}
|
||||||
<span className="text-xs">
|
<span className="text-xs">
|
||||||
{interval === 'monthlyPrice' ? (
|
{interval === 'monthlyPrice' ? (
|
||||||
@ -112,12 +112,12 @@ export const BillingPlans = ({ plans }: BillingPlansProps) => {
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="text-muted-foreground mt-1.5 text-sm">
|
<div className="mt-1.5 text-sm text-muted-foreground">
|
||||||
{price.product.description}
|
{price.product.description}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{price.product.features && price.product.features.length > 0 && (
|
{price.product.features && price.product.features.length > 0 && (
|
||||||
<div className="text-muted-foreground mt-4">
|
<div className="mt-4 text-muted-foreground">
|
||||||
<div className="text-sm font-medium">Includes:</div>
|
<div className="text-sm font-medium">Includes:</div>
|
||||||
|
|
||||||
<ul className="mt-1 divide-y text-sm">
|
<ul className="mt-1 divide-y text-sm">
|
||||||
@ -261,7 +261,7 @@ const BillingDialog = ({
|
|||||||
<Building2Icon className="h-4 w-4" />
|
<Building2Icon className="h-4 w-4" />
|
||||||
<Trans>Update current organisation</Trans>
|
<Trans>Update current organisation</Trans>
|
||||||
</Label>
|
</Label>
|
||||||
<p className="text-muted-foreground text-sm">
|
<p className="text-sm text-muted-foreground">
|
||||||
<Trans>
|
<Trans>
|
||||||
Upgrade <strong>{organisation.name}</strong> to {planName}
|
Upgrade <strong>{organisation.name}</strong> to {planName}
|
||||||
</Trans>
|
</Trans>
|
||||||
@ -276,7 +276,7 @@ const BillingDialog = ({
|
|||||||
<PlusIcon className="h-4 w-4" />
|
<PlusIcon className="h-4 w-4" />
|
||||||
<Trans>Create separate organisation</Trans>
|
<Trans>Create separate organisation</Trans>
|
||||||
</Label>
|
</Label>
|
||||||
<p className="text-muted-foreground text-sm">
|
<p className="text-sm text-muted-foreground">
|
||||||
<Trans>
|
<Trans>
|
||||||
Create a new organisation with {planName} plan. Keep your current organisation
|
Create a new organisation with {planName} plan. Keep your current organisation
|
||||||
on it's current plan
|
on it's current plan
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { trpc } from '@documenso/trpc/react';
|
|||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
||||||
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { Stepper } from '@documenso/ui/primitives/stepper';
|
import { Stepper } from '@documenso/ui/primitives/stepper';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ export const DirectTemplatePageView = ({
|
|||||||
gradient
|
gradient
|
||||||
>
|
>
|
||||||
<CardContent className="p-2">
|
<CardContent className="p-2">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={template.id}
|
key={template.id}
|
||||||
envelopeItem={template.envelopeItems[0]}
|
envelopeItem={template.envelopeItems[0]}
|
||||||
token={directTemplateRecipient.token}
|
token={directTemplateRecipient.token}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ import { DocumentReadOnlyFields } from '@documenso/ui/components/document/docume
|
|||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
|
|
||||||
import { DocumentSigningAttachmentsPopover } from '~/components/general/document-signing/document-signing-attachments-popover';
|
import { DocumentSigningAttachmentsPopover } from '~/components/general/document-signing/document-signing-attachments-popover';
|
||||||
import { DocumentSigningAutoSign } from '~/components/general/document-signing/document-signing-auto-sign';
|
import { DocumentSigningAutoSign } from '~/components/general/document-signing/document-signing-auto-sign';
|
||||||
@ -187,7 +187,7 @@ export const DocumentSigningPageViewV1 = ({
|
|||||||
|
|
||||||
<div className="mt-1.5 flex flex-wrap items-center justify-between gap-y-2 sm:mt-2.5 sm:gap-y-0">
|
<div className="mt-1.5 flex flex-wrap items-center justify-between gap-y-2 sm:mt-2.5 sm:gap-y-0">
|
||||||
<div className="max-w-[50ch]">
|
<div className="max-w-[50ch]">
|
||||||
<span className="text-muted-foreground truncate" title={senderName}>
|
<span className="truncate text-muted-foreground" title={senderName}>
|
||||||
{senderName} {senderEmail}
|
{senderName} {senderEmail}
|
||||||
</span>{' '}
|
</span>{' '}
|
||||||
<span className="text-muted-foreground">
|
<span className="text-muted-foreground">
|
||||||
@ -245,7 +245,7 @@ export const DocumentSigningPageViewV1 = ({
|
|||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<Card className="rounded-xl before:rounded-xl" gradient>
|
<Card className="rounded-xl before:rounded-xl" gradient>
|
||||||
<CardContent className="p-2">
|
<CardContent className="p-2">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={document.envelopeItems[0].id}
|
key={document.envelopeItems[0].id}
|
||||||
envelopeItem={document.envelopeItems[0]}
|
envelopeItem={document.envelopeItems[0]}
|
||||||
token={recipient.token}
|
token={recipient.token}
|
||||||
@ -260,9 +260,9 @@ export const DocumentSigningPageViewV1 = ({
|
|||||||
className="group/document-widget fixed bottom-6 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-4 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
className="group/document-widget fixed bottom-6 left-0 z-50 h-fit max-h-[calc(100dvh-2rem)] w-full flex-shrink-0 px-4 md:sticky md:bottom-[unset] md:top-4 md:z-auto md:w-[350px] md:px-0"
|
||||||
data-expanded={isExpanded || undefined}
|
data-expanded={isExpanded || undefined}
|
||||||
>
|
>
|
||||||
<div className="border-border bg-widget flex w-full flex-col rounded-xl border px-4 py-4 md:py-6">
|
<div className="flex w-full flex-col rounded-xl border border-border bg-widget px-4 py-4 md:py-6">
|
||||||
<div className="flex items-center justify-between gap-x-2">
|
<div className="flex items-center justify-between gap-x-2">
|
||||||
<h3 className="text-foreground text-xl font-semibold md:text-2xl">
|
<h3 className="text-xl font-semibold text-foreground md:text-2xl">
|
||||||
{match(recipient.role)
|
{match(recipient.role)
|
||||||
.with(RecipientRole.VIEWER, () => <Trans>View Document</Trans>)
|
.with(RecipientRole.VIEWER, () => <Trans>View Document</Trans>)
|
||||||
.with(RecipientRole.SIGNER, () => <Trans>Sign Document</Trans>)
|
.with(RecipientRole.SIGNER, () => <Trans>Sign Document</Trans>)
|
||||||
@ -305,25 +305,25 @@ export const DocumentSigningPageViewV1 = ({
|
|||||||
.with({ isExpanded: true }, () => (
|
.with({ isExpanded: true }, () => (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="bg-background dark:bg-foreground h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 bg-background p-0 md:hidden dark:bg-foreground"
|
||||||
onClick={() => setIsExpanded(false)}
|
onClick={() => setIsExpanded(false)}
|
||||||
>
|
>
|
||||||
<LucideChevronDown className="text-muted-foreground dark:text-background h-5 w-5" />
|
<LucideChevronDown className="h-5 w-5 text-muted-foreground dark:text-background" />
|
||||||
</Button>
|
</Button>
|
||||||
))
|
))
|
||||||
.otherwise(() => (
|
.otherwise(() => (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
className="bg-background dark:bg-foreground h-8 w-8 p-0 md:hidden"
|
className="h-8 w-8 bg-background p-0 md:hidden dark:bg-foreground"
|
||||||
onClick={() => setIsExpanded(true)}
|
onClick={() => setIsExpanded(true)}
|
||||||
>
|
>
|
||||||
<LucideChevronUp className="text-muted-foreground dark:text-background h-5 w-5" />
|
<LucideChevronUp className="h-5 w-5 text-muted-foreground dark:text-background" />
|
||||||
</Button>
|
</Button>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="hidden group-data-[expanded]/document-widget:block md:block">
|
<div className="hidden group-data-[expanded]/document-widget:block md:block">
|
||||||
<p className="text-muted-foreground mt-2 text-sm">
|
<p className="mt-2 text-sm text-muted-foreground">
|
||||||
{match(recipient.role)
|
{match(recipient.role)
|
||||||
.with(RecipientRole.VIEWER, () => (
|
.with(RecipientRole.VIEWER, () => (
|
||||||
<Trans>Please mark as viewed to complete.</Trans>
|
<Trans>Please mark as viewed to complete.</Trans>
|
||||||
@ -340,7 +340,7 @@ export const DocumentSigningPageViewV1 = ({
|
|||||||
.otherwise(() => null)}
|
.otherwise(() => null)}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr className="border-border mb-8 mt-4" />
|
<hr className="mb-8 mt-4 border-border" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="-mx-2 hidden px-2 group-data-[expanded]/document-widget:block md:block">
|
<div className="-mx-2 hidden px-2 group-data-[expanded]/document-widget:block md:block">
|
||||||
|
|||||||
@ -34,7 +34,7 @@ import { DocumentSigningRejectDialog } from './document-signing-reject-dialog';
|
|||||||
import { useRequiredEnvelopeSigningContext } from './envelope-signing-provider';
|
import { useRequiredEnvelopeSigningContext } from './envelope-signing-provider';
|
||||||
|
|
||||||
const EnvelopeSignerPageRenderer = lazy(
|
const EnvelopeSignerPageRenderer = lazy(
|
||||||
async () => import('../envelope-signing/envelope-signer-page-renderer'),
|
async () => import('~/components/general/envelope-signing/envelope-signer-page-renderer'),
|
||||||
);
|
);
|
||||||
|
|
||||||
export const DocumentSigningPageViewV2 = () => {
|
export const DocumentSigningPageViewV2 = () => {
|
||||||
@ -71,7 +71,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
}, [recipientFieldsRemaining, selectedAssistantRecipientFields, currentEnvelopeItem]);
|
}, [recipientFieldsRemaining, selectedAssistantRecipientFields, currentEnvelopeItem]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="dark:bg-background min-h-screen w-screen bg-gray-50">
|
<div className="min-h-screen w-screen bg-gray-50 dark:bg-background">
|
||||||
<SignFieldEmailDialog.Root />
|
<SignFieldEmailDialog.Root />
|
||||||
<SignFieldTextDialog.Root />
|
<SignFieldTextDialog.Root />
|
||||||
<SignFieldNumberDialog.Root />
|
<SignFieldNumberDialog.Root />
|
||||||
@ -86,9 +86,9 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
{/* Main Content Area */}
|
{/* Main Content Area */}
|
||||||
<div className="flex h-[calc(100vh-4rem)] w-screen">
|
<div className="flex h-[calc(100vh-4rem)] w-screen">
|
||||||
{/* Left Section - Step Navigation */}
|
{/* Left Section - Step Navigation */}
|
||||||
<div className="embed--DocumentWidgetContainer bg-background border-border hidden w-80 flex-shrink-0 flex-col overflow-y-auto border-r py-4 lg:flex">
|
<div className="embed--DocumentWidgetContainer hidden w-80 flex-shrink-0 flex-col overflow-y-auto border-r border-border bg-background py-4 lg:flex">
|
||||||
<div className="px-4">
|
<div className="px-4">
|
||||||
<h3 className="text-foreground flex items-end justify-between text-sm font-semibold">
|
<h3 className="flex items-end justify-between text-sm font-semibold text-foreground">
|
||||||
{match(recipient.role)
|
{match(recipient.role)
|
||||||
.with(RecipientRole.VIEWER, () => <Trans>View Document</Trans>)
|
.with(RecipientRole.VIEWER, () => <Trans>View Document</Trans>)
|
||||||
.with(RecipientRole.SIGNER, () => <Trans>Sign Document</Trans>)
|
.with(RecipientRole.SIGNER, () => <Trans>Sign Document</Trans>)
|
||||||
@ -96,7 +96,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
.with(RecipientRole.ASSISTANT, () => <Trans>Assist Document</Trans>)
|
.with(RecipientRole.ASSISTANT, () => <Trans>Assist Document</Trans>)
|
||||||
.otherwise(() => null)}
|
.otherwise(() => null)}
|
||||||
|
|
||||||
<span className="text-muted-foreground bg-muted/50 ml-2 rounded border px-2 py-0.5 text-xs">
|
<span className="ml-2 rounded border bg-muted/50 px-2 py-0.5 text-xs text-muted-foreground">
|
||||||
<Plural
|
<Plural
|
||||||
value={recipientFieldsRemaining.length}
|
value={recipientFieldsRemaining.length}
|
||||||
one="1 Field Remaining"
|
one="1 Field Remaining"
|
||||||
@ -105,11 +105,11 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
</span>
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div className="bg-muted relative my-4 h-[4px] rounded-md">
|
<div className="relative my-4 h-[4px] rounded-md bg-muted">
|
||||||
<motion.div
|
<motion.div
|
||||||
layout="size"
|
layout="size"
|
||||||
layoutId="document-flow-container-step"
|
layoutId="document-flow-container-step"
|
||||||
className="bg-documenso absolute inset-y-0 left-0"
|
className="absolute inset-y-0 left-0 bg-documenso"
|
||||||
style={{
|
style={{
|
||||||
width: `${100 - (100 / requiredRecipientFields.length) * (recipientFieldsRemaining.length ?? 0)}%`,
|
width: `${100 - (100 / requiredRecipientFields.length) * (recipientFieldsRemaining.length ?? 0)}%`,
|
||||||
}}
|
}}
|
||||||
@ -126,7 +126,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
{/* Quick Actions. */}
|
{/* Quick Actions. */}
|
||||||
{!isDirectTemplate && (
|
{!isDirectTemplate && (
|
||||||
<div className="embed--Actions space-y-3 px-4">
|
<div className="embed--Actions space-y-3 px-4">
|
||||||
<h4 className="text-foreground text-sm font-semibold">
|
<h4 className="text-sm font-semibold text-foreground">
|
||||||
<Trans>Actions</Trans>
|
<Trans>Actions</Trans>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="sm"
|
size="sm"
|
||||||
className="hover:text-destructive w-full justify-start"
|
className="w-full justify-start hover:text-destructive"
|
||||||
>
|
>
|
||||||
<BanIcon className="mr-2 h-4 w-4" />
|
<BanIcon className="mr-2 h-4 w-4" />
|
||||||
<Trans>Reject Document</Trans>
|
<Trans>Reject Document</Trans>
|
||||||
@ -235,7 +235,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col items-center justify-center py-32">
|
<div className="flex flex-col items-center justify-center py-32">
|
||||||
<p className="text-foreground text-sm">
|
<p className="text-sm text-foreground">
|
||||||
<Trans>No documents found</Trans>
|
<Trans>No documents found</Trans>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -250,7 +250,7 @@ export const DocumentSigningPageViewV2 = () => {
|
|||||||
<a
|
<a
|
||||||
href="https://documenso.com"
|
href="https://documenso.com"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="bg-primary text-primary-foreground fixed bottom-0 right-0 z-40 hidden cursor-pointer rounded-tl px-2 py-1 text-xs font-medium opacity-60 hover:opacity-100 lg:block"
|
className="fixed bottom-0 right-0 z-40 hidden cursor-pointer rounded-tl bg-primary px-2 py-1 text-xs font-medium text-primary-foreground opacity-60 hover:opacity-100 lg:block"
|
||||||
>
|
>
|
||||||
<span>Powered by</span>
|
<span>Powered by</span>
|
||||||
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
<BrandingLogo className="ml-2 inline-block h-[14px]" />
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { useEffect, useState } from 'react';
|
import { lazy, useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import { type DocumentData, DocumentStatus, type EnvelopeItem, EnvelopeType } from '@prisma/client';
|
import { type DocumentData, DocumentStatus, type EnvelopeItem, EnvelopeType } from '@prisma/client';
|
||||||
@ -21,12 +21,15 @@ import {
|
|||||||
DialogHeader,
|
DialogHeader,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
} from '@documenso/ui/primitives/dialog';
|
} from '@documenso/ui/primitives/dialog';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
|
|
||||||
import { EnvelopeDownloadDialog } from '~/components/dialogs/envelope-download-dialog';
|
import { EnvelopeDownloadDialog } from '~/components/dialogs/envelope-download-dialog';
|
||||||
|
|
||||||
import { EnvelopeRendererFileSelector } from '../envelope-editor/envelope-file-selector';
|
import { EnvelopeRendererFileSelector } from '../envelope-editor/envelope-file-selector';
|
||||||
import EnvelopeGenericPageRenderer from '../envelope-editor/envelope-generic-page-renderer';
|
|
||||||
|
const EnvelopeGenericPageRenderer = lazy(
|
||||||
|
async () => import('~/components/general/envelope-editor/envelope-generic-page-renderer'),
|
||||||
|
);
|
||||||
|
|
||||||
export type DocumentCertificateQRViewProps = {
|
export type DocumentCertificateQRViewProps = {
|
||||||
documentId: number;
|
documentId: number;
|
||||||
@ -120,7 +123,7 @@ export const DocumentCertificateQRView = ({
|
|||||||
<div className="flex w-full flex-col justify-between gap-4 md:flex-row md:items-end">
|
<div className="flex w-full flex-col justify-between gap-4 md:flex-row md:items-end">
|
||||||
<div className="space-y-1">
|
<div className="space-y-1">
|
||||||
<h1 className="text-xl font-medium">{title}</h1>
|
<h1 className="text-xl font-medium">{title}</h1>
|
||||||
<div className="text-muted-foreground flex flex-col gap-0.5 text-sm">
|
<div className="flex flex-col gap-0.5 text-sm text-muted-foreground">
|
||||||
<p>
|
<p>
|
||||||
<Trans>{recipientCount} recipients</Trans>
|
<Trans>{recipientCount} recipients</Trans>
|
||||||
</p>
|
</p>
|
||||||
@ -146,7 +149,7 @@ export const DocumentCertificateQRView = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-12 w-full">
|
<div className="mt-12 w-full">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={envelopeItems[0].id}
|
key={envelopeItems[0].id}
|
||||||
envelopeItem={envelopeItems[0]}
|
envelopeItem={envelopeItems[0]}
|
||||||
token={token}
|
token={token}
|
||||||
@ -179,7 +182,7 @@ const DocumentCertificateQrV2 = ({
|
|||||||
<div className="flex w-full flex-col justify-between gap-4 md:flex-row md:items-end">
|
<div className="flex w-full flex-col justify-between gap-4 md:flex-row md:items-end">
|
||||||
<div className="space-y-1">
|
<div className="space-y-1">
|
||||||
<h1 className="text-xl font-medium">{title}</h1>
|
<h1 className="text-xl font-medium">{title}</h1>
|
||||||
<div className="text-muted-foreground flex flex-col gap-0.5 text-sm">
|
<div className="flex flex-col gap-0.5 text-sm text-muted-foreground">
|
||||||
<p>
|
<p>
|
||||||
<Trans>{recipientCount} recipients</Trans>
|
<Trans>{recipientCount} recipients</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -27,7 +27,7 @@ import { AddSubjectFormPartial } from '@documenso/ui/primitives/document-flow/ad
|
|||||||
import type { TAddSubjectFormSchema } from '@documenso/ui/primitives/document-flow/add-subject.types';
|
import type { TAddSubjectFormSchema } from '@documenso/ui/primitives/document-flow/add-subject.types';
|
||||||
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
||||||
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { Stepper } from '@documenso/ui/primitives/stepper';
|
import { Stepper } from '@documenso/ui/primitives/stepper';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
@ -440,7 +440,7 @@ export const DocumentEditForm = ({
|
|||||||
gradient
|
gradient
|
||||||
>
|
>
|
||||||
<CardContent className="p-2">
|
<CardContent className="p-2">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={document.envelopeItems[0].id}
|
key={document.envelopeItems[0].id}
|
||||||
envelopeItem={document.envelopeItems[0]}
|
envelopeItem={document.envelopeItems[0]}
|
||||||
token={undefined}
|
token={undefined}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { msg } from '@lingui/core/macro';
|
|||||||
import { Trans, useLingui } from '@lingui/react/macro';
|
import { Trans, useLingui } from '@lingui/react/macro';
|
||||||
import { FieldType, RecipientRole } from '@prisma/client';
|
import { FieldType, RecipientRole } from '@prisma/client';
|
||||||
import { FileTextIcon } from 'lucide-react';
|
import { FileTextIcon } from 'lucide-react';
|
||||||
import { Link } from 'react-router';
|
import { Link, useSearchParams } from 'react-router';
|
||||||
import { isDeepEqual } from 'remeda';
|
import { isDeepEqual } from 'remeda';
|
||||||
import { match } from 'ts-pattern';
|
import { match } from 'ts-pattern';
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ import { EnvelopeRendererFileSelector } from './envelope-file-selector';
|
|||||||
import { EnvelopeRecipientSelector } from './envelope-recipient-selector';
|
import { EnvelopeRecipientSelector } from './envelope-recipient-selector';
|
||||||
|
|
||||||
const EnvelopeEditorFieldsPageRenderer = lazy(
|
const EnvelopeEditorFieldsPageRenderer = lazy(
|
||||||
async () => import('./envelope-editor-fields-page-renderer'),
|
async () => import('~/components/general/envelope-editor/envelope-editor-fields-page-renderer'),
|
||||||
);
|
);
|
||||||
|
|
||||||
const FieldSettingsTypeTranslations: Record<FieldType, MessageDescriptor> = {
|
const FieldSettingsTypeTranslations: Record<FieldType, MessageDescriptor> = {
|
||||||
@ -65,6 +65,8 @@ const FieldSettingsTypeTranslations: Record<FieldType, MessageDescriptor> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const EnvelopeEditorFieldsPage = () => {
|
export const EnvelopeEditorFieldsPage = () => {
|
||||||
|
const [searchParams] = useSearchParams();
|
||||||
|
|
||||||
const { envelope, editorFields, relativePath } = useCurrentEnvelopeEditor();
|
const { envelope, editorFields, relativePath } = useCurrentEnvelopeEditor();
|
||||||
|
|
||||||
const { currentEnvelopeItem } = useCurrentEnvelopeRender();
|
const { currentEnvelopeItem } = useCurrentEnvelopeRender();
|
||||||
@ -117,7 +119,7 @@ export const EnvelopeEditorFieldsPage = () => {
|
|||||||
{envelope.recipients.length === 0 && (
|
{envelope.recipients.length === 0 && (
|
||||||
<Alert
|
<Alert
|
||||||
variant="neutral"
|
variant="neutral"
|
||||||
className="border-border bg-background mb-4 flex max-w-[800px] flex-row items-center justify-between space-y-0 rounded-sm border"
|
className="mb-4 flex max-w-[800px] flex-row items-center justify-between space-y-0 rounded-sm border border-border bg-background"
|
||||||
>
|
>
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<AlertTitle>
|
<AlertTitle>
|
||||||
@ -143,11 +145,11 @@ export const EnvelopeEditorFieldsPage = () => {
|
|||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col items-center justify-center py-32">
|
<div className="flex flex-col items-center justify-center py-32">
|
||||||
<FileTextIcon className="text-muted-foreground h-10 w-10" />
|
<FileTextIcon className="h-10 w-10 text-muted-foreground" />
|
||||||
<p className="text-foreground mt-1 text-sm">
|
<p className="mt-1 text-sm text-foreground">
|
||||||
<Trans>No documents found</Trans>
|
<Trans>No documents found</Trans>
|
||||||
</p>
|
</p>
|
||||||
<p className="text-muted-foreground mt-1 text-sm">
|
<p className="mt-1 text-sm text-muted-foreground">
|
||||||
<Trans>Please upload a document to continue</Trans>
|
<Trans>Please upload a document to continue</Trans>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -157,10 +159,10 @@ export const EnvelopeEditorFieldsPage = () => {
|
|||||||
|
|
||||||
{/* Right Section - Form Fields Panel */}
|
{/* Right Section - Form Fields Panel */}
|
||||||
{currentEnvelopeItem && envelope.recipients.length > 0 && (
|
{currentEnvelopeItem && envelope.recipients.length > 0 && (
|
||||||
<div className="bg-background border-border sticky top-0 h-full w-80 flex-shrink-0 overflow-y-auto border-l py-4">
|
<div className="sticky top-0 h-full w-80 flex-shrink-0 overflow-y-auto border-l border-border bg-background py-4">
|
||||||
{/* Recipient selector section. */}
|
{/* Recipient selector section. */}
|
||||||
<section className="px-4">
|
<section className="px-4">
|
||||||
<h3 className="text-foreground mb-2 text-sm font-semibold">
|
<h3 className="mb-2 text-sm font-semibold text-foreground">
|
||||||
<Trans>Selected Recipient</Trans>
|
<Trans>Selected Recipient</Trans>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@ -192,7 +194,7 @@ export const EnvelopeEditorFieldsPage = () => {
|
|||||||
|
|
||||||
{/* Add fields section. */}
|
{/* Add fields section. */}
|
||||||
<section className="px-4">
|
<section className="px-4">
|
||||||
<h3 className="text-foreground mb-2 text-sm font-semibold">
|
<h3 className="mb-2 text-sm font-semibold text-foreground">
|
||||||
<Trans>Add Fields</Trans>
|
<Trans>Add Fields</Trans>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@ -208,7 +210,38 @@ export const EnvelopeEditorFieldsPage = () => {
|
|||||||
<section>
|
<section>
|
||||||
<Separator className="my-4" />
|
<Separator className="my-4" />
|
||||||
|
|
||||||
<div className="[&_label]:text-foreground/70 px-4 [&_label]:text-xs">
|
{searchParams.get('devmode') && (
|
||||||
|
<>
|
||||||
|
<div className="px-4">
|
||||||
|
<h3 className="mb-3 text-sm font-semibold text-foreground">
|
||||||
|
<Trans>Developer Mode</Trans>
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div className="space-y-2 rounded-md border border-border bg-muted/50 p-3 text-sm text-foreground">
|
||||||
|
<p>
|
||||||
|
<span className="min-w-12 text-muted-foreground">Pos X: </span>
|
||||||
|
{selectedField.positionX.toFixed(2)}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span className="min-w-12 text-muted-foreground">Pos Y: </span>
|
||||||
|
{selectedField.positionY.toFixed(2)}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span className="min-w-12 text-muted-foreground">Width: </span>
|
||||||
|
{selectedField.width.toFixed(2)}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<span className="min-w-12 text-muted-foreground">Height: </span>
|
||||||
|
{selectedField.height.toFixed(2)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Separator className="my-4" />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<div className="px-4 [&_label]:text-xs [&_label]:text-foreground/70">
|
||||||
<h3 className="text-sm font-semibold">
|
<h3 className="text-sm font-semibold">
|
||||||
{t(FieldSettingsTypeTranslations[selectedField.type])}
|
{t(FieldSettingsTypeTranslations[selectedField.type])}
|
||||||
</h3>
|
</h3>
|
||||||
|
|||||||
@ -44,7 +44,7 @@ export default function EnvelopeEditorHeader() {
|
|||||||
<nav className="bg-background border-border w-full border-b px-4 py-3 md:px-6">
|
<nav className="bg-background border-border w-full border-b px-4 py-3 md:px-6">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div className="flex items-center space-x-4">
|
<div className="flex items-center space-x-4">
|
||||||
<Link to={relativePath.basePath}>
|
<Link to="/">
|
||||||
<BrandingLogo className="h-6 w-auto" />
|
<BrandingLogo className="h-6 w-auto" />
|
||||||
</Link>
|
</Link>
|
||||||
<Separator orientation="vertical" className="h-6" />
|
<Separator orientation="vertical" className="h-6" />
|
||||||
|
|||||||
@ -23,7 +23,9 @@ import { Separator } from '@documenso/ui/primitives/separator';
|
|||||||
|
|
||||||
import { EnvelopeRendererFileSelector } from './envelope-file-selector';
|
import { EnvelopeRendererFileSelector } from './envelope-file-selector';
|
||||||
|
|
||||||
const EnvelopeGenericPageRenderer = lazy(async () => import('./envelope-generic-page-renderer'));
|
const EnvelopeGenericPageRenderer = lazy(
|
||||||
|
async () => import('~/components/general/envelope-editor/envelope-generic-page-renderer'),
|
||||||
|
);
|
||||||
|
|
||||||
// Todo: Envelopes - Dynamically import faker
|
// Todo: Envelopes - Dynamically import faker
|
||||||
export const EnvelopeEditorPreviewPage = () => {
|
export const EnvelopeEditorPreviewPage = () => {
|
||||||
@ -232,11 +234,11 @@ export const EnvelopeEditorPreviewPage = () => {
|
|||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col items-center justify-center py-32">
|
<div className="flex flex-col items-center justify-center py-32">
|
||||||
<FileTextIcon className="text-muted-foreground h-10 w-10" />
|
<FileTextIcon className="h-10 w-10 text-muted-foreground" />
|
||||||
<p className="text-foreground mt-1 text-sm">
|
<p className="mt-1 text-sm text-foreground">
|
||||||
<Trans>No documents found</Trans>
|
<Trans>No documents found</Trans>
|
||||||
</p>
|
</p>
|
||||||
<p className="text-muted-foreground mt-1 text-sm">
|
<p className="mt-1 text-sm text-muted-foreground">
|
||||||
<Trans>Please upload a document to continue</Trans>
|
<Trans>Please upload a document to continue</Trans>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -22,14 +22,12 @@ import { useDebouncedValue } from '@documenso/lib/client-only/hooks/use-debounce
|
|||||||
import { useCurrentEnvelopeEditor } from '@documenso/lib/client-only/providers/envelope-editor-provider';
|
import { useCurrentEnvelopeEditor } from '@documenso/lib/client-only/providers/envelope-editor-provider';
|
||||||
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
|
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
|
||||||
import { useSession } from '@documenso/lib/client-only/providers/session';
|
import { useSession } from '@documenso/lib/client-only/providers/session';
|
||||||
import { isTemplateRecipientEmailPlaceholder } from '@documenso/lib/constants/template';
|
|
||||||
import {
|
import {
|
||||||
ZRecipientActionAuthTypesSchema,
|
ZRecipientActionAuthTypesSchema,
|
||||||
ZRecipientAuthOptionsSchema,
|
ZRecipientAuthOptionsSchema,
|
||||||
} from '@documenso/lib/types/document-auth';
|
} from '@documenso/lib/types/document-auth';
|
||||||
import { nanoid } from '@documenso/lib/universal/id';
|
import { nanoid } from '@documenso/lib/universal/id';
|
||||||
import { canRecipientBeModified as utilCanRecipientBeModified } from '@documenso/lib/utils/recipients';
|
import { canRecipientBeModified as utilCanRecipientBeModified } from '@documenso/lib/utils/recipients';
|
||||||
import { generateRecipientPlaceholder } from '@documenso/lib/utils/templates';
|
|
||||||
import { trpc } from '@documenso/trpc/react';
|
import { trpc } from '@documenso/trpc/react';
|
||||||
import { AnimateGenericFadeInOut } from '@documenso/ui/components/animate/animate-generic-fade-in-out';
|
import { AnimateGenericFadeInOut } from '@documenso/ui/components/animate/animate-generic-fade-in-out';
|
||||||
import { RecipientActionAuthSelect } from '@documenso/ui/components/recipient/recipient-action-auth-select';
|
import { RecipientActionAuthSelect } from '@documenso/ui/components/recipient/recipient-action-auth-select';
|
||||||
@ -84,8 +82,7 @@ const ZEnvelopeRecipientsForm = z.object({
|
|||||||
type TEnvelopeRecipientsForm = z.infer<typeof ZEnvelopeRecipientsForm>;
|
type TEnvelopeRecipientsForm = z.infer<typeof ZEnvelopeRecipientsForm>;
|
||||||
|
|
||||||
export const EnvelopeEditorRecipientForm = () => {
|
export const EnvelopeEditorRecipientForm = () => {
|
||||||
const { envelope, setRecipientsDebounced, updateEnvelope, isTemplate } =
|
const { envelope, setRecipientsDebounced, updateEnvelope } = useCurrentEnvelopeEditor();
|
||||||
useCurrentEnvelopeEditor();
|
|
||||||
|
|
||||||
const organisation = useCurrentOrganisation();
|
const organisation = useCurrentOrganisation();
|
||||||
|
|
||||||
@ -122,7 +119,6 @@ export const EnvelopeEditorRecipientForm = () => {
|
|||||||
role: RecipientRole.SIGNER,
|
role: RecipientRole.SIGNER,
|
||||||
signingOrder: 1,
|
signingOrder: 1,
|
||||||
actionAuth: [],
|
actionAuth: [],
|
||||||
...(isTemplate ? generateRecipientPlaceholder(1) : {}),
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -238,8 +234,6 @@ export const EnvelopeEditorRecipientForm = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onAddSigner = () => {
|
const onAddSigner = () => {
|
||||||
const placeholderRecipientCount = signers.length > 1 ? signers.length + 1 : 2;
|
|
||||||
|
|
||||||
appendSigner({
|
appendSigner({
|
||||||
formId: nanoid(12),
|
formId: nanoid(12),
|
||||||
name: '',
|
name: '',
|
||||||
@ -247,10 +241,7 @@ export const EnvelopeEditorRecipientForm = () => {
|
|||||||
role: RecipientRole.SIGNER,
|
role: RecipientRole.SIGNER,
|
||||||
actionAuth: [],
|
actionAuth: [],
|
||||||
signingOrder: signers.length > 0 ? (signers[signers.length - 1]?.signingOrder ?? 0) + 1 : 1,
|
signingOrder: signers.length > 0 ? (signers[signers.length - 1]?.signingOrder ?? 0) + 1 : 1,
|
||||||
...(isTemplate ? generateRecipientPlaceholder(placeholderRecipientCount) : {}),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
void form.trigger('signers');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const onRemoveSigner = (index: number) => {
|
const onRemoveSigner = (index: number) => {
|
||||||
@ -815,7 +806,7 @@ export const EnvelopeEditorRecipientForm = () => {
|
|||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{!showAdvancedSettings && index === 0 && (
|
{!showAdvancedSettings && index === 0 && (
|
||||||
<FormLabel required={!isTemplate}>
|
<FormLabel required>
|
||||||
<Trans>Email</Trans>
|
<Trans>Email</Trans>
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
)}
|
)}
|
||||||
@ -824,12 +815,7 @@ export const EnvelopeEditorRecipientForm = () => {
|
|||||||
<RecipientAutoCompleteInput
|
<RecipientAutoCompleteInput
|
||||||
type="email"
|
type="email"
|
||||||
placeholder={t`Email`}
|
placeholder={t`Email`}
|
||||||
value={
|
value={field.value}
|
||||||
isTemplate &&
|
|
||||||
isTemplateRecipientEmailPlaceholder(field.value)
|
|
||||||
? ''
|
|
||||||
: field.value
|
|
||||||
}
|
|
||||||
disabled={
|
disabled={
|
||||||
snapshot.isDragging ||
|
snapshot.isDragging ||
|
||||||
isSubmitting ||
|
isSubmitting ||
|
||||||
|
|||||||
@ -171,7 +171,7 @@ export default function EnvelopeSignerPageRenderer() {
|
|||||||
|
|
||||||
const handleFieldGroupClick = (e: KonvaEventObject<Event>) => {
|
const handleFieldGroupClick = (e: KonvaEventObject<Event>) => {
|
||||||
const currentTarget = e.currentTarget as Konva.Group;
|
const currentTarget = e.currentTarget as Konva.Group;
|
||||||
const target = e.target;
|
const target = e.target as Konva.Shape;
|
||||||
|
|
||||||
const { width: fieldWidth, height: fieldHeight } = fieldGroup.getClientRect();
|
const { width: fieldWidth, height: fieldHeight } = fieldGroup.getClientRect();
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import { cn } from '@documenso/ui/lib/utils';
|
|||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
||||||
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { Stepper } from '@documenso/ui/primitives/stepper';
|
import { Stepper } from '@documenso/ui/primitives/stepper';
|
||||||
import { AddTemplateFieldsFormPartial } from '@documenso/ui/primitives/template-flow/add-template-fields';
|
import { AddTemplateFieldsFormPartial } from '@documenso/ui/primitives/template-flow/add-template-fields';
|
||||||
import type { TAddTemplateFieldsFormSchema } from '@documenso/ui/primitives/template-flow/add-template-fields.types';
|
import type { TAddTemplateFieldsFormSchema } from '@documenso/ui/primitives/template-flow/add-template-fields.types';
|
||||||
@ -312,7 +312,7 @@ export const TemplateEditForm = ({
|
|||||||
gradient
|
gradient
|
||||||
>
|
>
|
||||||
<CardContent className="p-2">
|
<CardContent className="p-2">
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
key={template.envelopeItems[0].id}
|
key={template.envelopeItems[0].id}
|
||||||
envelopeItem={template.envelopeItems[0]}
|
envelopeItem={template.envelopeItems[0]}
|
||||||
token={undefined}
|
token={undefined}
|
||||||
|
|||||||
@ -1,6 +1,3 @@
|
|||||||
import { useEffect } from 'react';
|
|
||||||
|
|
||||||
import Plausible from 'plausible-tracker';
|
|
||||||
import {
|
import {
|
||||||
Links,
|
Links,
|
||||||
Meta,
|
Meta,
|
||||||
@ -17,7 +14,7 @@ import { PreventFlashOnWrongTheme, ThemeProvider, useTheme } from 'remix-themes'
|
|||||||
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
|
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
|
||||||
import { SessionProvider } from '@documenso/lib/client-only/providers/session';
|
import { SessionProvider } from '@documenso/lib/client-only/providers/session';
|
||||||
import { APP_I18N_OPTIONS, type SupportedLanguageCodes } from '@documenso/lib/constants/i18n';
|
import { APP_I18N_OPTIONS, type SupportedLanguageCodes } from '@documenso/lib/constants/i18n';
|
||||||
import { createPublicEnv, env } from '@documenso/lib/utils/env';
|
import { createPublicEnv } from '@documenso/lib/utils/env';
|
||||||
import { extractLocaleData } from '@documenso/lib/utils/i18n';
|
import { extractLocaleData } from '@documenso/lib/utils/i18n';
|
||||||
import { TrpcProvider } from '@documenso/trpc/react';
|
import { TrpcProvider } from '@documenso/trpc/react';
|
||||||
import { getOrganisationSession } from '@documenso/trpc/server/organisation-router/get-organisation-session';
|
import { getOrganisationSession } from '@documenso/trpc/server/organisation-router/get-organisation-session';
|
||||||
@ -31,11 +28,6 @@ import { langCookie } from './storage/lang-cookie.server';
|
|||||||
import { themeSessionResolver } from './storage/theme-session.server';
|
import { themeSessionResolver } from './storage/theme-session.server';
|
||||||
import { appMetaTags } from './utils/meta';
|
import { appMetaTags } from './utils/meta';
|
||||||
|
|
||||||
const { trackPageview } = Plausible({
|
|
||||||
domain: 'documenso.com',
|
|
||||||
trackLocalhost: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
export const links: Route.LinksFunction = () => [{ rel: 'stylesheet', href: stylesheet }];
|
export const links: Route.LinksFunction = () => [{ rel: 'stylesheet', href: stylesheet }];
|
||||||
|
|
||||||
export function meta() {
|
export function meta() {
|
||||||
@ -92,12 +84,6 @@ export function Layout({ children }: { children: React.ReactNode }) {
|
|||||||
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (env('NODE_ENV') === 'production') {
|
|
||||||
trackPageview();
|
|
||||||
}
|
|
||||||
}, [location.pathname]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider specifiedTheme={theme} themeAction="/api/theme">
|
<ThemeProvider specifiedTheme={theme} themeAction="/api/theme">
|
||||||
<LayoutContent>{children}</LayoutContent>
|
<LayoutContent>{children}</LayoutContent>
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import { lazy } from 'react';
|
||||||
|
|
||||||
import { msg } from '@lingui/core/macro';
|
import { msg } from '@lingui/core/macro';
|
||||||
import { Plural, Trans, useLingui } from '@lingui/react/macro';
|
import { Plural, Trans, useLingui } from '@lingui/react/macro';
|
||||||
import { DocumentStatus } from '@prisma/client';
|
import { DocumentStatus } from '@prisma/client';
|
||||||
@ -19,7 +21,7 @@ import { cn } from '@documenso/ui/lib/utils';
|
|||||||
import { Badge } from '@documenso/ui/primitives/badge';
|
import { Badge } from '@documenso/ui/primitives/badge';
|
||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { Spinner } from '@documenso/ui/primitives/spinner';
|
import { Spinner } from '@documenso/ui/primitives/spinner';
|
||||||
|
|
||||||
import { DocumentPageViewButton } from '~/components/general/document/document-page-view-button';
|
import { DocumentPageViewButton } from '~/components/general/document/document-page-view-button';
|
||||||
@ -33,13 +35,16 @@ import {
|
|||||||
FRIENDLY_STATUS_MAP,
|
FRIENDLY_STATUS_MAP,
|
||||||
} from '~/components/general/document/document-status';
|
} from '~/components/general/document/document-status';
|
||||||
import { EnvelopeRendererFileSelector } from '~/components/general/envelope-editor/envelope-file-selector';
|
import { EnvelopeRendererFileSelector } from '~/components/general/envelope-editor/envelope-file-selector';
|
||||||
import EnvelopeGenericPageRenderer from '~/components/general/envelope-editor/envelope-generic-page-renderer';
|
|
||||||
import { GenericErrorLayout } from '~/components/general/generic-error-layout';
|
import { GenericErrorLayout } from '~/components/general/generic-error-layout';
|
||||||
import { StackAvatarsWithTooltip } from '~/components/general/stack-avatars-with-tooltip';
|
import { StackAvatarsWithTooltip } from '~/components/general/stack-avatars-with-tooltip';
|
||||||
import { useCurrentTeam } from '~/providers/team';
|
import { useCurrentTeam } from '~/providers/team';
|
||||||
|
|
||||||
import type { Route } from './+types/documents.$id._index';
|
import type { Route } from './+types/documents.$id._index';
|
||||||
|
|
||||||
|
const EnvelopeGenericPageRenderer = lazy(
|
||||||
|
async () => import('~/components/general/envelope-editor/envelope-generic-page-renderer'),
|
||||||
|
);
|
||||||
|
|
||||||
export default function DocumentPage({ params }: Route.ComponentProps) {
|
export default function DocumentPage({ params }: Route.ComponentProps) {
|
||||||
const { t } = useLingui();
|
const { t } = useLingui();
|
||||||
const { user } = useSession();
|
const { user } = useSession();
|
||||||
@ -56,7 +61,7 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
|
|||||||
|
|
||||||
if (isLoadingEnvelope) {
|
if (isLoadingEnvelope) {
|
||||||
return (
|
return (
|
||||||
<div className="text-foreground flex w-screen flex-col items-center justify-center gap-2 py-64">
|
<div className="flex w-screen flex-col items-center justify-center gap-2 py-64 text-foreground">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
<Trans>Loading</Trans>
|
<Trans>Loading</Trans>
|
||||||
</div>
|
</div>
|
||||||
@ -117,7 +122,7 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{envelope.recipients.length > 0 && (
|
{envelope.recipients.length > 0 && (
|
||||||
<div className="text-muted-foreground flex items-center">
|
<div className="flex items-center text-muted-foreground">
|
||||||
<Users2 className="mr-2 h-5 w-5" />
|
<Users2 className="mr-2 h-5 w-5" />
|
||||||
|
|
||||||
<StackAvatarsWithTooltip
|
<StackAvatarsWithTooltip
|
||||||
@ -188,7 +193,7 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
envelopeItem={envelope.envelopeItems[0]}
|
envelopeItem={envelope.envelopeItems[0]}
|
||||||
token={undefined}
|
token={undefined}
|
||||||
key={envelope.envelopeItems[0].id}
|
key={envelope.envelopeItems[0].id}
|
||||||
@ -202,16 +207,16 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
|
|||||||
className={cn('col-span-12 lg:col-span-6 xl:col-span-5', isMultiEnvelopeItem && 'mt-20')}
|
className={cn('col-span-12 lg:col-span-6 xl:col-span-5', isMultiEnvelopeItem && 'mt-20')}
|
||||||
>
|
>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<section className="border-border bg-widget flex flex-col rounded-xl border pb-4 pt-6">
|
<section className="flex flex-col rounded-xl border border-border bg-widget pb-4 pt-6">
|
||||||
<div className="flex flex-row items-center justify-between px-4">
|
<div className="flex flex-row items-center justify-between px-4">
|
||||||
<h3 className="text-foreground text-2xl font-semibold">
|
<h3 className="text-2xl font-semibold text-foreground">
|
||||||
{t(FRIENDLY_STATUS_MAP[envelope.status].labelExtended)}
|
{t(FRIENDLY_STATUS_MAP[envelope.status].labelExtended)}
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<DocumentPageViewDropdown envelope={envelope} />
|
<DocumentPageViewDropdown envelope={envelope} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 px-4 text-sm">
|
<p className="mt-2 px-4 text-sm text-muted-foreground">
|
||||||
{match(envelope.status)
|
{match(envelope.status)
|
||||||
.with(DocumentStatus.COMPLETED, () => (
|
.with(DocumentStatus.COMPLETED, () => (
|
||||||
<Trans>This document has been signed by all recipients</Trans>
|
<Trans>This document has been signed by all recipients</Trans>
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import { lazy } from 'react';
|
||||||
|
|
||||||
import { msg } from '@lingui/core/macro';
|
import { msg } from '@lingui/core/macro';
|
||||||
import { Trans, useLingui } from '@lingui/react/macro';
|
import { Trans, useLingui } from '@lingui/react/macro';
|
||||||
import { DocumentSigningOrder, SigningStatus } from '@prisma/client';
|
import { DocumentSigningOrder, SigningStatus } from '@prisma/client';
|
||||||
@ -14,14 +16,13 @@ import PDFViewerKonvaLazy from '@documenso/ui/components/pdf-viewer/pdf-viewer-k
|
|||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
import { PDFViewer } from '@documenso/ui/primitives/pdf-viewer';
|
import { PDFViewerSuspense } from '@documenso/ui/primitives/pdf-viewer.suspense';
|
||||||
import { Spinner } from '@documenso/ui/primitives/spinner';
|
import { Spinner } from '@documenso/ui/primitives/spinner';
|
||||||
|
|
||||||
import { TemplateBulkSendDialog } from '~/components/dialogs/template-bulk-send-dialog';
|
import { TemplateBulkSendDialog } from '~/components/dialogs/template-bulk-send-dialog';
|
||||||
import { TemplateDirectLinkDialog } from '~/components/dialogs/template-direct-link-dialog';
|
import { TemplateDirectLinkDialog } from '~/components/dialogs/template-direct-link-dialog';
|
||||||
import { TemplateUseDialog } from '~/components/dialogs/template-use-dialog';
|
import { TemplateUseDialog } from '~/components/dialogs/template-use-dialog';
|
||||||
import { EnvelopeRendererFileSelector } from '~/components/general/envelope-editor/envelope-file-selector';
|
import { EnvelopeRendererFileSelector } from '~/components/general/envelope-editor/envelope-file-selector';
|
||||||
import EnvelopeGenericPageRenderer from '~/components/general/envelope-editor/envelope-generic-page-renderer';
|
|
||||||
import { GenericErrorLayout } from '~/components/general/generic-error-layout';
|
import { GenericErrorLayout } from '~/components/general/generic-error-layout';
|
||||||
import { TemplateDirectLinkBadge } from '~/components/general/template/template-direct-link-badge';
|
import { TemplateDirectLinkBadge } from '~/components/general/template/template-direct-link-badge';
|
||||||
import { TemplatePageViewDocumentsTable } from '~/components/general/template/template-page-view-documents-table';
|
import { TemplatePageViewDocumentsTable } from '~/components/general/template/template-page-view-documents-table';
|
||||||
@ -34,6 +35,10 @@ import { useCurrentTeam } from '~/providers/team';
|
|||||||
|
|
||||||
import type { Route } from './+types/templates.$id._index';
|
import type { Route } from './+types/templates.$id._index';
|
||||||
|
|
||||||
|
const EnvelopeGenericPageRenderer = lazy(
|
||||||
|
async () => import('~/components/general/envelope-editor/envelope-generic-page-renderer'),
|
||||||
|
);
|
||||||
|
|
||||||
export default function TemplatePage({ params }: Route.ComponentProps) {
|
export default function TemplatePage({ params }: Route.ComponentProps) {
|
||||||
const { t } = useLingui();
|
const { t } = useLingui();
|
||||||
const { user } = useSession();
|
const { user } = useSession();
|
||||||
@ -51,7 +56,7 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
|
|||||||
|
|
||||||
if (isLoadingEnvelope) {
|
if (isLoadingEnvelope) {
|
||||||
return (
|
return (
|
||||||
<div className="text-foreground flex w-screen flex-col items-center justify-center gap-2 py-64">
|
<div className="flex w-screen flex-col items-center justify-center gap-2 py-64 text-foreground">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
<Trans>Loading</Trans>
|
<Trans>Loading</Trans>
|
||||||
</div>
|
</div>
|
||||||
@ -205,7 +210,7 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
|
|||||||
documentMeta={mockedDocumentMeta}
|
documentMeta={mockedDocumentMeta}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<PDFViewer
|
<PDFViewerSuspense
|
||||||
envelopeItem={envelope.envelopeItems[0]}
|
envelopeItem={envelope.envelopeItems[0]}
|
||||||
token={undefined}
|
token={undefined}
|
||||||
version="signed"
|
version="signed"
|
||||||
@ -219,9 +224,9 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
|
|||||||
className={cn('col-span-12 lg:col-span-6 xl:col-span-5', isMultiEnvelopeItem && 'mt-20')}
|
className={cn('col-span-12 lg:col-span-6 xl:col-span-5', isMultiEnvelopeItem && 'mt-20')}
|
||||||
>
|
>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<section className="border-border bg-widget flex flex-col rounded-xl border pb-4 pt-6">
|
<section className="flex flex-col rounded-xl border border-border bg-widget pb-4 pt-6">
|
||||||
<div className="flex flex-row items-center justify-between px-4">
|
<div className="flex flex-row items-center justify-between px-4">
|
||||||
<h3 className="text-foreground text-2xl font-semibold">
|
<h3 className="text-2xl font-semibold text-foreground">
|
||||||
<Trans>Template</Trans>
|
<Trans>Template</Trans>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@ -239,7 +244,7 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 px-4 text-sm">
|
<p className="mt-2 px-4 text-sm text-muted-foreground">
|
||||||
<Trans>Manage and view template</Trans>
|
<Trans>Manage and view template</Trans>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
import { useEffect } from 'react';
|
|
||||||
|
|
||||||
import { useLingui } from '@lingui/react';
|
import { useLingui } from '@lingui/react';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import { DocumentStatus, FieldType, RecipientRole } from '@prisma/client';
|
import { DocumentStatus, FieldType, RecipientRole } from '@prisma/client';
|
||||||
import { CheckCircle2, Clock8, DownloadIcon } from 'lucide-react';
|
import { CheckCircle2, Clock8, DownloadIcon, Loader2 } from 'lucide-react';
|
||||||
import { Link, useRevalidator } from 'react-router';
|
import { Link } from 'react-router';
|
||||||
import { match } from 'ts-pattern';
|
import { match } from 'ts-pattern';
|
||||||
|
|
||||||
import signingCelebration from '@documenso/assets/images/signing-celebration.png';
|
import signingCelebration from '@documenso/assets/images/signing-celebration.png';
|
||||||
@ -18,7 +16,7 @@ import { getRecipientSignatures } from '@documenso/lib/server-only/recipient/get
|
|||||||
import { getUserByEmail } from '@documenso/lib/server-only/user/get-user-by-email';
|
import { getUserByEmail } from '@documenso/lib/server-only/user/get-user-by-email';
|
||||||
import { isDocumentCompleted } from '@documenso/lib/utils/document';
|
import { isDocumentCompleted } from '@documenso/lib/utils/document';
|
||||||
import { env } from '@documenso/lib/utils/env';
|
import { env } from '@documenso/lib/utils/env';
|
||||||
import type { Document } from '@documenso/prisma/types/document-legacy-schema';
|
import { trpc } from '@documenso/trpc/react';
|
||||||
import { DocumentShareButton } from '@documenso/ui/components/document/document-share-button';
|
import { DocumentShareButton } from '@documenso/ui/components/document/document-share-button';
|
||||||
import { SigningCard3D } from '@documenso/ui/components/signing-card';
|
import { SigningCard3D } from '@documenso/ui/components/signing-card';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
@ -84,6 +82,13 @@ export async function loader({ params, request }: Route.LoaderArgs) {
|
|||||||
|
|
||||||
const canSignUp = !isExistingUser && env('NEXT_PUBLIC_DISABLE_SIGNUP') !== 'true';
|
const canSignUp = !isExistingUser && env('NEXT_PUBLIC_DISABLE_SIGNUP') !== 'true';
|
||||||
|
|
||||||
|
const canRedirectToFolder =
|
||||||
|
user && document.userId === user.id && document.folderId && document.team?.url;
|
||||||
|
|
||||||
|
const returnToHomePath = canRedirectToFolder
|
||||||
|
? `/t/${document.team.url}/documents/f/${document.folderId}`
|
||||||
|
: '/';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isDocumentAccessValid: true,
|
isDocumentAccessValid: true,
|
||||||
canSignUp,
|
canSignUp,
|
||||||
@ -92,6 +97,7 @@ export async function loader({ params, request }: Route.LoaderArgs) {
|
|||||||
signatures,
|
signatures,
|
||||||
document,
|
document,
|
||||||
recipient,
|
recipient,
|
||||||
|
returnToHomePath,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,8 +115,27 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
document,
|
document,
|
||||||
recipient,
|
recipient,
|
||||||
recipientEmail,
|
recipientEmail,
|
||||||
|
returnToHomePath,
|
||||||
} = loaderData;
|
} = loaderData;
|
||||||
|
|
||||||
|
// Poll signing status every few seconds
|
||||||
|
const { data: signingStatusData } = trpc.envelope.signingStatus.useQuery(
|
||||||
|
{
|
||||||
|
token: recipient?.token || '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
refetchInterval: 3000,
|
||||||
|
initialData: match(document?.status)
|
||||||
|
.with(DocumentStatus.COMPLETED, () => ({ status: 'COMPLETED' }) as const)
|
||||||
|
.with(DocumentStatus.REJECTED, () => ({ status: 'REJECTED' }) as const)
|
||||||
|
.with(DocumentStatus.PENDING, () => ({ status: 'PENDING' }) as const)
|
||||||
|
.otherwise(() => ({ status: 'PENDING' }) as const),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
// Use signing status from query if available, otherwise fall back to document status
|
||||||
|
const signingStatus = signingStatusData?.status ?? 'PENDING';
|
||||||
|
|
||||||
if (!isDocumentAccessValid) {
|
if (!isDocumentAccessValid) {
|
||||||
return <DocumentSigningAuthPageView email={recipientEmail} />;
|
return <DocumentSigningAuthPageView email={recipientEmail} />;
|
||||||
}
|
}
|
||||||
@ -118,7 +143,7 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
'-mx-4 flex flex-col items-center overflow-hidden px-4 pt-24 md:-mx-8 md:px-8 lg:pt-36 xl:pt-44',
|
'-mx-4 flex flex-col items-center overflow-hidden px-4 pt-16 md:-mx-8 md:px-8 lg:pt-20 xl:pt-28',
|
||||||
{ 'pt-0 lg:pt-0 xl:pt-0': canSignUp },
|
{ 'pt-0 lg:pt-0 xl:pt-0': canSignUp },
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -152,8 +177,8 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
{recipient.role === RecipientRole.APPROVER && <Trans>Document Approved</Trans>}
|
{recipient.role === RecipientRole.APPROVER && <Trans>Document Approved</Trans>}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
{match({ status: document.status, deletedAt: document.deletedAt })
|
{match({ status: signingStatus, deletedAt: document.deletedAt })
|
||||||
.with({ status: DocumentStatus.COMPLETED }, () => (
|
.with({ status: 'COMPLETED' }, () => (
|
||||||
<div className="text-documenso-700 mt-4 flex items-center text-center">
|
<div className="text-documenso-700 mt-4 flex items-center text-center">
|
||||||
<CheckCircle2 className="mr-2 h-5 w-5" />
|
<CheckCircle2 className="mr-2 h-5 w-5" />
|
||||||
<span className="text-sm">
|
<span className="text-sm">
|
||||||
@ -161,6 +186,14 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
.with({ status: 'PROCESSING' }, () => (
|
||||||
|
<div className="mt-4 flex items-center text-center text-orange-600">
|
||||||
|
<Loader2 className="mr-2 h-5 w-5 animate-spin" />
|
||||||
|
<span className="text-sm">
|
||||||
|
<Trans>Processing document</Trans>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
.with({ deletedAt: null }, () => (
|
.with({ deletedAt: null }, () => (
|
||||||
<div className="mt-4 flex items-center text-center text-blue-600">
|
<div className="mt-4 flex items-center text-center text-blue-600">
|
||||||
<Clock8 className="mr-2 h-5 w-5" />
|
<Clock8 className="mr-2 h-5 w-5" />
|
||||||
@ -178,14 +211,22 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
{match({ status: document.status, deletedAt: document.deletedAt })
|
{match({ status: signingStatus, deletedAt: document.deletedAt })
|
||||||
.with({ status: DocumentStatus.COMPLETED }, () => (
|
.with({ status: 'COMPLETED' }, () => (
|
||||||
<p className="text-muted-foreground/60 mt-2.5 max-w-[60ch] text-center text-sm font-medium md:text-base">
|
<p className="text-muted-foreground/60 mt-2.5 max-w-[60ch] text-center text-sm font-medium md:text-base">
|
||||||
<Trans>
|
<Trans>
|
||||||
Everyone has signed! You will receive an Email copy of the signed document.
|
Everyone has signed! You will receive an Email copy of the signed document.
|
||||||
</Trans>
|
</Trans>
|
||||||
</p>
|
</p>
|
||||||
))
|
))
|
||||||
|
.with({ status: 'PROCESSING' }, () => (
|
||||||
|
<p className="text-muted-foreground/60 mt-2.5 max-w-[60ch] text-center text-sm font-medium md:text-base">
|
||||||
|
<Trans>
|
||||||
|
All recipients have signed. The document is being processed and you will receive
|
||||||
|
an Email copy shortly.
|
||||||
|
</Trans>
|
||||||
|
</p>
|
||||||
|
))
|
||||||
.with({ deletedAt: null }, () => (
|
.with({ deletedAt: null }, () => (
|
||||||
<p className="text-muted-foreground/60 mt-2.5 max-w-[60ch] text-center text-sm font-medium md:text-base">
|
<p className="text-muted-foreground/60 mt-2.5 max-w-[60ch] text-center text-sm font-medium md:text-base">
|
||||||
<Trans>
|
<Trans>
|
||||||
@ -202,23 +243,35 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
</p>
|
</p>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
<div className="mt-8 flex w-full max-w-sm items-center justify-center gap-4">
|
<div className="mt-8 flex w-full max-w-xs flex-col items-stretch gap-4 md:w-auto md:max-w-none md:flex-row md:items-center">
|
||||||
<DocumentShareButton documentId={document.id} token={recipient.token} />
|
<DocumentShareButton
|
||||||
|
documentId={document.id}
|
||||||
|
token={recipient.token}
|
||||||
|
className="w-full max-w-none md:flex-1"
|
||||||
|
/>
|
||||||
|
|
||||||
{isDocumentCompleted(document.status) && (
|
{isDocumentCompleted(document) && (
|
||||||
<EnvelopeDownloadDialog
|
<EnvelopeDownloadDialog
|
||||||
envelopeId={document.envelopeId}
|
envelopeId={document.envelopeId}
|
||||||
envelopeStatus={document.status}
|
envelopeStatus={document.status}
|
||||||
envelopeItems={document.envelopeItems}
|
envelopeItems={document.envelopeItems}
|
||||||
token={recipient?.token}
|
token={recipient?.token}
|
||||||
trigger={
|
trigger={
|
||||||
<Button type="button" variant="outline" className="flex-1">
|
<Button type="button" variant="outline" className="flex-1 md:flex-initial">
|
||||||
<DownloadIcon className="mr-2 h-5 w-5" />
|
<DownloadIcon className="mr-2 h-5 w-5" />
|
||||||
<Trans>Download</Trans>
|
<Trans>Download</Trans>
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{user && (
|
||||||
|
<Button asChild>
|
||||||
|
<Link to={returnToHomePath}>
|
||||||
|
<Trans>Go Back Home</Trans>
|
||||||
|
</Link>
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -238,41 +291,8 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
|
|||||||
<ClaimAccount defaultName={recipientName} defaultEmail={recipient.email} />
|
<ClaimAccount defaultName={recipientName} defaultEmail={recipient.email} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{user && (
|
|
||||||
<Link to="/" className="text-documenso-700 hover:text-documenso-600 mt-2">
|
|
||||||
<Trans>Go Back Home</Trans>
|
|
||||||
</Link>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<PollUntilDocumentCompleted document={document} />
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PollUntilDocumentCompletedProps = {
|
|
||||||
document: Pick<Document, 'id' | 'status' | 'deletedAt'>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const PollUntilDocumentCompleted = ({ document }: PollUntilDocumentCompletedProps) => {
|
|
||||||
const { revalidate } = useRevalidator();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (isDocumentCompleted(document.status)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const interval = setInterval(() => {
|
|
||||||
if (window.document.hasFocus()) {
|
|
||||||
void revalidate();
|
|
||||||
}
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
}, [document.status]);
|
|
||||||
|
|
||||||
return <></>;
|
|
||||||
};
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import sharp from 'sharp';
|
|||||||
import { getFileServerSide } from '@documenso/lib/universal/upload/get-file.server';
|
import { getFileServerSide } from '@documenso/lib/universal/upload/get-file.server';
|
||||||
import { prisma } from '@documenso/prisma';
|
import { prisma } from '@documenso/prisma';
|
||||||
|
|
||||||
import type { Route } from './+types/branding.logo.team.$teamId';
|
import type { Route } from './+types/branding.logo.organisation.$orgId';
|
||||||
|
|
||||||
export async function loader({ params }: Route.LoaderArgs) {
|
export async function loader({ params }: Route.LoaderArgs) {
|
||||||
const organisationId = params.orgId;
|
const organisationId = params.orgId;
|
||||||
@ -69,7 +69,7 @@ export async function loader({ params }: Route.LoaderArgs) {
|
|||||||
})
|
})
|
||||||
.toBuffer();
|
.toBuffer();
|
||||||
|
|
||||||
return new Response(img, {
|
return new Response(Buffer.from(img), {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'image/png',
|
'Content-Type': 'image/png',
|
||||||
'Content-Length': img.length.toString(),
|
'Content-Length': img.length.toString(),
|
||||||
|
|||||||
@ -75,6 +75,7 @@ export const loader = async ({ request, params }: Route.LoaderArgs) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
token,
|
||||||
document: {
|
document: {
|
||||||
...document,
|
...document,
|
||||||
fields,
|
fields,
|
||||||
@ -86,7 +87,7 @@ export default function EmbeddingAuthoringDocumentEditPage() {
|
|||||||
const { _ } = useLingui();
|
const { _ } = useLingui();
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
|
|
||||||
const { document } = useLoaderData<typeof loader>();
|
const { document, token } = useLoaderData<typeof loader>();
|
||||||
|
|
||||||
const [hasFinishedInit, setHasFinishedInit] = useState(false);
|
const [hasFinishedInit, setHasFinishedInit] = useState(false);
|
||||||
|
|
||||||
@ -321,7 +322,8 @@ export default function EmbeddingAuthoringDocumentEditPage() {
|
|||||||
|
|
||||||
<ConfigureFieldsView
|
<ConfigureFieldsView
|
||||||
configData={configuration!}
|
configData={configuration!}
|
||||||
documentData={document.documentData}
|
presignToken={token}
|
||||||
|
envelopeItem={document.envelopeItems[0]}
|
||||||
defaultValues={fields ?? undefined}
|
defaultValues={fields ?? undefined}
|
||||||
onBack={canGoBack ? handleBackToConfig : undefined}
|
onBack={canGoBack ? handleBackToConfig : undefined}
|
||||||
onSubmit={handleConfigureFieldsSubmit}
|
onSubmit={handleConfigureFieldsSubmit}
|
||||||
|
|||||||
@ -75,6 +75,7 @@ export const loader = async ({ request, params }: Route.LoaderArgs) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
token,
|
||||||
template: {
|
template: {
|
||||||
...template,
|
...template,
|
||||||
fields,
|
fields,
|
||||||
@ -86,7 +87,7 @@ export default function EmbeddingAuthoringTemplateEditPage() {
|
|||||||
const { _ } = useLingui();
|
const { _ } = useLingui();
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
|
|
||||||
const { template } = useLoaderData<typeof loader>();
|
const { template, token } = useLoaderData<typeof loader>();
|
||||||
|
|
||||||
const [hasFinishedInit, setHasFinishedInit] = useState(false);
|
const [hasFinishedInit, setHasFinishedInit] = useState(false);
|
||||||
|
|
||||||
@ -321,7 +322,8 @@ export default function EmbeddingAuthoringTemplateEditPage() {
|
|||||||
|
|
||||||
<ConfigureFieldsView
|
<ConfigureFieldsView
|
||||||
configData={configuration!}
|
configData={configuration!}
|
||||||
documentData={template.templateDocumentData}
|
presignToken={token}
|
||||||
|
envelopeItem={template.envelopeItems[0]}
|
||||||
defaultValues={fields ?? undefined}
|
defaultValues={fields ?? undefined}
|
||||||
onBack={canGoBack ? handleBackToConfig : undefined}
|
onBack={canGoBack ? handleBackToConfig : undefined}
|
||||||
onSubmit={handleConfigureFieldsSubmit}
|
onSubmit={handleConfigureFieldsSubmit}
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
"with:env": "dotenv -e ../../.env -e ../../.env.local --"
|
"with:env": "dotenv -e ../../.env -e ../../.env.local --"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cantoo/pdf-lib": "^2.5.2",
|
"@cantoo/pdf-lib": "^2.5.3",
|
||||||
"@documenso/api": "*",
|
"@documenso/api": "*",
|
||||||
"@documenso/assets": "*",
|
"@documenso/assets": "*",
|
||||||
"@documenso/auth": "*",
|
"@documenso/auth": "*",
|
||||||
@ -26,85 +26,86 @@
|
|||||||
"@documenso/ui": "*",
|
"@documenso/ui": "*",
|
||||||
"@epic-web/remember": "^1.1.0",
|
"@epic-web/remember": "^1.1.0",
|
||||||
"@faker-js/faker": "^10.1.0",
|
"@faker-js/faker": "^10.1.0",
|
||||||
"@hono/node-server": "^1.13.7",
|
"@hono/node-server": "^1.19.6",
|
||||||
"@hono/trpc-server": "^0.3.4",
|
"@hono/trpc-server": "^0.4.0",
|
||||||
"@hookform/resolvers": "^3.1.0",
|
"@hono/standard-validator": "^0.2.0",
|
||||||
"@lingui/core": "^5.2.0",
|
"@hookform/resolvers": "^3",
|
||||||
"@lingui/detect-locale": "^5.2.0",
|
"@lingui/core": "^5.6.0",
|
||||||
"@lingui/macro": "^5.2.0",
|
"@lingui/detect-locale": "^5.6.0",
|
||||||
"@lingui/react": "^5.2.0",
|
"@lingui/macro": "^5.6.0",
|
||||||
|
"@lingui/react": "^5.6.0",
|
||||||
"@oslojs/crypto": "^1.0.1",
|
"@oslojs/crypto": "^1.0.1",
|
||||||
"@oslojs/encoding": "^1.1.0",
|
"@oslojs/encoding": "^1.1.0",
|
||||||
"@react-router/node": "^7.6.0",
|
"@react-router/node": "^7.9.6",
|
||||||
"@react-router/serve": "^7.6.0",
|
"@react-router/serve": "^7.9.6",
|
||||||
"@simplewebauthn/browser": "^9.0.1",
|
"@simplewebauthn/browser": "^9.0.1",
|
||||||
"@simplewebauthn/server": "^9.0.3",
|
"@simplewebauthn/server": "^9.0.3",
|
||||||
"autoprefixer": "^10.4.13",
|
"@tanstack/react-query": "5.90.10",
|
||||||
|
"autoprefixer": "^10.4.22",
|
||||||
"colord": "^2.9.3",
|
"colord": "^2.9.3",
|
||||||
"content-disposition": "^0.5.4",
|
"content-disposition": "^1.0.1",
|
||||||
"framer-motion": "^10.12.8",
|
"framer-motion": "^12.23.24",
|
||||||
"hono": "4.7.0",
|
"hono": "4.10.6",
|
||||||
"hono-rate-limiter": "^0.4.2",
|
"hono-rate-limiter": "^0.4.2",
|
||||||
"hono-react-router-adapter": "^0.6.2",
|
"hono-react-router-adapter": "^0.6.5",
|
||||||
"input-otp": "^1.2.4",
|
"input-otp": "^1.4.2",
|
||||||
"isbot": "^5.1.17",
|
"isbot": "^5.1.32",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"konva": "^10.0.9",
|
||||||
"konva": "^10.0.2",
|
"lucide-react": "^0.554.0",
|
||||||
"lucide-react": "^0.279.0",
|
"luxon": "^3.7.2",
|
||||||
"luxon": "^3.4.0",
|
"nanoid": "^5.1.6",
|
||||||
"papaparse": "^5.4.1",
|
"papaparse": "^5.5.3",
|
||||||
"plausible-tracker": "^0.3.9",
|
"posthog-js": "^1.297.2",
|
||||||
"posthog-js": "^1.245.0",
|
"posthog-node": "^4.18.0",
|
||||||
"posthog-node": "^4.17.0",
|
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"react-call": "^1.7.0",
|
"react-call": "^1.8.1",
|
||||||
"react-dom": "^18",
|
"react-dom": "^18",
|
||||||
"react-dropzone": "^14.2.3",
|
"react-dropzone": "^14.3.8",
|
||||||
"react-hook-form": "^7.43.9",
|
"react-hook-form": "^7.66.1",
|
||||||
"react-hotkeys-hook": "^4.4.1",
|
"react-hotkeys-hook": "^4.6.2",
|
||||||
"react-icons": "^5.4.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-rnd": "^10.4.1",
|
"react-rnd": "^10.5.2",
|
||||||
"react-router": "^7.6.0",
|
"react-router": "^7.9.6",
|
||||||
"recharts": "^2.7.2",
|
"recharts": "^2.15.4",
|
||||||
"remeda": "^2.17.3",
|
"remeda": "^2.32.0",
|
||||||
"remix-themes": "^2.0.4",
|
"remix-themes": "^2.0.4",
|
||||||
"satori": "^0.12.1",
|
"satori": "^0.18.3",
|
||||||
"sharp": "0.32.6",
|
"sharp": "0.34.5",
|
||||||
"tailwindcss": "^3.4.15",
|
"tailwindcss": "^3.4.18",
|
||||||
"ts-pattern": "^5.0.5",
|
"ts-pattern": "^5.9.0",
|
||||||
"ua-parser-js": "^1.0.37",
|
"ua-parser-js": "^1.0.41",
|
||||||
"uqr": "^0.1.2"
|
"uqr": "^0.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.7",
|
"@babel/core": "^7.28.5",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@lingui/babel-plugin-lingui-macro": "^5.2.0",
|
"@lingui/babel-plugin-lingui-macro": "^5.6.0",
|
||||||
"@lingui/vite-plugin": "^5.3.1",
|
"@lingui/vite-plugin": "^5.6.0",
|
||||||
"@react-router/dev": "^7.6.0",
|
"@react-router/dev": "^7.9.6",
|
||||||
"@react-router/remix-routes-option-adapter": "^7.6.0",
|
"@react-router/remix-routes-option-adapter": "^7.9.6",
|
||||||
"@rollup/plugin-babel": "^6.0.4",
|
"@rollup/plugin-babel": "^6.1.0",
|
||||||
"@rollup/plugin-commonjs": "^28.0.2",
|
"@rollup/plugin-commonjs": "^28.0.9",
|
||||||
"@rollup/plugin-node-resolve": "^16.0.0",
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||||
"@rollup/plugin-typescript": "^12.1.2",
|
"@rollup/plugin-typescript": "^12.3.0",
|
||||||
"@simplewebauthn/types": "^9.0.1",
|
"@simplewebauthn/types": "^9.0.1",
|
||||||
"@types/content-disposition": "^0.5.9",
|
"@types/content-disposition": "^0.5.9",
|
||||||
"@types/formidable": "^2.0.6",
|
"@types/formidable": "^3.4.6",
|
||||||
"@types/luxon": "^3.3.1",
|
"@types/luxon": "^3.7.1",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/papaparse": "^5.3.15",
|
"@types/papaparse": "^5.5.0",
|
||||||
"@types/react": "^18",
|
"@types/react": "18.3.27",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"@types/ua-parser-js": "^0.7.39",
|
"@types/ua-parser-js": "^0.7.39",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"esbuild": "^0.25.4",
|
"esbuild": "^0.27.0",
|
||||||
"remix-flat-routes": "^0.8.4",
|
"remix-flat-routes": "^0.8.5",
|
||||||
"rollup": "^4.34.5",
|
"rollup": "^4.53.3",
|
||||||
"tsx": "^4.19.2",
|
"tsx": "^4.20.6",
|
||||||
"typescript": "5.6.2",
|
"typescript": "5.6.2",
|
||||||
"vite": "^6.3.5",
|
"vite": "^7.2.4",
|
||||||
"vite-plugin-babel-macros": "^1.0.6",
|
"vite-plugin-babel-macros": "^1.0.6",
|
||||||
"vite-tsconfig-paths": "^5.1.4"
|
"vite-tsconfig-paths": "^5.1.4"
|
||||||
},
|
},
|
||||||
"version": "2.0.12"
|
"version": "2.0.14"
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ import { Hono } from 'hono';
|
|||||||
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
|
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
|
||||||
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT } from '@documenso/lib/constants/app';
|
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT } from '@documenso/lib/constants/app';
|
||||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||||
|
import { verifyEmbeddingPresignToken } from '@documenso/lib/server-only/embedding-presign/verify-embedding-presign-token';
|
||||||
import { getTeamById } from '@documenso/lib/server-only/team/get-team';
|
import { getTeamById } from '@documenso/lib/server-only/team/get-team';
|
||||||
import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
|
import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
|
||||||
import { getPresignPostUrl } from '@documenso/lib/universal/upload/server-actions';
|
import { getPresignPostUrl } from '@documenso/lib/universal/upload/server-actions';
|
||||||
@ -16,6 +17,7 @@ import {
|
|||||||
type TGetPresignedPostUrlResponse,
|
type TGetPresignedPostUrlResponse,
|
||||||
ZGetEnvelopeItemFileDownloadRequestParamsSchema,
|
ZGetEnvelopeItemFileDownloadRequestParamsSchema,
|
||||||
ZGetEnvelopeItemFileRequestParamsSchema,
|
ZGetEnvelopeItemFileRequestParamsSchema,
|
||||||
|
ZGetEnvelopeItemFileRequestQuerySchema,
|
||||||
ZGetEnvelopeItemFileTokenDownloadRequestParamsSchema,
|
ZGetEnvelopeItemFileTokenDownloadRequestParamsSchema,
|
||||||
ZGetEnvelopeItemFileTokenRequestParamsSchema,
|
ZGetEnvelopeItemFileTokenRequestParamsSchema,
|
||||||
ZGetPresignedPostUrlRequestSchema,
|
ZGetPresignedPostUrlRequestSchema,
|
||||||
@ -68,12 +70,24 @@ export const filesRoute = new Hono<HonoEnv>()
|
|||||||
.get(
|
.get(
|
||||||
'/envelope/:envelopeId/envelopeItem/:envelopeItemId',
|
'/envelope/:envelopeId/envelopeItem/:envelopeItemId',
|
||||||
sValidator('param', ZGetEnvelopeItemFileRequestParamsSchema),
|
sValidator('param', ZGetEnvelopeItemFileRequestParamsSchema),
|
||||||
|
sValidator('query', ZGetEnvelopeItemFileRequestQuerySchema),
|
||||||
async (c) => {
|
async (c) => {
|
||||||
const { envelopeId, envelopeItemId } = c.req.valid('param');
|
const { envelopeId, envelopeItemId } = c.req.valid('param');
|
||||||
|
const { token } = c.req.query();
|
||||||
|
|
||||||
const session = await getOptionalSession(c);
|
const session = await getOptionalSession(c);
|
||||||
|
|
||||||
if (!session.user) {
|
let userId = session.user?.id;
|
||||||
|
|
||||||
|
if (token) {
|
||||||
|
const presignToken = await verifyEmbeddingPresignToken({
|
||||||
|
token,
|
||||||
|
}).catch(() => undefined);
|
||||||
|
|
||||||
|
userId = presignToken?.userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userId) {
|
||||||
return c.json({ error: 'Unauthorized' }, 401);
|
return c.json({ error: 'Unauthorized' }, 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +118,7 @@ export const filesRoute = new Hono<HonoEnv>()
|
|||||||
}
|
}
|
||||||
|
|
||||||
const team = await getTeamById({
|
const team = await getTeamById({
|
||||||
userId: session.user.id,
|
userId: userId,
|
||||||
teamId: envelope.teamId,
|
teamId: envelope.teamId,
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
|
|||||||
@ -36,6 +36,14 @@ export type TGetEnvelopeItemFileRequestParams = z.infer<
|
|||||||
typeof ZGetEnvelopeItemFileRequestParamsSchema
|
typeof ZGetEnvelopeItemFileRequestParamsSchema
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
export const ZGetEnvelopeItemFileRequestQuerySchema = z.object({
|
||||||
|
token: z.string().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type TGetEnvelopeItemFileRequestQuery = z.infer<
|
||||||
|
typeof ZGetEnvelopeItemFileRequestQuerySchema
|
||||||
|
>;
|
||||||
|
|
||||||
export const ZGetEnvelopeItemFileTokenRequestParamsSchema = z.object({
|
export const ZGetEnvelopeItemFileTokenRequestParamsSchema = z.object({
|
||||||
token: z.string().min(1),
|
token: z.string().min(1),
|
||||||
envelopeItemId: z.string().min(1),
|
envelopeItemId: z.string().min(1),
|
||||||
|
|||||||
@ -49,7 +49,7 @@ export default defineConfig({
|
|||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
ssr: {
|
ssr: {
|
||||||
noExternal: ['react-dropzone', 'plausible-tracker', 'pdfjs-dist'],
|
noExternal: ['react-dropzone', 'plausible-tracker'],
|
||||||
external: [
|
external: [
|
||||||
'@node-rs/bcrypt',
|
'@node-rs/bcrypt',
|
||||||
'@prisma/client',
|
'@prisma/client',
|
||||||
|
|||||||
769
build.log
Normal file
769
build.log
Normal file
@ -0,0 +1,769 @@
|
|||||||
|
|
||||||
|
> @documenso/remix@2.0.14 build
|
||||||
|
> ./.bin/build.sh
|
||||||
|
|
||||||
|
[Build]: Extracting and compiling translations
|
||||||
|
|
||||||
|
> @documenso/root@2.0.14 translate
|
||||||
|
> npm run translate:extract && npm run translate:compile
|
||||||
|
|
||||||
|
|
||||||
|
> @documenso/root@2.0.14 translate:extract
|
||||||
|
> lingui extract --clean
|
||||||
|
|
||||||
|
✔ Done in 2s
|
||||||
|
Catalog statistics for packages/lib/translations/{locale}/web:
|
||||||
|
┌─────────────┬─────────────┬─────────┐
|
||||||
|
│ Language │ Total count │ Missing │
|
||||||
|
├─────────────┼─────────────┼─────────┤
|
||||||
|
│ en (source) │ 2311 │ - │
|
||||||
|
│ de │ 2311 │ 23 │
|
||||||
|
│ es │ 2311 │ 23 │
|
||||||
|
│ fr │ 2311 │ 23 │
|
||||||
|
│ it │ 2311 │ 26 │
|
||||||
|
│ ja │ 2311 │ 23 │
|
||||||
|
│ ko │ 2311 │ 23 │
|
||||||
|
│ pl │ 2311 │ 23 │
|
||||||
|
│ pt-BR │ 2311 │ 69 │
|
||||||
|
│ zh │ 2311 │ 23 │
|
||||||
|
└─────────────┴─────────────┴─────────┘
|
||||||
|
|
||||||
|
(Use "npm run translate:extract" to update catalogs with new messages.)
|
||||||
|
(Use "npm run translate:compile" to compile catalogs for production. Alternatively, use bundler plugins: https://lingui.dev/ref/cli#compiling-catalogs-in-ci)
|
||||||
|
|
||||||
|
> @documenso/root@2.0.14 translate:compile
|
||||||
|
> lingui compile
|
||||||
|
|
||||||
|
Compiling message catalogs…
|
||||||
|
Done in 943ms
|
||||||
|
[Build]: Building app
|
||||||
|
|
||||||
|
> @documenso/remix@2.0.14 build:app
|
||||||
|
> npm run typecheck && cross-env NODE_ENV=production react-router build
|
||||||
|
|
||||||
|
|
||||||
|
> @documenso/remix@2.0.14 typecheck
|
||||||
|
> react-router typegen && tsc
|
||||||
|
|
||||||
|
app/components/forms/email-preferences-form.tsx(66,7): error TS2322: Type 'JsonValue' is not assignable to type '{ recipientSigningRequest?: boolean | undefined; recipientRemoved?: boolean | undefined; recipientSigned?: boolean | undefined; documentPending?: boolean | undefined; documentCompleted?: boolean | undefined; documentDeleted?: boolean | undefined; ownerDocumentCompleted?: boolean | undefined; } | null | undefined'.
|
||||||
|
Type 'string' has no properties in common with type '{ recipientSigningRequest?: boolean | undefined; recipientRemoved?: boolean | undefined; recipientSigned?: boolean | undefined; documentPending?: boolean | undefined; documentCompleted?: boolean | undefined; documentDeleted?: boolean | undefined; ownerDocumentCompleted?: boolean | undefined; }'.
|
||||||
|
app/components/forms/email-preferences-form.tsx(81,41): error TS2345: Argument of type '(data: { emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }) => Promise<...>' is not assignable to parameter of type 'SubmitHandler<TFieldValues>'.
|
||||||
|
Types of parameters 'data' and 'data' are incompatible.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }': emailReplyTo, emailId, emailDocumentSettings
|
||||||
|
app/components/forms/email-preferences-form.tsx(88,15): error TS2322: Type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValues>' is not assignable to type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }> ...'.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, TFieldVal...' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }': emailReplyTo, emailId, emailDocumentSettings
|
||||||
|
app/components/forms/email-preferences-form.tsx(129,13): error TS2322: Type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValues>' is not assignable to type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }> ...'.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, TFieldVal...' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }': emailReplyTo, emailId, emailDocumentSettings
|
||||||
|
app/components/forms/email-preferences-form.tsx(179,13): error TS2322: Type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValues>' is not assignable to type 'Control<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }> ...'.
|
||||||
|
Type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, TFieldValu...' is not assignable to type 'Resolver<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, TFieldVal...' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }, { ...; }>...'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ emailReplyTo: string | null; emailId: string | null; emailDocumentSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null; }': emailReplyTo, emailId, emailDocumentSettings
|
||||||
|
app/components/forms/subscription-claim-form.tsx(43,7): error TS2322: Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; } | undefined'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; } | undefined'.
|
||||||
|
app/components/forms/subscription-claim-form.tsx(49,41): error TS2345: Argument of type '(data: { name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }) => Promise<...>' is not assignable to parameter of type 'SubmitHandler<TFieldValues>'.
|
||||||
|
Types of parameters 'data' and 'data' are incompatible.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/forms/subscription-claim-form.tsx(52,13): error TS2322: Type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues> | undefined' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }> | undefined'.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, TFieldValues> | Promise<...>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/forms/subscription-claim-form.tsx(68,13): error TS2322: Type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues> | undefined' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }> | undefined'.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, TFieldValues> | Promise<...>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/forms/subscription-claim-form.tsx(92,13): error TS2322: Type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues> | undefined' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }> | undefined'.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, TFieldValues> | Promise<...>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/forms/subscription-claim-form.tsx(116,13): error TS2322: Type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues> | undefined' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }> | undefined'.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, TFieldValues> | Promise<...>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/forms/subscription-claim-form.tsx(148,19): error TS2322: Type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Control<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
The types of '_options.resolver' are incompatible between these types.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues> | undefined' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }> | undefined'.
|
||||||
|
Type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, TFieldValues>' is not assignable to type 'Resolver<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, any, { ...; }>'.
|
||||||
|
Type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, TFieldValues> | Promise<...>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverResult<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }, { ...; }> | Promise<...>'.
|
||||||
|
Type 'ResolverSuccess<TFieldValues>' is not assignable to type 'ResolverSuccess<{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }>'.
|
||||||
|
Type 'TFieldValues' is not assignable to type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Type 'FieldValues' is missing the following properties from type '{ name: string; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; ... 7 more ...; allowEnvelopes?: boolean | undefined; }; }': name, teamCount, memberCount, envelopeItemCount, flags
|
||||||
|
app/components/general/document-signing/document-signing-field-container.tsx(136,28): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
app/components/general/document-signing/document-signing-field-container.tsx(178,28): error TS2339: Property 'label' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'label' does not exist on type 'string'.
|
||||||
|
app/components/general/document-signing/document-signing-field-container.tsx(190,32): error TS2339: Property 'label' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'label' does not exist on type 'string'.
|
||||||
|
app/components/general/envelope-editor/envelope-generic-page-renderer.tsx(50,5): error TS2322: Type '{ inserted: boolean; customText: string; recipient: Pick<{ id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: JsonValue; ... 7 more ...; sendStatus: SendStatus; }, "id" | ... 2 more ... | "signingStatus">; ... 11 more ...; envelopeItemId: string; }[]' is not assignable to type 'GenericLocalField[]'.
|
||||||
|
Type '{ inserted: boolean; customText: string; recipient: Pick<{ id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: JsonValue | null; ... 7 more ...; sendStatus: $Enums.SendStatus; }, "id" | ... 2 more ... | "signingStatus">; ... 11 more ...; envelopeItemI...' is not assignable to type 'GenericLocalField'.
|
||||||
|
Type '{ inserted: boolean; customText: string; recipient: Pick<{ id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: JsonValue | null; ... 7 more ...; sendStatus: $Enums.SendStatus; }, "id" | ... 2 more ... | "signingStatus">; ... 11 more ...; envelopeItemI...' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
app/components/general/envelope-editor/envelope-generic-page-renderer.tsx(74,22): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
app/components/general/envelope-signing/envelope-signer-page-renderer.tsx(181,69): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
app/routes/_authenticated+/t.$teamUrl+/documents.$id.legacy_editor.tsx(137,9): error TS2322: Type '{ folder: null; envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 31 more ...; documentMetaId: string; }' is not assignable to type '{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; templateId?: number | ... 1 more ... | undefined; }'.
|
||||||
|
The types of 'documentMeta.emailSettings' are incompatible between these types.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; }'.
|
||||||
|
app/routes/_authenticated+/t.$teamUrl+/templates.$id.legacy_editor.tsx(109,9): error TS2322: Type '{ folder: null; envelopeId: string; type: $Enums.TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 29 more ...; documentMetaId: string; }' is not assignable to type '{ type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateMeta: { ...; }; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: null; templateId: number; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: null; templateId: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
app/routes/_internal+/[__htmltopdf]+/certificate.tsx(98,20): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/_internal+/[__htmltopdf]+/certificate.tsx(98,44): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
app/routes/_recipient+/d.$token+/_index.tsx(211,15): error TS2322: Type '{ readonly folder: null; readonly id: number; readonly envelopeId: string; readonly type: $Enums.TemplateType; readonly visibility: $Enums.DocumentVisibility; readonly externalId: string | null; ... 15 more ...; readonly envelopeItems: { ...; }[]; }' is not assignable to type 'Omit<{ type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateMeta: { ...; }; }, "user">'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ templateId: number; documentId: null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ templateId: number; documentId: null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
app/routes/_unauthenticated+/o.$orgUrl.signin.tsx(76,6): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/_unauthenticated+/o.$orgUrl.signin.tsx(76,43): error TS2339: Property 'authenticationPortal' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'authenticationPortal' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(45,39): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(45,63): error TS2339: Property 'embedSigningWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigningWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(46,25): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(46,49): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(51,32): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(51,56): error TS2339: Property 'embedSigning' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigning' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(161,39): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(161,63): error TS2339: Property 'embedSigningWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigningWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(162,25): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(162,49): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(164,32): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/direct.$token.tsx(164,56): error TS2339: Property 'embedSigning' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigning' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(64,39): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(64,63): error TS2339: Property 'embedSigningWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigningWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(65,25): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(65,49): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(70,32): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(70,56): error TS2339: Property 'embedSigning' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigning' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(197,39): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(197,63): error TS2339: Property 'embedSigningWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigningWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(198,25): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(198,49): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(200,32): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/_v0+/sign.$token.tsx(200,56): error TS2339: Property 'embedSigning' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigning' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/v1+/authoring+/_layout.tsx(35,37): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/v1+/authoring+/_layout.tsx(35,61): error TS2339: Property 'embedAuthoringWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedAuthoringWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/v1+/authoring+/document.edit.$id.tsx(112,88): error TS2345: Argument of type '() => { title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: $Enums.DocumentDistributionMethod; emailSettings: string | ... 4 more ... | JsonArray; ... 6 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' is not assignable to parameter of type '{ meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers: { .....'.
|
||||||
|
Type '() => { title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: $Enums.DocumentDistributionMethod; emailSettings: string | ... 4 more ... | JsonArray; ... 6 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' is not assignable to type '() => { meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers...'.
|
||||||
|
Call signature return types '{ title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: DocumentDistributionMethod; ... 7 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' and '{ meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers: { .....' are incompatible.
|
||||||
|
The types of 'meta.emailSettings' are incompatible between these types.
|
||||||
|
Type 'string | number | boolean | { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | JsonObject | JsonArray' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; }'.
|
||||||
|
Type 'string' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; }'.
|
||||||
|
app/routes/embed+/v1+/authoring+/document.edit.$id.tsx(144,75): error TS2345: Argument of type '() => { fields: { nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' is not assignable to parameter of type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | (() => { ...; } | null) | null'.
|
||||||
|
Type '() => { fields: { nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' is not assignable to type '() => { fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | null'.
|
||||||
|
Call signature return types '{ fields: { nativeId: number; formId: string; type: FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' and '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | null' are incompatible.
|
||||||
|
The types of 'fields' are incompatible between these types.
|
||||||
|
Type '{ nativeId: number; formId: string; type: FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; pageHeight: number; ... 7 more ...; nativeId?: number | undefined; }[]'.
|
||||||
|
Type '{ nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; pageHeight: number; ... 7 more ...; nativeId?: number | undefined; }'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'string | number | boolean | JsonObject | JsonArray | undefined' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | undefined'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | undefined'.
|
||||||
|
app/routes/embed+/v1+/authoring+/template.edit.$id.tsx(112,88): error TS2345: Argument of type '() => { title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: $Enums.DocumentDistributionMethod; emailSettings: string | ... 4 more ... | JsonArray; ... 6 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' is not assignable to parameter of type '{ meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers: { .....'.
|
||||||
|
Type '() => { title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: $Enums.DocumentDistributionMethod; emailSettings: string | ... 4 more ... | JsonArray; ... 6 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' is not assignable to type '() => { meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers...'.
|
||||||
|
Call signature return types '{ title: string; documentData: undefined; meta: { subject: string | undefined; message: string | undefined; distributionMethod: DocumentDistributionMethod; ... 7 more ...; redirectUrl: string | undefined; }; signers: { ...; }[]; }' and '{ meta: { timezone: string; signingOrder: "PARALLEL" | "SEQUENTIAL"; distributionMethod: "EMAIL" | "NONE"; emailSettings: { recipientSigningRequest: boolean; recipientRemoved: boolean; ... 4 more ...; ownerDocumentCompleted: boolean; }; ... 7 more ...; externalId?: string | undefined; }; title: string; signers: { .....' are incompatible.
|
||||||
|
The types of 'meta.emailSettings' are incompatible between these types.
|
||||||
|
Type 'string | number | boolean | { recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; } | JsonObject | JsonArray' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; }'.
|
||||||
|
Type 'string' is not assignable to type '{ recipientSigningRequest: boolean; recipientRemoved: boolean; recipientSigned: boolean; documentPending: boolean; documentCompleted: boolean; documentDeleted: boolean; ownerDocumentCompleted: boolean; }'.
|
||||||
|
app/routes/embed+/v1+/authoring+/template.edit.$id.tsx(144,75): error TS2345: Argument of type '() => { fields: { nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' is not assignable to parameter of type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | (() => { ...; } | null) | null'.
|
||||||
|
Type '() => { fields: { nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' is not assignable to type '() => { fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | null'.
|
||||||
|
Call signature return types '{ fields: { nativeId: number; formId: string; type: FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]; }' and '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; ... 8 more ...; nativeId?: number | undefined; }[]; } | null' are incompatible.
|
||||||
|
The types of 'fields' are incompatible between these types.
|
||||||
|
Type '{ nativeId: number; formId: string; type: FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; pageHeight: number; ... 7 more ...; nativeId?: number | undefined; }[]'.
|
||||||
|
Type '{ nativeId: number; formId: string; type: $Enums.FieldType; signerEmail: string; inserted: boolean; recipientId: number; pageNumber: number; pageX: number; pageY: number; pageWidth: number; pageHeight: number; fieldMeta: string | ... 4 more ... | undefined; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; recipientId: number; pageWidth: number; pageHeight: number; ... 7 more ...; nativeId?: number | undefined; }'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'string | number | boolean | JsonObject | JsonArray | undefined' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | undefined'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | undefined'.
|
||||||
|
app/routes/embed+/v1+/multisign+/_index.tsx(56,31): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/v1+/multisign+/_index.tsx(56,55): error TS2339: Property 'embedSigningWhiteLabel' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedSigningWhiteLabel' does not exist on type 'string'.
|
||||||
|
app/routes/embed+/v1+/multisign+/_index.tsx(57,25): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
app/routes/embed+/v1+/multisign+/_index.tsx(57,49): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
../../packages/api/v1/implementation.ts(488,3): error TS2322: Type '(args: { body: { globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; title: string; type?: "PUBLIC" | "PRIVATE" | undefined; ... 6 more ...; attachments?: { ...; }[] | undefined; }; headers: { ...; }; }, { request }: B) => Promise<...>' is not assignable to type 'AppRouteImplementationOrOptions<{ method: "POST"; body: ZodObject<{ title: ZodString; folderId: ZodOptional<ZodString>; externalId: ZodOptional<ZodNullable<ZodString>>; ... 7 more ...; attachments: ZodOptional<...>; }, "strip", ZodTypeAny, { ...; }, { ...; }>; summary: "Create a new template and get a presigned URL"...'.
|
||||||
|
Type '(args: { body: { globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; title: string; type?: "PUBLIC" | "PRIVATE" | undefined; ... 6 more ...; attachments?: { ...; }[] | undefined; }; headers: { ...; }; }, { request }: B) => Promise<...>' is not assignable to type 'AppRouteImplementation<{ method: "POST"; body: ZodObject<{ title: ZodString; folderId: ZodOptional<ZodString>; externalId: ZodOptional<ZodNullable<ZodString>>; ... 7 more ...; attachments: ZodOptional<...>; }, "strip", ZodTypeAny, { ...; }, { ...; }>; summary: "Create a new template and get a presigned URL"; path: "...'.
|
||||||
|
Type 'Promise<{ status: 500; body: { message: string; uploadUrl?: undefined; template?: undefined; }; } | { status: 400; body: { message: string; uploadUrl?: undefined; template?: undefined; }; } | { status: 200; body: { ...; }; } | { ...; } | { ...; }>' is not assignable to type 'Promise<Prettify<AppRouteResponses<{ method: "POST"; body: ZodObject<{ title: ZodString; folderId: ZodOptional<ZodString>; externalId: ZodOptional<ZodNullable<ZodString>>; ... 7 more ...; attachments: ZodOptional<...>; }, "strip", ZodTypeAny, { ...; }, { ...; }>; summary: "Create a new template and get a presigned U...'.
|
||||||
|
Type '{ status: 500; body: { message: string; uploadUrl?: undefined; template?: undefined; }; } | { status: 400; body: { message: string; uploadUrl?: undefined; template?: undefined; }; } | { status: 200; body: { ...; }; } | { ...; } | { ...; }' is not assignable to type 'Prettify<AppRouteResponses<{ method: "POST"; body: ZodObject<{ title: ZodString; folderId: ZodOptional<ZodString>; externalId: ZodOptional<ZodNullable<ZodString>>; ... 7 more ...; attachments: ZodOptional<...>; }, "strip", ZodTypeAny, { ...; }, { ...; }>; summary: "Create a new template and get a presigned URL"; pat...'.
|
||||||
|
Type '{ status: 200; body: { uploadUrl: string; template: { envelopeId: string; type: $Enums.TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; message?: u...' is not assignable to type 'Prettify<AppRouteResponses<{ method: "POST"; body: ZodObject<{ title: ZodString; folderId: ZodOptional<ZodString>; externalId: ZodOptional<ZodNullable<ZodString>>; ... 7 more ...; attachments: ZodOptional<...>; }, "strip", ZodTypeAny, { ...; }, { ...; }>; summary: "Create a new template and get a presigned URL"; pat...'.
|
||||||
|
Type '{ status: 200; body: { uploadUrl: string; template: { envelopeId: string; type: $Enums.TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; message?: u...' is not assignable to type '{ status: 200; body: { template: { type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { ...; } | null; ... 15 more ...; templateDocumentDataId?: string | undefined; }; uploadUrl: string; }; }'.
|
||||||
|
The types of 'body.template.fields' are incompatible between these types.
|
||||||
|
Type '{ documentId: null; templateId: number; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: null; templateId: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/auth/server/lib/utils/organisation-portal.ts(50,6): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/auth/server/lib/utils/organisation-portal.ts(50,43): error TS2339: Property 'authenticationPortal' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'authenticationPortal' does not exist on type 'string'.
|
||||||
|
../../packages/ee/server-only/limits/server.ts(83,7): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/ee/server-only/limits/server.ts(83,44): error TS2339: Property 'unlimitedDocuments' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'unlimitedDocuments' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(170,7): error TS18047: 'claims.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(170,20): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(221,7): error TS18047: 'claims.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(221,20): error TS2339: Property 'hidePoweredBy' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'hidePoweredBy' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(235,8): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/email/get-email-context.ts(235,45): error TS2339: Property 'emailDomains' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'emailDomains' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/envelope/create-envelope.ts(216,6): error TS18047: 'team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/envelope/create-envelope.ts(216,48): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/envelope/get-envelope-for-direct-template-signing.ts(144,5): error TS2322: Type '{ documentMeta: { id: string; language: string; message: string | null; subject: string | null; timezone: string | null; dateFormat: string | null; redirectUrl: string | null; signingOrder: DocumentSigningOrder; ... 7 more ...; emailId: string | null; }; ... 4 more ...; directLink: { ...; } | null; } & { ...; }' is not assignable to type '{ type: "DOCUMENT" | "TEMPLATE"; id: string; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { language: string; timezone: string | null; dateFormat: string | null; ... 6 more ...; distributionMethod: "EMAIL" | "NONE"; }; ... 12 more ...; recipients: { ...; }[]; }'.
|
||||||
|
Types of property 'authOptions' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; }'.
|
||||||
|
../../packages/lib/server-only/envelope/get-envelope-for-direct-template-signing.ts(148,7): error TS2322: Type '({ signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; } & { type: FieldType; ... 12 more ...; inserted: boolean; })[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; ...'.
|
||||||
|
Type '{ signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; } & { type: FieldType; ... 12 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/lib/server-only/envelope/get-envelope-for-recipient-signing.ts(284,5): error TS2322: Type '{ documentMeta: { id: string; language: string; message: string | null; subject: string | null; timezone: string | null; dateFormat: string | null; redirectUrl: string | null; signingOrder: DocumentSigningOrder; ... 7 more ...; emailId: string | null; }; team: { ...; }; user: { ...; }; envelopeItems: { ...; }[]; rec...' is not assignable to type '{ type: "DOCUMENT" | "TEMPLATE"; id: string; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { language: string; timezone: string | null; dateFormat: string | null; ... 6 more ...; distributionMethod: "EMAIL" | "NONE"; }; ... 12 more ...; recipients: { ...; }[]; }'.
|
||||||
|
Types of property 'authOptions' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; }'.
|
||||||
|
../../packages/lib/server-only/envelope/get-envelope-for-recipient-signing.ts(285,5): error TS2322: Type '{ fields: ({ signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; } & { type: FieldType; ... 12 more ...; inserted: boolean; })[]; } & { ...; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 13 more ...; signature?: { ...; } | ... 1 more ... | undefined; }[]; ... 10 more ...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '({ signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; } & { type: FieldType; ... 12 more ...; inserted: boolean; })[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; ...'.
|
||||||
|
Type '{ signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; } & { type: FieldType; ... 12 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/lib/server-only/envelope/update-envelope.ts(119,42): error TS18047: 'envelope.team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/envelope/update-envelope.ts(119,93): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(212,24): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(217,42): error TS2589: Type instantiation is excessively deep and possibly infinite.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(223,24): error TS2339: Property 'filter' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'filter' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(223,32): error TS7006: Parameter 'v' implicitly has an 'any' type.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(223,54): error TS7006: Parameter 'v' implicitly has an 'any' type.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(226,70): error TS2339: Property 'find' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'find' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/field/sign-field-with-token.ts(226,76): error TS7006: Parameter 'v' implicitly has an 'any' type.
|
||||||
|
../../packages/lib/server-only/field/update-envelope-fields.ts(102,77): error TS2339: Property 'type' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'type' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/organisation/create-organisation.ts(64,7): error TS2322: Type '{ id: string; typedSignatureEnabled: boolean; uploadSignatureEnabled: boolean; drawSignatureEnabled: boolean; emailReplyTo: string | null; emailId: string | null; documentVisibility: $Enums.DocumentVisibility; ... 10 more ...; brandingCompanyDetails: string; }' is not assignable to type '(Without<OrganisationGlobalSettingsCreateInput, OrganisationGlobalSettingsUncheckedCreateInput> & OrganisationGlobalSettingsUncheckedCreateInput) | (Without<...> & OrganisationGlobalSettingsCreateInput)'.
|
||||||
|
Type '{ id: string; typedSignatureEnabled: boolean; uploadSignatureEnabled: boolean; drawSignatureEnabled: boolean; emailReplyTo: string | null; emailId: string | null; documentVisibility: $Enums.DocumentVisibility; ... 10 more ...; brandingCompanyDetails: string; }' is not assignable to type 'Without<OrganisationGlobalSettingsCreateInput, OrganisationGlobalSettingsUncheckedCreateInput> & OrganisationGlobalSettingsUncheckedCreateInput'.
|
||||||
|
Type '{ id: string; typedSignatureEnabled: boolean; uploadSignatureEnabled: boolean; drawSignatureEnabled: boolean; emailReplyTo: string | null; emailId: string | null; documentVisibility: $Enums.DocumentVisibility; ... 10 more ...; brandingCompanyDetails: string; }' is not assignable to type 'OrganisationGlobalSettingsUncheckedCreateInput'.
|
||||||
|
Types of property 'emailDocumentSettings' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type 'JsonNull | InputJsonValue'.
|
||||||
|
Type 'null' is not assignable to type 'JsonNull | InputJsonValue'.
|
||||||
|
../../packages/lib/server-only/organisation/create-organisation.ts(206,7): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/server-only/pdf/insert-field-in-pdf-v2.ts(41,7): error TS2322: Type '{ width: number; height: number; positionX: number; positionY: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 8 more ...; renderId: string; }' is not assignable to type 'FieldToRender'.
|
||||||
|
Type '{ width: number; height: number; positionX: number; positionY: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 8 more ...; renderId: string; }' is not assignable to type '{ renderId: string; width: number; height: number; positionX: number; positionY: number; fieldMeta?: { type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | u...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 10 more ... | undefined'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 10 more ... | undefined'.
|
||||||
|
../../packages/lib/server-only/recipient/create-envelope-recipients.ts(80,36): error TS18047: 'envelope.team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/recipient/create-envelope-recipients.ts(80,87): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/recipient/set-document-recipients.ts(109,36): error TS18047: 'envelope.team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/recipient/set-document-recipients.ts(109,87): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/recipient/set-template-recipients.ts(73,36): error TS18047: 'envelope.team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/recipient/set-template-recipients.ts(73,87): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/recipient/update-envelope-recipients.ts(88,36): error TS18047: 'envelope.team.organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/lib/server-only/recipient/update-envelope-recipients.ts(88,87): error TS2339: Property 'cfr21' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'cfr21' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/team/create-team.ts(138,11): error TS2322: Type '{ id: string; typedSignatureEnabled: boolean | null; uploadSignatureEnabled: boolean | null; drawSignatureEnabled: boolean | null; emailReplyTo: string | null; emailId: string | null; ... 11 more ...; brandingCompanyDetails: string | null; }' is not assignable to type '(Without<TeamGlobalSettingsCreateInput, TeamGlobalSettingsUncheckedCreateInput> & TeamGlobalSettingsUncheckedCreateInput) | (Without<...> & TeamGlobalSettingsCreateInput)'.
|
||||||
|
Type '{ id: string; typedSignatureEnabled: boolean | null; uploadSignatureEnabled: boolean | null; drawSignatureEnabled: boolean | null; emailReplyTo: string | null; emailId: string | null; ... 11 more ...; brandingCompanyDetails: string | null; }' is not assignable to type 'Without<TeamGlobalSettingsCreateInput, TeamGlobalSettingsUncheckedCreateInput> & TeamGlobalSettingsUncheckedCreateInput'.
|
||||||
|
Type '{ id: string; typedSignatureEnabled: boolean | null; uploadSignatureEnabled: boolean | null; drawSignatureEnabled: boolean | null; emailReplyTo: string | null; emailId: string | null; ... 11 more ...; brandingCompanyDetails: string | null; }' is not assignable to type 'TeamGlobalSettingsUncheckedCreateInput'.
|
||||||
|
Types of property 'emailDocumentSettings' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type 'NullableJsonNullValueInput | InputJsonValue | undefined'.
|
||||||
|
Type 'null' is not assignable to type 'NullableJsonNullValueInput | InputJsonValue | undefined'.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-direct-template.ts(661,59): error TS2339: Property 'actionAuth' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'actionAuth' does not exist on type 'string'.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-template.ts(150,9): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-template.ts(167,9): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-template.ts(208,9): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-template.ts(253,9): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/server-only/template/create-document-from-template.ts(283,9): error TS2698: Spread types may only be created from object types.
|
||||||
|
../../packages/lib/utils/document.ts(85,5): error TS2322: Type 'JsonValue' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; }'.
|
||||||
|
../../packages/lib/utils/document.ts(86,5): error TS2322: Type 'JsonValue' is not assignable to type 'Record<string, string | number | boolean> | null'.
|
||||||
|
Type 'string' is not assignable to type 'Record<string, string | number | boolean>'.
|
||||||
|
../../packages/lib/utils/document.ts(125,5): error TS2322: Type 'JsonValue' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; }'.
|
||||||
|
../../packages/lib/utils/document.ts(126,5): error TS2322: Type 'JsonValue' is not assignable to type 'Record<string, string | number | boolean> | null'.
|
||||||
|
Type 'string' is not assignable to type 'Record<string, string | number | boolean>'.
|
||||||
|
../../packages/lib/utils/document.ts(146,5): error TS2322: Type '{ documentId: number | null; templateId: number | null; id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: JsonValue; ... 7 more ...; sendStatus: SendStatus; }[]' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: { accessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; actionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD" | "EXPLICIT_NONE")[]; } | null; ... 9 more ...; templateId?: number | ... 1 more...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: JsonValue | null; ... 7 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; envelopeId: string; authOptions: { accessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; actionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD" | "EXPLICIT_NONE")[]; } | null; ... 9 more ...; templateId?: number | ... 1 more...'.
|
||||||
|
Types of property 'authOptions' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ accessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; actionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD" | "EXPLICIT_NONE")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ accessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; actionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD" | "EXPLICIT_NONE")[]; }'.
|
||||||
|
../../packages/lib/utils/templates.ts(61,5): error TS2322: Type 'JsonValue' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; } | null'.
|
||||||
|
Type 'string' is not assignable to type '{ globalAccessAuth: ("ACCOUNT" | "TWO_FACTOR_AUTH")[]; globalActionAuth: ("ACCOUNT" | "PASSKEY" | "TWO_FACTOR_AUTH" | "PASSWORD")[]; }'.
|
||||||
|
../../packages/trpc/server/admin-router/find-subscription-claims.ts(17,10): error TS2345: Argument of type '({ input }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: SessionUser; session: { id: string; createdAt: Date; updatedAt: Date; userId: number; ipAddress: string | null; userAgent: string | null; sessionToken: string; expiresAt: Date; }; ... 4 more ...; res: Response; }, { ...; }>) => Promise<...>' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: SessionUser; session: { id: string; createdAt: Date; updatedAt: Date; userId: number; ipAddress: string | null; userAgent: string | null; sessionToken: string; expiresAt: Date; }; ... 4 more ...; res: Response; }, { ...; }, { ...; }, unknown>'.
|
||||||
|
Type 'Promise<{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }>' is not assignable to type 'MaybePromise<{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }[]; count: number; perPage: number; curr...'.
|
||||||
|
Type 'Promise<{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }>' is not assignable to type 'Promise<{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }[]; count: number; perPage: number; currentPa...'.
|
||||||
|
Type '{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: Prisma.JsonValue; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }' is not assignable to type '{ data: { id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }[]; count: number; perPage: number; currentPage: numb...'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }[]' is not assignable to type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }[]'.
|
||||||
|
Type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }' is not assignable to type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Types of property 'flags' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
../../packages/trpc/server/admin-router/find-subscription-claims.ts(70,5): error TS2322: Type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }[]' is not assignable to type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }[]'.
|
||||||
|
Type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: JsonValue; }' is not assignable to type '{ id: string; name: string; createdAt: Date; updatedAt: Date; locked: boolean; teamCount: number; memberCount: number; envelopeItemCount: number; flags: { allowCustomBranding?: boolean | undefined; ... 9 more ...; allowEnvelopes?: boolean | undefined; }; }'.
|
||||||
|
Types of property 'flags' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
../../packages/trpc/server/admin-router/get-admin-organisation.ts(13,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: SessionUser; session: { id: string; createdAt: Date; updatedAt: Date; userId: number; ipAddress: string | null; userAgent: string | null; sessionToken: string; expiresAt: Date; }; ... 4 more ...; res: Response; }, { ...; }>) => Promise<...>' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: SessionUser; session: { id: string; createdAt: Date; updatedAt: Date; userId: number; ipAddress: string | null; userAgent: string | null; sessionToken: string; expiresAt: Date; }; ... 4 more ...; res: Response; }, { ...; }, { ...; }, unknown>'.
|
||||||
|
Type 'Promise<{ subscription: { id: number; status: SubscriptionStatus; priceId: string; createdAt: Date; updatedAt: Date; customerId: string; organisationId: string; planId: string; periodEnd: Date | null; cancelAtPeriodEnd: boolean; } | null; organisationClaim: { ...; }; organisationGlobalSettings: { ...; }; members: ({...' is not assignable to type 'MaybePromise<{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }>'.
|
||||||
|
Type 'Promise<{ subscription: { id: number; status: SubscriptionStatus; priceId: string; createdAt: Date; updatedAt: Date; customerId: string; organisationId: string; planId: string; periodEnd: Date | null; cancelAtPeriodEnd: boolean; } | null; organisationClaim: { ...; }; organisationGlobalSettings: { ...; }; members: ({...' is not assignable to type 'Promise<{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }>'.
|
||||||
|
Type '{ subscription: { id: number; status: SubscriptionStatus; priceId: string; createdAt: Date; updatedAt: Date; customerId: string; organisationId: string; planId: string; periodEnd: Date | null; cancelAtPeriodEnd: boolean; } | null; organisationClaim: { ...; }; organisationGlobalSettings: { ...; }; members: ({ ...; } ...' is not assignable to type '{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }'.
|
||||||
|
The types of 'organisationClaim.flags' are incompatible between these types.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
../../packages/trpc/server/admin-router/update-subscription-claim.ts(30,49): error TS2345: Argument of type 'JsonValue' is not assignable to parameter of type 'Partial<{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }>'.
|
||||||
|
Type 'null' is not assignable to type 'Partial<{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }>'.
|
||||||
|
../../packages/trpc/server/document-router/attachment/find-attachments.ts(24,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }>' is not assignable to type 'MaybePromise<{ data: { data: string; type: "link"; id: string; label: string; }[]; }>'.
|
||||||
|
Type 'Promise<{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }>' is not assignable to type 'Promise<{ data: { data: string; type: "link"; id: string; label: string; }[]; }>'.
|
||||||
|
Type '{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }' is not assignable to type '{ data: { data: string; type: "link"; id: string; label: string; }[]; }'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]' is not assignable to type '{ data: string; type: "link"; id: string; label: string; }[]'.
|
||||||
|
Type '{ data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }' is not assignable to type '{ data: string; type: "link"; id: string; label: string; }'.
|
||||||
|
Types of property 'type' are incompatible.
|
||||||
|
Type 'string' is not assignable to type '"link"'.
|
||||||
|
../../packages/trpc/server/document-router/create-document-temporary.ts(28,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ document: { envelopeId: string; documentDataId: string; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; folder: { ...; } | null; uploadUrl: string; }>' is not assignable to type 'MaybePromise<{ document: { id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; ... 15 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }; uploadUr...'.
|
||||||
|
Type 'Promise<{ document: { envelopeId: string; documentDataId: string; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; folder: { ...; } | null; uploadUrl: string; }>' is not assignable to type 'Promise<{ document: { id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; ... 15 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }; uploadUrl: st...'.
|
||||||
|
Type '{ document: { envelopeId: string; documentDataId: string; documentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; folder: { ...; } | null; uploadUrl: string; }' is not assignable to type '{ document: { id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; ... 15 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }; uploadUrl: string; }'.
|
||||||
|
The types of 'document.fields' are incompatible between these types.
|
||||||
|
Type '{ documentId: number; templateId: null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number; templateId: null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/document-router/get-document.ts(14,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; id: number; ... 31 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; id: number; ... 31 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type '{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 32 more ...; documentMetaId: string; }' is not assignable to type '{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number; templateId: null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number; templateId: null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/document-router/update-document.ts(18,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ id: number; envelopeId: string; type: EnvelopeType; source: DocumentSource; status: DocumentStatus; createdAt: Date; updatedAt: Date; ... 18 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; updatedAt: Date; userId: number; ... 13 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type 'Promise<{ id: number; envelopeId: string; type: EnvelopeType; source: DocumentSource; status: DocumentStatus; createdAt: Date; updatedAt: Date; ... 18 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; updatedAt: Date; userId: number; ... 13 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type '{ id: number; envelopeId: string; type: $Enums.EnvelopeType; source: $Enums.DocumentSource; status: $Enums.DocumentStatus; ... 20 more ...; documentMetaId: string; }' is not assignable to type '{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; updatedAt: Date; userId: number; ... 13 more ...; documentDataId?: string | undefined; }'.
|
||||||
|
Types of property 'formValues' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type 'Record<string, string | number | boolean> | null'.
|
||||||
|
Type 'string' is not assignable to type 'Record<string, string | number | boolean>'.
|
||||||
|
../../packages/trpc/server/embedding-router/create-embedding-presign-token.ts(47,14): error TS18047: 'organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/trpc/server/embedding-router/create-embedding-presign-token.ts(47,38): error TS2339: Property 'embedAuthoring' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'embedAuthoring' does not exist on type 'string'.
|
||||||
|
../../packages/trpc/server/embedding-router/get-multi-sign-document.ts(17,10): error TS2345: Argument of type '({ input, ctx: { metadata } }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: null; session: null; metadata: ApiRequestMetadata; teamId: number | undefined; logger: Logger<...>; req: Request; res: Response; } | { ...; }, { ...; }>) => Promise<...>' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: null; session: null; metadata: ApiRequestMetadata; teamId: number | undefined; logger: Logger<...>; req: Request; res: Response; } | { ...; }, { ...; }, { ...; }, unknown>'.
|
||||||
|
Type 'Promise<{ folder: null; fields: { recipient: { documentId: number; templateId: null; fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 14 more ...; sendStatus: SendStatus; }; ... 16 more ...; inserted: boolean; }[]; ... 3...' is not assignable to type 'MaybePromise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 10 more ...; emailSettings?: unknown; } | null; ... 19 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type 'Promise<{ folder: null; fields: { recipient: { documentId: number; templateId: null; fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 14 more ...; sendStatus: SendStatus; }; ... 16 more ...; inserted: boolean; }[]; ... 3...' is not assignable to type 'Promise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 10 more ...; emailSettings?: unknown; } | null; ... 19 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type '{ folder: null; fields: { recipient: { documentId: number; templateId: null; fields: { type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 14 more ...; sendStatus: $Enums.SendStatus; }; ... 16 more ...; inserted: boolean; }[]; ... 31 more ...; documentMetaId:...' is not assignable to type '{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 10 more ...; emailSettings?: unknown; } | null; ... 19 more ...; documentDataId?: string | undefined; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ recipient: { documentId: number; templateId: null; fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 14 more ...; sendStatus: SendStatus; }; ... 16 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; ... 12 mor...'.
|
||||||
|
Type '{ recipient: { documentId: number; templateId: null; fields: { type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }[]; ... 14 more ...; sendStatus: $Enums.SendStatus; }; ... 16 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; signature: { id: number; recipientId: number; fieldId: number; created: Date; signatureImageAsBase64: string | null; typedSignature: string | null; } | null; ... 12 mor...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/enterprise-router/create-organisation-email-domain.ts(50,10): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/trpc/server/enterprise-router/create-organisation-email-domain.ts(50,47): error TS2339: Property 'emailDomains' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'emailDomains' does not exist on type 'string'.
|
||||||
|
../../packages/trpc/server/enterprise-router/get-organisation-authentication-portal.ts(67,8): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/trpc/server/enterprise-router/get-organisation-authentication-portal.ts(67,45): error TS2339: Property 'authenticationPortal' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'authenticationPortal' does not exist on type 'string'.
|
||||||
|
../../packages/trpc/server/enterprise-router/update-organisation-authentication-portal.ts(50,10): error TS18047: 'organisation.organisationClaim.flags' is possibly 'null'.
|
||||||
|
../../packages/trpc/server/enterprise-router/update-organisation-authentication-portal.ts(50,47): error TS2339: Property 'authenticationPortal' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'authenticationPortal' does not exist on type 'string'.
|
||||||
|
../../packages/trpc/server/envelope-router/attachment/find-attachments.ts(16,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }>' is not assignable to type 'MaybePromise<{ data: { data: string; type: "link"; id: string; label: string; }[]; }>'.
|
||||||
|
Type 'Promise<{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }>' is not assignable to type 'Promise<{ data: { data: string; type: "link"; id: string; label: string; }[]; }>'.
|
||||||
|
Type '{ data: { data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]; }' is not assignable to type '{ data: { data: string; type: "link"; id: string; label: string; }[]; }'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }[]' is not assignable to type '{ data: string; type: "link"; id: string; label: string; }[]'.
|
||||||
|
Type '{ data: string; type: string; id: string; label: string; createdAt: Date; updatedAt: Date; envelopeId: string; }' is not assignable to type '{ data: string; type: "link"; id: string; label: string; }'.
|
||||||
|
Types of property 'type' are incompatible.
|
||||||
|
Type 'string' is not assignable to type '"link"'.
|
||||||
|
../../packages/trpc/server/envelope-router/envelope-fields/create-envelope-fields.ts(14,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ data: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templat...'.
|
||||||
|
Type 'Promise<{ data: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?:...'.
|
||||||
|
Type '{ data: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/envelope-fields/get-envelope-field.ts(14,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; inserted: boole...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; inserted: boolean; }>'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/envelope-fields/update-envelope-fields.ts(14,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ data: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templat...'.
|
||||||
|
Type 'Promise<{ data: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?:...'.
|
||||||
|
Type '{ data: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ data: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/envelope-recipients/get-envelope-recipient.ts(16,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }[]; } & { ...; }>' is not assignable to type 'MaybePromise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ...'.
|
||||||
|
Type 'Promise<{ fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }[]; } & { ...; }>' is not assignable to type 'Promise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 9...'.
|
||||||
|
Type '{ fields: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }[]; } & { ...; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 9 more .....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/get-envelope.ts(14,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ user: { id: number; name: string; email: string; }; documentMeta: { id: string; language: string; message: string | null; subject: string | null; timezone: string | null; dateFormat: string | null; ... 9 more ...; emailId: string | null; }; ... 30 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; ... 14 more ...; emailSettings?: unknown; }; ... 23 more ...; authOptions?: unknown; }>'.
|
||||||
|
Type 'Promise<{ user: { id: number; name: string; email: string; }; documentMeta: { id: string; language: string; message: string | null; subject: string | null; timezone: string | null; dateFormat: string | null; ... 9 more ...; emailId: string | null; }; ... 30 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; ... 14 more ...; emailSettings?: unknown; }; ... 23 more ...; authOptions?: unknown; }>'.
|
||||||
|
Type '{ user: { id: number; name: string; email: string; }; documentMeta: { id: string; language: string; message: string | null; subject: string | null; timezone: string | null; dateFormat: string | null; ... 9 more ...; emailId: string | null; }; ... 30 more ...; documentMetaId: string; }' is not assignable to type '{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; ... 14 more ...; emailSettings?: unknown; }; ... 23 more ...; authOptions?: unknown; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; ...'.
|
||||||
|
Type '{ type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 10 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/sign-envelope-field.ts(22,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: null; session: null; metadata: ApiRequestMetadata; teamId: number | undefined; logger: Logger<...>; req: Request; res: Response; } | { ...; }, { ...; }>) => Promise<...>' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: null; session: null; metadata: ApiRequestMetadata; teamId: number | undefined; logger: Logger<...>; req: Request; res: Response; } | { ...; }, { ...; }, { ...; }, unknown>'.
|
||||||
|
Type 'Promise<{ signedField: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }; }>' is not assignable to type 'MaybePromise<{ signedField: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; ...'.
|
||||||
|
Type 'Promise<{ signedField: { type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; recipientId: number; ... 5 more ...; inserted: boolean; }; }>' is not assignable to type 'Promise<{ signedField: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; signa...'.
|
||||||
|
Type '{ signedField: { type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }; }' is not assignable to type '{ signedField: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 11 more ...; signature?: {...'.
|
||||||
|
The types of 'signedField.fieldMeta' are incompatible between these types.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/envelope-router/sign-envelope-field.ts(123,26): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
../../packages/trpc/server/envelope-router/update-envelope.ts(14,13): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ type: EnvelopeType; id: string; source: DocumentSource; status: DocumentStatus; createdAt: Date; updatedAt: Date; userId: number; ... 17 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; ... 15 more ...; authOptions?: unknown; }>'.
|
||||||
|
Type 'Promise<{ type: EnvelopeType; id: string; source: DocumentSource; status: DocumentStatus; createdAt: Date; updatedAt: Date; userId: number; ... 17 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; ... 15 more ...; authOptions?: unknown; }>'.
|
||||||
|
Type '{ type: EnvelopeType; id: string; source: DocumentSource; status: DocumentStatus; createdAt: Date; updatedAt: Date; userId: number; ... 17 more ...; documentMetaId: string; }' is not assignable to type '{ type: "DOCUMENT" | "TEMPLATE"; id: string; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; createdAt: Date; ... 15 more ...; authOptions?: unknown; }'.
|
||||||
|
Types of property 'formValues' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type 'Record<string, string | number | boolean> | null'.
|
||||||
|
Type 'string' is not assignable to type 'Record<string, string | number | boolean>'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(61,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(94,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(140,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(182,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(222,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(285,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; ... 9 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; ... 9 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ formId: string | undefined; documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(333,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(380,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(413,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(455,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'MaybePromise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: nu...'.
|
||||||
|
Type 'Promise<{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }>' is not assignable to type 'Promise<{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: number ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(495,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/field-router/router.ts(557,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; ... 9 more ...; inserted: boolean; }[]; }>' is not assignable to type 'MaybePromise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templ...'.
|
||||||
|
Type 'Promise<{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; ... 9 more ...; inserted: boolean; }[]; }>' is not assignable to type 'Promise<{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId...'.
|
||||||
|
Type '{ fields: { formId: string | undefined; documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; }' is not assignable to type '{ fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; ... 5 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; templateId?: numbe...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ formId: string | undefined; documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ formId: string | undefined; documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/organisation-router/get-organisation-session.ts(69,3): error TS2322: Type '{ teams: { currentTeamRole: TeamMemberRole; teamGroups: ({ organisationGroup: { type: OrganisationGroupType; id: string; name: string | null; organisationRole: OrganisationMemberRole; organisationId: string; }; } & { ...; })[]; ... 6 more ...; teamGlobalSettingsId: string; }[]; ... 15 more ...; organisationAuthentic...' is not assignable to type '{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 5 more ...; currentOrganisationRole: "ADMIN" | ... 1 more ... | "MEMBER"; }[]'.
|
||||||
|
Type '{ teams: { currentTeamRole: TeamMemberRole; teamGroups: ({ organisationGroup: { type: $Enums.OrganisationGroupType; id: string; name: string | null; organisationRole: $Enums.OrganisationMemberRole; organisationId: string; }; } & { ...; })[]; ... 6 more ...; teamGlobalSettingsId: string; }[]; ... 15 more ...; organis...' is not assignable to type '{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 5 more ...; currentOrganisationRole: "ADMIN" | ... 1 more ... | "MEMBER"; }'.
|
||||||
|
The types of 'organisationClaim.flags' are incompatible between these types.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
../../packages/trpc/server/organisation-router/get-organisation.ts(14,10): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ teams: { id: number; name: string; url: string; createdAt: Date; avatarImageId: string | null; organisationId: string; teamGlobalSettingsId: string; }[]; subscription: { id: number; status: SubscriptionStatus; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 14 more ...; organisationAuthentication...' is not assignable to type 'MaybePromise<{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }>'.
|
||||||
|
Type 'Promise<{ teams: { id: number; name: string; url: string; createdAt: Date; avatarImageId: string | null; organisationId: string; teamGlobalSettingsId: string; }[]; subscription: { id: number; status: SubscriptionStatus; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 14 more ...; organisationAuthentication...' is not assignable to type 'Promise<{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }>'.
|
||||||
|
Type '{ teams: { id: number; name: string; url: string; createdAt: Date; avatarImageId: string | null; organisationId: string; teamGlobalSettingsId: string; }[]; subscription: { id: number; status: $Enums.SubscriptionStatus; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 14 more ...; organisationAuthenticationP...' is not assignable to type '{ type: "PERSONAL" | "ORGANISATION"; id: string; name: string; url: string; createdAt: Date; updatedAt: Date; subscription: { id: number; status: "ACTIVE" | "PAST_DUE" | "INACTIVE"; ... 7 more ...; cancelAtPeriodEnd: boolean; } | null; ... 6 more ...; teams: { ...; }[]; }'.
|
||||||
|
The types of 'organisationClaim.flags' are incompatible between these types.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
Type 'null' is not assignable to type '{ allowCustomBranding?: boolean | undefined; hidePoweredBy?: boolean | undefined; unlimitedDocuments?: boolean | undefined; emailDomains?: boolean | undefined; embedAuthoring?: boolean | undefined; ... 5 more ...; allowEnvelopes?: boolean | undefined; }'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(65,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: SendStatus; }>' is not assignable to type 'MaybePromise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: SendStatus; }>' is not assignable to type 'Promise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 1...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(174,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }>' is not assignable to type 'MaybePromise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }>' is not assignable to type 'Promise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 1...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(213,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ recipients: { fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]; }>' is not assignable to type 'MaybePromise<{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...'.
|
||||||
|
Type 'Promise<{ recipients: { fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]; }>' is not assignable to type 'Promise<{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...; ...'.
|
||||||
|
Type '{ recipients: { fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }[]; }' is not assignable to type '{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...; authOpti...'.
|
||||||
|
Types of property 'recipients' are incompatible.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(320,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: SendStatus; }>' is not assignable to type 'MaybePromise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: SendStatus; }>' is not assignable to type 'Promise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 1...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 17 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(429,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }>' is not assignable to type 'MaybePromise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ...'.
|
||||||
|
Type 'Promise<{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }>' is not assignable to type 'Promise<{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 1...'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/recipient-router/router.ts(468,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ recipients: { fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]; }>' is not assignable to type 'MaybePromise<{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...'.
|
||||||
|
Type 'Promise<{ recipients: { fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]; }>' is not assignable to type 'Promise<{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...; ...'.
|
||||||
|
Type '{ recipients: { fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }[]; }' is not assignable to type '{ recipients: { id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | ... 4 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ...; authOpti...'.
|
||||||
|
Types of property 'recipients' are incompatible.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: SendStatus; }[]' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Type '{ fields: { documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; ... 10 more ...; inserted: boolean; }[]; ... 16 more ...; sendStatus: $Enums.SendStatus; }' is not assignable to type '{ id: number; name: string; token: string; email: string; signingOrder: number | null; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 11 more ....'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/template-router/router.ts(74,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ data: { id: number; envelopeId: string; type: TemplateType; visibility: DocumentVisibility; externalId: string | null; title: string; userId: number; ... 12 more ...; directLink: { ...; } | null; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }>' is not assignable to type 'MaybePromise<{ data: { type: "PUBLIC" | "PRIVATE"; id: number; team: { id: number; url: string; } | null; createdAt: Date; updatedAt: Date; userId: number; fields: { type: "EMAIL" | "SIGNATURE" | ... 8 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 13 more ...; tem...'.
|
||||||
|
Type 'Promise<{ data: { id: number; envelopeId: string; type: TemplateType; visibility: DocumentVisibility; externalId: string | null; title: string; userId: number; ... 12 more ...; directLink: { ...; } | null; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }>' is not assignable to type 'Promise<{ data: { type: "PUBLIC" | "PRIVATE"; id: number; team: { id: number; url: string; } | null; createdAt: Date; updatedAt: Date; userId: number; fields: { type: "EMAIL" | "SIGNATURE" | ... 8 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 13 more ...; template...'.
|
||||||
|
Type '{ data: { id: number; envelopeId: string; type: $Enums.TemplateType; visibility: $Enums.DocumentVisibility; externalId: string | null; title: string; userId: number; teamId: number; ... 11 more ...; directLink: { ...; } | null; }[]; count: number; currentPage: number; perPage: number; totalPages: number; }' is not assignable to type '{ data: { type: "PUBLIC" | "PRIVATE"; id: number; team: { id: number; url: string; } | null; createdAt: Date; updatedAt: Date; userId: number; fields: { type: "EMAIL" | "SIGNATURE" | ... 8 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 13 more ...; templateDocument...'.
|
||||||
|
Types of property 'data' are incompatible.
|
||||||
|
Type '{ id: number; envelopeId: string; type: TemplateType; visibility: DocumentVisibility; externalId: string | null; title: string; userId: number; teamId: number; ... 11 more ...; directLink: { ...; } | null; }[]' is not assignable to type '{ type: "PUBLIC" | "PRIVATE"; id: number; team: { id: number; url: string; } | null; createdAt: Date; updatedAt: Date; userId: number; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | ... 7 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 13 more ...; templ...'.
|
||||||
|
Type '{ id: number; envelopeId: string; type: $Enums.TemplateType; visibility: $Enums.DocumentVisibility; externalId: string | null; title: string; userId: number; teamId: number; ... 11 more ...; directLink: { ...; } | null; }' is not assignable to type '{ type: "PUBLIC" | "PRIVATE"; id: number; team: { id: number; url: string; } | null; createdAt: Date; updatedAt: Date; userId: number; fields: { type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | ... 7 more ... | "DROPDOWN"; ... 14 more ...; templateId?: number | ... 1 more ... | undefined; }[]; ... 13 more ...; templ...'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; ... 7 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number | null; templateId: number | null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; ... 9 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/template-router/router.ts(137,12): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; type: TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string | undefined;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; type: TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string | undefined; }>'.
|
||||||
|
Type '{ envelopeId: string; type: $Enums.TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }' is not assignable to type '{ type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string | undefined; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: null; templateId: number; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: null; templateId: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/template-router/router.ts(253,15): error TS2345: Argument of type '({ input, ctx }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ template: { envelopeId: string; type: TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; uploadUrl: string; }>' is not assignable to type 'MaybePromise<{ template: { type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string ...'.
|
||||||
|
Type 'Promise<{ template: { envelopeId: string; type: TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; uploadUrl: string; }>' is not assignable to type 'Promise<{ template: { type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string | und...'.
|
||||||
|
Type '{ template: { envelopeId: string; type: $Enums.TemplateType; templateDocumentDataId: string; templateDocumentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 30 more ...; documentMetaId: string; }; uploadUrl: string; }' is not assignable to type '{ template: { type: "PUBLIC" | "PRIVATE"; id: number; createdAt: Date; updatedAt: Date; userId: number; user: { id: number; name: string | null; email: string; }; folder: { type: "DOCUMENT" | "TEMPLATE"; ... 8 more ...; parentId: string | null; } | null; ... 15 more ...; templateDocumentDataId?: string | undefined; ...'.
|
||||||
|
The types of 'template.fields' are incompatible between these types.
|
||||||
|
Type '{ documentId: null; templateId: number; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: null; templateId: number; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/trpc/server/template-router/router.ts(453,15): error TS2345: Argument of type '({ ctx, input }: ProcedureResolverOptions<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "ap...' is not assignable to parameter of type 'ProcedureResolver<TrpcContext, TrpcRouteMeta, { user: { id: number; name: string | null; email: string; disabled: boolean; }; session: null; metadata: { auditUser: { id: null; email: null; name: string; } | { ...; }; auth: "api"; requestMetadata: { ...; }; source: "app" | ... 1 more ... | "apiV2"; }; teamId: number;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; id: number; ... 31 more ...; documentMetaId: string; }>' is not assignable to type 'MaybePromise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined;...'.
|
||||||
|
Type 'Promise<{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: DocumentDataType; id: string; initialData: string; }; id: number; ... 31 more ...; documentMetaId: string; }>' is not assignable to type 'Promise<{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }>'.
|
||||||
|
Type '{ envelopeId: string; internalVersion: number; documentData: { envelopeItemId: string; data: string; type: $Enums.DocumentDataType; id: string; initialData: string; }; ... 32 more ...; documentMetaId: string; }' is not assignable to type '{ id: number; source: "DOCUMENT" | "TEMPLATE" | "TEMPLATE_DIRECT_LINK"; status: "DRAFT" | "PENDING" | "COMPLETED" | "REJECTED"; documentMeta: { id: string; language: string; message: string | null; ... 14 more ...; documentId?: number | undefined; }; ... 20 more ...; documentDataId?: string | undefined; }'.
|
||||||
|
Types of property 'fields' are incompatible.
|
||||||
|
Type '{ documentId: number; templateId: null; type: FieldType; id: number; fieldMeta: JsonValue; envelopeId: string; secondaryId: string; width: Decimal; height: Decimal; ... 6 more ...; inserted: boolean; }[]' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Type '{ documentId: number; templateId: null; type: $Enums.FieldType; id: number; fieldMeta: JsonValue | null; envelopeId: string; secondaryId: string; ... 8 more ...; inserted: boolean; }' is not assignable to type '{ type: "EMAIL" | "SIGNATURE" | "FREE_SIGNATURE" | "INITIALS" | "NAME" | "DATE" | "TEXT" | "NUMBER" | "RADIO" | "CHECKBOX" | "DROPDOWN"; id: number; fieldMeta: { type: "initials"; label?: string | undefined; ... 4 more ...; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null; ... 12 more ...; ...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 9 more ... | null'.
|
||||||
|
../../packages/ui/components/document/document-read-only-fields.tsx(181,29): error TS2322: Type 'DocumentField' is not assignable to type '{ inserted?: boolean | undefined; customText?: string | undefined; type: FieldType; fieldMeta?: { type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefi...'.
|
||||||
|
Types of property 'fieldMeta' are incompatible.
|
||||||
|
Type 'JsonValue' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 10 more ... | undefined'.
|
||||||
|
Type 'string' is not assignable to type '{ type: "initials"; label?: string | undefined; placeholder?: string | undefined; required?: boolean | undefined; readOnly?: boolean | undefined; fontSize?: number | undefined; textAlign?: "left" | ... 2 more ... | undefined; } | ... 10 more ... | undefined'.
|
||||||
|
../../packages/ui/components/document/envelope-recipient-field-tooltip.tsx(162,33): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
../../packages/ui/components/document/envelope-recipient-field-tooltip.tsx(169,32): error TS2339: Property 'readOnly' does not exist on type 'string | number | boolean | JsonObject | JsonArray'.
|
||||||
|
Property 'readOnly' does not exist on type 'string'.
|
||||||
|
npm error Lifecycle script `typecheck` failed with error:
|
||||||
|
npm error code 2
|
||||||
|
npm error path /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error workspace @documenso/remix@2.0.14
|
||||||
|
npm error location /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error command failed
|
||||||
|
npm error command sh -c react-router typegen && tsc
|
||||||
|
npm error Lifecycle script `build:app` failed with error:
|
||||||
|
npm error code 2
|
||||||
|
npm error path /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error workspace @documenso/remix@2.0.14
|
||||||
|
npm error location /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error command failed
|
||||||
|
npm error command sh -c npm run typecheck && cross-env NODE_ENV=production react-router build
|
||||||
|
npm error Lifecycle script `build` failed with error:
|
||||||
|
npm error code 2
|
||||||
|
npm error path /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error workspace @documenso/remix@2.0.14
|
||||||
|
npm error location /Users/lucas/dev/documenso/apps/remix
|
||||||
|
npm error command failed
|
||||||
|
npm error command sh -c ./.bin/build.sh
|
||||||
30045
package-lock.json
generated
30045
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
76
package.json
76
package.json
@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.0.12",
|
"name": "@documenso/root",
|
||||||
|
"workspaces": [
|
||||||
|
"apps/*",
|
||||||
|
"packages/*"
|
||||||
|
],
|
||||||
|
"version": "2.0.14",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "turbo run build",
|
"build": "turbo run build",
|
||||||
"dev": "turbo run dev --filter=@documenso/remix",
|
"dev": "turbo run dev --filter=@documenso/remix",
|
||||||
@ -41,59 +46,56 @@
|
|||||||
"node": ">=22.0.0"
|
"node": ">=22.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.7.1",
|
"@commitlint/cli": "^20.1.0",
|
||||||
"@commitlint/config-conventional": "^17.7.0",
|
"@commitlint/config-conventional": "^20.0.0",
|
||||||
"@lingui/cli": "^5.2.0",
|
"@lingui/cli": "^5.6.0",
|
||||||
"@prisma/client": "^6.18.0",
|
"@prisma/client": "^6.19.0",
|
||||||
"@trpc/client": "11.7.0",
|
"@trpc/client": "11.7.1",
|
||||||
"@trpc/react-query": "11.7.0",
|
"@trpc/react-query": "11.7.1",
|
||||||
"@trpc/server": "11.7.0",
|
"@trpc/server": "11.7.1",
|
||||||
"@ts-rest/core": "^3.52.1",
|
"@ts-rest/core": "^3.52.1",
|
||||||
"@ts-rest/open-api": "^3.52.1",
|
"@ts-rest/open-api": "^3.52.1",
|
||||||
"@ts-rest/serverless": "^3.52.1",
|
"@ts-rest/serverless": "^3.52.1",
|
||||||
"dotenv": "^16.5.0",
|
"dotenv": "^17.2.3",
|
||||||
"dotenv-cli": "^8.0.0",
|
"dotenv-cli": "^11.0.0",
|
||||||
"eslint": "^8.40.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-custom": "*",
|
"husky": "^9.1.7",
|
||||||
"husky": "^9.0.11",
|
"lint-staged": "^16.2.7",
|
||||||
"lint-staged": "^15.2.2",
|
"nanoid": "^5.1.6",
|
||||||
"nodemailer": "^6.10.1",
|
"nodemailer": "^7.0.10",
|
||||||
"playwright": "1.52.0",
|
"pdfjs-dist": "5.4.296",
|
||||||
"prettier": "^3.3.3",
|
"pino": "^9.14.0",
|
||||||
"prisma": "^6.18.0",
|
"pino-pretty": "^13.1.2",
|
||||||
|
"playwright": "1.56.1",
|
||||||
|
"prettier": "^3.6.2",
|
||||||
|
"prisma": "^6.19.0",
|
||||||
"prisma-extension-kysely": "^3.0.0",
|
"prisma-extension-kysely": "^3.0.0",
|
||||||
"prisma-json-types-generator": "^3.6.2",
|
"prisma-json-types-generator": "^3.6.2",
|
||||||
"prisma-kysely": "^1.8.0",
|
"prisma-kysely": "^2.2.1",
|
||||||
"rimraf": "^5.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"superjson": "^2.2.5",
|
"superjson": "^2.2.5",
|
||||||
|
"syncpack": "^14.0.0-alpha.27",
|
||||||
"trpc-to-openapi": "2.4.0",
|
"trpc-to-openapi": "2.4.0",
|
||||||
"turbo": "^1.9.3",
|
"turbo": "^1.13.4",
|
||||||
"vite": "^6.3.5",
|
"vite": "^7.2.4",
|
||||||
"vite-plugin-static-copy": "^3.1.4",
|
"vite-plugin-static-copy": "^3.1.4",
|
||||||
"zod-openapi": "^4.2.4",
|
"zod-openapi": "^4.2.4",
|
||||||
"zod-prisma-types": "3.3.5"
|
"zod-prisma-types": "3.3.5"
|
||||||
},
|
},
|
||||||
"name": "@documenso/root",
|
|
||||||
"workspaces": [
|
|
||||||
"apps/*",
|
|
||||||
"packages/*"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@documenso/pdf-sign": "^0.1.0",
|
"@documenso/pdf-sign": "^0.1.0",
|
||||||
"@documenso/prisma": "^0.0.0",
|
"@documenso/prisma": "*",
|
||||||
"@lingui/conf": "^5.2.0",
|
"@lingui/conf": "^5.6.0",
|
||||||
"@lingui/core": "^5.2.0",
|
"@lingui/core": "^5.6.0",
|
||||||
"inngest-cli": "^0.29.1",
|
"inngest-cli": "^1.13.7",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.7.2",
|
||||||
"mupdf": "^1.0.0",
|
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"typescript": "5.6.2",
|
"typescript": "5.6.2",
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"pdfjs-dist": "5.4.296",
|
||||||
|
"typescript": "5.6.2",
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
},
|
|
||||||
"trigger.dev": {
|
|
||||||
"endpointId": "documenso-app"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -17,14 +17,13 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@documenso/lib": "*",
|
"@documenso/lib": "*",
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"@ts-rest/core": "^3.52.0",
|
"@ts-rest/core": "^3.52.1",
|
||||||
"@ts-rest/open-api": "^3.52.0",
|
"@ts-rest/open-api": "^3.52.1",
|
||||||
"@ts-rest/serverless": "^3.52.0",
|
"@ts-rest/serverless": "^3.52.1",
|
||||||
"@types/swagger-ui-react": "^5.18.0",
|
"@types/swagger-ui-react": "^5.18.0",
|
||||||
"luxon": "^3.4.0",
|
"luxon": "^3.7.2",
|
||||||
"superjson": "^2.2.5",
|
"superjson": "^2.2.5",
|
||||||
"swagger-ui-react": "^5.21.0",
|
"ts-pattern": "^5.9.0",
|
||||||
"ts-pattern": "^5.0.5",
|
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -24,7 +24,7 @@ import { expect, test } from '@playwright/test';
|
|||||||
import { DocumentStatus, EnvelopeType } from '@prisma/client';
|
import { DocumentStatus, EnvelopeType } from '@prisma/client';
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.js';
|
import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';
|
||||||
import { getEnvelopeItemPdfUrl } from '@documenso/lib/utils/envelope-download';
|
import { getEnvelopeItemPdfUrl } from '@documenso/lib/utils/envelope-download';
|
||||||
import { prisma } from '@documenso/prisma';
|
import { prisma } from '@documenso/prisma';
|
||||||
import { seedAlignmentTestDocument } from '@documenso/prisma/seed/initial-seed';
|
import { seedAlignmentTestDocument } from '@documenso/prisma/seed/initial-seed';
|
||||||
|
|||||||
@ -14,13 +14,13 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@documenso/lib": "*",
|
"@documenso/lib": "*",
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"@playwright/test": "1.52.0",
|
"@playwright/test": "1.56.1",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/pngjs": "^6.0.5",
|
"@types/pngjs": "^6.0.5",
|
||||||
"pixelmatch": "^7.1.0",
|
"pixelmatch": "^7.1.0",
|
||||||
"pngjs": "^7.0.0"
|
"pngjs": "^7.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"start-server-and-test": "^2.0.12"
|
"start-server-and-test": "^2.1.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
56611
packages/assets/pdf.worker.min.js
vendored
56611
packages/assets/pdf.worker.min.js
vendored
File diff suppressed because it is too large
Load Diff
@ -72,7 +72,11 @@ export class AuthClient {
|
|||||||
public async getSession() {
|
public async getSession() {
|
||||||
const response = await this.client['session-json'].$get();
|
const response = await this.client['session-json'].$get();
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
@ -82,13 +86,19 @@ export class AuthClient {
|
|||||||
public async getSessions() {
|
public async getSessions() {
|
||||||
const response = await this.client['sessions'].$get();
|
const response = await this.client['sessions'].$get();
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
return superjson.deserialize<{ sessions: ActiveSession[] }>(result);
|
return superjson.deserialize<{ sessions: ActiveSession[] }>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// !: Unused for now since it isn't providing the type narrowing
|
||||||
|
// !: we need.
|
||||||
private async handleError<T>(response: ClientResponse<T>): Promise<void> {
|
private async handleError<T>(response: ClientResponse<T>): Promise<void> {
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
const error = await response.json();
|
const error = await response.json();
|
||||||
@ -101,7 +111,11 @@ export class AuthClient {
|
|||||||
getMany: async () => {
|
getMany: async () => {
|
||||||
const response = await this.client['accounts'].$get();
|
const response = await this.client['accounts'].$get();
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
@ -112,7 +126,11 @@ export class AuthClient {
|
|||||||
param: { accountId },
|
param: { accountId },
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -131,41 +149,75 @@ export class AuthClient {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
handleSignInRedirect(data.redirectPath);
|
handleSignInRedirect(data.redirectPath);
|
||||||
},
|
},
|
||||||
|
|
||||||
updatePassword: async (data: TUpdatePasswordSchema) => {
|
updatePassword: async (data: TUpdatePasswordSchema) => {
|
||||||
const response = await this.client['email-password']['update-password'].$post({ json: data });
|
const response = await this.client['email-password']['update-password'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
forgotPassword: async (data: TForgotPasswordSchema) => {
|
forgotPassword: async (data: TForgotPasswordSchema) => {
|
||||||
const response = await this.client['email-password']['forgot-password'].$post({ json: data });
|
const response = await this.client['email-password']['forgot-password'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
resetPassword: async (data: TResetPasswordSchema) => {
|
resetPassword: async (data: TResetPasswordSchema) => {
|
||||||
const response = await this.client['email-password']['reset-password'].$post({ json: data });
|
const response = await this.client['email-password']['reset-password'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
signUp: async (data: TSignUpSchema) => {
|
signUp: async (data: TSignUpSchema) => {
|
||||||
const response = await this.client['email-password']['signup'].$post({ json: data });
|
const response = await this.client['email-password']['signup'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
resendVerifyEmail: async (data: TResendVerifyEmailSchema) => {
|
resendVerifyEmail: async (data: TResendVerifyEmailSchema) => {
|
||||||
const response = await this.client['email-password']['resend-verify-email'].$post({
|
const response = await this.client['email-password']['resend-verify-email'].$post({
|
||||||
json: data,
|
json: data,
|
||||||
});
|
});
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
verifyEmail: async (data: TVerifyEmailSchema) => {
|
verifyEmail: async (data: TVerifyEmailSchema) => {
|
||||||
const response = await this.client['email-password']['verify-email'].$post({ json: data });
|
const response = await this.client['email-password']['verify-email'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
return response.json();
|
return response.json();
|
||||||
},
|
},
|
||||||
@ -174,23 +226,43 @@ export class AuthClient {
|
|||||||
public twoFactor = {
|
public twoFactor = {
|
||||||
setup: async () => {
|
setup: async () => {
|
||||||
const response = await this.client['two-factor'].setup.$post();
|
const response = await this.client['two-factor'].setup.$post();
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
return response.json();
|
return response.json();
|
||||||
},
|
},
|
||||||
enable: async (data: TEnableTwoFactorRequestSchema) => {
|
enable: async (data: TEnableTwoFactorRequestSchema) => {
|
||||||
const response = await this.client['two-factor'].enable.$post({ json: data });
|
const response = await this.client['two-factor'].enable.$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
return response.json();
|
return response.json();
|
||||||
},
|
},
|
||||||
disable: async (data: TDisableTwoFactorRequestSchema) => {
|
disable: async (data: TDisableTwoFactorRequestSchema) => {
|
||||||
const response = await this.client['two-factor'].disable.$post({ json: data });
|
const response = await this.client['two-factor'].disable.$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
viewRecoveryCodes: async (data: TViewTwoFactorRecoveryCodesRequestSchema) => {
|
viewRecoveryCodes: async (data: TViewTwoFactorRecoveryCodesRequestSchema) => {
|
||||||
const response = await this.client['two-factor']['view-recovery-codes'].$post({ json: data });
|
const response = await this.client['two-factor']['view-recovery-codes'].$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
return response.json();
|
return response.json();
|
||||||
},
|
},
|
||||||
@ -199,7 +271,12 @@ export class AuthClient {
|
|||||||
public passkey = {
|
public passkey = {
|
||||||
signIn: async (data: TPasskeySignin) => {
|
signIn: async (data: TPasskeySignin) => {
|
||||||
const response = await this.client['passkey'].authorize.$post({ json: data });
|
const response = await this.client['passkey'].authorize.$post({ json: data });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
handleSignInRedirect(data.redirectPath);
|
handleSignInRedirect(data.redirectPath);
|
||||||
},
|
},
|
||||||
@ -211,7 +288,11 @@ export class AuthClient {
|
|||||||
json: { redirectPath },
|
json: { redirectPath },
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
@ -228,7 +309,11 @@ export class AuthClient {
|
|||||||
json: { redirectPath },
|
json: { redirectPath },
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
@ -241,7 +326,12 @@ export class AuthClient {
|
|||||||
public oidc = {
|
public oidc = {
|
||||||
signIn: async ({ redirectPath }: { redirectPath?: string } = {}) => {
|
signIn: async ({ redirectPath }: { redirectPath?: string } = {}) => {
|
||||||
const response = await this.client['oauth'].authorize.oidc.$post({ json: { redirectPath } });
|
const response = await this.client['oauth'].authorize.oidc.$post({ json: { redirectPath } });
|
||||||
await this.handleError(response);
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
@ -256,7 +346,11 @@ export class AuthClient {
|
|||||||
param: { orgUrl },
|
param: { orgUrl },
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.handleError(response);
|
if (!response.ok) {
|
||||||
|
const error = await response.json();
|
||||||
|
|
||||||
|
throw AppError.parseError(error);
|
||||||
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
|
|||||||
@ -12,14 +12,14 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@documenso/lib": "*",
|
"@documenso/lib": "*",
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"@hono/standard-validator": "^0.1.2",
|
"@hono/standard-validator": "^0.2.0",
|
||||||
"@oslojs/crypto": "^1.0.1",
|
"@oslojs/crypto": "^1.0.1",
|
||||||
"@oslojs/encoding": "^1.1.0",
|
"@oslojs/encoding": "^1.1.0",
|
||||||
"arctic": "^3.1.0",
|
"arctic": "^3.7.0",
|
||||||
"hono": "4.7.0",
|
"hono": "4.10.6",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.7.2",
|
||||||
"nanoid": "^5.1.5",
|
"nanoid": "^5.1.6",
|
||||||
"ts-pattern": "^5.0.5",
|
"ts-pattern": "^5.9.0",
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -27,13 +27,13 @@ type HandleOAuthAuthorizeUrlOptions = {
|
|||||||
/**
|
/**
|
||||||
* Optional prompt to pass to the authorization endpoint.
|
* Optional prompt to pass to the authorization endpoint.
|
||||||
*/
|
*/
|
||||||
prompt?: 'login' | 'consent' | 'select_account';
|
prompt?: 'none' | 'login' | 'consent' | 'select_account';
|
||||||
};
|
};
|
||||||
|
|
||||||
const oauthCookieMaxAge = 60 * 10; // 10 minutes.
|
const oauthCookieMaxAge = 60 * 10; // 10 minutes.
|
||||||
|
|
||||||
export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOptions) => {
|
export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOptions) => {
|
||||||
const { c, clientOptions, redirectPath, prompt = 'login' } = options;
|
const { c, clientOptions, redirectPath } = options;
|
||||||
|
|
||||||
if (!clientOptions.clientId || !clientOptions.clientSecret) {
|
if (!clientOptions.clientId || !clientOptions.clientSecret) {
|
||||||
throw new AppError(AppErrorCode.NOT_SETUP);
|
throw new AppError(AppErrorCode.NOT_SETUP);
|
||||||
@ -63,7 +63,11 @@ export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOp
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Pass the prompt to the authorization endpoint.
|
// Pass the prompt to the authorization endpoint.
|
||||||
url.searchParams.append('prompt', prompt);
|
if (process.env.NEXT_PRIVATE_OIDC_PROMPT !== '') {
|
||||||
|
const prompt = process.env.NEXT_PRIVATE_OIDC_PROMPT ?? 'login';
|
||||||
|
|
||||||
|
url.searchParams.append('prompt', prompt);
|
||||||
|
}
|
||||||
|
|
||||||
setCookie(c, `${clientOptions.id}_oauth_state`, state, {
|
setCookie(c, `${clientOptions.id}_oauth_state`, state, {
|
||||||
...sessionCookieOptions,
|
...sessionCookieOptions,
|
||||||
|
|||||||
@ -13,12 +13,12 @@
|
|||||||
"clean": "rimraf node_modules"
|
"clean": "rimraf node_modules"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@aws-sdk/client-sesv2": "^3.936.0",
|
||||||
"@documenso/lib": "*",
|
"@documenso/lib": "*",
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"luxon": "^3.4.0",
|
"luxon": "^3.7.2",
|
||||||
"micro": "^10.0.1",
|
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"ts-pattern": "^5.0.5",
|
"ts-pattern": "^5.9.0",
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13,36 +13,36 @@
|
|||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "email dev --port 3002 --dir templates",
|
"dev": "email dev --port 3002 --dir templates",
|
||||||
"clean": "rimraf node_modules",
|
"clean": "rimraf node_modules"
|
||||||
"worker:test": "tsup worker/index.ts --format esm"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@documenso/tailwind-config": "*",
|
"@documenso/tailwind-config": "*",
|
||||||
"@documenso/nodemailer-resend": "2.0.0",
|
"@documenso/nodemailer-resend": "4.0.0",
|
||||||
"@react-email/body": "0.0.4",
|
"@react-email/body": "0.2.0",
|
||||||
"@react-email/button": "0.0.11",
|
"@react-email/button": "0.2.0",
|
||||||
"@react-email/column": "0.0.8",
|
"@react-email/code-block": "0.2.0",
|
||||||
"@react-email/container": "0.0.10",
|
"@react-email/code-inline": "0.0.5",
|
||||||
"@react-email/font": "0.0.4",
|
"@react-email/column": "0.0.13",
|
||||||
"@react-email/head": "0.0.6",
|
"@react-email/container": "0.0.15",
|
||||||
"@react-email/heading": "0.0.9",
|
"@react-email/font": "0.0.9",
|
||||||
"@react-email/hr": "0.0.6",
|
"@react-email/head": "0.0.12",
|
||||||
"@react-email/html": "0.0.6",
|
"@react-email/heading": "0.0.15",
|
||||||
"@react-email/img": "0.0.6",
|
"@react-email/hr": "0.0.11",
|
||||||
"@react-email/link": "0.0.6",
|
"@react-email/html": "0.0.11",
|
||||||
"@react-email/preview": "0.0.7",
|
"@react-email/img": "0.0.11",
|
||||||
"@react-email/render": "0.0.9",
|
"@react-email/link": "0.0.12",
|
||||||
"@react-email/row": "0.0.6",
|
"@react-email/preview": "0.0.13",
|
||||||
"@react-email/section": "0.0.10",
|
"@react-email/render": "0.0.17",
|
||||||
"@react-email/tailwind": "0.0.9",
|
"@react-email/row": "0.0.12",
|
||||||
"@react-email/text": "0.0.6",
|
"@react-email/section": "0.0.16",
|
||||||
"nodemailer": "^6.10.1",
|
"@react-email/tailwind": "^2.0.1",
|
||||||
"react-email": "1.9.5",
|
"@react-email/text": "0.1.5",
|
||||||
"resend": "2.0.0"
|
"nodemailer": "^7.0.10",
|
||||||
|
"react-email": "^5.0.4",
|
||||||
|
"resend": "^6.5.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@documenso/tsconfig": "*",
|
"@documenso/tsconfig": "*",
|
||||||
"@types/nodemailer": "^6.4.14",
|
"@types/nodemailer": "^6.4.21"
|
||||||
"tsup": "^7.1.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,3 +1,5 @@
|
|||||||
|
import type { I18n } from '@lingui/core';
|
||||||
|
import { I18nProvider } from '@lingui/react';
|
||||||
import * as ReactEmail from '@react-email/render';
|
import * as ReactEmail from '@react-email/render';
|
||||||
|
|
||||||
import config from '@documenso/tailwind-config';
|
import config from '@documenso/tailwind-config';
|
||||||
@ -7,6 +9,7 @@ import { BrandingProvider, type BrandingSettings } from './providers/branding';
|
|||||||
|
|
||||||
export type RenderOptions = ReactEmail.Options & {
|
export type RenderOptions = ReactEmail.Options & {
|
||||||
branding?: BrandingSettings;
|
branding?: BrandingSettings;
|
||||||
|
i18n?: I18n;
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
@ -16,17 +19,46 @@ export const render = (element: React.ReactNode, options?: RenderOptions) => {
|
|||||||
const { branding, ...otherOptions } = options ?? {};
|
const { branding, ...otherOptions } = options ?? {};
|
||||||
|
|
||||||
return ReactEmail.render(
|
return ReactEmail.render(
|
||||||
<Tailwind
|
<BrandingProvider branding={branding}>
|
||||||
config={{
|
<Tailwind
|
||||||
theme: {
|
config={{
|
||||||
extend: {
|
theme: {
|
||||||
colors,
|
extend: {
|
||||||
|
colors,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
}}
|
||||||
}}
|
>
|
||||||
>
|
{element}
|
||||||
<BrandingProvider branding={branding}>{element}</BrandingProvider>
|
</Tailwind>
|
||||||
</Tailwind>,
|
</BrandingProvider>,
|
||||||
|
otherOptions,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const renderWithI18N = (element: React.ReactNode, options?: RenderOptions) => {
|
||||||
|
const { branding, i18n, ...otherOptions } = options ?? {};
|
||||||
|
|
||||||
|
if (!i18n) {
|
||||||
|
throw new Error('i18n is required');
|
||||||
|
}
|
||||||
|
|
||||||
|
return ReactEmail.render(
|
||||||
|
<I18nProvider i18n={i18n}>
|
||||||
|
<BrandingProvider branding={branding}>
|
||||||
|
<Tailwind
|
||||||
|
config={{
|
||||||
|
theme: {
|
||||||
|
extend: {
|
||||||
|
colors,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{element}
|
||||||
|
</Tailwind>
|
||||||
|
</BrandingProvider>
|
||||||
|
</I18nProvider>,
|
||||||
otherOptions,
|
otherOptions,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -35,17 +67,19 @@ export const renderAsync = async (element: React.ReactNode, options?: RenderOpti
|
|||||||
const { branding, ...otherOptions } = options ?? {};
|
const { branding, ...otherOptions } = options ?? {};
|
||||||
|
|
||||||
return await ReactEmail.renderAsync(
|
return await ReactEmail.renderAsync(
|
||||||
<Tailwind
|
<BrandingProvider branding={branding}>
|
||||||
config={{
|
<Tailwind
|
||||||
theme: {
|
config={{
|
||||||
extend: {
|
theme: {
|
||||||
colors,
|
extend: {
|
||||||
|
colors,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
}}
|
||||||
}}
|
>
|
||||||
>
|
{element}
|
||||||
<BrandingProvider branding={branding}>{element}</BrandingProvider>
|
</Tailwind>
|
||||||
</Tailwind>,
|
</BrandingProvider>,
|
||||||
otherOptions,
|
otherOptions,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,14 +7,14 @@
|
|||||||
"clean": "rimraf node_modules"
|
"clean": "rimraf node_modules"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^7.1.1",
|
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
||||||
"@typescript-eslint/parser": "^7.1.1",
|
"@typescript-eslint/parser": "^7.18.0",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-next": "^14.2.28",
|
"eslint-config-next": "^15",
|
||||||
"eslint-config-turbo": "^1.12.5",
|
"eslint-config-turbo": "^1.13.4",
|
||||||
"eslint-plugin-package-json": "^0.31.0",
|
"eslint-plugin-package-json": "^0.85.0",
|
||||||
"eslint-plugin-react": "^7.37.5",
|
"eslint-plugin-react": "^7.37.5",
|
||||||
"eslint-plugin-unused-imports": "^4.1.4",
|
"eslint-plugin-unused-imports": "^4.3.0",
|
||||||
"typescript": "5.6.2"
|
"typescript": "5.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -75,6 +75,7 @@ export function usePageRenderer(renderFunction: RenderFunction) {
|
|||||||
canvas.style.height = `${Math.floor(scaledViewport.height)}px`;
|
canvas.style.height = `${Math.floor(scaledViewport.height)}px`;
|
||||||
|
|
||||||
const renderContext: RenderParameters = {
|
const renderContext: RenderParameters = {
|
||||||
|
canvas,
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
canvasContext: canvas.getContext('2d', { alpha: false }) as CanvasRenderingContext2D,
|
canvasContext: canvas.getContext('2d', { alpha: false }) as CanvasRenderingContext2D,
|
||||||
viewport: renderViewport,
|
viewport: renderViewport,
|
||||||
|
|||||||
@ -1,6 +1,17 @@
|
|||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
export const SUPPORTED_LANGUAGE_CODES = ['de', 'en', 'fr', 'es', 'it', 'pl'] as const;
|
export const SUPPORTED_LANGUAGE_CODES = [
|
||||||
|
'de',
|
||||||
|
'en',
|
||||||
|
'fr',
|
||||||
|
'es',
|
||||||
|
'it',
|
||||||
|
'pl',
|
||||||
|
'pt-BR',
|
||||||
|
'ja',
|
||||||
|
'ko',
|
||||||
|
'zh',
|
||||||
|
] as const;
|
||||||
|
|
||||||
export const ZSupportedLanguageCodeSchema = z.enum(SUPPORTED_LANGUAGE_CODES).catch('en');
|
export const ZSupportedLanguageCodeSchema = z.enum(SUPPORTED_LANGUAGE_CODES).catch('en');
|
||||||
|
|
||||||
@ -54,6 +65,22 @@ export const SUPPORTED_LANGUAGES: Record<string, SupportedLanguage> = {
|
|||||||
short: 'pl',
|
short: 'pl',
|
||||||
full: 'Polish',
|
full: 'Polish',
|
||||||
},
|
},
|
||||||
|
'pt-BR': {
|
||||||
|
short: 'pt-BR',
|
||||||
|
full: 'Portuguese (Brazil)',
|
||||||
|
},
|
||||||
|
ja: {
|
||||||
|
short: 'ja',
|
||||||
|
full: 'Japanese',
|
||||||
|
},
|
||||||
|
ko: {
|
||||||
|
short: 'ko',
|
||||||
|
full: 'Korean',
|
||||||
|
},
|
||||||
|
zh: {
|
||||||
|
short: 'zh',
|
||||||
|
full: 'Chinese',
|
||||||
|
},
|
||||||
} satisfies Record<SupportedLanguageCodes, SupportedLanguage>;
|
} satisfies Record<SupportedLanguageCodes, SupportedLanguage>;
|
||||||
|
|
||||||
export const isValidLanguageCode = (code: unknown): code is SupportedLanguageCodes =>
|
export const isValidLanguageCode = (code: unknown): code is SupportedLanguageCodes =>
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import type { Context as HonoContext } from 'hono';
|
import type { Context as HonoContext } from 'hono';
|
||||||
import type { Context, Handler, InngestFunction } from 'inngest';
|
import type { Context, Handler, InngestFunction } from 'inngest';
|
||||||
import { Inngest as InngestClient } from 'inngest';
|
import { Inngest as InngestClient } from 'inngest';
|
||||||
|
import type { Logger } from 'inngest';
|
||||||
import { serve as createHonoPagesRoute } from 'inngest/hono';
|
import { serve as createHonoPagesRoute } from 'inngest/hono';
|
||||||
import type { Logger } from 'inngest/middleware/logger';
|
|
||||||
|
|
||||||
import { env } from '../../utils/env';
|
import { env } from '../../utils/env';
|
||||||
import type { JobDefinition, JobRunIO, SimpleTriggerJobOptions } from './_internal/job';
|
import type { JobDefinition, JobRunIO, SimpleTriggerJobOptions } from './_internal/job';
|
||||||
|
|||||||
@ -49,7 +49,8 @@ export const run = async ({
|
|||||||
throw new Error('Template not found');
|
throw new Error('Template not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = parse(csvContent, { columns: true, skip_empty_lines: true });
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const rows = parse<any>(csvContent, { columns: true, skip_empty_lines: true });
|
||||||
|
|
||||||
if (rows.length > 100) {
|
if (rows.length > 100) {
|
||||||
throw new Error('Maximum 100 rows allowed per upload');
|
throw new Error('Maximum 100 rows allowed per upload');
|
||||||
|
|||||||
@ -25,7 +25,6 @@ import { signPdf } from '@documenso/signing';
|
|||||||
|
|
||||||
import { AppError, AppErrorCode } from '../../../errors/app-error';
|
import { AppError, AppErrorCode } from '../../../errors/app-error';
|
||||||
import { sendCompletedEmail } from '../../../server-only/document/send-completed-email';
|
import { sendCompletedEmail } from '../../../server-only/document/send-completed-email';
|
||||||
import PostHogServerClient from '../../../server-only/feature-flags/get-post-hog-server-client';
|
|
||||||
import { getAuditLogsPdf } from '../../../server-only/htmltopdf/get-audit-logs-pdf';
|
import { getAuditLogsPdf } from '../../../server-only/htmltopdf/get-audit-logs-pdf';
|
||||||
import { getCertificatePdf } from '../../../server-only/htmltopdf/get-certificate-pdf';
|
import { getCertificatePdf } from '../../../server-only/htmltopdf/get-certificate-pdf';
|
||||||
import { addRejectionStampToPdf } from '../../../server-only/pdf/add-rejection-stamp-to-pdf';
|
import { addRejectionStampToPdf } from '../../../server-only/pdf/add-rejection-stamp-to-pdf';
|
||||||
@ -62,171 +61,120 @@ export const run = async ({
|
|||||||
}) => {
|
}) => {
|
||||||
const { documentId, sendEmail = true, isResealing = false, requestMetadata } = payload;
|
const { documentId, sendEmail = true, isResealing = false, requestMetadata } = payload;
|
||||||
|
|
||||||
const envelope = await prisma.envelope.findFirstOrThrow({
|
const { envelopeId, envelopeStatus, isRejected } = await io.runTask('seal-document', async () => {
|
||||||
where: {
|
const envelope = await prisma.envelope.findFirstOrThrow({
|
||||||
type: EnvelopeType.DOCUMENT,
|
where: {
|
||||||
secondaryId: mapDocumentIdToSecondaryId(documentId),
|
type: EnvelopeType.DOCUMENT,
|
||||||
},
|
secondaryId: mapDocumentIdToSecondaryId(documentId),
|
||||||
include: {
|
},
|
||||||
documentMeta: true,
|
include: {
|
||||||
recipients: true,
|
documentMeta: true,
|
||||||
envelopeItems: {
|
recipients: true,
|
||||||
include: {
|
envelopeItems: {
|
||||||
documentData: true,
|
include: {
|
||||||
field: {
|
documentData: true,
|
||||||
include: {
|
field: {
|
||||||
signature: true,
|
include: {
|
||||||
|
signature: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (envelope.envelopeItems.length === 0) {
|
|
||||||
throw new Error('At least one envelope item required');
|
|
||||||
}
|
|
||||||
|
|
||||||
const settings = await getTeamSettings({
|
|
||||||
userId: envelope.userId,
|
|
||||||
teamId: envelope.teamId,
|
|
||||||
});
|
|
||||||
|
|
||||||
const isComplete =
|
|
||||||
envelope.recipients.some((recipient) => recipient.signingStatus === SigningStatus.REJECTED) ||
|
|
||||||
envelope.recipients.every((recipient) => recipient.signingStatus === SigningStatus.SIGNED);
|
|
||||||
|
|
||||||
if (!isComplete) {
|
|
||||||
throw new AppError(AppErrorCode.UNKNOWN_ERROR, {
|
|
||||||
message: 'Document is not complete',
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
// Seems silly but we need to do this in case the job is re-ran
|
if (envelope.envelopeItems.length === 0) {
|
||||||
// after it has already run through the update task further below.
|
throw new Error('At least one envelope item required');
|
||||||
// eslint-disable-next-line @typescript-eslint/require-await
|
}
|
||||||
const documentStatus = await io.runTask('get-document-status', async () => {
|
|
||||||
return envelope.status;
|
|
||||||
});
|
|
||||||
|
|
||||||
// This is the same case as above.
|
const settings = await getTeamSettings({
|
||||||
let envelopeItems = await io.runTask(
|
userId: envelope.userId,
|
||||||
'get-document-data-id',
|
teamId: envelope.teamId,
|
||||||
// eslint-disable-next-line @typescript-eslint/require-await
|
});
|
||||||
async () => {
|
|
||||||
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
||||||
return envelope.envelopeItems.map(({ field, ...rest }) => ({
|
|
||||||
...rest,
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
if (envelopeItems.length < 1) {
|
const isComplete =
|
||||||
throw new Error(`Document ${envelope.id} has no envelope items`);
|
envelope.recipients.some((recipient) => recipient.signingStatus === SigningStatus.REJECTED) ||
|
||||||
}
|
envelope.recipients.every((recipient) => recipient.signingStatus === SigningStatus.SIGNED);
|
||||||
|
|
||||||
const recipients = await prisma.recipient.findMany({
|
if (!isComplete) {
|
||||||
where: {
|
throw new AppError(AppErrorCode.UNKNOWN_ERROR, {
|
||||||
envelopeId: envelope.id,
|
message: 'Document is not complete',
|
||||||
role: {
|
});
|
||||||
not: RecipientRole.CC,
|
}
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// Determine if the document has been rejected by checking if any recipient has rejected it
|
let envelopeItems = envelope.envelopeItems;
|
||||||
const rejectedRecipient = recipients.find(
|
|
||||||
(recipient) => recipient.signingStatus === SigningStatus.REJECTED,
|
|
||||||
);
|
|
||||||
|
|
||||||
const isRejected = Boolean(rejectedRecipient);
|
if (envelopeItems.length < 1) {
|
||||||
|
throw new Error(`Document ${envelope.id} has no envelope items`);
|
||||||
|
}
|
||||||
|
|
||||||
// Get the rejection reason from the rejected recipient
|
const recipients = await prisma.recipient.findMany({
|
||||||
const rejectionReason = rejectedRecipient?.rejectionReason ?? '';
|
|
||||||
|
|
||||||
const fields = await prisma.field.findMany({
|
|
||||||
where: {
|
|
||||||
envelopeId: envelope.id,
|
|
||||||
},
|
|
||||||
include: {
|
|
||||||
signature: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// Skip the field check if the document is rejected
|
|
||||||
if (!isRejected && fieldsContainUnsignedRequiredField(fields)) {
|
|
||||||
throw new Error(`Document ${envelope.id} has unsigned required fields`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isResealing) {
|
|
||||||
// If we're resealing we want to use the initial data for the document
|
|
||||||
// so we aren't placing fields on top of eachother.
|
|
||||||
envelopeItems = envelopeItems.map((envelopeItem) => ({
|
|
||||||
...envelopeItem,
|
|
||||||
documentData: {
|
|
||||||
...envelopeItem.documentData,
|
|
||||||
data: envelopeItem.documentData.initialData,
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!envelope.qrToken) {
|
|
||||||
await prisma.envelope.update({
|
|
||||||
where: {
|
where: {
|
||||||
id: envelope.id,
|
envelopeId: envelope.id,
|
||||||
},
|
role: {
|
||||||
data: {
|
not: RecipientRole.CC,
|
||||||
qrToken: prefixedId('qr'),
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
const legacyDocumentId = mapSecondaryIdToDocumentId(envelope.secondaryId);
|
// Determine if the document has been rejected by checking if any recipient has rejected it
|
||||||
|
const rejectedRecipient = recipients.find(
|
||||||
|
(recipient) => recipient.signingStatus === SigningStatus.REJECTED,
|
||||||
|
);
|
||||||
|
|
||||||
const { certificateData, auditLogData } = await getCertificateAndAuditLogData({
|
const isRejected = Boolean(rejectedRecipient);
|
||||||
legacyDocumentId,
|
|
||||||
documentMeta: envelope.documentMeta,
|
|
||||||
settings,
|
|
||||||
});
|
|
||||||
|
|
||||||
// !: The commented out code is our desired implementation but we're seemingly
|
// Get the rejection reason from the rejected recipient
|
||||||
// !: running into issues with inngest parallelism in production.
|
const rejectionReason = rejectedRecipient?.rejectionReason ?? '';
|
||||||
// !: Until this is resolved we will do this sequentially which is slower but
|
|
||||||
// !: will actually work.
|
|
||||||
// const decoratePromises: Array<Promise<{ oldDocumentDataId: string; newDocumentDataId: string }>> =
|
|
||||||
// [];
|
|
||||||
|
|
||||||
// for (const envelopeItem of envelopeItems) {
|
const fields = await prisma.field.findMany({
|
||||||
// const task = io.runTask(`decorate-${envelopeItem.id}`, async () => {
|
where: {
|
||||||
// const envelopeItemFields = envelope.envelopeItems.find(
|
envelopeId: envelope.id,
|
||||||
// (item) => item.id === envelopeItem.id,
|
},
|
||||||
// )?.field;
|
include: {
|
||||||
|
signature: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
// if (!envelopeItemFields) {
|
// Skip the field check if the document is rejected
|
||||||
// throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
if (!isRejected && fieldsContainUnsignedRequiredField(fields)) {
|
||||||
// }
|
throw new Error(`Document ${envelope.id} has unsigned required fields`);
|
||||||
|
}
|
||||||
|
|
||||||
// return decorateAndSignPdf({
|
if (isResealing) {
|
||||||
// envelope,
|
// If we're resealing we want to use the initial data for the document
|
||||||
// envelopeItem,
|
// so we aren't placing fields on top of eachother.
|
||||||
// envelopeItemFields,
|
envelopeItems = envelopeItems.map((envelopeItem) => ({
|
||||||
// isRejected,
|
...envelopeItem,
|
||||||
// rejectionReason,
|
documentData: {
|
||||||
// certificateData,
|
...envelopeItem.documentData,
|
||||||
// auditLogData,
|
data: envelopeItem.documentData.initialData,
|
||||||
// });
|
},
|
||||||
// });
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
// decoratePromises.push(task);
|
if (!envelope.qrToken) {
|
||||||
// }
|
await prisma.envelope.update({
|
||||||
|
where: {
|
||||||
|
id: envelope.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
qrToken: prefixedId('qr'),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// const newDocumentData = await Promise.all(decoratePromises);
|
const legacyDocumentId = mapSecondaryIdToDocumentId(envelope.secondaryId);
|
||||||
|
|
||||||
// TODO: Remove once parallelization is working
|
const { certificateData, auditLogData } = await getCertificateAndAuditLogData({
|
||||||
const newDocumentData: Array<{ oldDocumentDataId: string; newDocumentDataId: string }> = [];
|
legacyDocumentId,
|
||||||
|
documentMeta: envelope.documentMeta,
|
||||||
|
settings,
|
||||||
|
});
|
||||||
|
|
||||||
for (const envelopeItem of envelopeItems) {
|
const newDocumentData: Array<{ oldDocumentDataId: string; newDocumentDataId: string }> = [];
|
||||||
const result = await io.runTask(`decorate-${envelopeItem.id}`, async () => {
|
|
||||||
|
for (const envelopeItem of envelopeItems) {
|
||||||
const envelopeItemFields = envelope.envelopeItems.find(
|
const envelopeItemFields = envelope.envelopeItems.find(
|
||||||
(item) => item.id === envelopeItem.id,
|
(item) => item.id === envelopeItem.id,
|
||||||
)?.field;
|
)?.field;
|
||||||
@ -235,7 +183,7 @@ export const run = async ({
|
|||||||
throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return decorateAndSignPdf({
|
const result = await decorateAndSignPdf({
|
||||||
envelope,
|
envelope,
|
||||||
envelopeItem,
|
envelopeItem,
|
||||||
envelopeItemFields,
|
envelopeItemFields,
|
||||||
@ -244,25 +192,10 @@ export const run = async ({
|
|||||||
certificateData,
|
certificateData,
|
||||||
auditLogData,
|
auditLogData,
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
newDocumentData.push(result);
|
newDocumentData.push(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
const postHog = PostHogServerClient();
|
|
||||||
|
|
||||||
if (postHog) {
|
|
||||||
postHog.capture({
|
|
||||||
distinctId: nanoid(),
|
|
||||||
event: 'App: Document Sealed',
|
|
||||||
properties: {
|
|
||||||
documentId: envelope.id,
|
|
||||||
isRejected,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
await io.runTask('update-document', async () => {
|
|
||||||
await prisma.$transaction(async (tx) => {
|
await prisma.$transaction(async (tx) => {
|
||||||
for (const { oldDocumentDataId, newDocumentDataId } of newDocumentData) {
|
for (const { oldDocumentDataId, newDocumentDataId } of newDocumentData) {
|
||||||
const newData = await tx.documentData.findFirstOrThrow({
|
const newData = await tx.documentData.findFirstOrThrow({
|
||||||
@ -304,18 +237,24 @@ export const run = async ({
|
|||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
envelopeId: envelope.id,
|
||||||
|
envelopeStatus: envelope.status,
|
||||||
|
isRejected,
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
await io.runTask('send-completed-email', async () => {
|
await io.runTask('send-completed-email', async () => {
|
||||||
let shouldSendCompletedEmail = sendEmail && !isResealing && !isRejected;
|
let shouldSendCompletedEmail = sendEmail && !isResealing && !isRejected;
|
||||||
|
|
||||||
if (isResealing && !isDocumentCompleted(envelope.status)) {
|
if (isResealing && !isDocumentCompleted(envelopeStatus)) {
|
||||||
shouldSendCompletedEmail = sendEmail;
|
shouldSendCompletedEmail = sendEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldSendCompletedEmail) {
|
if (shouldSendCompletedEmail) {
|
||||||
await sendCompletedEmail({
|
await sendCompletedEmail({
|
||||||
id: { type: 'envelopeId', id: envelope.id },
|
id: { type: 'envelopeId', id: envelopeId },
|
||||||
requestMetadata,
|
requestMetadata,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -323,7 +262,7 @@ export const run = async ({
|
|||||||
|
|
||||||
const updatedEnvelope = await prisma.envelope.findFirstOrThrow({
|
const updatedEnvelope = await prisma.envelope.findFirstOrThrow({
|
||||||
where: {
|
where: {
|
||||||
id: envelope.id,
|
id: envelopeId,
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
documentMeta: true,
|
documentMeta: true,
|
||||||
|
|||||||
@ -15,51 +15,52 @@
|
|||||||
"clean": "rimraf node_modules"
|
"clean": "rimraf node_modules"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.410.0",
|
"@aws-sdk/client-s3": "^3.936.0",
|
||||||
"@aws-sdk/client-sesv2": "^3.410.0",
|
"@aws-sdk/client-sesv2": "^3.936.0",
|
||||||
"@aws-sdk/cloudfront-signer": "^3.410.0",
|
"@aws-sdk/cloudfront-signer": "^3.935.0",
|
||||||
"@aws-sdk/s3-request-presigner": "^3.410.0",
|
"@aws-sdk/s3-request-presigner": "^3.936.0",
|
||||||
"@aws-sdk/signature-v4-crt": "^3.410.0",
|
"@aws-sdk/signature-v4-crt": "^3.936.0",
|
||||||
"@documenso/assets": "*",
|
"@documenso/assets": "*",
|
||||||
"@documenso/email": "*",
|
"@documenso/email": "*",
|
||||||
"@documenso/prisma": "*",
|
"@documenso/prisma": "*",
|
||||||
"@documenso/signing": "*",
|
"@documenso/signing": "*",
|
||||||
"@lingui/core": "^5.2.0",
|
"@lingui/core": "^5.6.0",
|
||||||
"@lingui/macro": "^5.2.0",
|
"@lingui/macro": "^5.6.0",
|
||||||
"@lingui/react": "^5.2.0",
|
"@lingui/react": "^5.6.0",
|
||||||
"@noble/ciphers": "0.4.0",
|
"@noble/ciphers": "0.6.0",
|
||||||
"@noble/hashes": "1.3.2",
|
"@noble/hashes": "1.8.0",
|
||||||
"@node-rs/bcrypt": "^1.10.0",
|
"@node-rs/bcrypt": "^1.10.7",
|
||||||
"@pdf-lib/fontkit": "^1.1.1",
|
"@pdf-lib/fontkit": "^1.1.1",
|
||||||
"@scure/base": "^1.1.3",
|
"@scure/base": "^1.2.6",
|
||||||
"@sindresorhus/slugify": "^2.2.1",
|
"@sindresorhus/slugify": "^3.0.0",
|
||||||
"@team-plain/typescript-sdk": "^5.9.0",
|
"@team-plain/typescript-sdk": "^5.11.0",
|
||||||
"@vvo/tzdb": "^6.117.0",
|
"@vvo/tzdb": "^6.196.0",
|
||||||
"csv-parse": "^5.6.0",
|
"csv-parse": "^6.1.0",
|
||||||
"inngest": "^3.19.13",
|
"inngest": "^3.45.1",
|
||||||
"jose": "^6.0.0",
|
"jose": "^6.1.2",
|
||||||
"kysely": "0.26.3",
|
"konva": "^10.0.9",
|
||||||
"luxon": "^3.4.0",
|
"kysely": "0.28.8",
|
||||||
"micro": "^10.0.1",
|
"luxon": "^3.7.2",
|
||||||
"nanoid": "^5.1.5",
|
"nanoid": "^5.1.6",
|
||||||
"oslo": "^0.17.0",
|
"oslo": "^0.17.0",
|
||||||
"pg": "^8.11.3",
|
"pg": "^8.16.3",
|
||||||
"pino": "^9.7.0",
|
"pino": "^9.14.0",
|
||||||
"pino-pretty": "^13.0.0",
|
"pino-pretty": "^13.1.2",
|
||||||
"playwright": "1.52.0",
|
"playwright": "1.56.1",
|
||||||
"posthog-js": "^1.245.0",
|
"posthog-js": "^1.297.2",
|
||||||
"posthog-node": "^4.17.0",
|
"posthog-node": "^4.18.0",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"remeda": "^2.17.3",
|
"react-pdf": "^10.2.0",
|
||||||
"sharp": "0.32.6",
|
"remeda": "^2.32.0",
|
||||||
|
"sharp": "0.34.5",
|
||||||
"skia-canvas": "^3.0.8",
|
"skia-canvas": "^3.0.8",
|
||||||
"stripe": "^12.7.0",
|
"stripe": "^12.18.0",
|
||||||
"ts-pattern": "^5.0.5",
|
"ts-pattern": "^5.9.0",
|
||||||
"zod": "^3.25.76"
|
"zod": "^3.25.76"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@playwright/browser-chromium": "1.52.0",
|
"@playwright/browser-chromium": "1.56.1",
|
||||||
"@types/luxon": "^3.3.1",
|
"@types/luxon": "^3.7.1",
|
||||||
"@types/pg": "^8.11.4"
|
"@types/pg": "^8.15.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ export const getMonthlyActiveUsers = async () => {
|
|||||||
)
|
)
|
||||||
.as('cume_count'),
|
.as('cume_count'),
|
||||||
])
|
])
|
||||||
.where(sql`type = ${UserSecurityAuditLogType.SIGN_IN}::"UserSecurityAuditLogType"`)
|
.where(() => sql`type = ${UserSecurityAuditLogType.SIGN_IN}::"UserSecurityAuditLogType"`)
|
||||||
.groupBy(({ fn }) => fn('DATE_TRUNC', [sql.lit('MONTH'), 'UserSecurityAuditLog.createdAt']))
|
.groupBy(({ fn }) => fn('DATE_TRUNC', [sql.lit('MONTH'), 'UserSecurityAuditLog.createdAt']))
|
||||||
.orderBy('month', 'desc')
|
.orderBy('month', 'desc')
|
||||||
.limit(12);
|
.limit(12);
|
||||||
|
|||||||
@ -103,6 +103,7 @@ export const getDocumentAndSenderByToken = async ({
|
|||||||
select: {
|
select: {
|
||||||
name: true,
|
name: true,
|
||||||
teamEmail: true,
|
teamEmail: true,
|
||||||
|
url: true,
|
||||||
teamGlobalSettings: {
|
teamGlobalSettings: {
|
||||||
select: {
|
select: {
|
||||||
brandingEnabled: true,
|
brandingEnabled: true,
|
||||||
|
|||||||
@ -31,26 +31,16 @@ export const viewedDocument = async ({
|
|||||||
type: EnvelopeType.DOCUMENT,
|
type: EnvelopeType.DOCUMENT,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
include: {
|
|
||||||
envelope: {
|
|
||||||
include: {
|
|
||||||
documentMeta: true,
|
|
||||||
recipients: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!recipient) {
|
if (!recipient) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { envelope } = recipient;
|
|
||||||
|
|
||||||
await prisma.documentAuditLog.create({
|
await prisma.documentAuditLog.create({
|
||||||
data: createDocumentAuditLogData({
|
data: createDocumentAuditLogData({
|
||||||
type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VIEWED,
|
type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VIEWED,
|
||||||
envelopeId: envelope.id,
|
envelopeId: recipient.envelopeId,
|
||||||
user: {
|
user: {
|
||||||
name: recipient.name,
|
name: recipient.name,
|
||||||
email: recipient.email,
|
email: recipient.email,
|
||||||
@ -86,7 +76,7 @@ export const viewedDocument = async ({
|
|||||||
await tx.documentAuditLog.create({
|
await tx.documentAuditLog.create({
|
||||||
data: createDocumentAuditLogData({
|
data: createDocumentAuditLogData({
|
||||||
type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED,
|
type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED,
|
||||||
envelopeId: envelope.id,
|
envelopeId: recipient.envelopeId,
|
||||||
user: {
|
user: {
|
||||||
name: recipient.name,
|
name: recipient.name,
|
||||||
email: recipient.email,
|
email: recipient.email,
|
||||||
@ -103,6 +93,16 @@ export const viewedDocument = async ({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const envelope = await prisma.envelope.findUniqueOrThrow({
|
||||||
|
where: {
|
||||||
|
id: recipient.envelopeId,
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
documentMeta: true,
|
||||||
|
recipients: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
await triggerWebhook({
|
await triggerWebhook({
|
||||||
event: WebhookTriggerEvents.DOCUMENT_OPENED,
|
event: WebhookTriggerEvents.DOCUMENT_OPENED,
|
||||||
data: ZWebhookDocumentSchema.parse(mapEnvelopeToWebhookDocumentPayload(envelope)),
|
data: ZWebhookDocumentSchema.parse(mapEnvelopeToWebhookDocumentPayload(envelope)),
|
||||||
|
|||||||
@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
"Project-Id-Version: documenso-app\n"
|
"Project-Id-Version: documenso-app\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-11-17 02:33\n"
|
"PO-Revision-Date: 2025-11-20 02:32\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Polish\n"
|
"Language-Team: Polish\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||||
@ -179,7 +179,7 @@ msgstr "Sprawdź i {recipientActionVerb} dokument utworzony przez zespół {0}"
|
|||||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||||
msgid "{0} of {1} documents remaining this month."
|
msgid "{0} of {1} documents remaining this month."
|
||||||
msgstr "{0} z {1} dokumentów pozostałych w tym miesiącu."
|
msgstr "Pozostało {0} z {1} dokumentów w tym miesiącu."
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
|
|||||||
10966
packages/lib/translations/pt-BR/web.po
Normal file
10966
packages/lib/translations/pt-BR/web.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
import { xchacha20poly1305 } from '@noble/ciphers/chacha';
|
import { xchacha20poly1305 } from '@noble/ciphers/chacha';
|
||||||
import { bytesToHex, hexToBytes, utf8ToBytes } from '@noble/ciphers/utils';
|
import { bytesToHex, hexToBytes, utf8ToBytes } from '@noble/ciphers/utils';
|
||||||
import { managedNonce } from '@noble/ciphers/webcrypto/utils';
|
import { managedNonce } from '@noble/ciphers/webcrypto';
|
||||||
import { sha256 } from '@noble/hashes/sha256';
|
import { sha256 } from '@noble/hashes/sha2';
|
||||||
|
|
||||||
export type SymmetricEncryptOptions = {
|
export type SymmetricEncryptOptions = {
|
||||||
key: string;
|
key: string;
|
||||||
|
|||||||
@ -96,6 +96,7 @@ const createFieldSignature = (
|
|||||||
|
|
||||||
img.onload = () => {
|
img.onload = () => {
|
||||||
image.setAttrs({
|
image.setAttrs({
|
||||||
|
image: img,
|
||||||
...getImageDimensions(img, fieldWidth, fieldHeight),
|
...getImageDimensions(img, fieldWidth, fieldHeight),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -8,15 +8,17 @@ export type EnvelopeItemPdfUrlOptions =
|
|||||||
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
|
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
|
||||||
token: string | undefined;
|
token: string | undefined;
|
||||||
version: 'original' | 'signed';
|
version: 'original' | 'signed';
|
||||||
|
presignToken?: undefined;
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
type: 'view';
|
type: 'view';
|
||||||
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
|
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
|
||||||
token: string | undefined;
|
token: string | undefined;
|
||||||
|
presignToken?: string | undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getEnvelopeItemPdfUrl = (options: EnvelopeItemPdfUrlOptions) => {
|
export const getEnvelopeItemPdfUrl = (options: EnvelopeItemPdfUrlOptions) => {
|
||||||
const { envelopeItem, token, type } = options;
|
const { envelopeItem, token, type, presignToken } = options;
|
||||||
|
|
||||||
const { id, envelopeId } = envelopeItem;
|
const { id, envelopeId } = envelopeItem;
|
||||||
|
|
||||||
@ -24,11 +26,11 @@ export const getEnvelopeItemPdfUrl = (options: EnvelopeItemPdfUrlOptions) => {
|
|||||||
const version = options.version;
|
const version = options.version;
|
||||||
|
|
||||||
return token
|
return token
|
||||||
? `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/token/${token}/envelopeItem/${id}/download/${version}`
|
? `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/token/${token}/envelopeItem/${id}/download/${version}${presignToken ? `?presignToken=${presignToken}` : ''}`
|
||||||
: `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/envelope/${envelopeId}/envelopeItem/${id}/download/${version}`;
|
: `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/envelope/${envelopeId}/envelopeItem/${id}/download/${version}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return token
|
return token
|
||||||
? `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/token/${token}/envelopeItem/${id}`
|
? `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/token/${token}/envelopeItem/${id}${presignToken ? `?presignToken=${presignToken}` : ''}`
|
||||||
: `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/envelope/${envelopeId}/envelopeItem/${id}`;
|
: `${NEXT_PUBLIC_WEBAPP_URL()}/api/files/envelope/${envelopeId}/envelopeItem/${id}`;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
import { I18nProvider } from '@lingui/react';
|
|
||||||
|
|
||||||
import type { RenderOptions } from '@documenso/email/render';
|
import type { RenderOptions } from '@documenso/email/render';
|
||||||
import { render } from '@documenso/email/render';
|
import { renderWithI18N } from '@documenso/email/render';
|
||||||
|
|
||||||
import { getI18nInstance } from '../client-only/providers/i18n-server';
|
import { getI18nInstance } from '../client-only/providers/i18n-server';
|
||||||
import {
|
import {
|
||||||
@ -26,7 +24,7 @@ export const renderEmailWithI18N = async (
|
|||||||
|
|
||||||
i18n.activate(lang);
|
i18n.activate(lang);
|
||||||
|
|
||||||
return render(<I18nProvider i18n={i18n}>{component}</I18nProvider>, otherOptions);
|
return renderWithI18N(component, { i18n, ...otherOptions });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
throw new Error('Failed to render email');
|
throw new Error('Failed to render email');
|
||||||
|
|||||||
@ -8,8 +8,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.6.2",
|
||||||
"prettier-plugin-tailwindcss": "^0.6.9"
|
"prettier-plugin-tailwindcss": "^0.7.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {}
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user