feat(core-dsr): scaffold package + GDPR DSR interfaces and types

- Add pnpm turbo gen core-package dsr generator template and register
  dsr in CORE_PACKAGE_GENERATORS / choices list
- Run generator to produce packages/core-dsr/ shell
- Define IDataExport (Art. 15/20), IDataDelete (Art. 17),
  IDataRectify (Art. 16), IProcessingRestriction (Art. 18) interfaces
- Add UserDataBundle and DeletionCertificate types in dsr-types.ts
- Ship core-dsr/contexts/user-data.jsonld schema.org JSON-LD @context
- Wire @repo/core-dsr into transpilePackages (web-next)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 19:32:03 +00:00
parent 86d949294f
commit e378c950a9
24 changed files with 490 additions and 9 deletions

View File

@@ -797,11 +797,26 @@ import noRealtimeHandlerReexport from "./rules/no-realtime-handler-reexport.js";
},
printConsentNextSteps,
],
dsr: () => [
() => {
assertOptionalPackageNotPresent("core-dsr");
return "Guard passed — packages/core-dsr does not exist yet.";
},
...emitTemplateTree("core-package/dsr", "packages/core-dsr"),
() => {
addToTranspilePackages(
"apps/web-next/next.config.mjs",
"@repo/core-dsr",
);
return "Added @repo/core-dsr to transpilePackages.";
},
printDsrNextSteps,
],
};
plop.setGenerator("core-package", {
description:
"Scaffold an optional core package (realtime, events, trpc, ui, audit, analytics, consent)",
"Scaffold an optional core package (realtime, events, trpc, ui, audit, analytics, consent, dsr)",
prompts: [
{
type: "list",
@@ -811,6 +826,7 @@ import noRealtimeHandlerReexport from "./rules/no-realtime-handler-reexport.js";
"analytics",
"audit",
"consent",
"dsr",
"events",
"realtime",
"trpc",
@@ -1564,6 +1580,25 @@ function printConsentNextSteps(): string {
].join("\n");
}
function printDsrNextSteps(): string {
return [
"─────────────────────────────────────────────────────────────",
"@repo/core-dsr scaffolded into packages/core-dsr/.",
"",
"Next steps:",
"",
" 1. pnpm install # link the new workspace package",
"",
" 2. Implement DSR interfaces and types in packages/core-dsr/src/",
" (see story 06-core-dsr)",
"",
" 3. Add @repo/core-dsr to feature package.json files that need DSR",
"",
" 4. pnpm typecheck && pnpm lint && pnpm test",
"─────────────────────────────────────────────────────────────",
].join("\n");
}
function coreUiComponentActions(a: {
tier: "atom" | "molecule" | "organism";
name: string;