@intentsolutionsio/vercel-pack 1.0.0 → 1.0.3

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 (124) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +67 -44
  3. package/package.json +4 -4
  4. package/skills/vercel-advanced-troubleshooting/SKILL.md +185 -195
  5. package/skills/vercel-advanced-troubleshooting/references/errors.md +11 -0
  6. package/skills/vercel-advanced-troubleshooting/references/evidence-collection-framework.md +34 -0
  7. package/skills/vercel-advanced-troubleshooting/references/examples.md +11 -0
  8. package/skills/vercel-advanced-troubleshooting/references/systematic-isolation.md +56 -0
  9. package/skills/vercel-advanced-troubleshooting/references/timing-analysis.md +35 -0
  10. package/skills/vercel-architecture-variants/SKILL.md +227 -216
  11. package/skills/vercel-architecture-variants/references/errors.md +11 -0
  12. package/skills/vercel-architecture-variants/references/examples.md +12 -0
  13. package/skills/vercel-architecture-variants/references/variant-a-monolith-(simple).md +44 -0
  14. package/skills/vercel-architecture-variants/references/variant-b-service-layer-(moderate).md +72 -0
  15. package/skills/vercel-architecture-variants/references/variant-c-microservice-(complex).md +81 -0
  16. package/skills/vercel-ci-integration/SKILL.md +183 -73
  17. package/skills/vercel-ci-integration/references/errors.md +10 -0
  18. package/skills/vercel-ci-integration/references/examples.md +36 -0
  19. package/skills/vercel-ci-integration/references/implementation.md +54 -0
  20. package/skills/vercel-common-errors/SKILL.md +164 -60
  21. package/skills/vercel-common-errors/references/errors.md +53 -0
  22. package/skills/vercel-common-errors/references/examples.md +23 -0
  23. package/skills/vercel-cost-tuning/SKILL.md +158 -145
  24. package/skills/vercel-cost-tuning/references/cost-estimation.md +34 -0
  25. package/skills/vercel-cost-tuning/references/cost-reduction-strategies.md +40 -0
  26. package/skills/vercel-cost-tuning/references/errors.md +11 -0
  27. package/skills/vercel-cost-tuning/references/examples.md +15 -0
  28. package/skills/vercel-data-handling/SKILL.md +202 -155
  29. package/skills/vercel-data-handling/references/errors.md +11 -0
  30. package/skills/vercel-data-handling/references/examples.md +27 -0
  31. package/skills/vercel-data-handling/references/implementation.md +223 -0
  32. package/skills/vercel-debug-bundle/SKILL.md +163 -67
  33. package/skills/vercel-debug-bundle/references/errors.md +12 -0
  34. package/skills/vercel-debug-bundle/references/examples.md +24 -0
  35. package/skills/vercel-debug-bundle/references/implementation.md +54 -0
  36. package/skills/vercel-deploy-integration/SKILL.md +163 -156
  37. package/skills/vercel-deploy-integration/references/errors.md +11 -0
  38. package/skills/vercel-deploy-integration/references/examples.md +21 -0
  39. package/skills/vercel-deploy-integration/references/google-cloud-run.md +36 -0
  40. package/skills/vercel-deploy-integration/references/vercel-deployment.md +35 -0
  41. package/skills/vercel-deploy-preview/SKILL.md +164 -39
  42. package/skills/vercel-edge-functions/SKILL.md +185 -37
  43. package/skills/vercel-enterprise-rbac/SKILL.md +185 -170
  44. package/skills/vercel-enterprise-rbac/references/errors.md +11 -0
  45. package/skills/vercel-enterprise-rbac/references/examples.md +12 -0
  46. package/skills/vercel-enterprise-rbac/references/role-implementation.md +33 -0
  47. package/skills/vercel-enterprise-rbac/references/sso-integration.md +35 -0
  48. package/skills/vercel-hello-world/SKILL.md +141 -55
  49. package/skills/vercel-incident-runbook/SKILL.md +186 -138
  50. package/skills/vercel-incident-runbook/references/errors.md +11 -0
  51. package/skills/vercel-incident-runbook/references/examples.md +10 -0
  52. package/skills/vercel-incident-runbook/references/immediate-actions-by-error-type.md +41 -0
  53. package/skills/vercel-install-auth/SKILL.md +130 -53
  54. package/skills/vercel-known-pitfalls/SKILL.md +235 -233
  55. package/skills/vercel-known-pitfalls/references/errors.md +11 -0
  56. package/skills/vercel-known-pitfalls/references/examples.md +12 -0
  57. package/skills/vercel-load-scale/SKILL.md +197 -204
  58. package/skills/vercel-load-scale/references/capacity-planning.md +47 -0
  59. package/skills/vercel-load-scale/references/errors.md +11 -0
  60. package/skills/vercel-load-scale/references/examples.md +26 -0
  61. package/skills/vercel-load-scale/references/load-testing-with-k6.md +59 -0
  62. package/skills/vercel-load-scale/references/scaling-patterns.md +65 -0
  63. package/skills/vercel-local-dev-loop/SKILL.md +159 -71
  64. package/skills/vercel-local-dev-loop/references/errors.md +11 -0
  65. package/skills/vercel-local-dev-loop/references/examples.md +21 -0
  66. package/skills/vercel-local-dev-loop/references/implementation.md +60 -0
  67. package/skills/vercel-migration-deep-dive/SKILL.md +202 -187
  68. package/skills/vercel-migration-deep-dive/references/errors.md +11 -0
  69. package/skills/vercel-migration-deep-dive/references/examples.md +12 -0
  70. package/skills/vercel-migration-deep-dive/references/implementation-plan.md +80 -0
  71. package/skills/vercel-migration-deep-dive/references/pre-migration-assessment.md +39 -0
  72. package/skills/vercel-multi-env-setup/SKILL.md +167 -164
  73. package/skills/vercel-multi-env-setup/references/configuration-structure.md +59 -0
  74. package/skills/vercel-multi-env-setup/references/errors.md +11 -0
  75. package/skills/vercel-multi-env-setup/references/examples.md +11 -0
  76. package/skills/vercel-observability/SKILL.md +205 -195
  77. package/skills/vercel-observability/references/alert-configuration.md +40 -0
  78. package/skills/vercel-observability/references/errors.md +11 -0
  79. package/skills/vercel-observability/references/examples.md +13 -0
  80. package/skills/vercel-observability/references/metrics-collection.md +65 -0
  81. package/skills/vercel-performance-tuning/SKILL.md +212 -156
  82. package/skills/vercel-performance-tuning/references/caching-strategy.md +49 -0
  83. package/skills/vercel-performance-tuning/references/errors.md +11 -0
  84. package/skills/vercel-performance-tuning/references/examples.md +13 -0
  85. package/skills/vercel-policy-guardrails/SKILL.md +276 -193
  86. package/skills/vercel-policy-guardrails/references/errors.md +11 -0
  87. package/skills/vercel-policy-guardrails/references/eslint-rules.md +46 -0
  88. package/skills/vercel-policy-guardrails/references/examples.md +10 -0
  89. package/skills/vercel-prod-checklist/SKILL.md +219 -94
  90. package/skills/vercel-prod-checklist/references/errors.md +11 -0
  91. package/skills/vercel-prod-checklist/references/examples.md +25 -0
  92. package/skills/vercel-prod-checklist/references/implementation.md +60 -0
  93. package/skills/vercel-rate-limits/SKILL.md +187 -100
  94. package/skills/vercel-rate-limits/references/errors.md +11 -0
  95. package/skills/vercel-rate-limits/references/examples.md +46 -0
  96. package/skills/vercel-rate-limits/references/implementation.md +66 -0
  97. package/skills/vercel-reference-architecture/SKILL.md +226 -180
  98. package/skills/vercel-reference-architecture/references/errors.md +11 -0
  99. package/skills/vercel-reference-architecture/references/examples.md +13 -0
  100. package/skills/vercel-reference-architecture/references/key-components.md +65 -0
  101. package/skills/vercel-reference-architecture/references/project-structure.md +40 -0
  102. package/skills/vercel-reliability-patterns/SKILL.md +272 -211
  103. package/skills/vercel-reliability-patterns/references/circuit-breaker.md +36 -0
  104. package/skills/vercel-reliability-patterns/references/dead-letter-queue.md +48 -0
  105. package/skills/vercel-reliability-patterns/references/errors.md +11 -0
  106. package/skills/vercel-reliability-patterns/references/examples.md +11 -0
  107. package/skills/vercel-reliability-patterns/references/idempotency-keys.md +36 -0
  108. package/skills/vercel-sdk-patterns/SKILL.md +264 -92
  109. package/skills/vercel-sdk-patterns/references/errors.md +11 -0
  110. package/skills/vercel-sdk-patterns/references/examples.md +45 -0
  111. package/skills/vercel-sdk-patterns/references/implementation.md +67 -0
  112. package/skills/vercel-security-basics/SKILL.md +186 -96
  113. package/skills/vercel-security-basics/references/errors.md +10 -0
  114. package/skills/vercel-security-basics/references/examples.md +70 -0
  115. package/skills/vercel-security-basics/references/implementation.md +39 -0
  116. package/skills/vercel-upgrade-migration/SKILL.md +167 -67
  117. package/skills/vercel-upgrade-migration/references/errors.md +10 -0
  118. package/skills/vercel-upgrade-migration/references/examples.md +51 -0
  119. package/skills/vercel-upgrade-migration/references/implementation.md +29 -0
  120. package/skills/vercel-webhooks-events/SKILL.md +208 -132
  121. package/skills/vercel-webhooks-events/references/errors.md +11 -0
  122. package/skills/vercel-webhooks-events/references/event-handler-pattern.md +37 -0
  123. package/skills/vercel-webhooks-events/references/examples.md +16 -0
  124. package/skills/vercel-webhooks-events/references/signature-verification.md +33 -0
