@betterinternship/core 2.23.2 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -26
- package/dist/lib/email/archive.d.ts +1 -1
- package/dist/lib/email/archive.js +16 -3
- package/dist/lib/email/archive.js.map +1 -1
- package/dist/lib/email/email.d.ts +11 -9
- package/dist/lib/email/email.js +30 -4
- package/dist/lib/email/email.js.map +1 -1
- package/dist/lib/forms/field-preset-templates.js +8 -8
- package/dist/lib/forms/form-metadata.d.ts +141 -140
- package/dist/lib/forms/form-metadata.js.map +1 -1
- package/dist/lib/pdf-viewer/form-previewer-rendering.js +7 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +86 -86
package/README.md
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# Package.Core
|
|
2
|
-
|
|
3
|
-
Contains dependencies shared between the different services of the site.
|
|
4
|
-
|
|
5
|
-
## How to update
|
|
6
|
-
|
|
7
|
-
1. Build the package:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm run build
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
2. Commit the build:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
git add .
|
|
17
|
-
git commit -m "<follow conventional commits, k thanks>"
|
|
18
|
-
git push
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
3. Update the version and publish the package to NPM:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm version <patch|minor|major>
|
|
25
|
-
npm publish
|
|
26
|
-
```
|
|
1
|
+
# Package.Core
|
|
2
|
+
|
|
3
|
+
Contains dependencies shared between the different services of the site.
|
|
4
|
+
|
|
5
|
+
## How to update
|
|
6
|
+
|
|
7
|
+
1. Build the package:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run build
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Commit the build:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
git add .
|
|
17
|
+
git commit -m "<follow conventional commits, k thanks>"
|
|
18
|
+
git push
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. Update the version and publish the package to NPM:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm version <patch|minor|major>
|
|
25
|
+
npm publish
|
|
26
|
+
```
|
|
@@ -10,4 +10,4 @@ export interface IArchiveContext {
|
|
|
10
10
|
tags?: Record<string, string>;
|
|
11
11
|
configurationSetName?: string;
|
|
12
12
|
}
|
|
13
|
-
export declare const archiveSentEmail: (context: IArchiveContext, messageId: string | undefined, attempts: number) => Promise<void>;
|
|
13
|
+
export declare const archiveSentEmail: (context: IArchiveContext, messageId: string | undefined, attempts: number, idempotencyKey?: string) => Promise<void>;
|
|
@@ -55,19 +55,31 @@ const recordArchiveEvent = async (event) => {
|
|
|
55
55
|
attempts: event.attempts,
|
|
56
56
|
correlation_type: event.correlationDetail ? 'email_archive' : null,
|
|
57
57
|
correlation_detail: event.correlationDetail,
|
|
58
|
+
message_id: event.idempotencyKey ?? null,
|
|
58
59
|
})
|
|
59
60
|
.execute();
|
|
60
61
|
}
|
|
61
62
|
catch (error) {
|
|
62
63
|
console.error('[ERROR:EMAIL_ARCHIVE] Could not record archive event.', error);
|
|
64
|
+
if (event.idempotencyKey)
|
|
65
|
+
console.error(`[ERROR:EMAIL_ARCHIVE] Dedup record for key ${event.idempotencyKey} was NOT written; a redelivery of this message would send it again.`);
|
|
63
66
|
}
|
|
64
67
|
};
|
|
65
|
-
export const archiveSentEmail = async (context, messageId, attempts) => {
|
|
68
|
+
export const archiveSentEmail = async (context, messageId, attempts, idempotencyKey) => {
|
|
66
69
|
const bucketName = getArchiveBucketName();
|
|
67
|
-
if (!bucketName)
|
|
68
|
-
return;
|
|
69
70
|
const sentAt = new Date();
|
|
70
71
|
const idForKey = messageId ?? randomUUID();
|
|
72
|
+
if (!bucketName) {
|
|
73
|
+
if (idempotencyKey)
|
|
74
|
+
await recordArchiveEvent({
|
|
75
|
+
recipient: context.to[0],
|
|
76
|
+
feedbackId: idForKey,
|
|
77
|
+
attempts,
|
|
78
|
+
correlationDetail: null,
|
|
79
|
+
idempotencyKey,
|
|
80
|
+
});
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
71
83
|
const key = buildObjectKey(sentAt, idForKey);
|
|
72
84
|
const payload = {
|
|
73
85
|
message_id: messageId ?? null,
|
|
@@ -102,6 +114,7 @@ export const archiveSentEmail = async (context, messageId, attempts) => {
|
|
|
102
114
|
feedbackId: idForKey,
|
|
103
115
|
attempts,
|
|
104
116
|
correlationDetail: uploadedKey,
|
|
117
|
+
idempotencyKey,
|
|
105
118
|
});
|
|
106
119
|
};
|
|
107
120
|
//# sourceMappingURL=archive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../lib/email/archive.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAgBhC,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,wBAAwB,GAAG,KAAK,CAAC;AAGrC,MAAM,oBAAoB,GAAG,GAAuB,EAAE;IACpD,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,iFAAiF,CAClF,CAAC;YACF,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAClE,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,uJAAuJ,CACxJ,CAAC;YACF,wBAAwB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AASF,IAAI,OAAO,GAAkD,IAAI,CAAC;AAClE,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAyB,CAG3D,CAAC;QACF,OAAO,GAAG,IAAI,OAAO,CAAC;YACpB,SAAS,EAAE,GAAG,CAAC,uBAAuB;YACtC,WAAW;SACZ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAGF,MAAM,cAAc,GAAG,CAAC,MAAY,EAAE,QAAgB,EAAE,EAAE;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,kBAAkB,IAAI,QAAQ,OAAO,CAAC;IAE3F,OAAO,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC,CAAC;AAMF,MAAM,kBAAkB,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../lib/email/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
type EmailAlias = 'otp' | 'applications' | 'sign' | 'hello' | 'apply';
|
|
2
|
-
|
|
2
|
+
interface IIdempotency {
|
|
3
|
+
idempotencyKey?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface IEmailParams extends IIdempotency {
|
|
3
6
|
sender?: string;
|
|
4
7
|
subject: string;
|
|
5
8
|
recipient: string;
|
|
@@ -8,7 +11,7 @@ export interface IEmailParams {
|
|
|
8
11
|
configurationSetName?: string;
|
|
9
12
|
tags?: Record<string, string>;
|
|
10
13
|
}
|
|
11
|
-
export interface IMultiEmailParams {
|
|
14
|
+
export interface IMultiEmailParams extends IIdempotency {
|
|
12
15
|
sender?: string;
|
|
13
16
|
subject: string;
|
|
14
17
|
to: string | string[];
|
|
@@ -19,12 +22,11 @@ export interface IMultiEmailParams {
|
|
|
19
22
|
configurationSetName?: string;
|
|
20
23
|
tags?: Record<string, string>;
|
|
21
24
|
}
|
|
22
|
-
export
|
|
23
|
-
messageId
|
|
24
|
-
response: string;
|
|
25
|
-
} | undefined>;
|
|
26
|
-
export declare const sendSingleEmail: (params: IEmailParams) => Promise<{
|
|
27
|
-
messageId: string | undefined;
|
|
25
|
+
export interface ISendResult {
|
|
26
|
+
messageId?: string;
|
|
28
27
|
response: string;
|
|
29
|
-
|
|
28
|
+
deduplicated?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare const sendMultiEmail: ({ sender, subject, to, cc, bcc, content, alias, configurationSetName, tags, idempotencyKey, }: IMultiEmailParams) => Promise<ISendResult | undefined>;
|
|
31
|
+
export declare const sendSingleEmail: (params: IEmailParams) => Promise<ISendResult | undefined>;
|
|
30
32
|
export {};
|
package/dist/lib/email/email.js
CHANGED
|
@@ -53,6 +53,7 @@ const recordSendFailure = async (failure) => {
|
|
|
53
53
|
feedback_id: randomUUID(),
|
|
54
54
|
attempts: failure.attempts,
|
|
55
55
|
error_message: describeError(failure.error),
|
|
56
|
+
message_id: failure.idempotencyKey ?? null,
|
|
56
57
|
})
|
|
57
58
|
.execute();
|
|
58
59
|
}
|
|
@@ -60,6 +61,19 @@ const recordSendFailure = async (failure) => {
|
|
|
60
61
|
console.error('[ERROR:EMAIL] Could not record send failure.', error);
|
|
61
62
|
}
|
|
62
63
|
};
|
|
64
|
+
const hasAlreadyBeenSent = async (idempotencyKey) => {
|
|
65
|
+
if (!ENV.DATABASE_URL)
|
|
66
|
+
throw new Error('[ERROR:EMAIL] DATABASE_URL is not set; cannot honour an idempotency key.');
|
|
67
|
+
const { internalDb } = await import('@betterinternship/schema');
|
|
68
|
+
const existing = await internalDb
|
|
69
|
+
.selectFrom('internal.email_delivery_events')
|
|
70
|
+
.select('id')
|
|
71
|
+
.where('message_id', '=', idempotencyKey)
|
|
72
|
+
.where('event_type', '=', 'send_success')
|
|
73
|
+
.limit(1)
|
|
74
|
+
.executeTakeFirst();
|
|
75
|
+
return !!existing;
|
|
76
|
+
};
|
|
63
77
|
const normalizeRecipients = (value) => {
|
|
64
78
|
if (!value)
|
|
65
79
|
return [];
|
|
@@ -72,14 +86,18 @@ const toSesTags = (tags) => Object.entries(tags).map(([name, value]) => ({
|
|
|
72
86
|
Name: name,
|
|
73
87
|
Value: value.trim().slice(0, 256).replaceAll(' ', ''),
|
|
74
88
|
}));
|
|
75
|
-
const sendWithRetries = async (params, logRecipients, archiveContext) => {
|
|
89
|
+
const sendWithRetries = async (params, logRecipients, archiveContext, idempotencyKey) => {
|
|
76
90
|
const maxAttempts = getMaxAttempts();
|
|
77
91
|
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
78
92
|
try {
|
|
79
93
|
const command = new SendEmailCommand(params);
|
|
80
94
|
const result = await getSesClient().send(command);
|
|
81
95
|
console.warn('[AWSSES] Email sent to ' + logRecipients.join(', '));
|
|
82
|
-
|
|
96
|
+
const archived = archiveSentEmail(archiveContext, result.MessageId, attempt, idempotencyKey).catch((error) => console.error('[ERROR:EMAIL_ARCHIVE] Archive failed.', error));
|
|
97
|
+
if (idempotencyKey)
|
|
98
|
+
await archived;
|
|
99
|
+
else
|
|
100
|
+
void archived;
|
|
83
101
|
return {
|
|
84
102
|
messageId: result.MessageId,
|
|
85
103
|
response: 'Successfully sent via Amazon SES.',
|
|
@@ -97,16 +115,24 @@ const sendWithRetries = async (params, logRecipients, archiveContext) => {
|
|
|
97
115
|
recipient: logRecipients[0],
|
|
98
116
|
attempts: attempt,
|
|
99
117
|
error,
|
|
118
|
+
idempotencyKey,
|
|
100
119
|
});
|
|
101
120
|
return undefined;
|
|
102
121
|
}
|
|
103
122
|
}
|
|
104
123
|
return undefined;
|
|
105
124
|
};
|
|
106
|
-
export const sendMultiEmail = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', configurationSetName, tags, }) => {
|
|
125
|
+
export const sendMultiEmail = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', configurationSetName, tags, idempotencyKey, }) => {
|
|
107
126
|
const toRecipients = normalizeRecipients(to);
|
|
108
127
|
if (!toRecipients.length)
|
|
109
128
|
throw Error('[ERROR:EMAIL] No recipients provided for email.');
|
|
129
|
+
if (idempotencyKey && (await hasAlreadyBeenSent(idempotencyKey))) {
|
|
130
|
+
console.warn(`[AWSSES] Skipping duplicate send for idempotency key ${idempotencyKey}.`);
|
|
131
|
+
return {
|
|
132
|
+
response: 'Already sent; skipped as a duplicate.',
|
|
133
|
+
deduplicated: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
110
136
|
const ccRecipients = normalizeRecipients(cc);
|
|
111
137
|
const bccRecipients = normalizeRecipients(bcc);
|
|
112
138
|
const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
|
|
@@ -139,7 +165,7 @@ export const sendMultiEmail = async ({ sender, subject, to, cc, bcc, content, al
|
|
|
139
165
|
tags,
|
|
140
166
|
configurationSetName,
|
|
141
167
|
};
|
|
142
|
-
return await sendWithRetries(params, logRecipients, archiveContext);
|
|
168
|
+
return await sendWithRetries(params, logRecipients, archiveContext, idempotencyKey);
|
|
143
169
|
};
|
|
144
170
|
export const sendSingleEmail = async (params) => {
|
|
145
171
|
if (!normalizeRecipients(params.recipient).length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,14 @@ const LONG_TEXT_VALIDATOR = `${TEXT_PREPROCESS}z.string().describe("textarea"))`
|
|
|
5
5
|
const NUMBER_VALIDATOR = 'z.number()';
|
|
6
6
|
const SIGNATURE_VALIDATOR = `${TEXT_PREPROCESS}z.string().nonempty({ message: "This field is required." }))`;
|
|
7
7
|
const DROPDOWN_VALIDATOR = `z.enum(["Option 1", "Option 2"], {message:"This field is required."})`;
|
|
8
|
-
const MULTISELECT_VALIDATOR = `z.array(
|
|
9
|
-
z.enum(
|
|
10
|
-
[
|
|
11
|
-
"Option 1",
|
|
12
|
-
"Option 2"
|
|
13
|
-
],
|
|
14
|
-
{ message: "This field is required." }
|
|
15
|
-
)
|
|
8
|
+
const MULTISELECT_VALIDATOR = `z.array(
|
|
9
|
+
z.enum(
|
|
10
|
+
[
|
|
11
|
+
"Option 1",
|
|
12
|
+
"Option 2"
|
|
13
|
+
],
|
|
14
|
+
{ message: "This field is required." }
|
|
15
|
+
)
|
|
16
16
|
).describe("multiselect")`;
|
|
17
17
|
const DATE_VALIDATOR = 'z.coerce.date()';
|
|
18
18
|
const TIME_VALIDATOR = 'z.string().describe("time")';
|
|
@@ -1,140 +1,141 @@
|
|
|
1
|
-
import { ZodType } from 'zod';
|
|
2
|
-
import { ClientBlock, ClientField, ClientPhantomField } from './fields.client.js';
|
|
3
|
-
import { ServerField } from './fields.server.js';
|
|
4
|
-
import { FontName } from './constants/fonts.js';
|
|
5
|
-
import type { ValidatorIRv0 } from './validator-ir.js';
|
|
6
|
-
export type FormValues = Record<string, string>;
|
|
7
|
-
export type FormErrors = Record<string, string>;
|
|
8
|
-
export declare const SCHEMA_VERSION = 1;
|
|
9
|
-
export declare const FIELD_TYPES: string[];
|
|
10
|
-
export declare const BLOCK_TYPES: string[];
|
|
11
|
-
export declare const ALIGN_H: string[];
|
|
12
|
-
export declare const ALIGN_V: string[];
|
|
13
|
-
export declare const SOURCES: string[];
|
|
14
|
-
export type { ValidatorIRv0, ValidatorBaseType } from './validator-ir.js';
|
|
15
|
-
export interface IFormMetadata {
|
|
16
|
-
name: string;
|
|
17
|
-
label: string;
|
|
18
|
-
schema_version: number;
|
|
19
|
-
schema: IForm;
|
|
20
|
-
signing_parties: IFormSigningParty[];
|
|
21
|
-
subscribers?: IFormSubscriber[];
|
|
22
|
-
}
|
|
23
|
-
export type IFormSubscriber = {
|
|
24
|
-
email: string;
|
|
25
|
-
};
|
|
26
|
-
export interface IFormSignatory {
|
|
27
|
-
name?: string;
|
|
28
|
-
email: string;
|
|
29
|
-
title?: string;
|
|
30
|
-
honorific?: string;
|
|
31
|
-
}
|
|
32
|
-
export interface IFormSigningParty {
|
|
33
|
-
_id: string;
|
|
34
|
-
order: number;
|
|
35
|
-
signatory_title: string;
|
|
36
|
-
signatory_account?: IFormSignatory;
|
|
37
|
-
signatory_source?: {
|
|
38
|
-
_id: string;
|
|
39
|
-
label: string;
|
|
40
|
-
tooltip_label: string;
|
|
41
|
-
};
|
|
42
|
-
signed?: boolean;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
export type
|
|
104
|
-
export type
|
|
105
|
-
export
|
|
106
|
-
|
|
107
|
-
private readonly
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
private
|
|
117
|
-
private
|
|
118
|
-
private
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
private
|
|
134
|
-
private
|
|
135
|
-
private
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
1
|
+
import { ZodType } from 'zod';
|
|
2
|
+
import { ClientBlock, ClientField, ClientPhantomField } from './fields.client.js';
|
|
3
|
+
import { ServerField } from './fields.server.js';
|
|
4
|
+
import { FontName } from './constants/fonts.js';
|
|
5
|
+
import type { ValidatorIRv0 } from './validator-ir.js';
|
|
6
|
+
export type FormValues = Record<string, string>;
|
|
7
|
+
export type FormErrors = Record<string, string>;
|
|
8
|
+
export declare const SCHEMA_VERSION = 1;
|
|
9
|
+
export declare const FIELD_TYPES: string[];
|
|
10
|
+
export declare const BLOCK_TYPES: string[];
|
|
11
|
+
export declare const ALIGN_H: string[];
|
|
12
|
+
export declare const ALIGN_V: string[];
|
|
13
|
+
export declare const SOURCES: string[];
|
|
14
|
+
export type { ValidatorIRv0, ValidatorBaseType } from './validator-ir.js';
|
|
15
|
+
export interface IFormMetadata {
|
|
16
|
+
name: string;
|
|
17
|
+
label: string;
|
|
18
|
+
schema_version: number;
|
|
19
|
+
schema: IForm;
|
|
20
|
+
signing_parties: IFormSigningParty[];
|
|
21
|
+
subscribers?: IFormSubscriber[];
|
|
22
|
+
}
|
|
23
|
+
export type IFormSubscriber = {
|
|
24
|
+
email: string;
|
|
25
|
+
};
|
|
26
|
+
export interface IFormSignatory {
|
|
27
|
+
name?: string;
|
|
28
|
+
email: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
honorific?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface IFormSigningParty {
|
|
33
|
+
_id: string;
|
|
34
|
+
order: number;
|
|
35
|
+
signatory_title: string;
|
|
36
|
+
signatory_account?: IFormSignatory;
|
|
37
|
+
signatory_source?: {
|
|
38
|
+
_id: string;
|
|
39
|
+
label: string;
|
|
40
|
+
tooltip_label: string;
|
|
41
|
+
};
|
|
42
|
+
signed?: boolean;
|
|
43
|
+
signed_ip_address?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface IFormSignee {
|
|
46
|
+
name: string;
|
|
47
|
+
sourceEmail: string;
|
|
48
|
+
title?: string;
|
|
49
|
+
honorific?: string;
|
|
50
|
+
signedDate?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface IForm {
|
|
53
|
+
blocks: IFormBlock[];
|
|
54
|
+
}
|
|
55
|
+
export interface IFormBlock {
|
|
56
|
+
_id: string;
|
|
57
|
+
block_type: (typeof BLOCK_TYPES)[number];
|
|
58
|
+
order: number;
|
|
59
|
+
signing_party_id: IFormSigningParty['_id'];
|
|
60
|
+
text_content?: string;
|
|
61
|
+
field_schema?: IFormField;
|
|
62
|
+
phantom_field_schema?: IFormPhantomField;
|
|
63
|
+
}
|
|
64
|
+
export interface IFormField {
|
|
65
|
+
field: string;
|
|
66
|
+
type: 'text' | 'signature' | 'image';
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
w: number;
|
|
70
|
+
h: number;
|
|
71
|
+
page: number;
|
|
72
|
+
align_h?: (typeof ALIGN_H)[number];
|
|
73
|
+
align_v?: (typeof ALIGN_V)[number];
|
|
74
|
+
label: string;
|
|
75
|
+
tooltip_label: string;
|
|
76
|
+
shared: boolean;
|
|
77
|
+
source: (typeof SOURCES)[number];
|
|
78
|
+
prefiller?: string;
|
|
79
|
+
validator?: string;
|
|
80
|
+
validator_ir?: ValidatorIRv0 | null;
|
|
81
|
+
size?: number;
|
|
82
|
+
wrap?: boolean;
|
|
83
|
+
font?: FontName;
|
|
84
|
+
radio_group_id?: string;
|
|
85
|
+
radio_option_label?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface IFormPhantomField {
|
|
88
|
+
field: string;
|
|
89
|
+
type: 'text' | 'signature' | 'image';
|
|
90
|
+
label: string;
|
|
91
|
+
tooltip_label: string;
|
|
92
|
+
shared: boolean;
|
|
93
|
+
source: (typeof SOURCES)[number];
|
|
94
|
+
prefiller?: string;
|
|
95
|
+
validator?: string;
|
|
96
|
+
validator_ir?: ValidatorIRv0 | null;
|
|
97
|
+
radio_group_id?: string;
|
|
98
|
+
radio_option_label?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface IFormParameters {
|
|
101
|
+
[key: string]: string | ZodType;
|
|
102
|
+
}
|
|
103
|
+
export type IFormSourceDomains<SourceDomains extends any[]> = Record<string, SourceDomains[number]>;
|
|
104
|
+
export type IFormFieldValidator = ZodType;
|
|
105
|
+
export type IFormFieldPrefiller<SourceDomains extends any[]> = (sourceDomains: IFormSourceDomains<SourceDomains>) => string;
|
|
106
|
+
export declare class FormMetadata<SourceDomains extends any[]> {
|
|
107
|
+
private readonly formMetadata;
|
|
108
|
+
private readonly blocks;
|
|
109
|
+
constructor(formMetadata: IFormMetadata);
|
|
110
|
+
getBlocksForClientService(signingPartyId?: string): ClientBlock<SourceDomains>[];
|
|
111
|
+
getSigningPartyFieldName(signingPartyId: string): string;
|
|
112
|
+
getSigningPartyTitleFromFieldName(signingPartyFieldName: string): string | undefined;
|
|
113
|
+
getSigningPartyBlocks(sourceSigningPartyId: string): ClientBlock<SourceDomains>[];
|
|
114
|
+
getSigningPartyFields(signingPartyId: string): (ClientField<SourceDomains> | ClientPhantomField<SourceDomains>)[];
|
|
115
|
+
static getSigningPartyValues(signingParties: IFormSigningParty[], values: FormValues): Record<string, IFormSignatory>;
|
|
116
|
+
private getFields;
|
|
117
|
+
private getField;
|
|
118
|
+
private getPhantomFields;
|
|
119
|
+
private getPhantomField;
|
|
120
|
+
encodeAsJSON(): string;
|
|
121
|
+
static decodeFromJSON<SourceDomains extends any[]>(json: string): FormMetadata<SourceDomains>;
|
|
122
|
+
getLabel(): string;
|
|
123
|
+
private getFieldForClientService;
|
|
124
|
+
getFieldsForClientService(signingPartyId?: string, sourceDomains?: IFormSourceDomains<SourceDomains>, derivationBase?: IFormParameters): (ClientField<SourceDomains> | ClientPhantomField<SourceDomains>)[];
|
|
125
|
+
getSignatureFieldsForClientService(signingPartyId: string): (ClientField<SourceDomains> | ClientPhantomField<SourceDomains>)[];
|
|
126
|
+
getSignatureValueForSigningParty(values: FormValues, signingPartyId: string): string;
|
|
127
|
+
setSignatureValueForSigningParty(values: FormValues, signatureString: string, signingPartyId: string): FormValues;
|
|
128
|
+
getFieldsForEditorService(): IFormField[];
|
|
129
|
+
getPhantomFieldsForEditorService(): IFormPhantomField[];
|
|
130
|
+
getBlocksForEditorService(): IFormBlock[];
|
|
131
|
+
getFieldsForSigningService(): ServerField[];
|
|
132
|
+
inferParams(): string[];
|
|
133
|
+
private parseValidator;
|
|
134
|
+
private parsePrefiller;
|
|
135
|
+
private enumerateParams;
|
|
136
|
+
private populateParams;
|
|
137
|
+
getSchemaVersion(): number;
|
|
138
|
+
getSubscribers(): IFormSubscriber[];
|
|
139
|
+
getSigningParties(): IFormSigningParty[];
|
|
140
|
+
mayInvolveEsign(): boolean;
|
|
141
|
+
}
|