@rehearsal-db/core 0.1.0-beta.13 → 0.1.0-beta.15
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/CHANGELOG.md +93 -0
- package/README.md +4 -1
- package/dist/package.json +100 -0
- package/dist/scripts/install/create_root_config.d.mts +3 -0
- package/dist/scripts/install/create_root_config.mjs +13 -0
- package/dist/scripts/runtime/manage_database.d.mts +6 -0
- package/{scripts → dist/scripts}/runtime/manage_database.mjs +6 -8
- package/dist/src/application/session.d.mts +96 -0
- package/dist/src/application/session.mjs +380 -0
- package/dist/src/baseline/artifact.d.mts +119 -0
- package/dist/src/baseline/artifact.mjs +522 -0
- package/dist/src/baseline/builder.d.mts +19 -0
- package/dist/src/baseline/builder.mjs +142 -0
- package/dist/src/baseline/input_discovery.d.mts +13 -0
- package/dist/src/baseline/input_discovery.mjs +149 -0
- package/dist/src/baseline/policy_review.d.mts +56 -0
- package/dist/src/baseline/policy_review.mjs +73 -0
- package/dist/src/baseline/preparation.d.mts +63 -0
- package/dist/src/baseline/preparation.mjs +295 -0
- package/dist/src/baseline/privacy_engine.d.mts +162 -0
- package/dist/src/baseline/privacy_engine.mjs +1162 -0
- package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
- package/dist/src/baseline/privacy_structured_json.mjs +464 -0
- package/dist/src/baseline/sanitization_policy.d.mts +69 -0
- package/dist/src/baseline/sanitization_policy.mjs +227 -0
- package/dist/src/baseline/schema_snapshot.d.mts +19 -0
- package/dist/src/baseline/schema_snapshot.mjs +79 -0
- package/dist/src/cli/arguments.d.mts +43 -0
- package/dist/src/cli/arguments.mjs +135 -0
- package/dist/src/cli/guided.d.mts +51 -0
- package/dist/src/cli/guided.mjs +713 -0
- package/dist/src/cli/init_command.d.mts +21 -0
- package/dist/src/cli/init_command.mjs +90 -0
- package/dist/src/cli/project_commands.d.mts +157 -0
- package/dist/src/cli/project_commands.mjs +183 -0
- package/dist/src/cli/rehearsal.d.mts +7 -0
- package/dist/src/cli/rehearsal.mjs +706 -0
- package/dist/src/cli/renderers.d.mts +299 -0
- package/dist/src/cli/renderers.mjs +554 -0
- package/dist/src/cli/runtime_commands.d.mts +265 -0
- package/dist/src/cli/runtime_commands.mjs +599 -0
- package/dist/src/cli/source_commands.d.mts +432 -0
- package/dist/src/cli/source_commands.mjs +299 -0
- package/dist/src/cli/terminal.d.mts +59 -0
- package/dist/src/cli/terminal.mjs +230 -0
- package/dist/src/identity/claim.d.mts +144 -0
- package/dist/src/identity/claim.mjs +947 -0
- package/dist/src/identity/provider_configuration.d.mts +37 -0
- package/dist/src/identity/provider_configuration.mjs +132 -0
- package/dist/src/identity/storage.d.mts +21 -0
- package/dist/src/identity/storage.mjs +122 -0
- package/dist/src/index.d.mts +4 -0
- package/dist/src/index.mjs +3 -0
- package/dist/src/project/configuration.d.mts +181 -0
- package/dist/src/project/configuration.mjs +958 -0
- package/dist/src/project/install_scaffold.d.mts +42 -0
- package/dist/src/project/install_scaffold.mjs +263 -0
- package/dist/src/project/setup.d.mts +87 -0
- package/dist/src/project/setup.mjs +414 -0
- package/dist/src/project/support_report.d.mts +88 -0
- package/dist/src/project/support_report.mjs +83 -0
- package/dist/src/runtime/cleanup.d.mts +85 -0
- package/dist/src/runtime/cleanup.mjs +311 -0
- package/dist/src/runtime/migration_history.d.mts +51 -0
- package/dist/src/runtime/migration_history.mjs +170 -0
- package/dist/src/runtime/plan.d.mts +134 -0
- package/dist/src/runtime/plan.mjs +636 -0
- package/dist/src/runtime/policy.d.mts +66 -0
- package/dist/src/runtime/policy.mjs +369 -0
- package/dist/src/runtime/restore.d.mts +22 -0
- package/dist/src/runtime/restore.mjs +276 -0
- package/dist/src/runtime/service_environment.d.mts +11 -0
- package/dist/src/runtime/service_environment.mjs +58 -0
- package/dist/src/runtime/topology.d.mts +51 -0
- package/dist/src/runtime/topology.mjs +128 -0
- package/dist/src/shared/diagnostics.d.mts +97 -0
- package/dist/src/shared/diagnostics.mjs +170 -0
- package/dist/src/shared/human_output.d.mts +2 -0
- package/{src → dist/src}/shared/human_output.mjs +1 -3
- package/dist/src/shared/node_runtime.d.mts +14 -0
- package/dist/src/shared/node_runtime.mjs +25 -0
- package/dist/src/shared/operation_guard.d.mts +22 -0
- package/dist/src/shared/operation_guard.mjs +150 -0
- package/dist/src/shared/process_environment.d.mts +15 -0
- package/dist/src/shared/process_environment.mjs +50 -0
- package/dist/src/source/access.d.mts +165 -0
- package/dist/src/source/access.mjs +602 -0
- package/dist/src/source/asset_transfer.d.mts +27 -0
- package/dist/src/source/asset_transfer.mjs +202 -0
- package/dist/src/source/baseline.d.mts +66 -0
- package/dist/src/source/baseline.mjs +372 -0
- package/dist/src/source/external_reader.d.mts +42 -0
- package/dist/src/source/external_reader.mjs +278 -0
- package/dist/src/source/postgresql_access.d.mts +86 -0
- package/dist/src/source/postgresql_access.mjs +454 -0
- package/dist/src/source/privacy_paths.d.mts +10 -0
- package/dist/src/source/privacy_paths.mjs +27 -0
- package/dist/src/targets/driver.d.mts +2 -0
- package/dist/src/targets/driver.mjs +13 -0
- package/dist/src/targets/postgresql.d.mts +5 -0
- package/dist/src/targets/postgresql.mjs +641 -0
- package/dist/src/targets/supabase.d.mts +8 -0
- package/dist/src/targets/supabase.mjs +659 -0
- package/dist/src/targets/supabase_environment.d.mts +49 -0
- package/dist/src/targets/supabase_environment.mjs +162 -0
- package/dist/src/targets/target.d.mts +33 -0
- package/dist/src/targets/target.mjs +39 -0
- package/docs/README.md +1 -0
- package/docs/architecture.md +17 -9
- package/docs/configuration.md +49 -8
- package/docs/getting-started.md +28 -0
- package/docs/index.md +1 -0
- package/docs/production-source.md +43 -7
- package/docs/releasing.md +5 -3
- package/docs/roadmap.md +3 -2
- package/docs/sanitization.md +415 -14
- package/docs/standalone-workflow.md +12 -6
- package/docs/troubleshooting.md +5 -1
- package/docs/tutorial.md +5 -0
- package/docs/typescript.md +87 -0
- package/package.json +35 -29
- package/scripts/install/create_root_config.mjs +0 -36
- package/src/README.md +0 -17
- package/src/application/session.mjs +0 -435
- package/src/baseline/artifact.mjs +0 -684
- package/src/baseline/builder.mjs +0 -164
- package/src/baseline/input_discovery.mjs +0 -155
- package/src/baseline/policy_review.mjs +0 -92
- package/src/baseline/preparation.mjs +0 -323
- package/src/baseline/privacy_engine.mjs +0 -952
- package/src/baseline/sanitization_policy.mjs +0 -299
- package/src/baseline/schema_snapshot.mjs +0 -113
- package/src/cli/arguments.mjs +0 -126
- package/src/cli/guided.mjs +0 -814
- package/src/cli/init_command.mjs +0 -94
- package/src/cli/rehearsal.mjs +0 -970
- package/src/cli/renderers.mjs +0 -626
- package/src/cli/runtime_commands.mjs +0 -707
- package/src/cli/source_commands.mjs +0 -347
- package/src/cli/terminal.mjs +0 -275
- package/src/identity/claim.mjs +0 -1163
- package/src/identity/provider_configuration.mjs +0 -177
- package/src/identity/storage.mjs +0 -165
- package/src/project/configuration.mjs +0 -1337
- package/src/project/install_scaffold.mjs +0 -291
- package/src/project/setup.mjs +0 -466
- package/src/project/support_report.mjs +0 -105
- package/src/runtime/cleanup.mjs +0 -381
- package/src/runtime/migration_history.mjs +0 -220
- package/src/runtime/plan.mjs +0 -722
- package/src/runtime/policy.mjs +0 -438
- package/src/runtime/restore.mjs +0 -337
- package/src/runtime/service_environment.mjs +0 -82
- package/src/runtime/topology.mjs +0 -177
- package/src/shared/diagnostics.mjs +0 -207
- package/src/shared/node_runtime.mjs +0 -31
- package/src/shared/operation_guard.mjs +0 -162
- package/src/shared/process_environment.mjs +0 -68
- package/src/source/access.mjs +0 -753
- package/src/source/asset_transfer.mjs +0 -207
- package/src/source/baseline.mjs +0 -482
- package/src/source/external_reader.mjs +0 -255
- package/src/source/postgresql_access.mjs +0 -581
- package/src/source/privacy_paths.mjs +0 -38
- package/src/targets/postgresql.mjs +0 -808
- package/src/targets/supabase.mjs +0 -840
- package/src/targets/supabase_environment.mjs +0 -229
- package/src/targets/target.mjs +0 -66
- /package/{src/project → types}/configuration.d.mts +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute reviewed privacy policy version 2 without project-owned callbacks.
|
|
3
|
+
* The engine is intentionally small and fail-closed: unsupported shapes and
|
|
4
|
+
* recipes must be reviewed and added here instead of evaluated as code.
|
|
5
|
+
*/
|
|
6
|
+
type PrivacyAction = "KEEP" | "PSEUDONYMIZE" | "REPLACE" | "EXCLUDE" | "DERIVE";
|
|
7
|
+
interface PseudonymRecipe {
|
|
8
|
+
format: "uuid" | "email" | "text" | "integer" | "hex" | "gtin" | "url";
|
|
9
|
+
namespace: string;
|
|
10
|
+
maxLength?: number;
|
|
11
|
+
length?: number;
|
|
12
|
+
allowedLengths?: readonly number[];
|
|
13
|
+
origin?: string;
|
|
14
|
+
}
|
|
15
|
+
interface ConstantRecipe {
|
|
16
|
+
kind: "constant";
|
|
17
|
+
value: unknown;
|
|
18
|
+
}
|
|
19
|
+
interface DateShiftRecipe {
|
|
20
|
+
kind: "date-shift";
|
|
21
|
+
days: number;
|
|
22
|
+
representation: "iso-string" | "epoch-milliseconds";
|
|
23
|
+
group?: string;
|
|
24
|
+
}
|
|
25
|
+
interface EnumRecipe {
|
|
26
|
+
kind: "enum";
|
|
27
|
+
allowNull: boolean;
|
|
28
|
+
values: readonly (string | number | boolean)[];
|
|
29
|
+
}
|
|
30
|
+
interface ValidatedStringRecipe {
|
|
31
|
+
kind: "validated-string";
|
|
32
|
+
format: "portable-code";
|
|
33
|
+
maximumBytes: number;
|
|
34
|
+
allowNull: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface DigestRecipe {
|
|
37
|
+
kind: "digest";
|
|
38
|
+
format: "hex";
|
|
39
|
+
length: number;
|
|
40
|
+
namespace: string;
|
|
41
|
+
inputs: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
interface BindingSubstituteRecipe {
|
|
44
|
+
kind: "binding-substitute";
|
|
45
|
+
binding: string;
|
|
46
|
+
format: "uuid";
|
|
47
|
+
namespace: string;
|
|
48
|
+
maximumBytes: number;
|
|
49
|
+
}
|
|
50
|
+
interface PathMapRecipe {
|
|
51
|
+
kind: "path-map";
|
|
52
|
+
mapping: string;
|
|
53
|
+
}
|
|
54
|
+
interface ApprovedOwnerRecipe {
|
|
55
|
+
kind: "approved-owner";
|
|
56
|
+
approved: NormalizedDeclaration;
|
|
57
|
+
otherwise: NormalizedDeclaration;
|
|
58
|
+
}
|
|
59
|
+
interface JsonArrayRecipe {
|
|
60
|
+
kind: "json-array";
|
|
61
|
+
allowNull: boolean;
|
|
62
|
+
maximumBytes: number;
|
|
63
|
+
maximumDepth: number;
|
|
64
|
+
maximumItems: number;
|
|
65
|
+
items: NormalizedDeclaration;
|
|
66
|
+
}
|
|
67
|
+
interface JsonObjectRecipe {
|
|
68
|
+
kind: "json-object";
|
|
69
|
+
allowNull: boolean;
|
|
70
|
+
maximumBytes: number;
|
|
71
|
+
maximumDepth: number;
|
|
72
|
+
fields: Readonly<Record<string, NormalizedDeclaration>>;
|
|
73
|
+
}
|
|
74
|
+
interface JsonUnionRecipe {
|
|
75
|
+
kind: "json-union";
|
|
76
|
+
allowNull: boolean;
|
|
77
|
+
maximumBytes: number;
|
|
78
|
+
maximumDepth: number;
|
|
79
|
+
maximumItems: number;
|
|
80
|
+
variants: Readonly<Record<string, NormalizedDeclaration>>;
|
|
81
|
+
}
|
|
82
|
+
interface JsonDictionaryRecipe {
|
|
83
|
+
kind: "json-dictionary";
|
|
84
|
+
allowNull: boolean;
|
|
85
|
+
maximumBytes: number;
|
|
86
|
+
maximumDepth: number;
|
|
87
|
+
maximumItems: number;
|
|
88
|
+
keys: Readonly<Record<string, unknown>>;
|
|
89
|
+
values: NormalizedDeclaration;
|
|
90
|
+
}
|
|
91
|
+
type DerivationRecipe = DateShiftRecipe | EnumRecipe | ValidatedStringRecipe | DigestRecipe | BindingSubstituteRecipe | PathMapRecipe | ApprovedOwnerRecipe | JsonArrayRecipe | JsonObjectRecipe | JsonUnionRecipe | JsonDictionaryRecipe;
|
|
92
|
+
type NormalizedRecipe = PseudonymRecipe | ConstantRecipe | DerivationRecipe | null;
|
|
93
|
+
interface NormalizedDeclaration {
|
|
94
|
+
action: PrivacyAction;
|
|
95
|
+
recipe: NormalizedRecipe;
|
|
96
|
+
required?: boolean;
|
|
97
|
+
}
|
|
98
|
+
interface PrivacyBinding {
|
|
99
|
+
environmentVariable: string;
|
|
100
|
+
approvedValueSha256: string;
|
|
101
|
+
}
|
|
102
|
+
interface PrivacyPathMapping extends PseudonymRecipe {
|
|
103
|
+
binding: string;
|
|
104
|
+
format: "uuid" | "text";
|
|
105
|
+
maximumBytes: number;
|
|
106
|
+
maximumSegments: number;
|
|
107
|
+
}
|
|
108
|
+
export interface PrivacyForeignKey {
|
|
109
|
+
readonly schema: string;
|
|
110
|
+
readonly table: string;
|
|
111
|
+
readonly column: string;
|
|
112
|
+
}
|
|
113
|
+
export interface PrivacyColumn extends NormalizedDeclaration {
|
|
114
|
+
name: string;
|
|
115
|
+
generated: "ALWAYS" | "NEVER";
|
|
116
|
+
identity: "YES" | "NO";
|
|
117
|
+
foreignKey: PrivacyForeignKey | null;
|
|
118
|
+
}
|
|
119
|
+
export interface PrivacyTable {
|
|
120
|
+
schema: string;
|
|
121
|
+
name: string;
|
|
122
|
+
sourceRows: "STREAM AND SANITIZE" | "EXCLUDE";
|
|
123
|
+
ownerBinding: Readonly<{
|
|
124
|
+
binding: string;
|
|
125
|
+
columns: readonly string[];
|
|
126
|
+
match: "any";
|
|
127
|
+
nullBehavior?: "otherwise";
|
|
128
|
+
}> | null;
|
|
129
|
+
columns: readonly PrivacyColumn[];
|
|
130
|
+
}
|
|
131
|
+
export interface ExecutablePrivacyPolicy {
|
|
132
|
+
readonly policyVersion: 2;
|
|
133
|
+
readonly migrationCutoff: string;
|
|
134
|
+
readonly bindings: Readonly<Record<string, PrivacyBinding>>;
|
|
135
|
+
readonly pathMappings: Readonly<Record<string, PrivacyPathMapping>>;
|
|
136
|
+
readonly tables: readonly PrivacyTable[];
|
|
137
|
+
}
|
|
138
|
+
export declare const validateExecutablePrivacyPolicy: (policy: unknown) => ExecutablePrivacyPolicy;
|
|
139
|
+
export interface PrivacySourceRecord {
|
|
140
|
+
schema?: string;
|
|
141
|
+
table: string;
|
|
142
|
+
row: Record<string, unknown>;
|
|
143
|
+
}
|
|
144
|
+
export interface PrivacyEngine {
|
|
145
|
+
readonly keyFingerprint: string;
|
|
146
|
+
remapPath(input: {
|
|
147
|
+
mapping: string;
|
|
148
|
+
value: string;
|
|
149
|
+
}): string;
|
|
150
|
+
sanitize(record: unknown): PrivacySourceRecord | null;
|
|
151
|
+
}
|
|
152
|
+
export declare const createPrivacyEngine: ({ policy, key, environment, }: {
|
|
153
|
+
policy: unknown;
|
|
154
|
+
key: Uint8Array | string;
|
|
155
|
+
environment?: NodeJS.ProcessEnv;
|
|
156
|
+
}) => Readonly<PrivacyEngine>;
|
|
157
|
+
export declare const createPrivacyKey: (path: string) => Promise<{
|
|
158
|
+
fingerprint: string;
|
|
159
|
+
}>;
|
|
160
|
+
export declare const readPrivacyKey: (path: string) => Promise<Buffer>;
|
|
161
|
+
export declare const assertPrivacyKeyFingerprint: (key: Uint8Array, expected: unknown) => void;
|
|
162
|
+
export {};
|