@@ -1,220 +1,267 @@
1
1
  ---
2
2
  name: vercel-data-handling
3
- description: |
4
- Implement Vercel PII handling, data retention, and GDPR/CCPA compliance patterns.
5
- Use when handling sensitive data, implementing data redaction, configuring retention policies,
6
- or ensuring compliance with privacy regulations for Vercel integrations.
3
+ description: 'Implement data handling, PII protection, and GDPR/CCPA compliance for
4
+ Vercel deployments.
5
+
6
+ Use when handling sensitive data in serverless functions, implementing data redaction,
7
+
8
+ or ensuring privacy compliance on Vercel.
9
+
7
10
  Trigger with phrases like "vercel data", "vercel PII",
8
- "vercel GDPR", "vercel data retention", "vercel privacy", "vercel CCPA".
11
+
12
+ "vercel GDPR", "vercel data retention", "vercel privacy", "vercel compliance".
13
+
14
+ '
9
15
  allowed-tools: Read, Write, Edit
10
16
  version: 1.0.0
11
17
  license: MIT
12
18
  author: Jeremy Longshore <jeremy@intentsolutions.io>
19
+ tags:
20
+ - saas
21
+ - vercel
22
+ - compliance
23
+ - privacy
24
+ - security
25
+ compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw
13
26
  ---
