Update dependencies, build, and testing for Ink.

Review Request #14645 — Created Oct. 20, 2025 and updated

Information

Ink
master

Reviewers

This change accomplishes several tasks towards unifying our JavaScript
build infrastructure and supported more modern node.js environments:

  • Replace many specific dependencies with a new dependency on
    @beanbag/js-buildkit.
  • Eliminate unused or obsolete dependencies.
  • Base tsconfig.json on our shared config.
  • Copy our customized @types/backbone into this source tree, rather
    than referencing it from node_modules. I'm working on upstreaming
    these changes so we don't have to ship our own at all.
  • Ship types as both index.d.ts and index.d.mts.
  • Update to ESLint 9.

Plus a few changes relating to fixing unit tests:

  • Use @babel/register for transpiling during jasmine testing rather
    than ts-node. It seems like the ts-node one was broken on modern
    node environments, and using babel instead keeps our unit tests
    running in a much closer mode to how the code is built for packaging.
    This required some massaging of our babel configuration to allow
    slightly different plugin configurations between dev and test.
  • Import MenuItemsRadioGroup as type MenuItemsRadioGroup in
    menuItemModel.ts in order to prevent a circular dependency.
  • Use this.constructor for static member access inside MenuView, so
    unit tests and the class itself aren't looking at different versions
    of static members.
  • Did a build.
  • Ran unit tests.
  • Ran storybook.
  • Used this is a workspace with other packages that depend on it.
Summary ID
Update dependencies, build, and testing for Ink.
This change accomplishes several tasks towards unifying our JavaScript build infrastructure and supported more modern node.js environments: * Replace many specific dependencies with a new dependency on `@beanbag/js-buildkit`. * Eliminate unused or obsolete dependencies. * Base `tsconfig.json` on our shared config. * Copy our customized `@types/backbone` into this source tree, rather than referencing it from `node_modules`. I'm working on upstreaming these changes so we don't have to ship our own at all. * Ship types as both `index.d.ts` and `index.d.mts`. * Update to ESLint 9. Plus a few changes relating to fixing unit tests: * Use `@babel/register` for transpiling during jasmine testing rather than `ts-node`. It seems like the `ts-node` one was broken on modern node environments, and using babel instead keeps our unit tests running in a much closer mode to how the code is built for packaging. This required some massaging of our babel configuration to allow slightly different plugin configurations between dev and test. * Import `MenuItemsRadioGroup` as `type MenuItemsRadioGroup` in menuItemModel.ts in order to prevent a circular dependency. * Use `this.constructor` for static member access inside `MenuView`, so unit tests and the class itself aren't looking at different versions of static members. Testing Done: - Did a build. - Ran unit tests. - Ran storybook. - Used this is a workspace with other packages that depend on it.
nmnwwtolqqoksyvuzssvvksvsymlpxqz
david
Review request changed
Change Summary:
  • Resolve @tabler/icons to a real filesystem path wherever the node_modules directory lives.
  • Fix order of types/defaults in exports.
Commits:
Summary ID
Update dependencies, build, and testing for Ink.
This change accomplishes several tasks towards unifying our JavaScript build infrastructure and supported more modern node.js environments: * Replace many specific dependencies with a new dependency on `@beanbag/js-buildkit`. * Eliminate unused or obsolete dependencies. * Base `tsconfig.json` on our shared config. * Copy our customized `@types/backbone` into this source tree, rather than referencing it from `node_modules`. I'm working on upstreaming these changes so we don't have to ship our own at all. * Ship types as both `index.d.ts` and `index.d.mts`. * Update to ESLint 9. Plus a few changes relating to fixing unit tests: * Use `@babel/register` for transpiling during jasmine testing rather than `ts-node`. It seems like the `ts-node` one was broken on modern node environments, and using babel instead keeps our unit tests running in a much closer mode to how the code is built for packaging. This required some massaging of our babel configuration to allow slightly different plugin configurations between dev and test. * Import `MenuItemsRadioGroup` as `type MenuItemsRadioGroup` in menuItemModel.ts in order to prevent a circular dependency. * Use `this.constructor` for static member access inside `MenuView`, so unit tests and the class itself aren't looking at different versions of static members. Testing Done: - Did a build. - Ran unit tests. - Ran storybook. - Used this is a workspace with other packages that depend on it. Update to ESLint 9. ESLint 8 is outdated and no longer receiving any updates. This change moves us to ESLint 9, now that @beanbag/eslint-plugin supports that. This also adds a command for it to package.json. Testing Done: Ran eslint.
nmnwwtolqqoksyvuzssvvksvsymlpxqz
Update dependencies, build, and testing for Ink.
This change accomplishes several tasks towards unifying our JavaScript build infrastructure and supported more modern node.js environments: * Replace many specific dependencies with a new dependency on `@beanbag/js-buildkit`. * Eliminate unused or obsolete dependencies. * Base `tsconfig.json` on our shared config. * Copy our customized `@types/backbone` into this source tree, rather than referencing it from `node_modules`. I'm working on upstreaming these changes so we don't have to ship our own at all. * Ship types as both `index.d.ts` and `index.d.mts`. * Update to ESLint 9. Plus a few changes relating to fixing unit tests: * Use `@babel/register` for transpiling during jasmine testing rather than `ts-node`. It seems like the `ts-node` one was broken on modern node environments, and using babel instead keeps our unit tests running in a much closer mode to how the code is built for packaging. This required some massaging of our babel configuration to allow slightly different plugin configurations between dev and test. * Import `MenuItemsRadioGroup` as `type MenuItemsRadioGroup` in menuItemModel.ts in order to prevent a circular dependency. * Use `this.constructor` for static member access inside `MenuView`, so unit tests and the class itself aren't looking at different versions of static members. Testing Done: - Did a build. - Ran unit tests. - Ran storybook. - Used this is a workspace with other packages that depend on it.
nmnwwtolqqoksyvuzssvvksvsymlpxqz

Checks run (2 succeeded)

flake8 passed.
JSHint passed.