<commit_before># Relational Database Specification Polyfill

This repo provides a polyfill of
[specification](https://github.com/arthurhsu/rdb).

## Why TypeScript?

The authors need a fast tool to develop polyfill, and thus TypeScript is
chosen. The end product is still in ES6, located under `dist/` directory
(You need to call `npm run gulp build` to generate the `dist/` directory).

## How to Build It?

```bash
npm install
npm run gulp build
```

Supported command line and options can be listed using `npm run gulp`.

## What's the Supported Browser?

* Node module that features SQLite3 native code
  * Very limited support for `ALTER TABLE`
  * Temporarily using node-sqlite3 underneath, no support of observers.

Other options considered:

* ~~Chrome WebSQL polyfill~~ This is no-go.
  * WebSQL does not support `BEGIN`, `COMMIT` and `ROLLBACK`
  * WebSQL transaction callback is not chainable with other asynchronous calls:
    it will automatically commit.<commit_msg>Update roadmap<commit_after># Relational Database Specification Polyfill

This repo provides a polyfill of
[specification](https://github.com/arthurhsu/rdb).

## Why TypeScript?

The authors need a fast tool to develop polyfill, and thus TypeScript is
chosen. The end product is still in ES6, located under `dist/` directory
(You need to call `npm run gulp build` to generate the `dist/` directory).

## How to Build It?

```bash
npm install
npm run gulp build
```

Supported command line and options can be listed using `npm run gulp`.

## What's the Supported Browser?

* Node module that features SQLite3 native code
  * Very limited support for `ALTER TABLE`
  * Temporarily using node-sqlite3 underneath, no support of observers.
  * We will attempt for a native Sqlite C++ Node.js plugin, similar to the
    node-sqlite3 but greatly simplified implementation. There will be no parser
    exposed since RDB can directly construct necessary syntax tree. That may
    happen in a separate repo.

Other options considered:

* ~~Chrome WebSQL polyfill~~ This is no-go.
  * WebSQL does not support `BEGIN`, `COMMIT` and `ROLLBACK`
  * WebSQL transaction callback is not chainable with other asynchronous calls:
    it will automatically commit.
{'fraction_non_alphanumeric': 0.07149280575539568, 'fraction_numerical': 0.003147482014388489, 'mean_word_length': 4.335731414868105, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1127899', 'n_tokens_mistral': 632, 'n_tokens_neox': 607, 'n_words': 301}