@actuate-media/cms-core 0.30.0 → 0.32.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.
Files changed (98) hide show
  1. package/dist/__tests__/api/admin-contracts.test.js +10 -2
  2. package/dist/__tests__/api/admin-contracts.test.js.map +1 -1
  3. package/dist/__tests__/api/public-forms.test.d.ts +2 -0
  4. package/dist/__tests__/api/public-forms.test.d.ts.map +1 -0
  5. package/dist/__tests__/api/public-forms.test.js +125 -0
  6. package/dist/__tests__/api/public-forms.test.js.map +1 -0
  7. package/dist/__tests__/api/public-seo.test.js +2 -0
  8. package/dist/__tests__/api/public-seo.test.js.map +1 -1
  9. package/dist/__tests__/forms/forms-service.test.d.ts +2 -0
  10. package/dist/__tests__/forms/forms-service.test.d.ts.map +1 -0
  11. package/dist/__tests__/forms/forms-service.test.js +193 -0
  12. package/dist/__tests__/forms/forms-service.test.js.map +1 -0
  13. package/dist/__tests__/forms/spam.test.d.ts +2 -0
  14. package/dist/__tests__/forms/spam.test.d.ts.map +1 -0
  15. package/dist/__tests__/forms/spam.test.js +115 -0
  16. package/dist/__tests__/forms/spam.test.js.map +1 -0
  17. package/dist/__tests__/forms/submission-files.test.d.ts +2 -0
  18. package/dist/__tests__/forms/submission-files.test.d.ts.map +1 -0
  19. package/dist/__tests__/forms/submission-files.test.js +65 -0
  20. package/dist/__tests__/forms/submission-files.test.js.map +1 -0
  21. package/dist/__tests__/forms/submission-pipeline.test.d.ts +2 -0
  22. package/dist/__tests__/forms/submission-pipeline.test.d.ts.map +1 -0
  23. package/dist/__tests__/forms/submission-pipeline.test.js +131 -0
  24. package/dist/__tests__/forms/submission-pipeline.test.js.map +1 -0
  25. package/dist/__tests__/forms/submission-validation.test.d.ts +2 -0
  26. package/dist/__tests__/forms/submission-validation.test.d.ts.map +1 -0
  27. package/dist/__tests__/forms/submission-validation.test.js +108 -0
  28. package/dist/__tests__/forms/submission-validation.test.js.map +1 -0
  29. package/dist/__tests__/seo/audit-runner.test.js +54 -1
  30. package/dist/__tests__/seo/audit-runner.test.js.map +1 -1
  31. package/dist/api/handler-factory.d.ts.map +1 -1
  32. package/dist/api/handler-factory.js +2 -2
  33. package/dist/api/handler-factory.js.map +1 -1
  34. package/dist/api/handlers.d.ts.map +1 -1
  35. package/dist/api/handlers.js +724 -155
  36. package/dist/api/handlers.js.map +1 -1
  37. package/dist/api/router.d.ts +2 -1
  38. package/dist/api/router.d.ts.map +1 -1
  39. package/dist/api/router.js +3 -0
  40. package/dist/api/router.js.map +1 -1
  41. package/dist/config/types.d.ts +42 -0
  42. package/dist/config/types.d.ts.map +1 -1
  43. package/dist/cron/index.d.ts +1 -0
  44. package/dist/cron/index.d.ts.map +1 -1
  45. package/dist/cron/index.js +10 -1
  46. package/dist/cron/index.js.map +1 -1
  47. package/dist/forms/entries.d.ts +45 -0
  48. package/dist/forms/entries.d.ts.map +1 -0
  49. package/dist/forms/entries.js +348 -0
  50. package/dist/forms/entries.js.map +1 -0
  51. package/dist/forms/files.d.ts +38 -0
  52. package/dist/forms/files.d.ts.map +1 -0
  53. package/dist/forms/files.js +134 -0
  54. package/dist/forms/files.js.map +1 -0
  55. package/dist/forms/index.d.ts +8 -0
  56. package/dist/forms/index.d.ts.map +1 -1
  57. package/dist/forms/index.js +7 -0
  58. package/dist/forms/index.js.map +1 -1
  59. package/dist/forms/service.d.ts +92 -0
  60. package/dist/forms/service.d.ts.map +1 -0
  61. package/dist/forms/service.js +579 -0
  62. package/dist/forms/service.js.map +1 -0
  63. package/dist/forms/spam.d.ts +33 -0
  64. package/dist/forms/spam.d.ts.map +1 -0
  65. package/dist/forms/spam.js +93 -0
  66. package/dist/forms/spam.js.map +1 -0
  67. package/dist/forms/submission.d.ts +95 -0
  68. package/dist/forms/submission.d.ts.map +1 -0
  69. package/dist/forms/submission.js +282 -0
  70. package/dist/forms/submission.js.map +1 -0
  71. package/dist/forms/types.d.ts +244 -0
  72. package/dist/forms/types.d.ts.map +1 -0
  73. package/dist/forms/types.js +36 -0
  74. package/dist/forms/types.js.map +1 -0
  75. package/dist/forms/validation.d.ts +19 -0
  76. package/dist/forms/validation.d.ts.map +1 -0
  77. package/dist/forms/validation.js +235 -0
  78. package/dist/forms/validation.js.map +1 -0
  79. package/dist/index.d.ts +2 -2
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +1 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/security/client-ip.d.ts +11 -21
  84. package/dist/security/client-ip.d.ts.map +1 -1
  85. package/dist/security/client-ip.js +38 -0
  86. package/dist/security/client-ip.js.map +1 -1
  87. package/dist/seo/audit-runner.d.ts +37 -2
  88. package/dist/seo/audit-runner.d.ts.map +1 -1
  89. package/dist/seo/audit-runner.js +56 -6
  90. package/dist/seo/audit-runner.js.map +1 -1
  91. package/dist/seo/index.d.ts +2 -1
  92. package/dist/seo/index.d.ts.map +1 -1
  93. package/dist/seo/index.js +1 -1
  94. package/dist/seo/index.js.map +1 -1
  95. package/package.json +1 -1
  96. package/prisma/cms-schema.prisma +81 -7
  97. package/prisma/migrations/0010_forms/migration.sql +130 -0
  98. package/prisma/schema.prisma +130 -35
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/forms/entries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { FormField, FormSubmissionFile } from './types.js';
2
+ /** Conservative default allowlist for form attachments (images + common docs). */
3
+ export declare const FORM_UPLOAD_ALLOWED_MIME_TYPES: readonly string[];
4
+ export declare const DEFAULT_MAX_FILE_BYTES: number;
5
+ export interface IncomingFile {
6
+ fieldKey: string;
7
+ fileName: string;
8
+ mimeType: string;
9
+ size: number;
10
+ buffer: Buffer;
11
+ }
12
+ export interface FileValidationError {
13
+ fieldKey: string;
14
+ message: string;
15
+ }
16
+ export interface ValidateFilesResult {
17
+ ok: boolean;
18
+ errors: FileValidationError[];
19
+ }
20
+ export interface ValidateFilesOptions {
21
+ /** Global ceiling; per-field `maxFileSizeMB` can only be smaller. */
22
+ maxSizeBytes?: number;
23
+ /** Global MIME allowlist; per-field `fileTypes` can only narrow it. */
24
+ allowedMimeTypes?: readonly string[];
25
+ }
26
+ /**
27
+ * Validate every incoming file against its field's rules. Returns all errors
28
+ * (not just the first) so the submitter can fix everything in one round-trip.
29
+ */
30
+ export declare function validateSubmissionFiles(fields: FormField[], incoming: IncomingFile[], options?: ValidateFilesOptions): ValidateFilesResult;
31
+ /**
32
+ * Upload validated files via the storage adapter and persist metadata rows.
33
+ * Must be called *after* the submission row exists (files reference it). When
34
+ * no storage adapter is configured the upload is skipped and the file is
35
+ * dropped with a warning rather than failing the whole submission.
36
+ */
37
+ export declare function persistSubmissionFiles(formId: string, submissionId: string, files: IncomingFile[]): Promise<FormSubmissionFile[]>;
38
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/forms/files.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAI/D,kFAAkF;AAClF,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EAW3D,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAmB,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAOD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA+CrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,YAAY,EAAE,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2D/B"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * File-upload handling for form submissions.
3
+ *
4
+ * Validation is defense-in-depth: declared MIME allowlist + magic-byte sniffing
5
+ * (so a renamed `.exe` claiming `image/png` is rejected) + a size cap. Files are
6
+ * never stored inline in the DB — they go through the configured storage adapter
7
+ * and we persist only metadata + the storage key needed to mint a download link.
8
+ */
9
+ import { getDB } from '../db.js';
10
+ import { checkMagicBytes, validateMimeType } from '../security/upload.js';
11
+ /** Conservative default allowlist for form attachments (images + common docs). */
12
+ export const FORM_UPLOAD_ALLOWED_MIME_TYPES = [
13
+ 'image/jpeg',
14
+ 'image/png',
15
+ 'image/gif',
16
+ 'image/webp',
17
+ 'image/avif',
18
+ 'application/pdf',
19
+ 'text/plain',
20
+ 'text/csv',
21
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
22
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
23
+ ];
24
+ export const DEFAULT_MAX_FILE_BYTES = 10 * 1024 * 1024; // 10 MB
25
+ function sanitizeFileName(name) {
26
+ const base = name.split(/[/\\]/).pop() ?? 'file';
27
+ return base.replace(/[^a-zA-Z0-9._-]/g, '_').slice(0, 120) || 'file';
28
+ }
29
+ /**
30
+ * Validate every incoming file against its field's rules. Returns all errors
31
+ * (not just the first) so the submitter can fix everything in one round-trip.
32
+ */
33
+ export function validateSubmissionFiles(fields, incoming, options = {}) {
34
+ const errors = [];
35
+ const fieldByKey = new Map(fields.map((f) => [f.key, f]));
36
+ const globalMax = options.maxSizeBytes ?? DEFAULT_MAX_FILE_BYTES;
37
+ const globalAllowed = options.allowedMimeTypes ?? FORM_UPLOAD_ALLOWED_MIME_TYPES;
38
+ for (const file of incoming) {
39
+ const field = fieldByKey.get(file.fieldKey);
40
+ if (!field || field.type !== 'file') {
41
+ errors.push({ fieldKey: file.fieldKey, message: 'Unexpected file upload.' });
42
+ continue;
43
+ }
44
+ const rules = field.validationRules ?? {};
45
+ const maxBytes = rules.maxFileSizeMB
46
+ ? Math.min(globalMax, rules.maxFileSizeMB * 1024 * 1024)
47
+ : globalMax;
48
+ if (file.size > maxBytes) {
49
+ errors.push({
50
+ fieldKey: file.fieldKey,
51
+ message: `${field.label || field.key} exceeds the ${Math.round(maxBytes / (1024 * 1024))}MB limit.`,
52
+ });
53
+ continue;
54
+ }
55
+ const allowed = rules.fileTypes && rules.fileTypes.length > 0
56
+ ? rules.fileTypes.filter((t) => globalAllowed.includes(t))
57
+ : globalAllowed;
58
+ if (!validateMimeType(file.mimeType, allowed)) {
59
+ errors.push({
60
+ fieldKey: file.fieldKey,
61
+ message: `${field.label || field.key} has an unsupported file type "${file.mimeType || 'unknown'}".`,
62
+ });
63
+ continue;
64
+ }
65
+ const magic = checkMagicBytes(file.buffer, file.mimeType);
66
+ if (!magic.valid) {
67
+ errors.push({
68
+ fieldKey: file.fieldKey,
69
+ message: `${field.label || field.key} contents do not match the declared type.`,
70
+ });
71
+ }
72
+ }
73
+ return { ok: errors.length === 0, errors };
74
+ }
75
+ /**
76
+ * Upload validated files via the storage adapter and persist metadata rows.
77
+ * Must be called *after* the submission row exists (files reference it). When
78
+ * no storage adapter is configured the upload is skipped and the file is
79
+ * dropped with a warning rather than failing the whole submission.
80
+ */
81
+ export async function persistSubmissionFiles(formId, submissionId, files) {
82
+ if (files.length === 0)
83
+ return [];
84
+ const { getStorageAdapter } = await import('../storage/index.js');
85
+ const storage = getStorageAdapter();
86
+ if (!storage) {
87
+ if (process.env.NODE_ENV !== 'test') {
88
+ console.warn('[Actuate CMS] Form upload received but no storage adapter is configured; file dropped.');
89
+ }
90
+ return [];
91
+ }
92
+ const db = getDB();
93
+ const created = [];
94
+ for (const file of files) {
95
+ const safeName = sanitizeFileName(file.fileName);
96
+ const storageKey = `actuate/forms/${formId}/${submissionId}/${Date.now()}-${safeName}`;
97
+ let publicUrl = null;
98
+ try {
99
+ publicUrl = await storage.upload(storageKey, file.buffer, file.mimeType);
100
+ }
101
+ catch (err) {
102
+ if (process.env.NODE_ENV !== 'test') {
103
+ console.error('[Actuate CMS] Form file upload failed:', err);
104
+ }
105
+ continue;
106
+ }
107
+ const row = await db.formSubmissionFile.create({
108
+ data: {
109
+ submissionId,
110
+ fieldKey: file.fieldKey,
111
+ fileName: safeName,
112
+ mimeType: file.mimeType,
113
+ sizeBytes: file.size,
114
+ storageKey,
115
+ publicUrl,
116
+ },
117
+ });
118
+ created.push({
119
+ id: String(row.id),
120
+ submissionId,
121
+ fieldKey: file.fieldKey,
122
+ mediaAssetId: row.mediaAssetId ?? null,
123
+ fileName: safeName,
124
+ mimeType: file.mimeType,
125
+ sizeBytes: file.size,
126
+ storageKey,
127
+ publicUrl,
128
+ secureDownloadUrl: null,
129
+ createdAt: row.createdAt instanceof Date ? row.createdAt.toISOString() : new Date().toISOString(),
130
+ });
131
+ }
132
+ return created;
133
+ }
134
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/forms/files.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,12 @@ export { captureAttribution, storeAttribution, getStoredAttribution, trackPageVi
2
2
  export type { AttributionData } from './attribution.js';
3
3
  export { trackFormStart, trackFormSubmit, trackFormError, pushDataLayerEvent, getDefaultConfirmation, getDefaultAnalyticsConfig, } from './analytics.js';
4
4
  export type { FormAnalyticsConfig, FormConfirmation } from './analytics.js';
5
+ export { INPUT_FIELD_TYPES, NON_INPUT_FIELD_TYPES } from './types.js';
6
+ export type { FormFieldType, PiiClassification, FormFieldOption, FieldValidationRules, ConditionalOperator, ConditionalRule, ConditionalLogic, FieldWidth, FormField, FormSchemaVersion, FormWebhookConfig, FormWebhookEvent, FormNotificationSettings, SpamProtectionStrategy, FormSpamSettings, FormEmbedSettings, FormStatus, FormDefinition, SpamStatus, FormSubmissionFile, FormSubmission, FetchFormsParams, FetchFormEntriesParams, FormStats, FormsSidebarCount, EntryCounts, } from './types.js';
7
+ export * from './service.js';
8
+ export * from './entries.js';
9
+ export { validateAndNormalizeSubmission, type FieldError, type SubmissionValidationResult, } from './validation.js';
10
+ export { scoreSubmissionSpam, type SpamScoreInput, type SpamScoreResult } from './spam.js';
11
+ export { validateSubmissionFiles, persistSubmissionFiles, FORM_UPLOAD_ALLOWED_MIME_TYPES, DEFAULT_MAX_FILE_BYTES, type IncomingFile, type ValidateFilesResult, } from './files.js';
12
+ export { processSubmission, buildPublicForm, SubmissionValidationError, type SubmissionContext, type SubmissionResult, type SubmissionConfirmation, type PublicForm, type PublicFormField, } from './submission.js';
5
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACrE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAA;AAEnB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,8BAA8B,EAC9B,KAAK,UAAU,EACf,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAC1F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAA"}
@@ -1,3 +1,10 @@
1
1
  export { captureAttribution, storeAttribution, getStoredAttribution, trackPageView, getAttributionForSubmission, } from './attribution.js';
2
2
  export { trackFormStart, trackFormSubmit, trackFormError, pushDataLayerEvent, getDefaultConfirmation, getDefaultAnalyticsConfig, } from './analytics.js';
3
+ export { INPUT_FIELD_TYPES, NON_INPUT_FIELD_TYPES } from './types.js';
4
+ export * from './service.js';
5
+ export * from './entries.js';
6
+ export { validateAndNormalizeSubmission, } from './validation.js';
7
+ export { scoreSubmissionSpam } from './spam.js';
8
+ export { validateSubmissionFiles, persistSubmissionFiles, FORM_UPLOAD_ALLOWED_MIME_TYPES, DEFAULT_MAX_FILE_BYTES, } from './files.js';
9
+ export { processSubmission, buildPublicForm, SubmissionValidationError, } from './submission.js';
3
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AA8BrE,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,8BAA8B,GAG/B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAA6C,MAAM,WAAW,CAAA;AAC1F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,GAGvB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,GAM1B,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,92 @@
1
+ import { type ActionContext } from '../actions.js';
2
+ import { type FetchFormsParams, type FormDefinition, type FormEmbedSettings, type FormField, type FormNotificationSettings, type FormSchemaVersion, type FormSpamSettings, type FormStats, type FormStatus, type FormsSidebarCount } from './types.js';
3
+ export declare const FORMS_COLLECTION = "forms";
4
+ /** Parse a raw `forms` document row into the typed `FormDefinition` shape. */
5
+ export declare function parseFormDefinition(doc: any): FormDefinition;
6
+ export interface SchemaValidationResult {
7
+ valid: boolean;
8
+ errors: string[];
9
+ }
10
+ /**
11
+ * Validate a set of fields against config limits and structural rules. This is
12
+ * the single gate used by both the admin "Save Schema" flow and form creation.
13
+ */
14
+ export declare function validateFormSchema(fields: unknown): SchemaValidationResult;
15
+ export declare function listSchemaVersions(formId: string): Promise<FormSchemaVersion[]>;
16
+ export declare function getSchemaVersion(versionId: string): Promise<FormSchemaVersion | null>;
17
+ export interface ListFormsResult {
18
+ forms: FormDefinition[];
19
+ total: number;
20
+ page: number;
21
+ pageSize: number;
22
+ }
23
+ export declare function listForms(params?: FetchFormsParams): Promise<ListFormsResult>;
24
+ export declare function getFormById(id: string): Promise<FormDefinition | null>;
25
+ export declare function getFormBySlug(slug: string): Promise<FormDefinition | null>;
26
+ export interface CreateFormInput {
27
+ name: string;
28
+ slug?: string;
29
+ description?: string;
30
+ status?: FormStatus;
31
+ fields?: FormField[];
32
+ notificationSettings?: FormNotificationSettings;
33
+ embedSettings?: FormEmbedSettings;
34
+ spamSettings?: FormSpamSettings;
35
+ successMessage?: string;
36
+ redirectUrl?: string;
37
+ }
38
+ export declare function createForm(ctx: ActionContext, input: CreateFormInput): Promise<FormDefinition>;
39
+ export interface UpdateFormInput {
40
+ name?: string;
41
+ description?: string;
42
+ status?: FormStatus;
43
+ successMessage?: string;
44
+ redirectUrl?: string;
45
+ spamSettings?: FormSpamSettings;
46
+ embedSettings?: FormEmbedSettings;
47
+ }
48
+ export declare function updateForm(ctx: ActionContext, id: string, patch: UpdateFormInput): Promise<FormDefinition>;
49
+ export declare function archiveForm(ctx: ActionContext, id: string): Promise<FormDefinition>;
50
+ export declare function restoreForm(ctx: ActionContext, id: string): Promise<FormDefinition>;
51
+ export declare function duplicateForm(ctx: ActionContext, id: string): Promise<FormDefinition>;
52
+ export interface DeleteFormOptions {
53
+ force?: boolean;
54
+ }
55
+ export declare function deleteForm(ctx: ActionContext, id: string, options?: DeleteFormOptions): Promise<void>;
56
+ export declare function saveFormSchema(ctx: ActionContext, id: string, fields: FormField[], notes?: string): Promise<{
57
+ form: FormDefinition;
58
+ version: FormSchemaVersion;
59
+ }>;
60
+ export declare function getFormSchema(id: string): Promise<{
61
+ fields: FormField[];
62
+ activeVersionId: string | null;
63
+ versions: FormSchemaVersion[];
64
+ }>;
65
+ export declare function getNotificationSettings(id: string): Promise<FormNotificationSettings>;
66
+ export declare function updateNotificationSettings(ctx: ActionContext, id: string, patch: Partial<FormNotificationSettings>): Promise<FormNotificationSettings>;
67
+ /** Toggle the notify flag (maps to the Notify switch in the forms table). */
68
+ export declare function setNotifyEnabled(ctx: ActionContext, id: string, enabled: boolean): Promise<FormNotificationSettings>;
69
+ export declare function getEmbedSettings(id: string): Promise<FormEmbedSettings>;
70
+ export declare function updateEmbedSettings(ctx: ActionContext, id: string, patch: Partial<FormEmbedSettings>): Promise<FormEmbedSettings>;
71
+ export declare function getFormStats(): Promise<FormStats>;
72
+ /**
73
+ * Unread counts for the sidebar. Only active, non-hidden forms contribute to
74
+ * the parent badge; archived/draft forms are excluded so the rail reflects
75
+ * live, publicly-collecting forms.
76
+ */
77
+ export declare function getFormsSidebarCounts(): Promise<FormsSidebarCount[]>;
78
+ export declare class FormNotFoundError extends Error {
79
+ constructor(id: string);
80
+ }
81
+ export declare class FormValidationError extends Error {
82
+ errors: string[];
83
+ constructor(errors: string[]);
84
+ }
85
+ export declare class FormConflictError extends Error {
86
+ constructor(message: string);
87
+ }
88
+ export declare class FormHasSubmissionsError extends Error {
89
+ submissionCount: number;
90
+ constructor(submissionCount: number);
91
+ }
92
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/forms/service.ts"],"names":[],"mappings":"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"}