@starci/hfs 2.0.0 → 2.0.1
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
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.1 - 2026-10-01
|
|
4
|
+
|
|
5
|
+
- Fixed: `hfs sync` validates the whole hfs.json declaration against the manifest before rendering (a pre-2.0 `connections` list of names is refused), so a pin bump can never leave eslint unable to start.
|
|
6
|
+
- Changed: the back-end managed scripts carry `test:stack` (`starci-test-stack`); repo-specific devDependencies stay the repository's (sync owns only the `scripts` block and the canon pins).
|
|
7
|
+
|
|
3
8
|
## 2.0.0 - 2026-09-30
|
|
4
9
|
|
|
5
10
|
- Added (lane PORT): the repository scripts of the product repos are gone, so their laws live here. `repo.scripts` owns `scripts/{.gitkeep,*.mjs,*.cjs,*.ps1,*.sh}` (operational scripts, or an empty folder with `.gitkeep`, which `hfs sync --init` writes from `templates/{be,fe}/skeleton/scripts/.gitkeep`). New checks: `BE_SPEC_PLACEMENT` (R102, a spec outside the four test layers, `scripts/` and `tools/` included), `HFS_REPO_LOCAL_CHECK` (R103, a `check-*` file, `eslint-local-rules*`, a local plugin, a script that runs one), `HFS_LINT_SUPPRESSION_FILE` (R104, an eslint suppressions file, script or flag), `HFS_PROOF_COMMAND_FILE_MISSING` (R105, a `.starciwork` proof command that runs a file the repository does not hold; only records of this repository are judged) and, in the architecture machine, `FE_I18N_KEYS` (R106, a key the source reads that a locale lacks, a catalog key nothing reads). `HFS_DEP_VERSION_SKEW` (R14) also refuses a dependency declared at another version than the root `overrides` pin.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starci/hfs",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "The HFS command line of a StarCi product repository: hfs check, init, explain, sync and work-hygiene. Self-contained: it carries the runtime files it reads.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -17,7 +17,7 @@ pins:
|
|
|
17
17
|
source: packages/grammar/package.json
|
|
18
18
|
why: nivo-fe pins 0.4.11 and 0.5.0 in one workspace, starci-next-fe 0.5.1, miamia-fe 0.5.0; the runtime source is 0.7.2 (Input tel kind and IconButton disclosure props).
|
|
19
19
|
'@starci/eslint-canon-be':
|
|
20
|
-
version: 2.0.
|
|
20
|
+
version: 2.0.1
|
|
21
21
|
group: starci
|
|
22
22
|
install: registry
|
|
23
23
|
side: be
|
|
@@ -57,7 +57,7 @@ pins:
|
|
|
57
57
|
source: packages/jest-preset/package.json
|
|
58
58
|
why: '2.1.0: four projects on the test world, the unit kit (mockEntityManager, fakeTransaction, fakeIds, FakeClock, Outcome matchers) and the recordingOutbox claim side.'
|
|
59
59
|
'@starci/hfs':
|
|
60
|
-
version: 2.0.
|
|
60
|
+
version: 2.0.1
|
|
61
61
|
group: starci
|
|
62
62
|
install: registry
|
|
63
63
|
side: both
|
package/sync/index.mjs
CHANGED
|
@@ -15,7 +15,7 @@ import { createRequire } from 'node:module';
|
|
|
15
15
|
import fs from 'node:fs';
|
|
16
16
|
import path from 'node:path';
|
|
17
17
|
import { braceVariants } from '../runtime/scripts/lib/glob.mjs';
|
|
18
|
-
import { loadSlotManifest } from '../runtime/scripts/lib/hfs-slots.mjs';
|
|
18
|
+
import { loadSlotManifest, resolveRepoDeclaration } from '../runtime/scripts/lib/hfs-slots.mjs';
|
|
19
19
|
import { readDeclaredSonarKey } from './sonar-key.mjs';
|
|
20
20
|
|
|
21
21
|
export const TEMPLATES_DIR = path.join(import.meta.dirname, '..', 'templates');
|
|
@@ -87,6 +87,13 @@ export function validateHfs(hfs, manifest = loadSlotManifest()) {
|
|
|
87
87
|
if (hfs.profile === 'be' && !manifest.appKinds.be.includes(app.kind)) bad(`app ${app.name} needs a kind, one of ${manifest.appKinds.be.join(', ')}`);
|
|
88
88
|
seen.add(app.name);
|
|
89
89
|
}
|
|
90
|
+
// The whole declaration must be valid for the manifest it pins (connections, optional slots, ...): sync never renders
|
|
91
|
+
// configs for a declaration the eslint canons and hfs check would refuse, so a pin bump cannot leave lint unable to start.
|
|
92
|
+
try {
|
|
93
|
+
resolveRepoDeclaration(manifest, hfs);
|
|
94
|
+
} catch (error) {
|
|
95
|
+
bad(`hfs.json is not a valid declaration for manifest ${manifest.version}: ${error.message}`);
|
|
96
|
+
}
|
|
90
97
|
return hfs;
|
|
91
98
|
}
|
|
92
99
|
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"test:integration": "npm run typecheck:tests && jest --selectProjects integration",
|
|
15
15
|
"test:e2e": "npm run typecheck:tests && jest --selectProjects e2e",
|
|
16
16
|
"test:contract": "npm run typecheck:tests && jest --selectProjects contract",
|
|
17
|
+
"test:stack": "starci-test-stack",
|
|
17
18
|
"contract:emit": "hfs emit-contracts",
|
|
18
19
|
"hfs:check": "hfs check",
|
|
19
20
|
"hfs:report": "hfs check --sonar reports/hfs.sonar.json"
|