@rehearsal-db/core 0.1.0-beta.14 → 0.1.0-beta.16

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 (236) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +1 -0
  3. package/dist/package.json +101 -0
  4. package/dist/scripts/install/create_root_config.d.mts +3 -0
  5. package/dist/scripts/install/create_root_config.mjs +13 -0
  6. package/dist/scripts/runtime/manage_database.d.mts +6 -0
  7. package/{scripts → dist/scripts}/runtime/manage_database.mjs +6 -8
  8. package/dist/src/application/session.d.mts +96 -0
  9. package/dist/src/application/session.mjs +380 -0
  10. package/dist/src/baseline/artifact.d.mts +119 -0
  11. package/dist/src/baseline/artifact.mjs +522 -0
  12. package/dist/src/baseline/builder.d.mts +19 -0
  13. package/dist/src/baseline/builder.mjs +142 -0
  14. package/dist/src/baseline/input_discovery.d.mts +13 -0
  15. package/dist/src/baseline/input_discovery.mjs +149 -0
  16. package/dist/src/baseline/policy_review.d.mts +56 -0
  17. package/dist/src/baseline/policy_review.mjs +73 -0
  18. package/dist/src/baseline/preparation.d.mts +63 -0
  19. package/dist/src/baseline/preparation.mjs +295 -0
  20. package/dist/src/baseline/privacy_contract.d.mts +147 -0
  21. package/dist/src/baseline/privacy_contract.mjs +2 -0
  22. package/dist/src/baseline/privacy_dependency_graph.d.mts +7 -0
  23. package/dist/src/baseline/privacy_dependency_graph.mjs +110 -0
  24. package/dist/src/baseline/privacy_engine.d.mts +5 -0
  25. package/dist/src/baseline/privacy_engine.mjs +4 -0
  26. package/dist/src/baseline/privacy_key.d.mts +7 -0
  27. package/dist/src/baseline/privacy_key.mjs +42 -0
  28. package/dist/src/baseline/privacy_pipeline.d.mts +7 -0
  29. package/dist/src/baseline/privacy_pipeline.mjs +127 -0
  30. package/dist/src/baseline/privacy_policy.d.mts +6 -0
  31. package/dist/src/baseline/privacy_policy.mjs +237 -0
  32. package/dist/src/baseline/privacy_recipe_validation.d.mts +5 -0
  33. package/dist/src/baseline/privacy_recipe_validation.mjs +289 -0
  34. package/dist/src/baseline/privacy_rule_registry.d.mts +18 -0
  35. package/dist/src/baseline/privacy_rule_registry.mjs +143 -0
  36. package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
  37. package/dist/src/baseline/privacy_structured_json.mjs +464 -0
  38. package/dist/src/baseline/privacy_transforms.d.mts +18 -0
  39. package/dist/src/baseline/privacy_transforms.mjs +142 -0
  40. package/dist/src/baseline/privacy_validation_shared.d.mts +31 -0
  41. package/dist/src/baseline/privacy_validation_shared.mjs +127 -0
  42. package/dist/src/baseline/sanitization_policy.d.mts +69 -0
  43. package/dist/src/baseline/sanitization_policy.mjs +227 -0
  44. package/dist/src/baseline/schema_snapshot.d.mts +19 -0
  45. package/dist/src/baseline/schema_snapshot.mjs +79 -0
  46. package/dist/src/cli/application_command_handlers.d.mts +8 -0
  47. package/dist/src/cli/application_command_handlers.mjs +52 -0
  48. package/dist/src/cli/arguments.d.mts +38 -0
  49. package/dist/src/cli/arguments.mjs +128 -0
  50. package/dist/src/cli/basic_command_handlers.d.mts +4 -0
  51. package/dist/src/cli/basic_command_handlers.mjs +56 -0
  52. package/dist/src/cli/cli_commands.d.mts +14 -0
  53. package/dist/src/cli/cli_commands.mjs +32 -0
  54. package/dist/src/cli/command_contract.d.mts +57 -0
  55. package/dist/src/cli/command_contract.mjs +39 -0
  56. package/dist/src/cli/command_output.d.mts +12 -0
  57. package/dist/src/cli/command_output.mjs +20 -0
  58. package/dist/src/cli/command_registry.d.mts +7 -0
  59. package/dist/src/cli/command_registry.mjs +14 -0
  60. package/dist/src/cli/guided.d.mts +53 -0
  61. package/dist/src/cli/guided.mjs +719 -0
  62. package/dist/src/cli/identity_command_handlers.d.mts +8 -0
  63. package/dist/src/cli/identity_command_handlers.mjs +43 -0
  64. package/dist/src/cli/init_command.d.mts +21 -0
  65. package/dist/src/cli/init_command.mjs +90 -0
  66. package/dist/src/cli/inspection_command_handlers.d.mts +3 -0
  67. package/dist/src/cli/inspection_command_handlers.mjs +79 -0
  68. package/dist/src/cli/project_command_handlers.d.mts +11 -0
  69. package/dist/src/cli/project_command_handlers.mjs +92 -0
  70. package/dist/src/cli/project_commands.d.mts +159 -0
  71. package/dist/src/cli/project_commands.mjs +183 -0
  72. package/dist/src/cli/rehearsal.d.mts +7 -0
  73. package/dist/src/cli/rehearsal.mjs +190 -0
  74. package/dist/src/cli/renderers.d.mts +299 -0
  75. package/dist/src/cli/renderers.mjs +554 -0
  76. package/dist/src/cli/runtime_action_handlers.d.mts +12 -0
  77. package/dist/src/cli/runtime_action_handlers.mjs +201 -0
  78. package/dist/src/cli/runtime_commands.d.mts +269 -0
  79. package/dist/src/cli/runtime_commands.mjs +601 -0
  80. package/dist/src/cli/source_command_handlers.d.mts +8 -0
  81. package/dist/src/cli/source_command_handlers.mjs +62 -0
  82. package/dist/src/cli/source_commands.d.mts +436 -0
  83. package/dist/src/cli/source_commands.mjs +301 -0
  84. package/dist/src/cli/terminal.d.mts +59 -0
  85. package/dist/src/cli/terminal.mjs +230 -0
  86. package/dist/src/identity/claim.d.mts +5 -0
  87. package/dist/src/identity/claim.mjs +4 -0
  88. package/dist/src/identity/claim_contract.d.mts +135 -0
  89. package/dist/src/identity/claim_contract.mjs +6 -0
  90. package/dist/src/identity/claim_executor.d.mts +10 -0
  91. package/dist/src/identity/claim_executor.mjs +358 -0
  92. package/dist/src/identity/claim_identity_lookup.d.mts +17 -0
  93. package/dist/src/identity/claim_identity_lookup.mjs +125 -0
  94. package/dist/src/identity/claim_plan.d.mts +8 -0
  95. package/dist/src/identity/claim_plan.mjs +61 -0
  96. package/dist/src/identity/claim_policy.d.mts +3 -0
  97. package/dist/src/identity/claim_policy.mjs +377 -0
  98. package/dist/src/identity/claim_sql.d.mts +10 -0
  99. package/dist/src/identity/claim_sql.mjs +46 -0
  100. package/dist/src/identity/claim_verification.d.mts +13 -0
  101. package/dist/src/identity/claim_verification.mjs +35 -0
  102. package/dist/src/identity/provider_configuration.d.mts +37 -0
  103. package/dist/src/identity/provider_configuration.mjs +132 -0
  104. package/dist/src/identity/storage.d.mts +21 -0
  105. package/dist/src/identity/storage.mjs +122 -0
  106. package/dist/src/index.d.mts +4 -0
  107. package/dist/src/index.mjs +3 -0
  108. package/dist/src/project/configuration.d.mts +13 -0
  109. package/dist/src/project/configuration.mjs +9 -0
  110. package/dist/src/project/configuration_contract.d.mts +125 -0
  111. package/dist/src/project/configuration_contract.mjs +27 -0
  112. package/dist/src/project/configuration_discovery.d.mts +7 -0
  113. package/dist/src/project/configuration_discovery.mjs +37 -0
  114. package/dist/src/project/configuration_normalization.d.mts +107 -0
  115. package/dist/src/project/configuration_normalization.mjs +302 -0
  116. package/dist/src/project/configuration_rendering.d.mts +14 -0
  117. package/dist/src/project/configuration_rendering.mjs +224 -0
  118. package/dist/src/project/configuration_resolution.d.mts +125 -0
  119. package/dist/src/project/configuration_resolution.mjs +81 -0
  120. package/dist/src/project/configuration_schema.d.mts +22 -0
  121. package/dist/src/project/configuration_schema.mjs +160 -0
  122. package/dist/src/project/configuration_validation.d.mts +22 -0
  123. package/dist/src/project/configuration_validation.mjs +136 -0
  124. package/dist/src/project/install_scaffold.d.mts +42 -0
  125. package/dist/src/project/install_scaffold.mjs +263 -0
  126. package/dist/src/project/project_detection.d.mts +14 -0
  127. package/dist/src/project/project_detection.mjs +47 -0
  128. package/dist/src/project/setup.d.mts +87 -0
  129. package/dist/src/project/setup.mjs +414 -0
  130. package/dist/src/project/support_report.d.mts +88 -0
  131. package/dist/src/project/support_report.mjs +83 -0
  132. package/dist/src/runtime/cleanup.d.mts +85 -0
  133. package/dist/src/runtime/cleanup.mjs +311 -0
  134. package/dist/src/runtime/lifecycle_engine.d.mts +63 -0
  135. package/dist/src/runtime/lifecycle_engine.mjs +114 -0
  136. package/dist/src/runtime/migration_history.d.mts +51 -0
  137. package/dist/src/runtime/migration_history.mjs +170 -0
  138. package/dist/src/runtime/plan.d.mts +134 -0
  139. package/dist/src/runtime/plan.mjs +637 -0
  140. package/dist/src/runtime/policy.d.mts +66 -0
  141. package/dist/src/runtime/policy.mjs +369 -0
  142. package/dist/src/runtime/restore.d.mts +22 -0
  143. package/dist/src/runtime/restore.mjs +276 -0
  144. package/dist/src/runtime/service_environment.d.mts +11 -0
  145. package/dist/src/runtime/service_environment.mjs +58 -0
  146. package/dist/src/runtime/topology.d.mts +51 -0
  147. package/dist/src/runtime/topology.mjs +128 -0
  148. package/dist/src/shared/diagnostics.d.mts +97 -0
  149. package/dist/src/shared/diagnostics.mjs +170 -0
  150. package/dist/src/shared/human_output.d.mts +2 -0
  151. package/{src → dist/src}/shared/human_output.mjs +1 -3
  152. package/dist/src/shared/node_runtime.d.mts +14 -0
  153. package/dist/src/shared/node_runtime.mjs +25 -0
  154. package/dist/src/shared/operation_guard.d.mts +22 -0
  155. package/dist/src/shared/operation_guard.mjs +150 -0
  156. package/dist/src/shared/process_environment.d.mts +15 -0
  157. package/dist/src/shared/process_environment.mjs +50 -0
  158. package/dist/src/source/access.d.mts +165 -0
  159. package/dist/src/source/access.mjs +602 -0
  160. package/dist/src/source/asset_transfer.d.mts +27 -0
  161. package/dist/src/source/asset_transfer.mjs +202 -0
  162. package/dist/src/source/baseline.d.mts +66 -0
  163. package/dist/src/source/baseline.mjs +372 -0
  164. package/dist/src/source/external_reader.d.mts +42 -0
  165. package/dist/src/source/external_reader.mjs +278 -0
  166. package/dist/src/source/postgresql_access.d.mts +86 -0
  167. package/dist/src/source/postgresql_access.mjs +454 -0
  168. package/dist/src/source/privacy_paths.d.mts +10 -0
  169. package/dist/src/source/privacy_paths.mjs +27 -0
  170. package/dist/src/targets/driver.d.mts +2 -0
  171. package/dist/src/targets/driver.mjs +13 -0
  172. package/dist/src/targets/postgresql.d.mts +5 -0
  173. package/dist/src/targets/postgresql.mjs +620 -0
  174. package/dist/src/targets/supabase.d.mts +8 -0
  175. package/dist/src/targets/supabase.mjs +627 -0
  176. package/dist/src/targets/supabase_environment.d.mts +49 -0
  177. package/dist/src/targets/supabase_environment.mjs +162 -0
  178. package/dist/src/targets/target.d.mts +33 -0
  179. package/dist/src/targets/target.mjs +39 -0
  180. package/docs/README.md +1 -0
  181. package/docs/architecture.md +133 -10
  182. package/docs/configuration.md +9 -3
  183. package/docs/index.md +1 -0
  184. package/docs/releasing.md +8 -3
  185. package/docs/typescript.md +134 -0
  186. package/package.json +36 -29
  187. package/types/configuration.d.mts +5 -0
  188. package/scripts/install/create_root_config.mjs +0 -19
  189. package/src/README.md +0 -17
  190. package/src/application/session.mjs +0 -435
  191. package/src/baseline/artifact.mjs +0 -684
  192. package/src/baseline/builder.mjs +0 -164
  193. package/src/baseline/input_discovery.mjs +0 -155
  194. package/src/baseline/policy_review.mjs +0 -92
  195. package/src/baseline/preparation.mjs +0 -323
  196. package/src/baseline/privacy_engine.mjs +0 -1399
  197. package/src/baseline/privacy_structured_json.mjs +0 -554
  198. package/src/baseline/sanitization_policy.mjs +0 -299
  199. package/src/baseline/schema_snapshot.mjs +0 -113
  200. package/src/cli/arguments.mjs +0 -126
  201. package/src/cli/guided.mjs +0 -814
  202. package/src/cli/init_command.mjs +0 -94
  203. package/src/cli/rehearsal.mjs +0 -972
  204. package/src/cli/renderers.mjs +0 -638
  205. package/src/cli/runtime_commands.mjs +0 -707
  206. package/src/cli/source_commands.mjs +0 -355
  207. package/src/cli/terminal.mjs +0 -275
  208. package/src/identity/claim.mjs +0 -1165
  209. package/src/identity/provider_configuration.mjs +0 -177
  210. package/src/identity/storage.mjs +0 -165
  211. package/src/project/configuration.d.mts +0 -164
  212. package/src/project/configuration.mjs +0 -1337
  213. package/src/project/install_scaffold.mjs +0 -325
  214. package/src/project/setup.mjs +0 -474
  215. package/src/project/support_report.mjs +0 -105
  216. package/src/runtime/cleanup.mjs +0 -381
  217. package/src/runtime/migration_history.mjs +0 -220
  218. package/src/runtime/plan.mjs +0 -722
  219. package/src/runtime/policy.mjs +0 -438
  220. package/src/runtime/restore.mjs +0 -337
  221. package/src/runtime/service_environment.mjs +0 -82
  222. package/src/runtime/topology.mjs +0 -177
  223. package/src/shared/diagnostics.mjs +0 -207
  224. package/src/shared/node_runtime.mjs +0 -31
  225. package/src/shared/operation_guard.mjs +0 -162
  226. package/src/shared/process_environment.mjs +0 -68
  227. package/src/source/access.mjs +0 -798
  228. package/src/source/asset_transfer.mjs +0 -259
  229. package/src/source/baseline.mjs +0 -482
  230. package/src/source/external_reader.mjs +0 -368
  231. package/src/source/postgresql_access.mjs +0 -638
  232. package/src/source/privacy_paths.mjs +0 -38
  233. package/src/targets/postgresql.mjs +0 -808
  234. package/src/targets/supabase.mjs +0 -840
  235. package/src/targets/supabase_environment.mjs +0 -229
  236. package/src/targets/target.mjs +0 -66
