@homeflare/config 0.7.0 → 0.9.0
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/README.md +10 -9
- package/dist/hooks/gates.d.ts.map +1 -1
- package/dist/hooks/report.d.ts +5 -2
- package/dist/hooks/report.d.ts.map +1 -1
- package/dist/hooks/staged.d.ts.map +1 -1
- package/dist/hooks.js +13 -7
- package/dist/hooks.js.map +5 -5
- package/dist/repo-shape/security.d.ts +5 -2
- package/dist/repo-shape/security.d.ts.map +1 -1
- package/dist/repo-shape/shape.d.ts +15 -0
- package/dist/repo-shape/shape.d.ts.map +1 -1
- package/dist/repo-shape/yaml.d.ts.map +1 -1
- package/dist/repo-shape.js +15 -11
- package/dist/repo-shape.js.map +5 -5
- package/dist/versions.d.ts +8 -0
- package/dist/versions.d.ts.map +1 -0
- package/dist/versions.js +297 -0
- package/dist/versions.js.map +13 -0
- package/docs/repo-shape.md +7 -7
- package/docs/versions.md +50 -0
- package/package.json +5 -1
- package/src/hooks/gates.ts +3 -1
- package/src/hooks/report.ts +27 -3
- package/src/hooks/staged.ts +9 -2
- package/src/repo-shape/security.ts +12 -6
- package/src/repo-shape/shape.ts +15 -0
- package/src/repo-shape/yaml.ts +12 -8
- package/src/versions.ts +61 -0
package/src/repo-shape/yaml.ts
CHANGED
|
@@ -72,14 +72,18 @@ export function renderStep(step: JobStep, depth: number): string[] {
|
|
|
72
72
|
? renderRun(step.run ?? '', depth + 1)
|
|
73
73
|
: [`${indent(depth + 1)}uses: ${step.uses}`];
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
// ★ `name:` then `if:` then the body, because that is the order a reader scans: what
|
|
76
|
+
// this step is, whether it runs, what it does. All three are ordinary mapping keys
|
|
77
|
+
// to GitHub, so the order is for the person reading the diff, not the parser.
|
|
78
|
+
const head: string[] = [];
|
|
79
|
+
if (step.name !== undefined) head.push(`${indent(depth + 1)}name: ${scalar(step.name)}`);
|
|
80
|
+
if (step.if !== undefined) head.push(`${indent(depth + 1)}if: ${scalar(step.if)}`);
|
|
81
|
+
|
|
82
|
+
// ⚠️ The first line of the item carries the dash, whichever key it turns out to be —
|
|
83
|
+
// an unnamed, unconditional step still inlines its `run:` or `uses:` after the dash
|
|
84
|
+
// and lets any block body follow at its own indent.
|
|
85
|
+
const [first = '', ...rest] = [...head, ...body];
|
|
86
|
+
lines.push(`${indent(depth)}- ${first.trimStart()}`, ...rest);
|
|
83
87
|
|
|
84
88
|
if (step.with !== undefined && Object.keys(step.with).length > 0) {
|
|
85
89
|
lines.push(`${indent(depth + 1)}with:`, ...renderMapping(step.with, depth + 2));
|
package/src/versions.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@homeflare/config/versions`: the one aligned set of versions the estate runs.
|
|
3
|
+
*
|
|
4
|
+
* import { ESTATE_VERSIONS } from '@homeflare/config/versions';
|
|
5
|
+
* ESTATE_VERSIONS.alchemy; // '2.0.0-beta.79'
|
|
6
|
+
*
|
|
7
|
+
* ★ WHY IT LIVES HERE. Until this file, the set had two homes and neither was reachable from
|
|
8
|
+
* outside the kit. Bun was `BUN_VERSION` in repo-shape/ci.ts. Every other pin sat in
|
|
9
|
+
* homeflare-kit's root `catalog`, which is authoritative but never published. Measured
|
|
10
|
+
* 2026-09-22, read-only, from each repository's lockfile: seven app repositories resolve
|
|
11
|
+
* `alchemy` 2.0.0-beta.78, the monorepo resolves beta.77 with `effect` rc.112, and one app
|
|
12
|
+
* resolves TypeScript 5.9.3. None of them had anything to compare against.
|
|
13
|
+
* `@homeflare/config` is the one package almost every estate repository already depends
|
|
14
|
+
* on (repo-shape.ts header: 13 of 14), so the set goes here.
|
|
15
|
+
*
|
|
16
|
+
* ⛔ THE KIT'S ROOT CATALOG STAYS AUTHORITATIVE. `tests/estate-versions.test.ts` fails when any
|
|
17
|
+
* value below differs from it, and it also fails when `bun` differs from `BUN_VERSION` or
|
|
18
|
+
* from the root's `packageManager`. A catalog bump that does not reach this file is
|
|
19
|
+
* therefore a red test in the same PR. Otherwise the estate would drift from a published
|
|
20
|
+
* source that looks correct.
|
|
21
|
+
*
|
|
22
|
+
* ★ RUNTIME PINS FOLLOW THE PINNED ALCHEMY RELEASE, NEVER THE OTHER WAY. `effect` and
|
|
23
|
+
* `@distilled.cloud/cloudflare` are the versions `alchemy@2.0.0-beta.79` was built and
|
|
24
|
+
* tested against. That release's own `dependencies` pin every `@distilled.cloud/*` at
|
|
25
|
+
* exactly 1.0.0-rc.12, and its workspace overrides pin `effect` 4.0.0-rc.115
|
|
26
|
+
* (alchemy-run/alchemy `pnpm-workspace.yaml@v2.0.0-beta.79#overrides`). The test reads the
|
|
27
|
+
* installed `alchemy/package.json` to prove the distilled pin. These values move only in
|
|
28
|
+
* the same PR as the `alchemy` bump.
|
|
29
|
+
*
|
|
30
|
+
* ⚠️ PUBLISHING THE SET ENFORCES NOTHING. No consumer check reads it yet. Wiring it into
|
|
31
|
+
* `checkProject`, so that each repository's lockfile is compared with it, is a separate,
|
|
32
|
+
* estate-wide rollout. Doing that here would turn the next bump into thirteen red CIs at
|
|
33
|
+
* once.
|
|
34
|
+
*/
|
|
35
|
+
import { BUN_VERSION } from './repo-shape/ci.ts';
|
|
36
|
+
|
|
37
|
+
/** The package names the set pins. One entry per tool or runtime the whole estate shares. */
|
|
38
|
+
export type EstatePackage =
|
|
39
|
+
| 'bun'
|
|
40
|
+
| 'alchemy'
|
|
41
|
+
| 'effect'
|
|
42
|
+
| '@distilled.cloud/cloudflare'
|
|
43
|
+
| 'typescript'
|
|
44
|
+
| 'oxfmt'
|
|
45
|
+
| 'oxlint'
|
|
46
|
+
| '@types/bun';
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Exact versions, never ranges. A range is what lets two repositories resolve two different
|
|
50
|
+
* versions from one line, which is exactly the drift this set exists to name.
|
|
51
|
+
*/
|
|
52
|
+
export const ESTATE_VERSIONS: Readonly<Record<EstatePackage, string>> = {
|
|
53
|
+
bun: BUN_VERSION,
|
|
54
|
+
alchemy: '2.0.0-beta.79',
|
|
55
|
+
effect: '4.0.0-rc.115',
|
|
56
|
+
'@distilled.cloud/cloudflare': '1.0.0-rc.12',
|
|
57
|
+
typescript: '7.0.2',
|
|
58
|
+
oxfmt: '0.68.0',
|
|
59
|
+
oxlint: '1.83.0',
|
|
60
|
+
'@types/bun': '1.4.2',
|
|
61
|
+
};
|