14
-
15
27
  # Vercel Data Handling
16
28
 
17
29
  ## Overview
18
- Handle sensitive data correctly when integrating with Vercel.
30
+
31
+ Handle sensitive data correctly on Vercel: PII redaction in logs, GDPR-compliant data processing in serverless functions, secure cookie management, and data residency configuration. Covers both what Vercel stores and what your application should protect.
19
32
 
20
33
  ## Prerequisites
34
+
21
35
  - Understanding of GDPR/CCPA requirements
22
- - Vercel SDK with data export capabilities
23
- - Database for audit logging
24
- - Scheduled job infrastructure for cleanup
36
+ - Vercel Pro or Enterprise (for data residency options)
37
+ - Logging infrastructure with PII awareness
25
38
 
26
- ## Data Classification
39
+ ## Instructions
27
40
 
28
- | Category | Examples | Handling |
29
- |----------|----------|----------|
30
- | PII | Email, name, phone | Encrypt, minimize |
31
- | Sensitive | API keys, tokens | Never log, rotate |
32
- | Business | Usage metrics | Aggregate when possible |
33
- | Public | Product names | Standard handling |
41
+ ### Step 1: Understand What Vercel Stores
34
42
 
35
- ## PII Detection
43
+ | Data Type | Where | Retention | Control |
44
+ |-----------|-------|-----------|---------|
45
+ | Runtime logs | Vercel servers | 1hr (free), 30d (Plus) | Log drains |
46
+ | Build logs | Vercel servers | 30 days | Automatic |
47
+ | Analytics data | Vercel | Aggregated, no PII | Disable in dashboard |
48
+ | Deployment source | Vercel | Until deleted | Manual deletion |
49
+ | Environment variables | Vercel (encrypted) | Until deleted | Scoped access |
50
+
51
+ ### Step 2: PII Redaction in Logs
36
52
 
