@cfxlabsinc/b2b-services
    Preparing search index...

    Module @cfxlabsinc/nx-bun-check

    @cfxlabsinc/nx-bun-check

    Infers two targets for every project with a tsconfig.json:

    typecheck        bun check -p tsconfig.json                          (cwd: <projectRoot>)
    strict-ratchet bun tools/ci/strict-ratchet.ts check <projectRoot> (cwd: workspace root)

    strict-ratchet checks the project under flags the repo is not yet clean under (noUncheckedIndexedAccess, exactOptionalPropertyTypes), one bun check per flag, and holds each of its own files to that flag's count in strict-baseline.json: more errors fail, and fewer fail until bun tools/ci/strict-ratchet.ts update <projectRoot> lowers the record. Its inputs are typecheck's plus the baseline and the script. A project that declares its own typecheck gets neither target; one that declares its own strict-ratchet keeps it.

    Each package has exactly one tsconfig.json, extending tsconfig.base.json, with no project references and no emit. A workspace import resolves to the dependency's source through the @cfxlabsinc/source export condition, so bun check checks that source under the importing package's compiler options. Nothing has to be built first, and there is no dist/out-tsc.

    inputs: default
    ^production
    {workspaceRoot}/.bun-version
    runtime: bun --version

    ^production because a dependency's source is part of this program, while its tests and Pulumi program are not.

    No externalDependencies entry, so Nx hashes every external dependency. Naming any narrows the hash to those plus what the project imports, which misses @types/* loaded through compilerOptions.types and types pulled in transitively by a dependency's .d.ts. The checker is Bun itself, not an npm package, so its version is hashed separately.

    • A dependency's .tsx is compiled with the consumer's jsx settings. Packages that import the Slack Block Kit components (slack-customer-events, slack-services) set jsx: react-jsx + jsxImportSource: jsx-slack themselves; the lambda bundler reads the same options (tools/bundler/build.ts).
    • rootDir is the repository root, set once in tsconfig.base.json, so a dashboard importing a sibling's export map is not ambiguous about the project root.

    @nx/js stays a root devDependency but is registered as no plugin: nx release loads its default versionActions from @nx/js/src/release/version-actions for mintfx-program.

    Nested configs (e2e/tsconfig.json) have no project.json beside them and get no target.

    NxBunCheckPluginOptions
    createNodes