@frigear-nu/forms 0.0.8 → 0.0.9

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/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frigear-nu/forms",
3
3
  "configKey": "forms",
4
- "version": "0.0.8",
4
+ "version": "0.0.9",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "unknown"
@@ -0,0 +1,741 @@
1
+ import type { DeliveryStatus, FormDefinition, FormStatus } from '../../../types.js';
2
+ export declare const forms: import("drizzle-orm/pg-core").PgTableWithColumns<{
3
+ name: "forms";
4
+ schema: undefined;
5
+ columns: {
6
+ id: import("drizzle-orm/pg-core").PgColumn<{
7
+ name: "id";
8
+ tableName: "forms";
9
+ dataType: "string";
10
+ columnType: "PgText";
11
+ data: string;
12
+ driverParam: string;
13
+ notNull: true;
14
+ hasDefault: false;
15
+ isPrimaryKey: true;
16
+ isAutoincrement: false;
17
+ hasRuntimeDefault: false;
18
+ enumValues: [string, ...string[]];
19
+ baseColumn: never;
20
+ identity: undefined;
21
+ generated: undefined;
22
+ }, {}, {}>;
23
+ slug: import("drizzle-orm/pg-core").PgColumn<{
24
+ name: "slug";
25
+ tableName: "forms";
26
+ dataType: "string";
27
+ columnType: "PgText";
28
+ data: string;
29
+ driverParam: string;
30
+ notNull: true;
31
+ hasDefault: false;
32
+ isPrimaryKey: false;
33
+ isAutoincrement: false;
34
+ hasRuntimeDefault: false;
35
+ enumValues: [string, ...string[]];
36
+ baseColumn: never;
37
+ identity: undefined;
38
+ generated: undefined;
39
+ }, {}, {}>;
40
+ name: import("drizzle-orm/pg-core").PgColumn<{
41
+ name: "name";
42
+ tableName: "forms";
43
+ dataType: "string";
44
+ columnType: "PgText";
45
+ data: string;
46
+ driverParam: string;
47
+ notNull: true;
48
+ hasDefault: false;
49
+ isPrimaryKey: false;
50
+ isAutoincrement: false;
51
+ hasRuntimeDefault: false;
52
+ enumValues: [string, ...string[]];
53
+ baseColumn: never;
54
+ identity: undefined;
55
+ generated: undefined;
56
+ }, {}, {}>;
57
+ status: import("drizzle-orm/pg-core").PgColumn<{
58
+ name: "status";
59
+ tableName: "forms";
60
+ dataType: "string";
61
+ columnType: "PgText";
62
+ data: FormStatus;
63
+ driverParam: string;
64
+ notNull: true;
65
+ hasDefault: true;
66
+ isPrimaryKey: false;
67
+ isAutoincrement: false;
68
+ hasRuntimeDefault: false;
69
+ enumValues: [string, ...string[]];
70
+ baseColumn: never;
71
+ identity: undefined;
72
+ generated: undefined;
73
+ }, {}, {
74
+ $type: FormStatus;
75
+ }>;
76
+ definition: import("drizzle-orm/pg-core").PgColumn<{
77
+ name: "definition";
78
+ tableName: "forms";
79
+ dataType: "json";
80
+ columnType: "PgJsonb";
81
+ data: FormDefinition;
82
+ driverParam: unknown;
83
+ notNull: true;
84
+ hasDefault: false;
85
+ isPrimaryKey: false;
86
+ isAutoincrement: false;
87
+ hasRuntimeDefault: false;
88
+ enumValues: undefined;
89
+ baseColumn: never;
90
+ identity: undefined;
91
+ generated: undefined;
92
+ }, {}, {
93
+ $type: FormDefinition;
94
+ }>;
95
+ version: import("drizzle-orm/pg-core").PgColumn<{
96
+ name: "version";
97
+ tableName: "forms";
98
+ dataType: "number";
99
+ columnType: "PgInteger";
100
+ data: number;
101
+ driverParam: string | number;
102
+ notNull: true;
103
+ hasDefault: true;
104
+ isPrimaryKey: false;
105
+ isAutoincrement: false;
106
+ hasRuntimeDefault: false;
107
+ enumValues: undefined;
108
+ baseColumn: never;
109
+ identity: undefined;
110
+ generated: undefined;
111
+ }, {}, {}>;
112
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
113
+ name: "createdAt";
114
+ tableName: "forms";
115
+ dataType: "date";
116
+ columnType: "PgTimestamp";
117
+ data: Date;
118
+ driverParam: string;
119
+ notNull: true;
120
+ hasDefault: true;
121
+ isPrimaryKey: false;
122
+ isAutoincrement: false;
123
+ hasRuntimeDefault: true;
124
+ enumValues: undefined;
125
+ baseColumn: never;
126
+ identity: undefined;
127
+ generated: undefined;
128
+ }, {}, {}>;
129
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
130
+ name: "updatedAt";
131
+ tableName: "forms";
132
+ dataType: "date";
133
+ columnType: "PgTimestamp";
134
+ data: Date;
135
+ driverParam: string;
136
+ notNull: true;
137
+ hasDefault: true;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: true;
141
+ enumValues: undefined;
142
+ baseColumn: never;
143
+ identity: undefined;
144
+ generated: undefined;
145
+ }, {}, {}>;
146
+ };
147
+ dialect: "pg";
148
+ }>;
149
+ export declare const formSubmissions: import("drizzle-orm/pg-core").PgTableWithColumns<{
150
+ name: "form_submissions";
151
+ schema: undefined;
152
+ columns: {
153
+ id: import("drizzle-orm/pg-core").PgColumn<{
154
+ name: "id";
155
+ tableName: "form_submissions";
156
+ dataType: "string";
157
+ columnType: "PgText";
158
+ data: string;
159
+ driverParam: string;
160
+ notNull: true;
161
+ hasDefault: false;
162
+ isPrimaryKey: true;
163
+ isAutoincrement: false;
164
+ hasRuntimeDefault: false;
165
+ enumValues: [string, ...string[]];
166
+ baseColumn: never;
167
+ identity: undefined;
168
+ generated: undefined;
169
+ }, {}, {}>;
170
+ formId: import("drizzle-orm/pg-core").PgColumn<{
171
+ name: "formId";
172
+ tableName: "form_submissions";
173
+ dataType: "string";
174
+ columnType: "PgText";
175
+ data: string;
176
+ driverParam: string;
177
+ notNull: true;
178
+ hasDefault: false;
179
+ isPrimaryKey: false;
180
+ isAutoincrement: false;
181
+ hasRuntimeDefault: false;
182
+ enumValues: [string, ...string[]];
183
+ baseColumn: never;
184
+ identity: undefined;
185
+ generated: undefined;
186
+ }, {}, {}>;
187
+ formSlug: import("drizzle-orm/pg-core").PgColumn<{
188
+ name: "formSlug";
189
+ tableName: "form_submissions";
190
+ dataType: "string";
191
+ columnType: "PgText";
192
+ data: string;
193
+ driverParam: string;
194
+ notNull: true;
195
+ hasDefault: false;
196
+ isPrimaryKey: false;
197
+ isAutoincrement: false;
198
+ hasRuntimeDefault: false;
199
+ enumValues: [string, ...string[]];
200
+ baseColumn: never;
201
+ identity: undefined;
202
+ generated: undefined;
203
+ }, {}, {}>;
204
+ formVersion: import("drizzle-orm/pg-core").PgColumn<{
205
+ name: "formVersion";
206
+ tableName: "form_submissions";
207
+ dataType: "number";
208
+ columnType: "PgInteger";
209
+ data: number;
210
+ driverParam: string | number;
211
+ notNull: true;
212
+ hasDefault: false;
213
+ isPrimaryKey: false;
214
+ isAutoincrement: false;
215
+ hasRuntimeDefault: false;
216
+ enumValues: undefined;
217
+ baseColumn: never;
218
+ identity: undefined;
219
+ generated: undefined;
220
+ }, {}, {}>;
221
+ definitionSnapshot: import("drizzle-orm/pg-core").PgColumn<{
222
+ name: "definitionSnapshot";
223
+ tableName: "form_submissions";
224
+ dataType: "json";
225
+ columnType: "PgJsonb";
226
+ data: FormDefinition;
227
+ driverParam: unknown;
228
+ notNull: true;
229
+ hasDefault: false;
230
+ isPrimaryKey: false;
231
+ isAutoincrement: false;
232
+ hasRuntimeDefault: false;
233
+ enumValues: undefined;
234
+ baseColumn: never;
235
+ identity: undefined;
236
+ generated: undefined;
237
+ }, {}, {
238
+ $type: FormDefinition;
239
+ }>;
240
+ answers: import("drizzle-orm/pg-core").PgColumn<{
241
+ name: "answers";
242
+ tableName: "form_submissions";
243
+ dataType: "json";
244
+ columnType: "PgJsonb";
245
+ data: Record<string, unknown>;
246
+ driverParam: unknown;
247
+ notNull: true;
248
+ hasDefault: false;
249
+ isPrimaryKey: false;
250
+ isAutoincrement: false;
251
+ hasRuntimeDefault: false;
252
+ enumValues: undefined;
253
+ baseColumn: never;
254
+ identity: undefined;
255
+ generated: undefined;
256
+ }, {}, {
257
+ $type: Record<string, unknown>;
258
+ }>;
259
+ userId: import("drizzle-orm/pg-core").PgColumn<{
260
+ name: "userId";
261
+ tableName: "form_submissions";
262
+ dataType: "number";
263
+ columnType: "PgInteger";
264
+ data: number;
265
+ driverParam: string | number;
266
+ notNull: false;
267
+ hasDefault: false;
268
+ isPrimaryKey: false;
269
+ isAutoincrement: false;
270
+ hasRuntimeDefault: false;
271
+ enumValues: undefined;
272
+ baseColumn: never;
273
+ identity: undefined;
274
+ generated: undefined;
275
+ }, {}, {}>;
276
+ locale: import("drizzle-orm/pg-core").PgColumn<{
277
+ name: "locale";
278
+ tableName: "form_submissions";
279
+ dataType: "string";
280
+ columnType: "PgText";
281
+ data: string;
282
+ driverParam: string;
283
+ notNull: true;
284
+ hasDefault: true;
285
+ isPrimaryKey: false;
286
+ isAutoincrement: false;
287
+ hasRuntimeDefault: false;
288
+ enumValues: [string, ...string[]];
289
+ baseColumn: never;
290
+ identity: undefined;
291
+ generated: undefined;
292
+ }, {}, {}>;
293
+ deliveryStatus: import("drizzle-orm/pg-core").PgColumn<{
294
+ name: "deliveryStatus";
295
+ tableName: "form_submissions";
296
+ dataType: "string";
297
+ columnType: "PgText";
298
+ data: DeliveryStatus;
299
+ driverParam: string;
300
+ notNull: true;
301
+ hasDefault: true;
302
+ isPrimaryKey: false;
303
+ isAutoincrement: false;
304
+ hasRuntimeDefault: false;
305
+ enumValues: [string, ...string[]];
306
+ baseColumn: never;
307
+ identity: undefined;
308
+ generated: undefined;
309
+ }, {}, {
310
+ $type: DeliveryStatus;
311
+ }>;
312
+ deliveryError: import("drizzle-orm/pg-core").PgColumn<{
313
+ name: "deliveryError";
314
+ tableName: "form_submissions";
315
+ dataType: "string";
316
+ columnType: "PgText";
317
+ data: string;
318
+ driverParam: string;
319
+ notNull: false;
320
+ hasDefault: false;
321
+ isPrimaryKey: false;
322
+ isAutoincrement: false;
323
+ hasRuntimeDefault: false;
324
+ enumValues: [string, ...string[]];
325
+ baseColumn: never;
326
+ identity: undefined;
327
+ generated: undefined;
328
+ }, {}, {}>;
329
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
330
+ name: "createdAt";
331
+ tableName: "form_submissions";
332
+ dataType: "date";
333
+ columnType: "PgTimestamp";
334
+ data: Date;
335
+ driverParam: string;
336
+ notNull: true;
337
+ hasDefault: true;
338
+ isPrimaryKey: false;
339
+ isAutoincrement: false;
340
+ hasRuntimeDefault: true;
341
+ enumValues: undefined;
342
+ baseColumn: never;
343
+ identity: undefined;
344
+ generated: undefined;
345
+ }, {}, {}>;
346
+ };
347
+ dialect: "pg";
348
+ }>;
349
+ export declare const formSubmissionFiles: import("drizzle-orm/pg-core").PgTableWithColumns<{
350
+ name: "form_submission_files";
351
+ schema: undefined;
352
+ columns: {
353
+ id: import("drizzle-orm/pg-core").PgColumn<{
354
+ name: "id";
355
+ tableName: "form_submission_files";
356
+ dataType: "string";
357
+ columnType: "PgText";
358
+ data: string;
359
+ driverParam: string;
360
+ notNull: true;
361
+ hasDefault: false;
362
+ isPrimaryKey: true;
363
+ isAutoincrement: false;
364
+ hasRuntimeDefault: false;
365
+ enumValues: [string, ...string[]];
366
+ baseColumn: never;
367
+ identity: undefined;
368
+ generated: undefined;
369
+ }, {}, {}>;
370
+ submissionId: import("drizzle-orm/pg-core").PgColumn<{
371
+ name: "submissionId";
372
+ tableName: "form_submission_files";
373
+ dataType: "string";
374
+ columnType: "PgText";
375
+ data: string;
376
+ driverParam: string;
377
+ notNull: true;
378
+ hasDefault: false;
379
+ isPrimaryKey: false;
380
+ isAutoincrement: false;
381
+ hasRuntimeDefault: false;
382
+ enumValues: [string, ...string[]];
383
+ baseColumn: never;
384
+ identity: undefined;
385
+ generated: undefined;
386
+ }, {}, {}>;
387
+ fieldKey: import("drizzle-orm/pg-core").PgColumn<{
388
+ name: "fieldKey";
389
+ tableName: "form_submission_files";
390
+ dataType: "string";
391
+ columnType: "PgText";
392
+ data: string;
393
+ driverParam: string;
394
+ notNull: true;
395
+ hasDefault: false;
396
+ isPrimaryKey: false;
397
+ isAutoincrement: false;
398
+ hasRuntimeDefault: false;
399
+ enumValues: [string, ...string[]];
400
+ baseColumn: never;
401
+ identity: undefined;
402
+ generated: undefined;
403
+ }, {}, {}>;
404
+ pathname: import("drizzle-orm/pg-core").PgColumn<{
405
+ name: "pathname";
406
+ tableName: "form_submission_files";
407
+ dataType: "string";
408
+ columnType: "PgText";
409
+ data: string;
410
+ driverParam: string;
411
+ notNull: true;
412
+ hasDefault: false;
413
+ isPrimaryKey: false;
414
+ isAutoincrement: false;
415
+ hasRuntimeDefault: false;
416
+ enumValues: [string, ...string[]];
417
+ baseColumn: never;
418
+ identity: undefined;
419
+ generated: undefined;
420
+ }, {}, {}>;
421
+ filename: import("drizzle-orm/pg-core").PgColumn<{
422
+ name: "filename";
423
+ tableName: "form_submission_files";
424
+ dataType: "string";
425
+ columnType: "PgText";
426
+ data: string;
427
+ driverParam: string;
428
+ notNull: true;
429
+ hasDefault: false;
430
+ isPrimaryKey: false;
431
+ isAutoincrement: false;
432
+ hasRuntimeDefault: false;
433
+ enumValues: [string, ...string[]];
434
+ baseColumn: never;
435
+ identity: undefined;
436
+ generated: undefined;
437
+ }, {}, {}>;
438
+ contentType: import("drizzle-orm/pg-core").PgColumn<{
439
+ name: "contentType";
440
+ tableName: "form_submission_files";
441
+ dataType: "string";
442
+ columnType: "PgText";
443
+ data: string;
444
+ driverParam: string;
445
+ notNull: true;
446
+ hasDefault: false;
447
+ isPrimaryKey: false;
448
+ isAutoincrement: false;
449
+ hasRuntimeDefault: false;
450
+ enumValues: [string, ...string[]];
451
+ baseColumn: never;
452
+ identity: undefined;
453
+ generated: undefined;
454
+ }, {}, {}>;
455
+ size: import("drizzle-orm/pg-core").PgColumn<{
456
+ name: "size";
457
+ tableName: "form_submission_files";
458
+ dataType: "number";
459
+ columnType: "PgInteger";
460
+ data: number;
461
+ driverParam: string | number;
462
+ notNull: true;
463
+ hasDefault: false;
464
+ isPrimaryKey: false;
465
+ isAutoincrement: false;
466
+ hasRuntimeDefault: false;
467
+ enumValues: undefined;
468
+ baseColumn: never;
469
+ identity: undefined;
470
+ generated: undefined;
471
+ }, {}, {}>;
472
+ };
473
+ dialect: "pg";
474
+ }>;
475
+ export declare const formAccessTokens: import("drizzle-orm/pg-core").PgTableWithColumns<{
476
+ name: "form_access_tokens";
477
+ schema: undefined;
478
+ columns: {
479
+ id: import("drizzle-orm/pg-core").PgColumn<{
480
+ name: "id";
481
+ tableName: "form_access_tokens";
482
+ dataType: "string";
483
+ columnType: "PgText";
484
+ data: string;
485
+ driverParam: string;
486
+ notNull: true;
487
+ hasDefault: false;
488
+ isPrimaryKey: true;
489
+ isAutoincrement: false;
490
+ hasRuntimeDefault: false;
491
+ enumValues: [string, ...string[]];
492
+ baseColumn: never;
493
+ identity: undefined;
494
+ generated: undefined;
495
+ }, {}, {}>;
496
+ formId: import("drizzle-orm/pg-core").PgColumn<{
497
+ name: "formId";
498
+ tableName: "form_access_tokens";
499
+ dataType: "string";
500
+ columnType: "PgText";
501
+ data: string;
502
+ driverParam: string;
503
+ notNull: true;
504
+ hasDefault: false;
505
+ isPrimaryKey: false;
506
+ isAutoincrement: false;
507
+ hasRuntimeDefault: false;
508
+ enumValues: [string, ...string[]];
509
+ baseColumn: never;
510
+ identity: undefined;
511
+ generated: undefined;
512
+ }, {}, {}>;
513
+ name: import("drizzle-orm/pg-core").PgColumn<{
514
+ name: "name";
515
+ tableName: "form_access_tokens";
516
+ dataType: "string";
517
+ columnType: "PgText";
518
+ data: string;
519
+ driverParam: string;
520
+ notNull: true;
521
+ hasDefault: false;
522
+ isPrimaryKey: false;
523
+ isAutoincrement: false;
524
+ hasRuntimeDefault: false;
525
+ enumValues: [string, ...string[]];
526
+ baseColumn: never;
527
+ identity: undefined;
528
+ generated: undefined;
529
+ }, {}, {}>;
530
+ tokenHash: import("drizzle-orm/pg-core").PgColumn<{
531
+ name: "tokenHash";
532
+ tableName: "form_access_tokens";
533
+ dataType: "string";
534
+ columnType: "PgText";
535
+ data: string;
536
+ driverParam: string;
537
+ notNull: true;
538
+ hasDefault: false;
539
+ isPrimaryKey: false;
540
+ isAutoincrement: false;
541
+ hasRuntimeDefault: false;
542
+ enumValues: [string, ...string[]];
543
+ baseColumn: never;
544
+ identity: undefined;
545
+ generated: undefined;
546
+ }, {}, {}>;
547
+ prefix: import("drizzle-orm/pg-core").PgColumn<{
548
+ name: "prefix";
549
+ tableName: "form_access_tokens";
550
+ dataType: "string";
551
+ columnType: "PgText";
552
+ data: string;
553
+ driverParam: string;
554
+ notNull: true;
555
+ hasDefault: false;
556
+ isPrimaryKey: false;
557
+ isAutoincrement: false;
558
+ hasRuntimeDefault: false;
559
+ enumValues: [string, ...string[]];
560
+ baseColumn: never;
561
+ identity: undefined;
562
+ generated: undefined;
563
+ }, {}, {}>;
564
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
565
+ name: "createdAt";
566
+ tableName: "form_access_tokens";
567
+ dataType: "date";
568
+ columnType: "PgTimestamp";
569
+ data: Date;
570
+ driverParam: string;
571
+ notNull: true;
572
+ hasDefault: true;
573
+ isPrimaryKey: false;
574
+ isAutoincrement: false;
575
+ hasRuntimeDefault: true;
576
+ enumValues: undefined;
577
+ baseColumn: never;
578
+ identity: undefined;
579
+ generated: undefined;
580
+ }, {}, {}>;
581
+ lastUsedAt: import("drizzle-orm/pg-core").PgColumn<{
582
+ name: "lastUsedAt";
583
+ tableName: "form_access_tokens";
584
+ dataType: "date";
585
+ columnType: "PgTimestamp";
586
+ data: Date;
587
+ driverParam: string;
588
+ notNull: false;
589
+ hasDefault: false;
590
+ isPrimaryKey: false;
591
+ isAutoincrement: false;
592
+ hasRuntimeDefault: false;
593
+ enumValues: undefined;
594
+ baseColumn: never;
595
+ identity: undefined;
596
+ generated: undefined;
597
+ }, {}, {}>;
598
+ revokedAt: import("drizzle-orm/pg-core").PgColumn<{
599
+ name: "revokedAt";
600
+ tableName: "form_access_tokens";
601
+ dataType: "date";
602
+ columnType: "PgTimestamp";
603
+ data: Date;
604
+ driverParam: string;
605
+ notNull: false;
606
+ hasDefault: false;
607
+ isPrimaryKey: false;
608
+ isAutoincrement: false;
609
+ hasRuntimeDefault: false;
610
+ enumValues: undefined;
611
+ baseColumn: never;
612
+ identity: undefined;
613
+ generated: undefined;
614
+ }, {}, {}>;
615
+ };
616
+ dialect: "pg";
617
+ }>;
618
+ /** Shared password of a form with `access.auth = 'password'`. Kept out of the (versioned) definition. */
619
+ export declare const formAccess: import("drizzle-orm/pg-core").PgTableWithColumns<{
620
+ name: "form_access";
621
+ schema: undefined;
622
+ columns: {
623
+ formId: import("drizzle-orm/pg-core").PgColumn<{
624
+ name: "formId";
625
+ tableName: "form_access";
626
+ dataType: "string";
627
+ columnType: "PgText";
628
+ data: string;
629
+ driverParam: string;
630
+ notNull: true;
631
+ hasDefault: false;
632
+ isPrimaryKey: true;
633
+ isAutoincrement: false;
634
+ hasRuntimeDefault: false;
635
+ enumValues: [string, ...string[]];
636
+ baseColumn: never;
637
+ identity: undefined;
638
+ generated: undefined;
639
+ }, {}, {}>;
640
+ passwordHash: import("drizzle-orm/pg-core").PgColumn<{
641
+ name: "passwordHash";
642
+ tableName: "form_access";
643
+ dataType: "string";
644
+ columnType: "PgText";
645
+ data: string;
646
+ driverParam: string;
647
+ notNull: true;
648
+ hasDefault: false;
649
+ isPrimaryKey: false;
650
+ isAutoincrement: false;
651
+ hasRuntimeDefault: false;
652
+ enumValues: [string, ...string[]];
653
+ baseColumn: never;
654
+ identity: undefined;
655
+ generated: undefined;
656
+ }, {}, {}>;
657
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
658
+ name: "updatedAt";
659
+ tableName: "form_access";
660
+ dataType: "date";
661
+ columnType: "PgTimestamp";
662
+ data: Date;
663
+ driverParam: string;
664
+ notNull: true;
665
+ hasDefault: true;
666
+ isPrimaryKey: false;
667
+ isAutoincrement: false;
668
+ hasRuntimeDefault: true;
669
+ enumValues: undefined;
670
+ baseColumn: never;
671
+ identity: undefined;
672
+ generated: undefined;
673
+ }, {}, {}>;
674
+ };
675
+ dialect: "pg";
676
+ }>;
677
+ /**
678
+ * Per-form secrets, encrypted at rest. Keys are namespaced strings (`captcha.turnstile.secretKey`, ...) from an
679
+ * allowlist in `utils/secrets.ts`; future integrations (webhook signing secrets, ...) add their keys there.
680
+ * Kept out of the (versioned) definition, submission snapshots, deliveries and exports.
681
+ */
682
+ export declare const formSecrets: import("drizzle-orm/pg-core").PgTableWithColumns<{
683
+ name: "form_secrets";
684
+ schema: undefined;
685
+ columns: {
686
+ formId: import("drizzle-orm/pg-core").PgColumn<{
687
+ name: "formId";
688
+ tableName: "form_secrets";
689
+ dataType: "string";
690
+ columnType: "PgText";
691
+ data: string;
692
+ driverParam: string;
693
+ notNull: true;
694
+ hasDefault: false;
695
+ isPrimaryKey: true;
696
+ isAutoincrement: false;
697
+ hasRuntimeDefault: false;
698
+ enumValues: [string, ...string[]];
699
+ baseColumn: never;
700
+ identity: undefined;
701
+ generated: undefined;
702
+ }, {}, {}>;
703
+ secrets: import("drizzle-orm/pg-core").PgColumn<{
704
+ name: "secrets";
705
+ tableName: "form_secrets";
706
+ dataType: "custom";
707
+ columnType: "PgCustomColumn";
708
+ data: Record<string, string>;
709
+ driverParam: string;
710
+ notNull: true;
711
+ hasDefault: false;
712
+ isPrimaryKey: false;
713
+ isAutoincrement: false;
714
+ hasRuntimeDefault: false;
715
+ enumValues: undefined;
716
+ baseColumn: never;
717
+ identity: undefined;
718
+ generated: undefined;
719
+ }, {}, {
720
+ pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
721
+ }>;
722
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
723
+ name: "updatedAt";
724
+ tableName: "form_secrets";
725
+ dataType: "date";
726
+ columnType: "PgTimestamp";
727
+ data: Date;
728
+ driverParam: string;
729
+ notNull: true;
730
+ hasDefault: true;
731
+ isPrimaryKey: false;
732
+ isAutoincrement: false;
733
+ hasRuntimeDefault: true;
734
+ enumValues: undefined;
735
+ baseColumn: never;
736
+ identity: undefined;
737
+ generated: undefined;
738
+ }, {}, {}>;
739
+ };
740
+ dialect: "pg";
741
+ }>;
@@ -0,0 +1,78 @@
1
+ import { customType, pgTable, text, integer, jsonb, timestamp, index } from "drizzle-orm/pg-core";
2
+ export const forms = pgTable("forms", {
3
+ /** `frm_` + random id. */
4
+ id: text().primaryKey(),
5
+ slug: text().notNull().unique(),
6
+ name: text().notNull(),
7
+ /** `draft | published | archived`. Only published forms are public. */
8
+ status: text().$type().notNull().default("draft"),
9
+ definition: jsonb().$type().notNull(),
10
+ /** Bumped whenever the definition changes. */
11
+ version: integer().notNull().default(1),
12
+ createdAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date()),
13
+ updatedAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date()).$onUpdateFn(() => /* @__PURE__ */ new Date())
14
+ });
15
+ export const formSubmissions = pgTable("form_submissions", {
16
+ /** `fsb_` + random id. */
17
+ id: text().primaryKey(),
18
+ /** Forms are archived, never deleted, so submissions always keep their form. */
19
+ formId: text().notNull().references(() => forms.id),
20
+ formSlug: text().notNull(),
21
+ formVersion: integer().notNull(),
22
+ /** The definition as it was when the answers were given; renders old submissions correctly after edits. */
23
+ definitionSnapshot: jsonb().$type().notNull(),
24
+ answers: jsonb().$type().notNull(),
25
+ /** Signed-in submitter, if any. */
26
+ userId: integer(),
27
+ locale: text().notNull().default("en"),
28
+ deliveryStatus: text().$type().notNull().default("none"),
29
+ deliveryError: text(),
30
+ createdAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date())
31
+ }, (t) => [
32
+ index("form_submission_form_idx").on(t.formId, t.createdAt)
33
+ ]);
34
+ export const formSubmissionFiles = pgTable("form_submission_files", {
35
+ /** `fsf_` + random id. */
36
+ id: text().primaryKey(),
37
+ submissionId: text().notNull().references(() => formSubmissions.id, { onDelete: "cascade" }),
38
+ fieldKey: text().notNull(),
39
+ /** Pathname in the blob store. */
40
+ pathname: text().notNull(),
41
+ filename: text().notNull(),
42
+ contentType: text().notNull(),
43
+ size: integer().notNull()
44
+ }, (t) => [
45
+ index("form_submission_file_submission_idx").on(t.submissionId)
46
+ ]);
47
+ export const formAccessTokens = pgTable("form_access_tokens", {
48
+ /** `fat_` + random id. */
49
+ id: text().primaryKey(),
50
+ formId: text().notNull().references(() => forms.id, { onDelete: "cascade" }),
51
+ name: text().notNull(),
52
+ /** SHA-256 (hex) of the token; the token itself is shown once on creation and never stored. */
53
+ tokenHash: text().notNull().unique(),
54
+ /** First characters of the token, for display. */
55
+ prefix: text().notNull(),
56
+ createdAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date()),
57
+ lastUsedAt: timestamp({ withTimezone: true }),
58
+ revokedAt: timestamp({ withTimezone: true })
59
+ }, (t) => [
60
+ index("form_access_token_form_idx").on(t.formId)
61
+ ]);
62
+ export const formAccess = pgTable("form_access", {
63
+ formId: text().primaryKey().references(() => forms.id, { onDelete: "cascade" }),
64
+ /** Scrypt hash (nuxt-auth-utils `hashPassword`). */
65
+ passwordHash: text().notNull(),
66
+ updatedAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date())
67
+ });
68
+ export const formSecrets = pgTable("form_secrets", {
69
+ formId: text().primaryKey().references(() => forms.id, { onDelete: "cascade" }),
70
+ // Inline on purpose: the module kit copies this property (and only the imports above) into a generated schema
71
+ // template, so it cannot call a local helper. `utils/crypto.ts` registers the cipher on `globalThis`.
72
+ secrets: customType({
73
+ dataType: () => "text",
74
+ toDriver: (value) => globalThis.__frigearFormsCrypto.encrypt(value),
75
+ fromDriver: (value) => globalThis.__frigearFormsCrypto.decrypt(value)
76
+ })("secrets").notNull(),
77
+ updatedAt: timestamp({ withTimezone: true }).notNull().$defaultFn(() => /* @__PURE__ */ new Date())
78
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frigear-nu/forms",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "description": "Dynamic, database-stored forms (single page or stepped) with submissions, file uploads and email delivery for the frigear ecosystem.",
5
5
  "homepage": "https://docs.frigear.dev/modules/forms",
6
6
  "repository": {
@@ -30,13 +30,13 @@
30
30
  "playground"
31
31
  ],
32
32
  "dependencies": {
33
- "@frigear-nu/admin": "0.0.3",
34
- "@frigear-nu/module-kit": "1.0.0",
35
- "@frigear-nu/notify": "0.0.10",
36
- "@frigear-nu/ui": "0.0.8",
37
- "@frigear-nu/auth": "0.0.4",
38
- "@frigear-nu/mcp": "0.0.4",
39
- "@frigear-nu/users": "1.0.10",
33
+ "@frigear-nu/admin": "0.0.4",
34
+ "@frigear-nu/module-kit": "1.0.1",
35
+ "@frigear-nu/notify": "0.0.11",
36
+ "@frigear-nu/ui": "0.0.9",
37
+ "@frigear-nu/auth": "0.0.5",
38
+ "@frigear-nu/mcp": "0.0.5",
39
+ "@frigear-nu/users": "1.0.11",
40
40
  "@libsql/client": "^0.18.0",
41
41
  "@nuxt/kit": "^4.6.0",
42
42
  "drizzle-kit": "^0.31.11",
@@ -46,7 +46,7 @@
46
46
  "zod": "^4.6.5"
47
47
  },
48
48
  "peerDependencies": {
49
- "@frigear-nu/menu": "0.0.10",
49
+ "@frigear-nu/menu": "0.0.11",
50
50
  "@nuxt/ui": "^4.10.0",
51
51
  "@nuxthub/core": "^0.10.8"
52
52
  },
@@ -59,7 +59,7 @@
59
59
  }
60
60
  },
61
61
  "devDependencies": {
62
- "@frigear-nu/menu": "0.0.10",
62
+ "@frigear-nu/menu": "0.0.11",
63
63
  "@nuxt/devtools": "^3.4.2",
64
64
  "@nuxt/eslint-config": "^1.17.0",
65
65
  "@nuxt/module-builder": "^1.0.3",