37
53
  ```typescript
38
- const PII_PATTERNS = [
39
- { type: 'email', regex: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g },
40
- { type: 'phone', regex: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g },
41
- { type: 'ssn', regex: /\b\d{3}-\d{2}-\d{4}\b/g },
42
- { type: 'credit_card', regex: /\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g },
54
+ // lib/redact.ts redact PII before logging
55
+ const PII_PATTERNS: [RegExp, string][] = [
56
+ [/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g, '[EMAIL]'],
57
+ [/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g, '[PHONE]'],
58
+ [/\b\d{3}-\d{2}-\d{4}\b/g, '[SSN]'],
59
+ [/\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g, '[CARD]'],
60
+ [/\b(?:Bearer|token|key|secret|password)\s*[:=]\s*\S+/gi, '[CREDENTIAL]'],
43
61
  ];
44
62
 
45
- function detectPII(text: string): { type: string; match: string }[] {
46
- const findings: { type: string; match: string }[] = [];
47
-
48
- for (const pattern of PII_PATTERNS) {
49
- const matches = text.matchAll(pattern.regex);
50
- for (const match of matches) {
51
- findings.push({ type: pattern.type, match: match[0] });
52
- }
63
+ export function redact(text: string): string {
64
+ let result = text;
65
+ for (const [pattern, replacement] of PII_PATTERNS) {
66
+ result = result.replace(pattern, replacement);
53
67
  }
68
+ return result;
69
+ }
54
70
 
55
- return findings;
71
+ // Usage — always redact before console.log
72
+ import { redact } from '@/lib/redact';
73
+
74
+ export async function POST(request: Request) {
75
+ const body = await request.json();
76
+ console.log('Request received:', redact(JSON.stringify(body)));
77
+ // Process safely...
56
78
  }
57
79
  ```
58
80
 
59
- ## Data Redaction
81
+ ### Step 3: GDPR-Compliant API Routes
60
82
 
