• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / js-slang / 35698076645
86%

Build:
DEFAULT BRANCH: master
Ran 22 Sep 2026 07:11AM UTC
Jobs 1
Files 163
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2026 07:07AM UTC coverage: 85.683% (+0.2%) from 85.532%
35698076645

push

github

web-flow
feat(conductor): wire up the autocomplete plugin, generated from docs/lib jsdoc (#2090)

* feat(conductor): wire up the autocomplete plugin, generated from docs/lib jsdoc

Closes #2079. There was no autocomplete in any Conductor Source
evaluator: typing `acc` in the playground offered nothing, where the
pre-Conductor editor offered `accumulate` with its documentation.

## Builtin data: mechanically generated from docs/lib/*.js, not scraped

The old (deleted in #2070) pipeline scraped autocomplete tooltips from
*rendered* jsdoc HTML, which only worked after `yarn docs` had already
run — a build-order dependency that broke CI once already (#2068).

Following py-slang's own solution to the identical problem:
scripts/autocomplete.mjs asks jsdoc for its own parsed doclet AST
directly (`-X`, jsdoc's "explain" mode — a pure parse step, no
rendering, no ordering requirement) against docs/lib/*.js, and writes
the simplified {name, title, description, meta} shape straight to
src/conductor/plugins/autocomplete/builtins/*.json. Output is
committed (matching py-slang's builtins/*.json), so a clean
`yarn build:evaluators` doesn't depend on this script having run —
but CI (nodejs.yml) now runs `yarn autocomplete` and diffs the result,
so a docs/lib edit that forgot to regenerate fails loudly instead of
silently going stale.

Filters out auxiliary.js (internal `__access_export__`-style loader
plumbing, never student-facing) and anything with no jsdoc comment
(list.js's own undocumented $accumulate/$append/$build_list helpers
that the real, documented functions wrap).

## The plugin itself

- resolver.ts — walks a real ESTree program (via acorn-walk's
  fullAncestor) to build the scope chain around the cursor, subsequence-
  matches against it plus chapter-gated keywords and the jsdoc-derived
  builtins, and scores inner scopes ahead of outer ones. Parses with
  acorn-loose, not the real parser: the buffer is normally *invalid*
  Source while a student is mid-keystrok... (continued)

2512 of 3044 branches covered (82.52%)

Branch coverage included in aggregate %.

114 of 119 new or added lines in 8 files covered. (95.8%)

4891 of 5596 relevant lines covered (87.4%)

294028.11 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
90.07
src/conductor/plugins/autocomplete/resolver.ts
Jobs
ID Job ID Ran Files Coverage
1 35698076645.1 22 Sep 2026 07:11AM UTC 163
85.68
GitHub Action Run
Source Files on build 35698076645
  • Tree
  • List 163
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 244f58e0 on github
  • Prev Build on master (#35688784234)
  • Next Build on master (#35713762180)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc