open-index/open-npm huggingface dataset:
npm package: @khanacademy/kas
Description: A lightweight JavaScript CAS for comparing expressions and equations.
Author: Khan Academy
Latest version: 2.2.1

# @khanacademy/kas

A lightweight JavaScript CAS (Computer Algebra System) for comparing expressions and equations.
It is used throughout [Khan Academy](https://khanacademy.org)'s interactive exercises.

## What can it do?

It can parse plain text math, LaTeX, or a mix of both:

```js
var expr = KAS.parse("3x \\frac{42}{42} sin^2y").expr;
expr.print();
// "3*x*42/42*sin(y)^(2)"
```

It can evaluate expressions:

```js
var expr = KAS.parse("(x^2+y^2)^.5").expr;
expr.eval({x: 3, y: 4});
// 5
```

It can compare expressions and equations:

```js
var expr1 = KAS.parse("(1-x)(-1-6x)").expr;
var expr2 = KAS.parse("(6x+1)(x-1)").expr;
KAS.compare(expr1, expr2).equal;
// true

var eq1 = KAS.parse("2w+50/w=25").expr;
var eq2 = KAS.parse("w(12.5-w)=25").expr;
KAS.compare(eq1, eq2).equal;
// true
```

It can perform basic transforms that always simplify an expression:

```js
var expr = KAS.parse("1+1+x+x+x+y").expr;
expr.collect().print();
// "2+3*x+y"

var expr = KAS.parse("b^(2*y*log_b x)").expr;
expr.collect().print();
// "x^(2*y)"
```

It can perform non-simplifying transforms on an expression:

```js
var expr = KAS.parse("ab(c+d)e^f").expr;
expr.print();
// "a*b*(c+d)*e^(f)"
expr.expand().print();
// "a*b*e^(f)*c+a*b*e^(f)*d"
expr.expand().factor().print();
// "a*b*e^(f)*(c+d)"
```

It can combine the above abilities to perform powerful simplification:

```js
var expr = KAS.parse("((nx^5)^5)/(n^-2x^2)^-3").expr;
expr.print();
// "(n*x^(5))^(5)*(n^(-2)*x^(2))^(-1*-3)"
expr.simplify().print();
// "n^(-1)*x^(31)"

var expr = KAS.parse("(15np-25mp)/(15p^2-5p)+(20mp+10p^2)/(15p^2-5p)").expr;
expr.print();
// "(15*n*p+-25*m*p)*(15*p^(2)+-5*p)^(-1)+(20*m*p+10*p^(2))*(15*p^(2)+-5*p)^(-1)"
expr.simplify().print();
// "(-1+3*p)^(-1)*(3*n+-1*m+2*p)"
```

## How to build the library
    pnpm install
    pnpm build

## How to build the parser
First, make any changes in `src/parser-generator.js`

    pnpm install
    pnpm build:parser

## License
[MIT License](http://opensource.org/licenses/MIT)
npm package: @khanacademy/pure-markdown
Description: SimpleMarkdown instance with non-react Perseus rules
Author: Khan Academy
Latest version: 2.2.7

# @khanacademy/pure-markdown

An extended version of `@khanacademy/simple-markdown`, `pure-markdown` is a Node-compatible wrapper around `simple-markdown`.

Contains markdown related functions in pure javascript, extracted from perseus-markdown.jsx.

Note that this file may be used in stand alone nodejs, thus do not import anything from Perseus.
npm package: @khanacademy/react-multi-select
Description: React Multi Select Component
Latest version: 0.3.3

# React Multi Select Component

React Multi Select Component

![Animated GIF demo](react-multi-select.gif)

[Storybook Demo](https://khan.github.io/react-multi-select/)

## Installation:
`npm install --save @khanacademy/react-multi-select`

## Usage:
See the examples in ``/src/stories/index.js` for how to use the component

## i18n:
You can override the strings to be whatever you want, including translations for your languages.

```
<StatefulMultiSelect
    overrideStrings={{
        selectSomeItems: "Select Some items...",
        allItemsAreSelected: "All Items are Selected",
        selectAll: "Select All",
        search: "Search",
    }}
/>
```
npm package: @khanacademy/tota11y
Description: An accessibility visualization toolkit
Author: Jordan Scales
Latest version: 0.2.0
Deprecated: This package has been deprecated and is no longer maintained.

# tota11y [![Build Status](https://travis-ci.org/Khan/tota11y.svg?branch=master)](https://travis-ci.org/Khan/tota11y)

An accessibility visualization toolkit

<img src="http://khan.github.io/tota11y/img/tota11y-logo.png" alt="tota11y logo" width="200">

[Try tota11y in your browser](http://khan.github.io/tota11y/#Try-it), or
[read why we built tota11y](http://engineering.khanacademy.org/posts/tota11y.htm).

## Installation

`npm install @khanacademy/tota11y`

Include it right before `</body>` like so:

```html
<script src="tota11y.min.js"></script>
```

## Development

Want to contribute to tota11y? Awesome! Run the following in your terminal:

```
git clone https://github.com/Khan/tota11y.git
cd tota11y/
npm install
```

## Architecture Overview

Most of the functionality in tota11y comes from its **plugins**. Each plugin
gets its own directory in [`plugins/`](https://github.com/Khan/tota11y/tree/master/plugins) and maintains its own JavaScript, CSS,
and even handlebars. [Here's what the simple LandmarksPlugin looks like](https://github.com/Khan/tota11y/blob/master/plugins/landmarks/index.js).

[`plugins/shared/`](https://github.com/Khan/tota11y/tree/master/plugins/shared) contains a variety of shared utilities for the plugins, namely the [info-panel](https://github.com/Khan/tota11y/tree/master/plugins/shared/info-panel) and [annotate](https://github.com/Khan/tota11y/tree/master/plugins/shared/annotate) modules, which are used to report accessibility violations on the screen.

[`index.js`](https://github.com/Khan/tota11y/blob/master/index.js) brings it all together.

tota11y uses a variety of technologies, including [jQuery](https://jquery.com/), [webpack](https://webpack.github.io/), [babel](https://babeljs.io/), and [JSX](https://facebook.github.io/jsx/). **There's no need to know all (or any!) of these to contribute to tota11y, but we hope tota11y is a good place to learn something new and interesting.**

## Testing

You can run unit tests on tota11y with the following:

```
npm test
```

Or lint with:

```
npm run lint
```

To perform manual testing as you work, you can run a live dev-server with the
following:

```
npm start
```

## Building

To create a development build as the test server uses:

```
npm run build:dev
```

To create a production build, with minified and unminified output:

```
npm run build:prod
```

## Special thanks

Many of tota11y's features come straight from [Google Chrome's Accessibility Developer Tools](https://github.com/GoogleChrome/accessibility-developer-tools). We use this library heavily at [Khan Academy](http://khanacademy.org).

The awesome glasses in our logo were created by [Kyle Scott](https://thenounproject.com/Kyle/) and are licensed under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/us/legalcode).

## License

[MIT License](LICENSE.txt)
npm package: @khanacademy/vite-server
Description: Used by `jest-environment-vite` to serve source files from a project under test as well as npm module dependencies.
Latest version: 0.0.7

# vite-server

Used by `jest-environment-vite` to serve source files from a project
under test as well as npm module dependencies.

## Usage

```
import createServer from "vite-server";

const server = createServer({
    port: 3000, // defaults to 3000
    verbose: true, // defaults to false
    cache: {}, // used to cache compiled modules
});
```
npm package: @khanacademy/wonder-stuff-tool-publish-new-pkg
Description: Utility to create and publish a placeholder package
Author: Khan Academy
Latest version: 0.0.4

# wonder-stuff-tool-publish-new-pkg

This Wonder Stuff package is a `pnpm dlx` (or `npx`) compatible tool package
that helps to publish a new package to npmjs. Khan Academy has shifted entirely
to publishing package using [Trusted
Publishing](https://docs.npmjs.com/trusted-publishers). This presents a problem
when publishing a new package because the package does not yet exist on
npmjs.com and so Trusted Publishing cannot be configured for it. 

To work around that problem, this package guides you through publishing a
placeholder package under the desired name using a short-lived, granular npm
access token. Once the placeholder has been published, it's possible to
configure the package on npmjs.com for Trusted Publishing and then never deal
with tokens again. 

## Usage 

```
$ pnpm dlx @khanacademy/wonder-stuff-tool-publish-new-pkg @khanacademy/my-new-package
```

This package accepts a single paramter, the new package's name. The script will
then guide you through the rest of the steps to get a placeholder package
published.