61
83
  ```typescript
62
- function redactPII(data: Record<string, any>): Record<string, any> {
63
- const sensitiveFields = ['email', 'phone', 'ssn', 'password', 'apiKey'];
64
- const redacted = { ...data };
84
+ // api/users/[id]/route.ts data subject request handlers
85
+ import { NextRequest, NextResponse } from 'next/server';
86
+ import { db } from '@/lib/db';
87
+
88
+ // Right to Access (GDPR Art. 15)
89
+ export async function GET(
90
+ request: NextRequest,
91
+ { params }: { params: { id: string } }
92
+ ) {
93
+ const user = await db.user.findUnique({
94
+ where: { id: params.id },
95
+ include: { posts: true, preferences: true },
96
+ });
65
97
 
66
- for (const field of sensitiveFields) {
67
- if (redacted[field]) {
68
- redacted[field] = '[REDACTED]';
69
- }
70
- }
98
+ if (!user) return NextResponse.json({ error: 'Not found' }, { status: 404 });
71
99
 
72
- return redacted;
100
+ return NextResponse.json({
101
+ personalData: {
102
+ name: user.name,
103
+ email: user.email,
104
+ createdAt: user.createdAt,
105
+ posts: user.posts,
106
+ preferences: user.preferences,
107
+ },
108
+ exportedAt: new Date().toISOString(),
109
+ });
73
110
  }
74
111
 
75
- // Use in logging
76
- console.log('Vercel request:', redactPII(requestData));
77
- ```
78
-
79
- ## Data Retention Policy
112
+ // Right to Erasure (GDPR Art. 17)
113
+ export async function DELETE(
114
+ request: NextRequest,
115
+ { params }: { params: { id: string } }
116
+ ) {
117
+ // Soft delete — anonymize instead of hard delete for audit trail
118
+ await db.user.update({
119
+ where: { id: params.id },
120
+ data: {
121
+ email: `deleted-${params.id}@redacted.local`,
122
+ name: '[DELETED]',
123
+ deletedAt: new Date(),
124
+ },
125
+ });
80
126
 
81
- ### Retention Periods
82
- | Data Type | Retention | Reason |
83
- |-----------|-----------|--------|
84
- | API logs | 30 days | Debugging |
85
- | Error logs | 90 days | Root cause analysis |
86
- | Audit logs | 7 years | Compliance |
87
- | PII | Until deletion request | GDPR/CCPA |
127
+ // Also delete from log drain provider if applicable
128
+ console.log(`GDPR deletion completed for user ${params.id}`);
129
+ return NextResponse.json({ deleted: true });
130
+ }
131
+ ```
88
132
 
89
- ### Automatic Cleanup
133
+ ### Step 4: Secure Cookie Management
90
134
 
91
135
  ```typescript
92
- async function cleanupVercelData(retentionDays: number): Promise<void> {
93
- const cutoff = new Date();
94
- cutoff.setDate(cutoff.getDate() - retentionDays);
136
+ // lib/cookies.ts GDPR-aware cookie handling
137
+ import { cookies } from 'next/headers';
138
+
139
+ export function setSessionCookie(token: string): void {
140
+ cookies().set('session', token, {
141
+ httpOnly: true, // Not accessible via JavaScript
142
+ secure: true, // HTTPS only
143
+ sameSite: 'lax', // CSRF protection
144
+ maxAge: 60 * 60 * 24, // 24 hours
145
+ path: '/',
146
+ });
147
+ }
95
148
 
96
- await db.vercelLogs.deleteMany({
97
- createdAt: { $lt: cutoff },
98
- type: { $nin: ['audit', 'compliance'] },
149
+ export function setConsentCookie(consent: Record<string, boolean>): void {
150
+ cookies().set('consent', JSON.stringify(consent), {
151
+ httpOnly: false, // Needs client-side access
152
+ secure: true,
153
+ sameSite: 'lax',
154
+ maxAge: 60 * 60 * 24 * 365, // 1 year
155
+ path: '/',
99
156
  });
100
157
  }
101
158
 
102
- // Schedule daily cleanup
103
- cron.schedule('0 3 * * *', () => cleanupVercelData(30));
159
+ // Middleware block analytics if consent not given
160
+ export function middleware(request: Request) {
161
+ const consent = request.headers.get('cookie')?.includes('consent');
162
+ if (!consent) {
163
+ // Strip analytics query params, skip tracking middleware
164
+ }
165
+ }
104
166
  ```
105
167
 
106
- ## GDPR/CCPA Compliance
107
-
108
- ### Data Subject Access Request (DSAR)
168
+ ### Step 5: Data Residency Configuration
109
169
 
110
- ```typescript
111
- async function exportUserData(userId: string): Promise<DataExport> {
112
- const vercelData = await vercelClient.getUserData(userId);
170
+ Vercel allows configuring where your serverless functions execute:
113
171
 
114
- return {
115
- source: 'Vercel',
116
- exportedAt: new Date().toISOString(),
117
- data: {
118
- profile: vercelData.profile,
119
- activities: vercelData.activities,
120
- // Include all user-related data
121
- },
122
- };
172
+ ```json
173
+ // vercel.json — restrict function execution to EU regions
174
+ {
175
+ "regions": ["cdg1", "lhr1"],
176
+ "functions": {
177
+ "api/**/*.ts": {
178
+ "regions": ["cdg1"]
179
+ }
180
+ }
123
181
  }
124
182
  ```
125
183
 
126
- ### Right to Deletion
184
+ EU regions for GDPR data residency:
127
185
 
128
- ```typescript
129
- async function deleteUserData(userId: string): Promise<DeletionResult> {
130
- // 1. Delete from Vercel
131
- await vercelClient.deleteUser(userId);
132
-
133
- // 2. Delete local copies
134
- await db.vercelUserCache.deleteMany({ userId });
135
-
136
- // 3. Audit log (required to keep)
137
- await auditLog.record({
138
- action: 'GDPR_DELETION',
139
- userId,
140
- service: 'vercel',
141
- timestamp: new Date(),
142
- });
186
+ | Region | Location | Code |
187
+ |--------|----------|------|
188
+ | Paris | France | `cdg1` |
189
+ | London | UK | `lhr1` |
190
+ | Frankfurt | Germany | `fra1` |
143
191
 
144
- return { success: true, deletedAt: new Date() };
145
- }
146
- ```
147
-
148
- ## Data Minimization
192
+ ### Step 6: Audit Logging
149
193
 
150
194
  ```typescript
151
- // Only request needed fields
152
- const user = await vercelClient.getUser(userId, {
153
- fields: ['id', 'name'], // Not email, phone, address
154
- });
155
-
156
- // Don't store unnecessary data
157
- const cacheData = {
158
- id: user.id,
159
- name: user.name,
160
- // Omit sensitive fields
161
- };
162
- ```
163
-
164
- ## Instructions
195
+ // lib/audit-log.ts track data access for compliance
196
+ interface AuditEntry {
197
+ action: 'read' | 'create' | 'update' | 'delete' | 'export';
198
+ resource: string;
199
+ resourceId: string;
200
+ userId: string;
201
+ ip: string;
202
+ timestamp: string;
203
+ }
165
204
 
166
- ### Step 1: Classify Data
167
- Categorize all Vercel data by sensitivity level.
205
+ export async function auditLog(entry: Omit<AuditEntry, 'timestamp'>): Promise<void> {
206
+ const record: AuditEntry = {
207
+ ...entry,
208
+ timestamp: new Date().toISOString(),
209
+ };
168
210
 
169
- ### Step 2: Implement PII Detection
170
- Add regex patterns to detect sensitive data in logs.
211
+ // Write to database audit table
212
+ await db.auditLog.create({ data: record });
171
213
 
172
- ### Step 3: Configure Redaction
173
- Apply redaction to sensitive fields before logging.
214
+ // Also log for log drain capture (structured JSON)
215
+ console.log(JSON.stringify({ type: 'audit', ...record }));
216
+ }
174
217
 
175
- ### Step 4: Set Up Retention
176
- Configure automatic cleanup with appropriate retention periods.
218
+ // Usage in API route:
219
+ export async function GET(request: NextRequest) {
220
+ await auditLog({
221
+ action: 'read',
222
+ resource: 'user',
223
+ resourceId: params.id,
224
+ userId: session.userId,
225
+ ip: request.headers.get('x-forwarded-for') ?? 'unknown',
226
+ });
227
+ }
228
+ ```
177
229
 
178
- ## Output
179
- - Data classification documented
180
- - PII detection implemented
181
- - Redaction in logging active
182
- - Retention policy enforced
230
+ ## Data Classification Guide
183
231
 
184
- ## Error Handling
185
- | Issue | Cause | Solution |
186
- |-------|-------|----------|
187
- | PII in logs | Missing redaction | Wrap logging with redact |
188
- | Deletion failed | Data locked | Check dependencies |
189
- | Export incomplete | Timeout | Increase batch size |
190
- | Audit gap | Missing entries | Review log pipeline |
232
+ | Category | Examples | Handling on Vercel |
233
+ |----------|----------|-------------------|
234
+ | PII | Email, name, phone, IP | Redact from logs, encrypt at rest |
235
+ | Secrets | API keys, tokens, passwords | Use `type: sensitive` env vars, never log |
236
+ | Financial | Card numbers, bank info | Never process in functions — use Stripe/payment provider |
237
+ | Health | Medical records | Requires BAA contact Vercel Enterprise |
238
+ | Business | Metrics, usage stats | Aggregate before logging |
191
239
 
192
- ## Examples
240
+ ## Output
193
241
 
194
- ### Quick PII Scan
195
- ```typescript
196
- const findings = detectPII(JSON.stringify(userData));
197
- if (findings.length > 0) {
198
- console.warn(`PII detected: ${findings.map(f => f.type).join(', ')}`);
199
- }
200
- ```
242
+ - PII redaction applied to all log output
243
+ - GDPR data subject request endpoints implemented
244
+ - Secure cookie handling with consent management
245
+ - Data residency configured via function regions
246
+ - Audit logging for compliance trail
201
247
 
202
- ### Redact Before Logging
203
- ```typescript
204
- const safeData = redactPII(apiResponse);
205
- logger.info('Vercel response:', safeData);
206
- ```
248
+ ## Error Handling
207
249
 
208
- ### GDPR Data Export
209
- ```typescript
210
- const userExport = await exportUserData('user-123');
211
- await sendToUser(userExport);
212
- ```
250
+ | Error | Cause | Solution |
251
+ |-------|-------|----------|
252
+ | PII in Vercel logs | Not redacting before console.log | Use `redact()` wrapper on all log calls |
253
+ | GDPR data request timeout | Large data export in function | Paginate or use background processing |
254
+ | Cookies not secure | Missing `secure: true` flag | Always set httpOnly and secure flags |
255
+ | Function running in wrong region | Region not set in vercel.json | Specify `regions` per function |
213
256
 
214
257
  ## Resources
215
- - [GDPR Developer Guide](https://gdpr.eu/developers/)
216
- - [CCPA Compliance Guide](https://oag.ca.gov/privacy/ccpa)
217
- - [Vercel Privacy Guide](https://vercel.com/docs/privacy)
258
+
259
+ - [Vercel Privacy Policy](https://vercel.com/legal/privacy-policy)
260
+ - [Vercel Data Processing Agreement](https://vercel.com/legal/dpa)
261
+ - [GDPR Overview](https://gdpr.eu/)
262
+ - [Vercel Function Regions](https://vercel.com/docs/functions/configuring-functions)
263
+ - [Vercel Security](https://vercel.com/security)
218
264
 
219
265
  ## Next Steps
220
- For enterprise access control, see `vercel-enterprise-rbac`.
266
+
267
+ For enterprise RBAC, see `vercel-enterprise-rbac`.
@@ -0,0 +1,11 @@
1
+ # Error Handling Reference
2
+
3
+ | Issue | Cause | Solution |
4
+ |-------|-------|----------|
5
+ | PII in logs | Missing redaction | Wrap logging with redact |
6
+ | Deletion failed | Data locked | Check dependencies |
7
+ | Export incomplete | Timeout | Increase batch size |
8
+ | Audit gap | Missing entries | Review log pipeline |
9
+
10
+ ---
11
+ *[Tons of Skills](https://tonsofskills.com) by [Intent Solutions](https://intentsolutions.io) | [jeremylongshore.com](https://jeremylongshore.com)*
@@ -0,0 +1,27 @@
1
+ ## Examples
2
+
3
+ ### Quick PII Scan
4
+
5
+ ```typescript
6
+ const findings = detectPII(JSON.stringify(userData));
7
+ if (findings.length > 0) {
8
+ console.warn(`PII detected: ${findings.map(f => f.type).join(', ')}`);
9
+ }
10
+ ```
11
+
12
+ ### Redact Before Logging
13
+
14
+ ```typescript
15
+ const safeData = redactPII(apiResponse);
16
+ logger.info('Vercel response:', safeData);
17
+ ```
18
+
19
+ ### GDPR Data Export
20
+
21
+ ```typescript
22
+ const userExport = await exportUserData('user-123');
23
+ await sendToUser(userExport);
24
+ ```
25
+
26
+ ---
27
+ *[Tons of Skills](https://tonsofskills.com) by [Intent Solutions](https://intentsolutions.io) | [jeremylongshore.com](https://jeremylongshore.com)*