Commit ccf8280
committed
refactor(spec): converge HttpRequest onto one declaration (#4688, C11)
`@objectstack/spec/shared` and `@objectstack/spec/ui` both exported the name
`HttpRequest` for DIFFERENT type declarations — a row on
`dual-source-exports.baseline.json`, judged by symbol identity (#4411 trap).
This cluster is the degenerate case of that trap. `HttpRequestSchema` was never
duplicated: `ui/view.zod.ts` imports it from `shared/http.zod.ts` and re-exports
it verbatim, which is why the baseline carries no `HttpRequestSchema` row. The
only split was the local type alias at the bottom of view.zod.ts —
`z.infer<typeof HttpRequestSchema>` over the very same schema object, so a
second declaration symbol carrying an identical shape. It is now a re-export of
shared's declaration, which the baseline header explicitly does not count.
Baseline: 19 -> 18.
NOT breaking, and deliberately not labelled so. #4535 calls the three v17
clusters breaking wholesale; this one is verified otherwise. FROM and TO infer
from one schema object, and the compiler agrees: `Equal<PreFixUiHttpRequest,
UiHttpRequest>` and `Equal<PreFixUiHttpRequest, SharedHttpRequest>` both hold,
with a deliberately-false negative control erroring TS2344 to prove the pair is
not vacuous. api-surface.json, authorable-surface.json and spec-changes.json are
all byte-identical after a rebuild — zero authorable key movement, zero
tombstone, zero conversion. Overstating breakage pollutes the upgrade guide as
surely as understating it, so the changeset is patch.
Regression pin: three RUNTIME assertions in ui/view.test.ts. #4642 established
that a compile-time pin in this package is dead text (tsconfig excludes
**/*.test.ts, vitest never type-checks), and that applies to the pre-existing
`type HttpRequest` import in that file too — it is erased, so it never
guaranteed the export survives. The third assertion closes that hole by
resolving symbol identity through the TypeScript API over src/, the same
measurement check:dual-source-exports makes over dist. All three sabotage-verified.
`HttpMethod` on the next line is the identical shape and stays — #4535 scheduled
it for v18, and scope is the maintainer's to set.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP91 parent f2445c9 commit ccf8280
4 files changed
Lines changed: 170 additions & 2 deletions
File tree
- .changeset
- packages/spec
- src/ui
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | 16 | | |
18 | 17 | | |
19 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2639 | 2639 | | |
2640 | 2640 | | |
2641 | 2641 | | |
| 2642 | + | |
| 2643 | + | |
| 2644 | + | |
| 2645 | + | |
| 2646 | + | |
| 2647 | + | |
| 2648 | + | |
| 2649 | + | |
| 2650 | + | |
| 2651 | + | |
| 2652 | + | |
| 2653 | + | |
| 2654 | + | |
| 2655 | + | |
| 2656 | + | |
| 2657 | + | |
| 2658 | + | |
| 2659 | + | |
| 2660 | + | |
| 2661 | + | |
| 2662 | + | |
| 2663 | + | |
| 2664 | + | |
| 2665 | + | |
| 2666 | + | |
| 2667 | + | |
| 2668 | + | |
| 2669 | + | |
| 2670 | + | |
| 2671 | + | |
| 2672 | + | |
| 2673 | + | |
| 2674 | + | |
| 2675 | + | |
| 2676 | + | |
| 2677 | + | |
| 2678 | + | |
| 2679 | + | |
| 2680 | + | |
| 2681 | + | |
| 2682 | + | |
| 2683 | + | |
| 2684 | + | |
| 2685 | + | |
| 2686 | + | |
| 2687 | + | |
| 2688 | + | |
| 2689 | + | |
| 2690 | + | |
| 2691 | + | |
| 2692 | + | |
| 2693 | + | |
| 2694 | + | |
| 2695 | + | |
| 2696 | + | |
| 2697 | + | |
| 2698 | + | |
| 2699 | + | |
| 2700 | + | |
| 2701 | + | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
| 2705 | + | |
| 2706 | + | |
| 2707 | + | |
| 2708 | + | |
| 2709 | + | |
| 2710 | + | |
| 2711 | + | |
| 2712 | + | |
| 2713 | + | |
| 2714 | + | |
| 2715 | + | |
| 2716 | + | |
| 2717 | + | |
| 2718 | + | |
| 2719 | + | |
| 2720 | + | |
| 2721 | + | |
| 2722 | + | |
| 2723 | + | |
| 2724 | + | |
| 2725 | + | |
| 2726 | + | |
| 2727 | + | |
| 2728 | + | |
| 2729 | + | |
| 2730 | + | |
| 2731 | + | |
| 2732 | + | |
| 2733 | + | |
| 2734 | + | |
| 2735 | + | |
| 2736 | + | |
| 2737 | + | |
| 2738 | + | |
2642 | 2739 | | |
2643 | 2740 | | |
2644 | 2741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
39 | 56 | | |
40 | 57 | | |
41 | 58 | | |
| |||
2036 | 2053 | | |
2037 | 2054 | | |
2038 | 2055 | | |
2039 | | - | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
2040 | 2061 | | |
2041 | 2062 | | |
2042 | 2063 | | |
| |||
0 commit comments