package/CHANGELOG.md CHANGED
@@ -5,6 +5,53 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ### Changed
9
+
10
+ - The CLI now routes guided and scripted requests through focused typed command
11
+ handlers and one result/output contract. The executable retains only process
12
+ lifecycle, project locking, guided-loop coordination, and top-level error handling;
13
+ command-session caches no longer live in public parsed flags.
14
+ - Configuration now passes through separate discovery, raw-schema validation,
15
+ normalization, project-root path resolution, project detection, and starter-rendering
16
+ modules behind the existing import path. Public declarations come from the same
17
+ TypeScript source, including the new `NormalizedRehearsalConfig` type.
18
+ - Installed-consumer verification now shares one scenario catalog, artifact installer,
19
+ isolated workspace boundary, process boundary, and persistent application-session
20
+ helper. The complete release gate runs every scenario against one immutable tarball
21
+ and records its exact version, SHA-256, tool environment, commands, timings, and
22
+ results.
23
+ - Identity policy validation, deterministic claim planning, SQL generation, local Auth
24
+ lookup, pure verification, and transactional execution now live in separate typed
25
+ stages behind the unchanged public claim API. Generated reference SQL is independently
26
+ testable, while only the executor can mutate the local database or Storage runtime.
27
+ - PostgreSQL and Supabase now share one typed runtime lifecycle engine for command
28
+ dispatch, active-baseline loading, migration confirmation and receipts, runtime
29
+ markers, and rollback. Candidate receipts are bound to their exact database target,
30
+ while each driver retains its own ownership proof and database-specific behavior.
31
+ - Privacy policy types, recipe normalization, dependency validation, deterministic
32
+ transforms, structured JSON, rule dispatch, row execution, and key handling now live
33
+ in focused typed stages behind the unchanged public privacy import. An explicit closed
34
+ registry covers every supported action and derivation without widening policy v2.
35
+
36
+ ## [0.1.0-beta.15] - 2026-10-08
37
+
38
+ ### Added
39
+
40
+ - A strict, no-emit TypeScript gate now checks the first shared runtime utilities and
41
+ verifies that consumers can compile against Rehearsal's public configuration types.
42
+ - The documentation site now explains the supported TypeScript surface with examples
43
+ that are compiled and checked against their rendered documentation source.
44
+ - All shipped implementation and executable-helper source now uses TypeScript. Clean
45
+ builds emit Node-compatible ESM and declarations into the reviewed package boundary,
46
+ and tests exercise that compiled output rather than an alternate source path.
47
+ - The published build omits repository-only JavaScript source maps while retaining
48
+ runtime JavaScript and declarations, keeping the installed package compact.
49
+
50
+ ### Fixed
51
+
52
+ - Packed onboarding chooses an available local port block for preserved configuration
53
+ fixtures, so unrelated running Rehearsal projects cannot make the isolation test fail.
54
+
8
55
  ## [0.1.0-beta.14] - 2026-10-05
