@stacksjs/defaults 0.75.40 → 0.75.42
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/ai/skills/stacks-actions/SKILL.md +1 -1
- package/ai/skills/stacks-auto-imports/SKILL.md +1 -1
- package/ai/skills/stacks-chat/SKILL.md +43 -1
- package/ai/skills/stacks-cloud/SKILL.md +36 -0
- package/ai/skills/stacks-dashboard/SKILL.md +16 -2
- package/ai/skills/stacks-database/SKILL.md +24 -3
- package/ai/skills/stacks-deploy/SKILL.md +7 -1
- package/ai/skills/stacks-desktop/SKILL.md +22 -0
- package/ai/skills/stacks-development/SKILL.md +1 -1
- package/ai/skills/stacks-migrations/SKILL.md +2 -2
- package/ai/skills/stacks-models/SKILL.md +38 -2
- package/ai/skills/stacks-orm/SKILL.md +2 -2
- package/ai/skills/stacks-security/SKILL.md +28 -1
- package/app/Actions/Auth/DataExportAction.test.ts +84 -0
- package/app/Actions/Auth/DataExportAction.ts +40 -0
- package/app/Actions/Dashboard/Content/FileReprocessAction.ts +1 -1
- package/app/Actions/Dashboard/Content/file-manager.ts +120 -8
- package/app/Actions/Dashboard/Content/file-metadata.ts +108 -12
- package/app/Actions/Dashboard/Content/file-pipeline.test.ts +13 -9
- package/app/Actions/Dashboard/Content/file-preview.test.ts +487 -0
- package/app/Actions/Dashboard/Content/file-preview.ts +548 -0
- package/app/Actions/Payment/CreatePaymentIntentAction.ts +1 -1
- package/app/Actions/Payment/CreateSetupIntentAction.ts +1 -1
- package/app/Jobs/GenerateStoragePreviewJob.ts +47 -0
- package/app/Jobs/OptimizeStorageImageJob.ts +7 -3
- package/app/Jobs/PruneRetainedDataJob.ts +46 -0
- package/app/Models/Activity.ts +2 -0
- package/app/Models/CampaignSend.ts +2 -0
- package/app/Models/Card.ts +1 -0
- package/app/Models/CardComment.ts +1 -0
- package/app/Models/Comment.ts +5 -0
- package/app/Models/CommunicationSuppression.ts +2 -1
- package/app/Models/ConsentEvent.ts +4 -3
- package/app/Models/Content/Author.ts +5 -0
- package/app/Models/EmailListSubscriber.ts +1 -0
- package/app/Models/EmailSuppression.ts +2 -0
- package/app/Models/Forms/FormSubmission.ts +5 -0
- package/app/Models/GdprRequest.ts +77 -0
- package/app/Models/MagicLinkToken.ts +2 -0
- package/app/Models/Notification.ts +2 -0
- package/app/Models/NotificationDelivery.ts +4 -0
- package/app/Models/PaymentMethod.ts +5 -0
- package/app/Models/PaymentTransaction.ts +1 -0
- package/app/Models/PersonalAccessToken.ts +3 -0
- package/app/Models/Referral.ts +4 -1
- package/app/Models/ReferralCode.ts +4 -1
- package/app/Models/Request.ts +3 -0
- package/app/Models/SmsOptOut.ts +2 -0
- package/app/Models/SocialAccount.ts +3 -0
- package/app/Models/SocialPost.ts +2 -0
- package/app/Models/StorageItemTask.ts +14 -8
- package/app/Models/Subscriber.ts +2 -0
- package/app/Models/SubscriberEmail.ts +2 -0
- package/app/Models/Subscription.ts +1 -0
- package/app/Models/TeamInvitation.ts +2 -0
- package/app/Models/TeamMember.ts +1 -0
- package/app/Models/User.ts +5 -0
- package/app/Models/commerce/Bid.ts +3 -0
- package/app/Models/commerce/Cart.ts +2 -0
- package/app/Models/commerce/Courier.ts +7 -0
- package/app/Models/commerce/CourierPing.ts +3 -0
- package/app/Models/commerce/Customer.ts +5 -0
- package/app/Models/commerce/DeliveryStop.ts +7 -0
- package/app/Models/commerce/GiftCard.ts +4 -0
- package/app/Models/commerce/Order.ts +5 -0
- package/app/Models/commerce/OrderItem.ts +2 -0
- package/app/Models/commerce/Payment.ts +5 -0
- package/app/Models/commerce/Pledge.ts +3 -0
- package/app/Models/commerce/Transaction.ts +2 -0
- package/app/Models/commerce/WaitlistProduct.ts +5 -0
- package/app/Models/commerce/WaitlistRestaurant.ts +4 -0
- package/ide/vscode/.vscode/extensions.json +1 -1
- package/ide/vscode/.vscode/settings.json +8 -149
- package/ide/vscode/README.md +92 -22
- package/ide/vscode/build.ts +43 -0
- package/ide/vscode/package.json +368 -29
- package/ide/vscode/scripts/stx-contributes.ts +66 -0
- package/ide/vscode/src/env-file.ts +103 -0
- package/ide/vscode/src/env.ts +241 -0
- package/ide/vscode/src/extension.ts +153 -0
- package/ide/vscode/src/pickier-protocol.ts +51 -0
- package/ide/vscode/src/pickier-worker.ts +92 -0
- package/ide/vscode/src/pickier.ts +433 -0
- package/ide/vscode/src/project.ts +450 -0
- package/ide/vscode/src/stacks.ts +482 -0
- package/ide/vscode/tests/build.test.ts +58 -0
- package/ide/vscode/tests/env.test.ts +166 -0
- package/ide/vscode/tests/extension.test.ts +428 -0
- package/ide/vscode/tests/fake-vscode.ts +228 -0
- package/ide/vscode/tests/manifest.test.ts +88 -0
- package/ide/vscode/tests/pickier.test.ts +202 -0
- package/ide/vscode/tests/project.test.ts +268 -0
- package/ide/vscode/tsconfig.json +19 -0
- package/package.json +4 -4
- package/resources/components/Dashboard/Content/FileManagerDashboard.stx +2 -0
- package/resources/components/Dashboard/FileViewer/MediaCard.stx +14 -3
- package/routes/auth.ts +4 -0
- package/vcs/github/workflows/buddy-bot.yml +2 -2
- package/vcs/github/workflows/ci.yml +3 -3
- package/vcs/github/workflows/release.yml +1 -1
package/app/Models/TeamMember.ts
CHANGED
package/app/Models/User.ts
CHANGED
|
@@ -25,6 +25,7 @@ export default defineModel({
|
|
|
25
25
|
ownership: selfOwnership(),
|
|
26
26
|
|
|
27
27
|
traits: {
|
|
28
|
+
gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'User account and sign-in' },
|
|
28
29
|
useAuth: {
|
|
29
30
|
usePasskey: true,
|
|
30
31
|
},
|
|
@@ -72,6 +73,7 @@ export default defineModel({
|
|
|
72
73
|
|
|
73
74
|
attributes: {
|
|
74
75
|
name: {
|
|
76
|
+
personal: true,
|
|
75
77
|
order: 2,
|
|
76
78
|
fillable: true,
|
|
77
79
|
validation: {
|
|
@@ -86,6 +88,7 @@ export default defineModel({
|
|
|
86
88
|
},
|
|
87
89
|
|
|
88
90
|
email: {
|
|
91
|
+
personal: true,
|
|
89
92
|
unique: true,
|
|
90
93
|
order: 1,
|
|
91
94
|
fillable: true,
|
|
@@ -100,6 +103,7 @@ export default defineModel({
|
|
|
100
103
|
factory: faker => faker.internet.email(),
|
|
101
104
|
},
|
|
102
105
|
password: {
|
|
106
|
+
personal: { export: false },
|
|
103
107
|
order: 3,
|
|
104
108
|
hidden: true,
|
|
105
109
|
fillable: true,
|
|
@@ -118,6 +122,7 @@ export default defineModel({
|
|
|
118
122
|
},
|
|
119
123
|
|
|
120
124
|
avatar: {
|
|
125
|
+
personal: true,
|
|
121
126
|
order: 4,
|
|
122
127
|
fillable: true,
|
|
123
128
|
validation: {
|
|
@@ -21,6 +21,7 @@ export default defineModel({
|
|
|
21
21
|
autoIncrement: true,
|
|
22
22
|
|
|
23
23
|
traits: {
|
|
24
|
+
gdpr: { subject: { email: 'bidder_email' }, erasure: 'anonymize', basis: 'contract', purpose: 'Auction bids' },
|
|
24
25
|
useUuid: true,
|
|
25
26
|
useTimestamps: true,
|
|
26
27
|
|
|
@@ -54,6 +55,7 @@ export default defineModel({
|
|
|
54
55
|
|
|
55
56
|
attributes: {
|
|
56
57
|
bidderName: {
|
|
58
|
+
personal: true,
|
|
57
59
|
order: 1,
|
|
58
60
|
fillable: true,
|
|
59
61
|
validation: {
|
|
@@ -66,6 +68,7 @@ export default defineModel({
|
|
|
66
68
|
},
|
|
67
69
|
|
|
68
70
|
bidderEmail: {
|
|
71
|
+
personal: true,
|
|
69
72
|
order: 2,
|
|
70
73
|
fillable: true,
|
|
71
74
|
validation: {
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'contract', purpose: 'Shopping cart' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -122,6 +123,7 @@ export default defineModel({
|
|
|
122
123
|
},
|
|
123
124
|
|
|
124
125
|
notes: {
|
|
126
|
+
personal: true,
|
|
125
127
|
order: 9,
|
|
126
128
|
fillable: true,
|
|
127
129
|
validation: {
|
|
@@ -11,6 +11,7 @@ export default defineModel({
|
|
|
11
11
|
hasMany: ['DeliveryRoute', 'CourierPing'],
|
|
12
12
|
|
|
13
13
|
traits: {
|
|
14
|
+
gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'Courier profile and live position for deliveries' },
|
|
14
15
|
useUuid: true,
|
|
15
16
|
useTimestamps: true,
|
|
16
17
|
useSearch: {
|
|
@@ -34,6 +35,7 @@ export default defineModel({
|
|
|
34
35
|
|
|
35
36
|
attributes: {
|
|
36
37
|
name: {
|
|
38
|
+
personal: true,
|
|
37
39
|
order: 1,
|
|
38
40
|
fillable: true,
|
|
39
41
|
validation: {
|
|
@@ -46,6 +48,7 @@ export default defineModel({
|
|
|
46
48
|
},
|
|
47
49
|
|
|
48
50
|
phone: {
|
|
51
|
+
personal: true,
|
|
49
52
|
order: 2,
|
|
50
53
|
fillable: true,
|
|
51
54
|
validation: {
|
|
@@ -58,6 +61,7 @@ export default defineModel({
|
|
|
58
61
|
},
|
|
59
62
|
|
|
60
63
|
vehicleNumber: {
|
|
64
|
+
personal: true,
|
|
61
65
|
order: 3,
|
|
62
66
|
fillable: true,
|
|
63
67
|
validation: {
|
|
@@ -70,6 +74,7 @@ export default defineModel({
|
|
|
70
74
|
},
|
|
71
75
|
|
|
72
76
|
license: {
|
|
77
|
+
personal: true,
|
|
73
78
|
order: 4,
|
|
74
79
|
fillable: true,
|
|
75
80
|
validation: {
|
|
@@ -101,6 +106,7 @@ export default defineModel({
|
|
|
101
106
|
* the history; these three columns are the present.
|
|
102
107
|
*/
|
|
103
108
|
latitude: {
|
|
109
|
+
personal: true,
|
|
104
110
|
order: 6,
|
|
105
111
|
fillable: true,
|
|
106
112
|
validation: {
|
|
@@ -114,6 +120,7 @@ export default defineModel({
|
|
|
114
120
|
},
|
|
115
121
|
|
|
116
122
|
longitude: {
|
|
123
|
+
personal: true,
|
|
117
124
|
order: 7,
|
|
118
125
|
fillable: true,
|
|
119
126
|
validation: {
|
|
@@ -22,6 +22,7 @@ export default defineModel({
|
|
|
22
22
|
autoIncrement: true,
|
|
23
23
|
|
|
24
24
|
traits: {
|
|
25
|
+
gdpr: { subject: { via: 'Courier' }, erasure: 'delete', basis: 'contract', purpose: 'Courier location history' },
|
|
25
26
|
useUuid: true,
|
|
26
27
|
useTimestamps: true,
|
|
27
28
|
useSeeder: { count: 0 },
|
|
@@ -31,6 +32,7 @@ export default defineModel({
|
|
|
31
32
|
|
|
32
33
|
attributes: {
|
|
33
34
|
latitude: {
|
|
35
|
+
personal: true,
|
|
34
36
|
order: 1,
|
|
35
37
|
required: true,
|
|
36
38
|
fillable: true,
|
|
@@ -45,6 +47,7 @@ export default defineModel({
|
|
|
45
47
|
},
|
|
46
48
|
|
|
47
49
|
longitude: {
|
|
50
|
+
personal: true,
|
|
48
51
|
order: 2,
|
|
49
52
|
required: true,
|
|
50
53
|
fillable: true,
|
|
@@ -9,6 +9,7 @@ export default defineModel({
|
|
|
9
9
|
autoIncrement: true,
|
|
10
10
|
|
|
11
11
|
traits: {
|
|
12
|
+
gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'Customer record behind orders and payments' },
|
|
12
13
|
useUuid: true,
|
|
13
14
|
useTimestamps: true,
|
|
14
15
|
useSearch: {
|
|
@@ -35,6 +36,7 @@ export default defineModel({
|
|
|
35
36
|
|
|
36
37
|
attributes: {
|
|
37
38
|
name: {
|
|
39
|
+
personal: true,
|
|
38
40
|
order: 1,
|
|
39
41
|
fillable: true,
|
|
40
42
|
validation: {
|
|
@@ -48,6 +50,7 @@ export default defineModel({
|
|
|
48
50
|
},
|
|
49
51
|
|
|
50
52
|
email: {
|
|
53
|
+
personal: true,
|
|
51
54
|
unique: true,
|
|
52
55
|
order: 2,
|
|
53
56
|
fillable: true,
|
|
@@ -61,6 +64,7 @@ export default defineModel({
|
|
|
61
64
|
},
|
|
62
65
|
|
|
63
66
|
phone: {
|
|
67
|
+
personal: true,
|
|
64
68
|
order: 3,
|
|
65
69
|
fillable: true,
|
|
66
70
|
validation: {
|
|
@@ -109,6 +113,7 @@ export default defineModel({
|
|
|
109
113
|
},
|
|
110
114
|
|
|
111
115
|
avatar: {
|
|
116
|
+
personal: true,
|
|
112
117
|
order: 8,
|
|
113
118
|
fillable: true,
|
|
114
119
|
validation: {
|
|
@@ -24,6 +24,7 @@ export default defineModel({
|
|
|
24
24
|
ownership: parentOwnership('Order', 'order_id'),
|
|
25
25
|
|
|
26
26
|
traits: {
|
|
27
|
+
gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'contract', purpose: 'Delivering an order' },
|
|
27
28
|
useUuid: true,
|
|
28
29
|
useTimestamps: true,
|
|
29
30
|
|
|
@@ -78,6 +79,7 @@ export default defineModel({
|
|
|
78
79
|
},
|
|
79
80
|
|
|
80
81
|
address: {
|
|
82
|
+
personal: true,
|
|
81
83
|
order: 3,
|
|
82
84
|
required: true,
|
|
83
85
|
fillable: true,
|
|
@@ -91,6 +93,7 @@ export default defineModel({
|
|
|
91
93
|
* complete; it just cannot be drawn.
|
|
92
94
|
*/
|
|
93
95
|
latitude: {
|
|
96
|
+
personal: true,
|
|
94
97
|
order: 4,
|
|
95
98
|
fillable: true,
|
|
96
99
|
validation: { rule: schema.number().min(-90).max(90) },
|
|
@@ -98,6 +101,7 @@ export default defineModel({
|
|
|
98
101
|
},
|
|
99
102
|
|
|
100
103
|
longitude: {
|
|
104
|
+
personal: true,
|
|
101
105
|
order: 5,
|
|
102
106
|
fillable: true,
|
|
103
107
|
validation: { rule: schema.number().min(-180).max(180) },
|
|
@@ -105,6 +109,7 @@ export default defineModel({
|
|
|
105
109
|
},
|
|
106
110
|
|
|
107
111
|
recipientName: {
|
|
112
|
+
personal: true,
|
|
108
113
|
order: 6,
|
|
109
114
|
fillable: true,
|
|
110
115
|
validation: { rule: schema.string().max(255) },
|
|
@@ -112,6 +117,7 @@ export default defineModel({
|
|
|
112
117
|
},
|
|
113
118
|
|
|
114
119
|
recipientPhone: {
|
|
120
|
+
personal: true,
|
|
115
121
|
order: 7,
|
|
116
122
|
fillable: true,
|
|
117
123
|
validation: { rule: schema.string().max(40) },
|
|
@@ -158,6 +164,7 @@ export default defineModel({
|
|
|
158
164
|
|
|
159
165
|
/** Why a stop failed, or anything the courier needs to record. */
|
|
160
166
|
notes: {
|
|
167
|
+
personal: true,
|
|
161
168
|
order: 12,
|
|
162
169
|
fillable: true,
|
|
163
170
|
validation: { rule: schema.string().max(1000) },
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'contract', purpose: 'Gift cards bought by the customer' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -101,6 +102,7 @@ export default defineModel({
|
|
|
101
102
|
},
|
|
102
103
|
|
|
103
104
|
recipient_email: {
|
|
105
|
+
personal: true,
|
|
104
106
|
order: 7,
|
|
105
107
|
fillable: true,
|
|
106
108
|
validation: {
|
|
@@ -110,6 +112,7 @@ export default defineModel({
|
|
|
110
112
|
},
|
|
111
113
|
|
|
112
114
|
recipientName: {
|
|
115
|
+
personal: true,
|
|
113
116
|
order: 8,
|
|
114
117
|
fillable: true,
|
|
115
118
|
validation: {
|
|
@@ -119,6 +122,7 @@ export default defineModel({
|
|
|
119
122
|
},
|
|
120
123
|
|
|
121
124
|
personalMessage: {
|
|
125
|
+
personal: true,
|
|
122
126
|
order: 9,
|
|
123
127
|
fillable: true,
|
|
124
128
|
validation: {
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Order fulfilment, kept for tax and accounting' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -128,6 +129,7 @@ export default defineModel({
|
|
|
128
129
|
},
|
|
129
130
|
|
|
130
131
|
deliveryAddress: {
|
|
132
|
+
personal: true,
|
|
131
133
|
order: 10,
|
|
132
134
|
fillable: true,
|
|
133
135
|
validation: {
|
|
@@ -137,6 +139,7 @@ export default defineModel({
|
|
|
137
139
|
},
|
|
138
140
|
|
|
139
141
|
specialInstructions: {
|
|
142
|
+
personal: true,
|
|
140
143
|
order: 11,
|
|
141
144
|
fillable: true,
|
|
142
145
|
validation: {
|
|
@@ -175,6 +178,7 @@ export default defineModel({
|
|
|
175
178
|
|
|
176
179
|
/** Geocoded delivery destination, so the map has somewhere to point. */
|
|
177
180
|
deliveryLatitude: {
|
|
181
|
+
personal: true,
|
|
178
182
|
order: 14,
|
|
179
183
|
fillable: true,
|
|
180
184
|
validation: { rule: schema.number().min(-90).max(90) },
|
|
@@ -182,6 +186,7 @@ export default defineModel({
|
|
|
182
186
|
},
|
|
183
187
|
|
|
184
188
|
deliveryLongitude: {
|
|
189
|
+
personal: true,
|
|
185
190
|
order: 15,
|
|
186
191
|
fillable: true,
|
|
187
192
|
validation: { rule: schema.number().min(-180).max(180) },
|
|
@@ -8,6 +8,7 @@ export default defineModel({
|
|
|
8
8
|
autoIncrement: true,
|
|
9
9
|
|
|
10
10
|
traits: {
|
|
11
|
+
gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Order lines, kept for tax and accounting' },
|
|
11
12
|
useTimestamps: true,
|
|
12
13
|
},
|
|
13
14
|
|
|
@@ -41,6 +42,7 @@ export default defineModel({
|
|
|
41
42
|
},
|
|
42
43
|
|
|
43
44
|
special_instructions: {
|
|
45
|
+
personal: true,
|
|
44
46
|
order: 5,
|
|
45
47
|
fillable: true,
|
|
46
48
|
validation: {
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Payment records, kept for tax and accounting' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -116,6 +117,7 @@ export default defineModel({
|
|
|
116
117
|
},
|
|
117
118
|
|
|
118
119
|
cardLastFour: {
|
|
120
|
+
personal: true,
|
|
119
121
|
order: 9,
|
|
120
122
|
fillable: true,
|
|
121
123
|
validation: {
|
|
@@ -125,6 +127,7 @@ export default defineModel({
|
|
|
125
127
|
},
|
|
126
128
|
|
|
127
129
|
cardBrand: {
|
|
130
|
+
personal: true,
|
|
128
131
|
order: 10,
|
|
129
132
|
fillable: true,
|
|
130
133
|
validation: {
|
|
@@ -134,6 +137,7 @@ export default defineModel({
|
|
|
134
137
|
},
|
|
135
138
|
|
|
136
139
|
billingEmail: {
|
|
140
|
+
personal: true,
|
|
137
141
|
order: 11,
|
|
138
142
|
fillable: true,
|
|
139
143
|
validation: {
|
|
@@ -172,6 +176,7 @@ export default defineModel({
|
|
|
172
176
|
},
|
|
173
177
|
|
|
174
178
|
notes: {
|
|
179
|
+
personal: true,
|
|
175
180
|
order: 15,
|
|
176
181
|
fillable: true,
|
|
177
182
|
validation: {
|
|
@@ -16,6 +16,7 @@ export default defineModel({
|
|
|
16
16
|
autoIncrement: true,
|
|
17
17
|
|
|
18
18
|
traits: {
|
|
19
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Donation pledges, kept for receipts' },
|
|
19
20
|
useUuid: true,
|
|
20
21
|
useTimestamps: true,
|
|
21
22
|
|
|
@@ -50,6 +51,7 @@ export default defineModel({
|
|
|
50
51
|
|
|
51
52
|
attributes: {
|
|
52
53
|
donorName: {
|
|
54
|
+
personal: true,
|
|
53
55
|
order: 1,
|
|
54
56
|
fillable: true,
|
|
55
57
|
validation: {
|
|
@@ -62,6 +64,7 @@ export default defineModel({
|
|
|
62
64
|
},
|
|
63
65
|
|
|
64
66
|
donorEmail: {
|
|
67
|
+
personal: true,
|
|
65
68
|
order: 2,
|
|
66
69
|
fillable: true,
|
|
67
70
|
validation: {
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: parentOwnership('Order', 'order_id'),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Payment transactions, kept for tax and accounting' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -66,6 +67,7 @@ export default defineModel({
|
|
|
66
67
|
},
|
|
67
68
|
|
|
68
69
|
paymentDetails: {
|
|
70
|
+
personal: true,
|
|
69
71
|
order: 5,
|
|
70
72
|
fillable: true,
|
|
71
73
|
hidden: true,
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'delete', basis: 'consent', purpose: 'Back-in-stock waitlist' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -37,6 +38,7 @@ export default defineModel({
|
|
|
37
38
|
|
|
38
39
|
attributes: {
|
|
39
40
|
name: {
|
|
41
|
+
personal: true,
|
|
40
42
|
order: 1,
|
|
41
43
|
fillable: true,
|
|
42
44
|
validation: {
|
|
@@ -49,6 +51,7 @@ export default defineModel({
|
|
|
49
51
|
},
|
|
50
52
|
|
|
51
53
|
email: {
|
|
54
|
+
personal: true,
|
|
52
55
|
order: 2,
|
|
53
56
|
fillable: true,
|
|
54
57
|
validation: {
|
|
@@ -61,6 +64,7 @@ export default defineModel({
|
|
|
61
64
|
},
|
|
62
65
|
|
|
63
66
|
phone: {
|
|
67
|
+
personal: true,
|
|
64
68
|
order: 3,
|
|
65
69
|
fillable: true,
|
|
66
70
|
validation: {
|
|
@@ -106,6 +110,7 @@ export default defineModel({
|
|
|
106
110
|
},
|
|
107
111
|
|
|
108
112
|
notes: {
|
|
113
|
+
personal: true,
|
|
109
114
|
order: 7,
|
|
110
115
|
fillable: true,
|
|
111
116
|
validation: {
|
|
@@ -13,6 +13,7 @@ export default defineModel({
|
|
|
13
13
|
ownership: customerOwnership(),
|
|
14
14
|
|
|
15
15
|
traits: {
|
|
16
|
+
gdpr: { subject: { via: 'Customer' }, erasure: 'delete', basis: 'contract', purpose: 'Restaurant waitlist' },
|
|
16
17
|
useUuid: true,
|
|
17
18
|
useTimestamps: true,
|
|
18
19
|
useSearch: {
|
|
@@ -37,6 +38,7 @@ export default defineModel({
|
|
|
37
38
|
|
|
38
39
|
attributes: {
|
|
39
40
|
name: {
|
|
41
|
+
personal: true,
|
|
40
42
|
order: 1,
|
|
41
43
|
fillable: true,
|
|
42
44
|
validation: {
|
|
@@ -49,6 +51,7 @@ export default defineModel({
|
|
|
49
51
|
},
|
|
50
52
|
|
|
51
53
|
email: {
|
|
54
|
+
personal: true,
|
|
52
55
|
order: 2,
|
|
53
56
|
fillable: true,
|
|
54
57
|
validation: {
|
|
@@ -61,6 +64,7 @@ export default defineModel({
|
|
|
61
64
|
},
|
|
62
65
|
|
|
63
66
|
phone: {
|
|
67
|
+
personal: true,
|
|
64
68
|
order: 3,
|
|
65
69
|
fillable: true,
|
|
66
70
|
validation: {
|
|
@@ -1,137 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
"
|
|
2
|
+
// Pickier lints and formats Stacks projects, built into the Stacks extension
|
|
3
|
+
// (Stacks.vscode-stacks) - the same pickier and config `./buddy lint` uses.
|
|
4
|
+
"editor.defaultFormatter": "Stacks.vscode-stacks",
|
|
5
5
|
"editor.formatOnSave": false,
|
|
6
|
-
// Auto fix
|
|
7
6
|
"editor.codeActionsOnSave": {
|
|
8
|
-
"source.fixAll.
|
|
7
|
+
"source.fixAll.pickier": "explicit",
|
|
9
8
|
"source.organizeImports": "never"
|
|
10
9
|
},
|
|
11
|
-
// Silent the stylistic rules in you IDE, but still auto fix them
|
|
12
|
-
"eslint.rules.customizations": [
|
|
13
|
-
{
|
|
14
|
-
"rule": "style/*",
|
|
15
|
-
"severity": "off",
|
|
16
|
-
"fixable": true
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"rule": "format/*",
|
|
20
|
-
"severity": "off",
|
|
21
|
-
"fixable": true
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"rule": "*-indent",
|
|
25
|
-
"severity": "off",
|
|
26
|
-
"fixable": true
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"rule": "*-spacing",
|
|
30
|
-
"severity": "off",
|
|
31
|
-
"fixable": true
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"rule": "*-spaces",
|
|
35
|
-
"severity": "off",
|
|
36
|
-
"fixable": true
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"rule": "*-order",
|
|
40
|
-
"severity": "off",
|
|
41
|
-
"fixable": true
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"rule": "*-dangle",
|
|
45
|
-
"severity": "off",
|
|
46
|
-
"fixable": true
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"rule": "*-newline",
|
|
50
|
-
"severity": "off",
|
|
51
|
-
"fixable": true
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"rule": "*quotes",
|
|
55
|
-
"severity": "off",
|
|
56
|
-
"fixable": true
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"rule": "*semi",
|
|
60
|
-
"severity": "off",
|
|
61
|
-
"fixable": true
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
// Enable eslint for all supported languages
|
|
65
|
-
"eslint.validate": [
|
|
66
|
-
"javascript",
|
|
67
|
-
"typescript",
|
|
68
|
-
"html",
|
|
69
|
-
"html",
|
|
70
|
-
"markdown",
|
|
71
|
-
"json",
|
|
72
|
-
"jsonc",
|
|
73
|
-
"yaml",
|
|
74
|
-
"toml",
|
|
75
|
-
"xml",
|
|
76
|
-
"gql",
|
|
77
|
-
"graphql",
|
|
78
|
-
"css",
|
|
79
|
-
"less",
|
|
80
|
-
"scss",
|
|
81
|
-
"pcss",
|
|
82
|
-
"postcss"
|
|
83
|
-
],
|
|
84
|
-
"[stx]": {
|
|
85
|
-
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
86
|
-
},
|
|
87
10
|
// TypeScript
|
|
88
11
|
"typescript.tsdk": "${workspaceFolder}/node_modules/typescript/lib",
|
|
89
|
-
// Shell
|
|
90
|
-
"[shellscript]": {
|
|
91
|
-
"editor.defaultFormatter": "foxundermoon.shell-format"
|
|
92
|
-
},
|
|
93
|
-
// Markdown
|
|
94
|
-
"[markdown]": {
|
|
95
|
-
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
|
96
|
-
"editor.formatOnSave": true
|
|
97
|
-
},
|
|
98
|
-
"[dockerfile]": {
|
|
99
|
-
"editor.defaultFormatter": "foxundermoon.shell-format"
|
|
100
|
-
},
|
|
101
|
-
"markdownlint.config": {
|
|
102
|
-
"default": false,
|
|
103
|
-
// "MD033": {
|
|
104
|
-
// "allowed_elements": [
|
|
105
|
-
// "h3",
|
|
106
|
-
// "div",
|
|
107
|
-
// "details",
|
|
108
|
-
// "summary",
|
|
109
|
-
// "VPTeamPage",
|
|
110
|
-
// "VPTeamPageTitle",
|
|
111
|
-
// "VPTeamMembers",
|
|
112
|
-
// "script"
|
|
113
|
-
// ]
|
|
114
|
-
// },
|
|
115
|
-
"MD041": false
|
|
116
|
-
},
|
|
117
|
-
// Stacks
|
|
118
12
|
"typescript.preferGoToSourceDefinition": true,
|
|
13
|
+
// `.stx` files get the `stx` language from the Stacks extension. Mapping
|
|
14
|
+
// them to `html` here would override it.
|
|
119
15
|
"files.associations": {
|
|
120
|
-
"buddy": "
|
|
121
|
-
"*.stx": "html"
|
|
16
|
+
"buddy": "shellscript"
|
|
122
17
|
},
|
|
123
18
|
"editor.quickSuggestions": {
|
|
124
19
|
"strings": true
|
|
125
20
|
},
|
|
126
|
-
"vsicons.associations.files": [
|
|
127
|
-
{
|
|
128
|
-
"icon": "${workspaceFolder}/public/favicon.svg",
|
|
129
|
-
"extensions": [
|
|
130
|
-
"stx"
|
|
131
|
-
],
|
|
132
|
-
"format": "svg"
|
|
133
|
-
}
|
|
134
|
-
],
|
|
135
21
|
"git.enableSmartCommit": true,
|
|
136
22
|
"npm.enableRunFromFolder": true,
|
|
137
23
|
"npm.packageManager": "bun",
|
|
@@ -145,32 +31,5 @@
|
|
|
145
31
|
"CHANGELOG.md": true
|
|
146
32
|
},
|
|
147
33
|
"explorer.confirmDragAndDrop": false,
|
|
148
|
-
"
|
|
149
|
-
"cSpell.ignorePaths": [
|
|
150
|
-
"cdk.out",
|
|
151
|
-
"node_modules",
|
|
152
|
-
"lang/de.yml"
|
|
153
|
-
],
|
|
154
|
-
"cSpell.dictionaries": [
|
|
155
|
-
"stacks-dictionary"
|
|
156
|
-
],
|
|
157
|
-
"cSpell.diagnosticLevel": "Hint",
|
|
158
|
-
"cSpell.customDictionaries": {
|
|
159
|
-
"stacks": {
|
|
160
|
-
"name": "stacks-dictionary",
|
|
161
|
-
"path": "./storage/framework/defaults/ide/dictionary.txt",
|
|
162
|
-
"scope": "user",
|
|
163
|
-
"addWords": true
|
|
164
|
-
},
|
|
165
|
-
"custom": true // enable the `custom` dictionary
|
|
166
|
-
},
|
|
167
|
-
"terminal.integrated.scrollback": 10000,
|
|
168
|
-
"grammarly.files.include": [
|
|
169
|
-
"**/README.md",
|
|
170
|
-
"**/readme.md",
|
|
171
|
-
"**/*.txt"
|
|
172
|
-
],
|
|
173
|
-
"grammarly.files.exclude": [
|
|
174
|
-
"**/dictionary.txt"
|
|
175
|
-
],
|
|
34
|
+
"terminal.integrated.scrollback": 10000
|
|
176
35
|
}
|