chore(template): clean-slate template snapshot from bb4a0c7
Curated, product-agnostic snapshot of the post-story-04 tree: demo content deleted, auth-only reference feature, web-next shell, all gates green. Product-specific docs, ADRs 027-029, PRDs/epics/archive, editor library traces, and product naming are curated out; generic template repairs (coverage provider devDeps, root test:coverage script, live lint fixes, root-only release-please) are kept. See TEMPLATE.md for provenance, curation list, and usage. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
This commit is contained in:
20
packages/core-dsr/src/handlers/delete-handler.ts
Normal file
20
packages/core-dsr/src/handlers/delete-handler.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { IDataDelete } from "../data-delete.interface";
|
||||
import type { DeletionMode, DeletionCertificate } from "../dsr-types";
|
||||
import type { HandlerResponse } from "./handler-types";
|
||||
|
||||
export type DeleteHandlerInput = {
|
||||
subjectId: string;
|
||||
mode: DeletionMode;
|
||||
};
|
||||
|
||||
export function createDeleteHandler(dataDelete: IDataDelete) {
|
||||
return async (
|
||||
input: DeleteHandlerInput,
|
||||
): Promise<HandlerResponse<DeletionCertificate>> => {
|
||||
const cert = await dataDelete.deleteSubjectData(
|
||||
input.subjectId,
|
||||
input.mode,
|
||||
);
|
||||
return { status: 200, body: cert };
|
||||
};
|
||||
}
|
||||
24
packages/core-dsr/src/handlers/export-handler.ts
Normal file
24
packages/core-dsr/src/handlers/export-handler.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import type { IDataExport } from "../data-export.interface";
|
||||
import type { DsrFormat, UserDataBundle } from "../dsr-types";
|
||||
import type { HandlerResponse } from "./handler-types";
|
||||
|
||||
export type ExportHandlerInput = {
|
||||
subjectId: string;
|
||||
format: DsrFormat;
|
||||
};
|
||||
|
||||
export function createExportHandler(dataExport: IDataExport) {
|
||||
return async (
|
||||
input: ExportHandlerInput,
|
||||
): Promise<HandlerResponse<UserDataBundle>> => {
|
||||
const bundle = await dataExport.exportSubjectData(
|
||||
input.subjectId,
|
||||
input.format,
|
||||
);
|
||||
const headers: Record<string, string> =
|
||||
input.format === "json-ld"
|
||||
? { "Content-Type": "application/ld+json" }
|
||||
: { "Content-Type": "application/json" };
|
||||
return { status: 200, body: bundle, headers };
|
||||
};
|
||||
}
|
||||
5
packages/core-dsr/src/handlers/handler-types.ts
Normal file
5
packages/core-dsr/src/handlers/handler-types.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export type HandlerResponse<T = unknown> = {
|
||||
status: number;
|
||||
body: T;
|
||||
headers?: Record<string, string>;
|
||||
};
|
||||
23
packages/core-dsr/src/handlers/rectify-handler.ts
Normal file
23
packages/core-dsr/src/handlers/rectify-handler.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { IDataRectify } from "../data-rectify.interface";
|
||||
import type { HandlerResponse } from "./handler-types";
|
||||
|
||||
export type RectifyHandlerInput = {
|
||||
subjectId: string;
|
||||
collection: string;
|
||||
field: string;
|
||||
value: unknown;
|
||||
};
|
||||
|
||||
export function createRectifyHandler(dataRectify: IDataRectify) {
|
||||
return async (
|
||||
input: RectifyHandlerInput,
|
||||
): Promise<HandlerResponse<{ ok: true }>> => {
|
||||
await dataRectify.updateSubjectField(
|
||||
input.subjectId,
|
||||
input.collection,
|
||||
input.field,
|
||||
input.value,
|
||||
);
|
||||
return { status: 200, body: { ok: true as const } };
|
||||
};
|
||||
}
|
||||
18
packages/core-dsr/src/handlers/restrict-handler.ts
Normal file
18
packages/core-dsr/src/handlers/restrict-handler.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type { IProcessingRestriction } from "../processing-restriction.interface";
|
||||
import type { HandlerResponse } from "./handler-types";
|
||||
|
||||
export type RestrictHandlerInput = {
|
||||
subjectId: string;
|
||||
granted: boolean;
|
||||
};
|
||||
|
||||
export function createRestrictHandler(
|
||||
processingRestriction: IProcessingRestriction,
|
||||
) {
|
||||
return async (
|
||||
input: RestrictHandlerInput,
|
||||
): Promise<HandlerResponse<{ ok: true }>> => {
|
||||
await processingRestriction.setRestriction(input.subjectId, input.granted);
|
||||
return { status: 200, body: { ok: true as const } };
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user