source/— development directory. Contains both implementations (.js) and tests (.spec.js,-spec.ts).src/— generated artifact. Rebuilt fromsource/viayarn populatereadme(delegates to siblingrambda-scriptsrepo). Only.jsfiles for registered methods are copied; spec files are excluded.rambda.js— barrel entrypoint, re-exports from./src/. Also regenerated duringpopulatereadme.files/index.d.ts(5090 lines) — the true TypeScript definition source.source/index.d.tsis a stub.dist/— rollup output (CJS, ESM, UMD).
| Command | Action |
|---|---|
yarn test |
Run all runtime tests (vitest run --watch -u) |
yarn test:ci |
Run runtime tests in CI mode |
yarn test:typings / yarn ts |
Run type-level tests only |
yarn test:file <path> |
Run a single test file |
yarn lint:typings |
tsc type check |
yarn lint |
Run ESLint + oxlint + Biome + Prettier on source/ |
yarn build |
Bundle dist/ via rollup (CJS + ESM + UMD) |
yarn out |
Full pipeline: populate docs → sync src/ → build → docsify |
yarn lint:typings → yarn test:ci → yarn test:typings
- Two vitest configs:
vitest.config.js(runtime*.spec.js+*-spec.ts) andvitest.typings.config.js(type-only*-spec.ts). - Runtime tests use
test(...)(globals from vitest). Type tests usedescribe/it+expectTypeOf. - Coverage threshold: 100% enforced.
source/_internals/andsource/*.tsexcluded from coverage.
- All methods are curried:
filter(fn)(list), neverfilter(fn, list). - Designed for
pipe(input, ...fns)usage — type inference works best insideR.pipe. max-params: 2enforced (ESLint).max-statements: 12enforced (ESLint).- File naming:
.tsfiles must bekebab-case,.tsxmust beCAMEL_CASE. - Semicolons are disabled (Prettier). Single quotes preferred.
yarn out requires rambda-scripts cloned as a sibling directory (../rambda-scripts). Without it, populatedocs, populatereadme, and create-docsify will fail.