Profile source capture, Nix evaluation/realization, resource/query checking, and implementation builds without putting timings into immutable outputs. Keep modular repositories; bound independent capture work, snapshot jj once per observation, and retain final concurrent-edit and Git completeness checks. Compose exact resource/closure/frontend/toolchain checks as memoized Nix derivations. Preserve whole-workspace validation and the full compiler path when no checked dependency is supplied. Share canonical Nixpkgs by content, index workspace build contexts once, and narrow lock/driver/compiler inputs with conservative complete-source fallback. Batch React witness checks only when distinct source closures cannot share ambient declarations; otherwise run the original independent TypeScript checks. Seed local authoring toolchains with exact canonical fetch identities when they match the selected inputs; retain store-path inputs for overrides. Add generic correctness checks rather than permanent Reader timing/content fixtures. Verify actual Reader edits and rejection/recovery in a private workbench, preserving the original user's workbench and runtime. Query checking currently caches at resource/closure boundaries, not individual query semantic dependency boundaries. Template helper pins and reproducible fixture snapshots follow in a separate publication change.
39 lines
1.0 KiB
Nix
39 lines
1.0 KiB
Nix
{
|
|
pkgs,
|
|
context,
|
|
src,
|
|
members,
|
|
dependencies ? null,
|
|
}:
|
|
let
|
|
buildTools = import ./build-tools.nix;
|
|
config = pkgs.writeText "camino-react-contracts.json" (
|
|
builtins.toJSON {
|
|
source = import ./implementation-source.nix {
|
|
inherit (pkgs) lib;
|
|
inherit src;
|
|
};
|
|
interface = builtins.toFile "camino-interface-contract.json" (
|
|
builtins.unsafeDiscardStringContext (
|
|
builtins.toJSON (
|
|
let
|
|
resource = builtins.fromJSON (builtins.readFile context.interface);
|
|
in
|
|
{
|
|
kind = resource.kind;
|
|
revision = builtins.removeAttrs resource.revision [ "source" ];
|
|
}
|
|
)
|
|
)
|
|
);
|
|
inherit members dependencies;
|
|
reactSdk = context.reactSdk or null;
|
|
node = "${pkgs.nodejs_24}/bin/node";
|
|
tsc = "${context.typescript}/node_modules/typescript/bin/tsc";
|
|
}
|
|
);
|
|
in
|
|
pkgs.runCommand "camino-react-contracts" { } ''
|
|
${pkgs.nodejs_24}/bin/node ${buildTools}/build-react-contracts.mjs ${config}
|
|
''
|