open-index/open-npm huggingface dataset:
npm package: @tablecheck/eslint-config
Description: eslint config file for TableCheck's Frontend Projects
Author: TableCheck Inc.
Latest version: 11.0.1

This package is our standard rules for eslint in the form of a eslint preset package.

Recommended usage is;

`.eslintrc.js`

```js static
module.exports = {
  extends: ['@tablecheck/eslint-config'],
};
```

```shell static
eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./
```
npm package: @tablecheck/locales
Description: TableCheck's shared locale definition files
Author: TableCheck Inc.
Latest version: 2.5.2

# TableCheck Locales

TableCheck's shared locale definition files and functions

## Development setup

#### Prerequisites

- Install [nvm](https://github.com/nvm-sh/nvm)
- Install [bun](https://bun.sh) (needed for translation checks)

#### Installation

```shell
npm ci --legacy-peer-deps
```

## Development Workflow

### Translation Checks

This repository includes automated checks to ensure all locale files have complete translations.

To manually check if all locales have complete translations:

```shell
npm run check-translations
```

This check will also run during CI/CD workflows and fail if any translations are missing.

When adding a new locale, ensure it includes translations for all existing locale codes. Similarly, when adding a new locale code to an existing locale, add translations for it to all other locale files.

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tr>
    <td align="center"><a href="https://github.com/SimeonC"><img src="https://avatars.githubusercontent.com/u/1085899?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simeon Cheeseman</b></sub></a><br /><a href="https://github.com/tablecheck/@tablecheck/locales/commits?author=SimeonC" title="Documentation">📖</a> <a href="#infra-SimeonC" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/tablecheck/@tablecheck/locales/commits?author=SimeonC" title="Code">💻</a> <a href="https://github.com/tablecheck/@tablecheck/locales/commits?author=SimeonC" title="Tests">⚠️</a></td>
  </tr>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
npm package: @tablecheck/scripts
Description: Configuration and scripts forked from Create React App.
Author: TableCheck Inc.
Latest version: 2.3.10

# Scripts Package

Usage of this package is normally: `tablecheck-scripts <script name>`. See sub-packages for script details.

## Setup Requirements

For these scripts to work the following structure should be adhered to. It is recommended that you run `npx @tablecheck/scripts init` to get the correct structure of your project.

```markup
- project
- | - src (react and javascript files go here)
- | - public (static files like index.html and favicons should go here
- | - config (usage of node-config and special scripts - see `config/config.js`)
- | - | - default.json
```

### Config setup

We use a combination of [node-config](https://github.com/lorenwest/node-config) and [preprocesser](https://www.npmjs.com/package/preprocess) based values.
This config is exposed via a global CONFIG variable, the types are automaticaly inferred from the `config/default.json` file when any of the following scripts are run; `tsc` `lint` `init` `precommit` `build`.

## Settings

Additional settings can be provided inside of your package.json file or inside a rc file as described by [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) (`.@tablecheckrc.json` for example). All paths are relative to the root of your project.
This file can be overwritten by providing the `--scriptConfig=<filepath>` option, but usually shouldn't be necessary.

```json static
{
  "@tablecheck": {
    "setupTests": "./root/relative/path/to/test/setup/file.js",
    "testRoots": ["packages/Button/src/tests", "packages/Layer/src"]
  }
}
```

- **setupTests:** This file is how you can load a custom version of `setupTests.js` for Jest, by default we have enzyme, react-16 and emotion snapshot testing configured.

- **testRoots: _(Not Recommended)_** Usually this won't be needed as the test script will automatically detect src folder test files. This is relevant for monorepo's like this one where running `lerna run test` gives a rather slow and garbled output. Using this array of relative folder paths you can tell jest where to look for tests under.

- Currently Supported and used Polyfills are:

  - https://www.promisejs.org/ Promise polyfill, supports `.finally`
  - `object-assign` supporting `Object.assign`

  Unlike `create-react-app` we do not polyfill the usage of `whatwg-fetch` as in our setup we use `axios`.
npm package: @tablecheck/semantic-release-config
Description: Configuration for creating gitlab releases for TableCheck applications in a sensible format
Author: TableCheck Inc.
Latest version: 7.2.0

# `@tablecheck/semantic-release-config`

A [semantic-release](https://semantic-release.gitbook.io/semantic-release/) config, used with our commitlint settings and does the following steps.

1. Increments the version according to conventional-commits.
2. Publishes a "GitHub Release" with correctly linked JIRA tickets.
3. Publishes a message to a slack webhook.
4. Outputs the new version to `version.txt` for ease of use in other reports.

## Required CI Variables

| Variable      | Usage                                                                   | Where to get it from                                                                                                                                      |
| ------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GITHUB_TOKEN  | API Token Used for parsing previous releases and publishing the new one | Available in semaphoreci `github-releases` secret or see https://github.com/semantic-release/github#github-authentication                                 |
| SLACK_WEBHOOK | Used for posting slack updates                                          | Go to the `Semantic Release` App and generate a new webhook for the channel you wish to post to. https://api.slack.com/apps/A021U4J1CQ4/incoming-webhooks |

## Usage

Setup the configuration file of semantic-release as follows. For more details on configuration see [here (link)](https://semantic-release.gitbook.io/semantic-release/usage/configuration).

To run a release, simply run `npx semantic-release` (`semantic-release` is a required peer-dependency)

```js
// release.config.js
module.exports = {
  extends: '@tablecheck/semantic-release-config',
};
```

If your release also needs to publish an npm package, use the following config. Refer to the [@semantic-release/npm](https://github.com/semantic-release/npm) docs for required environment variables and setup.

```js
// release.config.js
module.exports = {
  extends: '@tablecheck/semantic-release-config/with-npm-publish',
};
```
npm package: @tablecraft/adapter-express
Description: Express adapter for TableCraft
Latest version: 0.1.3

# @tablecraft/adapter-express

Express adapter for TableCraft — build powerful data APIs in your Express application.

## Links

- [GitHub](https://github.com/jacksonkasi1/TableCraft)
- [Documentation](https://jacksonkasi.gitbook.io/tablecraft/)

## Install

```bash
bun add @tablecraft/engine @tablecraft/adapter-express express
# or
npm install @tablecraft/engine @tablecraft/adapter-express express
# or
yarn add @tablecraft/engine @tablecraft/adapter-express express
# or
pnpm add @tablecraft/engine @tablecraft/adapter-express express
```

## Features

- **Express.js native** — Seamless integration with Express middleware ecosystem
- **Dynamic routes** — Single endpoint for multiple tables
- **Type-safe** — Full TypeScript support
- **Middleware compatible** — Works with authentication, logging, and other Express middleware

## Usage

### Dynamic route (multiple tables)

```ts
import express from 'express';
import { createExpressMiddleware } from '@tablecraft/adapter-express';
import { db } from './db';
import * as schema from './db/schema';
import { configs } from './tablecraft.config';

const app = express();

app.get('/api/data/:table', createExpressMiddleware({
  db,
  schema,
  configs,
  getContext: (req) => ({
    tenantId: req.headers['x-tenant-id'],
    user: req.user, // from auth middleware
  }),
}));

app.listen(3000);
```

### Single table route

```ts
import express from 'express';
import { createExpressHandler } from '@tablecraft/adapter-express';

const app = express();

app.get('/api/users', createExpressHandler({ 
  db, 
  schema, 
  config: usersConfig,
  getContext: (req) => ({
    tenantId: req.headers['x-tenant-id'],
  }),
}));
```

### With authentication middleware

```ts
import express from 'express';
import { createExpressMiddleware } from '@tablecraft/adapter-express';
import { authMiddleware } from './auth';

const app = express();

// Auth middleware populates req.user
app.use(authMiddleware);

app.get('/api/data/:table', createExpressMiddleware({
  db,
  schema,
  configs,
  getContext: (req) => ({
    tenantId: req.user.tenantId,
    user: req.user,
  }),
}));
```

### With error handling

```ts
import express from 'express';
import { createExpressMiddleware } from '@tablecraft/adapter-express';

const app = express();

app.get('/api/data/:table', createExpressMiddleware({
  db,
  schema,
  configs,
  getContext: (req) => ({ tenantId: req.headers['x-tenant-id'] }),
  onError: (error, req, res) => {
    console.error(error);
    res.status(500).json({ error: 'Internal server error' });
  },
}));

// Global error handler
app.use((err, req, res, next) => {
  res.status(500).json({ error: err.message });
});
```

## Configuration Options

```ts
createExpressMiddleware({
  db,                    // Drizzle database instance
  schema,                // Drizzle schema object
  configs,               // Table configs map
  getContext: (req) => ({
    tenantId: string,
    user: { id: string, roles: string[] },
  }),
  onError: (error, req, res) => {
    // Custom error handling
  },
});
```

## License

MIT
npm package: @tablecraft/adapter-hono
Description: Hono adapter for TableCraft
Latest version: 0.1.2

# @tablecraft/adapter-hono

Hono adapter for TableCraft — build powerful data APIs with Hono framework.

## Links

- [GitHub](https://github.com/jacksonkasi1/TableCraft)
- [Documentation](https://jacksonkasi.gitbook.io/tablecraft/)

## Install

```bash
bun add @tablecraft/engine @tablecraft/adapter-hono hono
# or
npm install @tablecraft/engine @tablecraft/adapter-hono hono
# or
yarn add @tablecraft/engine @tablecraft/adapter-hono hono
# or
pnpm add @tablecraft/engine @tablecraft/adapter-hono hono
```

## Features

- **Universal** — Works on Cloudflare Workers, Bun, Deno, Node.js — anywhere Hono runs
- **Lightweight** — Minimal overhead, perfect for edge deployments
- **Type-safe** — Full TypeScript support with Hono's type inference
- **Middleware integration** — Works seamlessly with Hono middleware

## Usage

### Sub-app (multiple tables)

```ts
import { Hono } from 'hono';
import { createHonoApp } from '@tablecraft/adapter-hono';
import { db } from './db';
import * as schema from './db/schema';
import { configs } from './tablecraft.config';

const app = new Hono();

app.route('/api/data', createHonoApp({
  db,
  schema,
  configs,
  getContext: (c) => ({
    tenantId: c.req.header('x-tenant-id'),
    user: c.get('user'),
  }),
}));

export default app;
```

### Single route

```ts
import { Hono } from 'hono';
import { createHonoHandler } from '@tablecraft/adapter-hono';

const app = new Hono();

app.get('/api/users', createHonoHandler({ 
  db, 
  schema, 
  config: usersConfig,
  getContext: (c) => ({
    tenantId: c.req.header('x-tenant-id'),
  }),
}));
```

### Cloudflare Workers

```ts
// src/index.ts
import { Hono } from 'hono';
import { createHonoApp } from '@tablecraft/adapter-hono';

const app = new Hono();

app.route('/api/data', createHonoApp({
  db, // Use D1 or other CF-compatible database
  schema,
  configs,
  getContext: (c) => ({
    tenantId: c.env.TENANT_ID,
    user: c.get('user'),
  }),
}));

export default app;
```

### With middleware

```ts
import { Hono } from 'hono';
import { bearerAuth } from 'hono/bearer-auth';
import { createHonoApp } from '@tablecraft/adapter-hono';

const app = new Hono();

app.use('/api/data/*', bearerAuth({ token: 'your-secret-token' }));

app.route('/api/data', createHonoApp({
  db,
  schema,
  configs,
  getContext: (c) => ({
    tenantId: c.req.header('x-tenant-id'),
  }),
}));
```

## Configuration Options

```ts
createHonoApp({
  db,                    // Drizzle database instance
  schema,                // Drizzle schema object
  configs,               // Table configs map
  getContext: (c) => ({
    tenantId: string,
    user: { id: string, roles: string[] },
  }),
  onError: (error, c) => {
    // Custom error handling
    return c.json({ error: error.message }, 500);
  },
});
```

## License

MIT
npm package: @tableflip/react-dropdown
Description: A React dropdown menu with a fancy menu arrow and no dependencies
Author: olizilla
Latest version: 1.3.0

# React Dropdown - TABLEFLIP EDITION

A simple React dropdown menu with a fancy arrow and no dependencies

```
npm i @tableflip/react-dropdown
```

## Example

```jsx
import React from 'react'
import {Dropdown, DropdownMenu} from '@tableflip/react-dropdown'

export function FileMenu ({open, toggleOpen}) {
  return (
    <Dropdown>
      <button onClick={toggleOpen}>
        Add to IPFS
      </button>
      <DropdownMenu open={open} width={200} onDismiss={toggleOpen}>
        <nav>
          <a href='#'>Add File</a>
          <a href='#'>Add Folder</a>
          <a href='#'>Add Folder</a>
        </nav>
      </DropdownMenu>
    </Dropdown>
  )
}
```