GTFS-JP v4 を TypeScript で扱うためのライブラリ群です。ブラウザ上で GTFS-JP ZIP を SQLite WASM に取り込み、型安全にデータを読み書きできます。
| パッケージ | 概要 |
|---|---|
@gtfs-jp/types |
GTFS-JP v4 全33テーブルのスキーマ定義と TypeScript 型 |
@gtfs-jp/loader |
Browser SQLite WASM (in-memory / OPFS) によるZIPインポートとクエリ |
npm install @gtfs-jp/types @gtfs-jp/loaderVite を使う場合は、SQLite WASM ファイルが正しく配置されるよう gtfsLoaderPlugin を追加してください。
// vite.config.ts
import { defineConfig } from 'vite';
import { gtfsLoaderPlugin } from '@gtfs-jp/loader/vite';
export default defineConfig({
plugins: [gtfsLoaderPlugin()],
});import { createGtfsLoader } from '@gtfs-jp/loader';
const loader = createGtfsLoader({ storage: 'memory' });
await loader.open();
// GTFS-JP ZIP をインポート
await loader.importZip(file);
// Kysely で型付きクエリ
const routes = await loader.db().selectFrom('routes').selectAll().limit(100).execute();
// routes[0].route_id, routes[0].route_type ... 全て型付き
await loader.close();GtfsLoader が提供する主なメソッド:
| メソッド | 説明 |
|---|---|
open() |
SQLite セッションを開く |
close(options?) |
セッションを閉じる。{ unlink: true } で OPFS ファイルを削除 |
reset() |
データベースをリセット(close + open) |
importZip(file, options?) |
GTFS-JP ZIP をインポート。options.onProgress で進捗を取得可能 |
validate() |
必須テーブルの存在を検証し GtfsValidationResult を返す |
listTables() |
インポート済みテーブル名の一覧を返す |
listGtfsTables() |
GTFS-JP テーブル名のみに絞った一覧を返す |
hasTable(name) |
指定テーブルが存在するか確認する |
db() |
Kysely インスタンスを返す(型安全クエリ用) |
| エクスポート | 内容 |
|---|---|
@gtfs-jp/loader |
createGtfsLoader、defineGtfsSchema、derivedTable など主要 API |
@gtfs-jp/loader/vite |
Vite プラグイン(gtfsLoaderPlugin) |
@gtfs-jp/loader/kysely |
Kysely 型定義(GtfsDatabase、KyselyDatabaseFromLoader など) |
| ディレクトリ | 概要 |
|---|---|
apps/demo |
@gtfs-jp/loader を使ったブラウザ UI サンプル |
pnpm install
pnpm build
pnpm testpnpm install 後は Husky の pre-commit hook が有効になり、staged な js / ts / tsx / json / md / yml / yaml / css / html ファイルに Prettier が自動実行されます。
GitHub Actions では main 向けの push / pull_request ごとに pnpm format:check、pnpm lint、pnpm typecheck、pnpm test を実行します。