@truelies/osm-dybuf
v0.2.7
Published
Gridex OSM DyBuf parser and schema utilities
Readme
@truelies/osm-dybuf
Gridex osm.dybuf parser utilities shared by the exporter, inspection scripts, and Next.js frontend.
This package wraps the shared schema tables (schema_ids) and exposes a high-level parseOsmDybuf helper.
It depends on the published dybuf runtime (≥ 0.4.2).
Usage
# from another project (Next.js, Node, etc.)
npm install @truelies/osm-dybufimport { parseOsmDybuf } from "@truelies/osm-dybuf";
import {
FEATURE_KIND_IDS,
REGION_NUMERIC_CODES,
} from "@truelies/osm-dybuf/schema_ids";
const data = await fetch("/tiles/08/213/161/osm.dybuf").then((res) => res.arrayBuffer());
const cell = { level: 8, londex: 213, latdex: 161 };
const parsed = parseOsmDybuf(data, cell);- CLI inspection (development only):
node js/inspect_dybuf.mjs \ --file /path/to/osm.dybuf \ --level 8 --londex 213 --latdex 161 --limit 5
Grid helpers (grid_index)
grid_index.ts exposes the minimal Gridex helpers (integers, pole triangles) aligned with the exporter:
import { GridUnit, Gridex, INT_COORD_SCALE } from "@truelies/osm-dybuf/grid_index";
const unit = new GridUnit(8); // level 8
const cell = new Gridex(213, 161);
const [minLon, minLat, maxLon, maxLat] = unit.boundsOfGrid(cell);Local Development
cd js
npm install # installs dybuf runtime for this packagenpm pack: build a tarball so other repos can install vianpm install ./path/to/osm-dybuf-*.tgznpm link: link the package locally (npm linkhere, thennpm link @truelies/osm-dybufin the consumer repo)npm publish --access public: publish to npm (requires the@trueliesscope). If the scope is not available, renamepackage.json→"name": "truelies-osm-dybuf"and publish without a scope.
Files
osm_dybuf.mjs/.d.mts: DyBuf parser entry pointsschema_ids.mjs/.d.mts: shared identifiers (geometry, feature, region, segment roles)region_numeric_codes.json: latest region ID table (generated viascripts/dump_region_codes.py)inspect_dybuf.mjs: CLI tool that uses the package locally
When schema IDs or DyBuf layouts change in the exporter, remember to bump the version here and re-publish/install so frontends and tools stay in sync.