9
56
 
10
57
  ### Added
@@ -465,7 +512,10 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
465
512
  publication uses short-lived trusted OIDC, and every release tag must already exist on
466
513
  protected `main`.
467
514
 
468
- [Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.12...HEAD
515
+ [Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.15...HEAD
516
+ [0.1.0-beta.15]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.14...v0.1.0-beta.15
517
+ [0.1.0-beta.14]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.13...v0.1.0-beta.14
518
+ [0.1.0-beta.13]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.12...v0.1.0-beta.13
469
519
  [0.1.0-beta.12]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.11...v0.1.0-beta.12
470
520
  [0.1.0-beta.11]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.10...v0.1.0-beta.11
471
521
  [0.1.0-beta.10]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.9...v0.1.0-beta.10
package/README.md CHANGED
@@ -145,6 +145,7 @@ Reference:
145
145
 
146
146
  - [CLI commands](docs/commands.md)
147
147
  - [Configuration](docs/configuration.md)
148
+ - [TypeScript types](docs/typescript.md)
148
149
  - [Baselines](docs/baselines.md)
149
150
  - [Sanitization](docs/sanitization.md)
150
151
  - [Security model](docs/security-model.md)
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "@rehearsal-db/core",
3
+ "version": "0.1.0-beta.16",
4
+ "private": false,
5
+ "description": "Safely rehearse PostgreSQL and Supabase migrations against sanitized, production-shaped data.",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Ddupasquier/rehearsal-db.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/Ddupasquier/rehearsal-db/issues"
12
+ },
13
+ "homepage": "https://ddupasquier.github.io/rehearsal-db/",
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "tag": "beta",
17
+ "provenance": true
18
+ },
19
+ "type": "module",
20
+ "engines": {
21
+ "node": "^22.0.0 || ^24.0.0 || ^26.0.0"
22
+ },
23
+ "bin": {
24
+ "rehearsal": "dist/src/cli/rehearsal.mjs"
25
+ },
26
+ "exports": {
27
+ ".": {
28
+ "types": "./types/configuration.d.mts",
29
+ "import": "./dist/src/index.mjs"
30
+ },
31
+ "./baseline": "./dist/src/baseline/artifact.mjs",
32
+ "./baseline-builder": "./dist/src/baseline/builder.mjs",
33
+ "./diagnostics": "./dist/src/shared/diagnostics.mjs",
34
+ "./migrations": "./dist/src/runtime/migration_history.mjs",
35
+ "./process-environment": "./dist/src/shared/process_environment.mjs",
36
+ "./privacy": "./dist/src/baseline/privacy_engine.mjs",
37
+ "./schema": "./dist/src/baseline/schema_snapshot.mjs",
38
+ "./service-environment": "./dist/src/runtime/service_environment.mjs",
39
+ "./source-access": "./dist/src/source/access.mjs"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "types",
44
+ "docs/*.md",
45
+ "README.md",
46
+ "BENCHMARKS.md",
47
+ "CHANGELOG.md",
48
+ "SECURITY.md",
49
+ "COMPATIBILITY.md",
50
+ "SUPPORT.md",
51
+ "LICENSE"
52
+ ],
53
+ "scripts": {
54
+ "postinstall": "node dist/scripts/install/create_root_config.mjs",
55
+ "prepack": "npm run build",
56
+ "build": "node scripts/build/clean.mjs && tsc --project tsconfig.build.json",
57
+ "docs:build": "node scripts/docs/build.mjs",
58
+ "docs:preview": "node scripts/docs/serve.mjs",
59
+ "test": "npm run build && vitest run",
60
+ "test:unit": "npm run build && vitest run tests/unit",
61
+ "test:integration": "npm run build && vitest run tests/integration tests/contracts",
62
+ "test:docs": "npm run build && vitest run tests/contracts/documentationCommands.test.mjs",
63
+ "test:fixture": "npm run build && node scripts/verification/run_scenario.mjs supabase",
64
+ "test:fixture:postgresql": "npm run build && node scripts/verification/run_scenario.mjs postgresql",
65
+ "test:fixture:dependent": "npm run build && node scripts/verification/run_scenario.mjs dependent-target",
66
+ "test:fixture:onboarding": "npm run build && node scripts/verification/run_scenario.mjs onboarding",
67
+ "test:fixture:typescript": "npm run build && node scripts/verification/run_scenario.mjs typescript",
68
+ "test:fixture:standalone": "npm run build && node scripts/verification/run_scenario.mjs standalone",
69
+ "test:fixture:privacy": "npm run build && node scripts/verification/run_scenario.mjs privacy",
70
+ "release:verify": "node scripts/verification/release_gate.mjs",
71
+ "check": "npm run check:syntax && npm run typecheck && npm run test && npm run docs:build && npm run format:check && npm run package:audit",
72
+ "check:syntax": "find scripts tests -type f -name '*.mjs' -exec node --check {} +",
73
+ "typecheck": "npm run build && tsc --project tsconfig.json",
74
+ "format": "prettier --write .",
75
+ "format:check": "prettier --check .",
76
+ "package:audit": "node scripts/verification/audit_package.mjs"
77
+ },
78
+ "keywords": [
79
+ "postgresql",
80
+ "supabase",
81
+ "migration",
82
+ "testing",
83
+ "database"
84
+ ],
85
+ "license": "MIT",
86
+ "dependencies": {
87
+ "@clack/prompts": "^1.8.1",
88
+ "pg": "^8.23.1"
89
+ },
90
+ "devDependencies": {
91
+ "@fontsource-variable/dm-sans": "^5.3.0",
92
+ "@fontsource-variable/fraunces": "^5.3.0",
93
+ "@lydell/node-pty": "^1.2.0-beta.15",
94
+ "@types/node": "22.20.5",
95
+ "@types/pg": "^8.23.1",
96
+ "marked": "^18.0.14",
97
+ "prettier": "^3.9.6",
98
+ "typescript": "7.0.2",
99
+ "vitest": "^5.0.2"
100
+ }
101
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ /** Create safe project-root Rehearsal scaffolding during a local install. */
3
+ export {};
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /** Create safe project-root Rehearsal scaffolding during a local install. */
3
+ import { fileURLToPath } from "node:url";
4
+ import { createInstalledRehearsalScaffold, renderInstalledRehearsalScaffold, } from "../../src/project/install_scaffold.mjs";
5
+ const packageRoot = fileURLToPath(new URL("../../..", import.meta.url));
6
+ try {
7
+ const result = await createInstalledRehearsalScaffold({ packageRoot });
8
+ console.log(renderInstalledRehearsalScaffold(result));
9
+ }
10
+ catch (error) {
11
+ const message = error instanceof Error ? error.message : String(error);
12
+ console.warn(`Rehearsal could not safely create project files during installation: ${message}\nNext: run npx rehearsal from the application directory.`);
13
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Purpose: Select the configured database runtime and forward the requested
4
+ * lifecycle action to its isolated driver.
5
+ */
6
+ export {};
@@ -3,16 +3,14 @@
3
3
  * Purpose: Select the configured database runtime and forward the requested
4
4
  * lifecycle action to its isolated driver.
5
5
  */
6
-
7
6
  import { loadRehearsalConfig } from "../../src/project/configuration.mjs";
8
- import {
9
- parseRuntimeInvocation,
10
- runRuntimeTarget,
11
- } from "../../src/targets/target.mjs";
12
-
7
+ import { parseRuntimeInvocation } from "../../src/targets/target.mjs";
8
+ import { runRuntimeTarget } from "../../src/targets/driver.mjs";
13
9
  const invocation = parseRuntimeInvocation();
14
10
  const { config } = await loadRehearsalConfig({
15
- projectRoot: process.cwd(),
16
- configPath: invocation.configPath,
11
+ projectRoot: process.cwd(),
12
+ ...(invocation.configPath === undefined
13
+ ? {}
14
+ : { configPath: invocation.configPath }),
17
15
  });
18
16
  await runRuntimeTarget(config.runtime.target);
@@ -0,0 +1,96 @@
1
+ /** Launch ordinary application commands against verified local runtime files. */
2
+ import { spawn } from "node:child_process";
3
+ import type { EventEmitter } from "node:events";
4
+ declare const SESSION_SIGNALS: string[];
5
+ type SessionSignal = (typeof SESSION_SIGNALS)[number];
6
+ export interface ApplicationReadiness {
7
+ readonly url: string;
8
+ readonly expectedStatus?: number;
9
+ readonly timeoutSeconds?: number;
10
+ }
11
+ export interface ApplicationSession {
12
+ readonly pid: number | undefined;
13
+ readonly ready: Readonly<{
14
+ url: string;
15
+ status: number;
16
+ }>;
17
+ readonly stop: () => Promise<void>;
18
+ readonly wait: () => Promise<ChildExit>;
19
+ readonly diagnostics: () => ApplicationDiagnostics;
20
+ }
21
+ export interface ApplicationDiagnostics {
22
+ readonly stdoutBytes: number;
23
+ readonly stderrBytes: number;
24
+ }
25
+ interface ChildExit {
26
+ readonly status: number | null;
27
+ readonly signal: NodeJS.Signals | null;
28
+ }
29
+ interface SessionInput {
30
+ readonly isTTY?: boolean;
31
+ prependListener(event: "data", listener: (chunk: Buffer | string) => void): unknown;
32
+ removeListener(event: "data", listener: (chunk: Buffer | string) => void): unknown;
33
+ }
34
+ interface EnvironmentInput {
35
+ readonly files: Readonly<Record<string, string>> & {
36
+ readonly primary: string;
37
+ };
38
+ readonly mappings: Readonly<Record<string, string>>;
39
+ }
40
+ interface HttpJsonAssertion {
41
+ readonly path: readonly string[];
42
+ readonly equals?: unknown;
43
+ readonly notEquals?: unknown;
44
+ readonly minimumItems?: number;
45
+ }
46
+ export interface HttpProofCheck {
47
+ readonly name: string;
48
+ readonly kind: "positive" | "negative";
49
+ readonly url: string;
50
+ readonly method?: string;
51
+ readonly expectedStatus: number;
52
+ readonly timeoutMs?: number;
53
+ readonly json?: HttpJsonAssertion | null;
54
+ }
55
+ type SignalTarget = Pick<EventEmitter, "prependListener" | "removeListener">;
56
+ export declare const buildApplicationEnvironment: ({ files, mappings, }: EnvironmentInput) => Promise<Record<string, string>>;
57
+ export declare const summarizeProjectCommandFailure: ({ error, status, signal, stdout, stderr, stdoutByteCount, stderrByteCount, }: {
58
+ error?: NodeJS.ErrnoException;
59
+ status: number | null;
60
+ signal: NodeJS.Signals | null;
61
+ stdout?: string;
62
+ stderr?: string;
63
+ stdoutByteCount?: number;
64
+ stderrByteCount?: number;
65
+ }) => string;
66
+ export declare const startApplicationSession: ({ command, cwd, files, mappings, readiness, inheritedEnvironment, spawnImplementation, fetchImplementation, signalTarget, }: EnvironmentInput & {
67
+ command: string;
68
+ cwd: string;
69
+ readiness: ApplicationReadiness;
70
+ inheritedEnvironment?: NodeJS.ProcessEnv;
71
+ spawnImplementation?: typeof spawn;
72
+ fetchImplementation?: typeof fetch;
73
+ signalTarget?: SignalTarget;
74
+ }) => Promise<ApplicationSession>;
75
+ /**
76
+ * Keep a ready application session attached until the user interrupts it.
77
+ * The child process group is always stopped before this function returns.
78
+ */
79
+ export declare const holdApplicationSession: ({ session, signalTarget, input, onReady, }: {
80
+ session: ApplicationSession;
81
+ signalTarget?: SignalTarget;
82
+ input?: SessionInput;
83
+ onReady?: (ready: ApplicationSession["ready"]) => void;
84
+ }) => Promise<Readonly<{
85
+ signal: SessionSignal;
86
+ diagnostics: ApplicationDiagnostics;
87
+ }>>;
88
+ export declare const runHttpProofs: ({ checks, fetchImplementation, }: {
89
+ checks: readonly HttpProofCheck[];
90
+ fetchImplementation?: typeof fetch;
91
+ }) => Promise<readonly Readonly<{
92
+ name: string;
93
+ kind: "positive" | "negative";
94
+ status: number;
95
+ }>[]>;
96
+ export {};