car-json-datasets
v0.3.2
Published
Data-only package with finalized car JSON datasets (one per make)
Downloads
48
Maintainers
Readme
car-json-datasets
Data-only npm package containing finalized car JSON datasets generated by the car-json-generator project. Each make has its own directory and includes only the final aggregated JSON file (no tree.json).
Install
npm install car-json-datasetsUsage
Basic Data Access
// ESM
import mazda from "car-json-datasets/data/mazda/mazda.json" assert { type: "json" };
// CommonJS
const mazda = require("car-json-datasets/data/mazda/mazda.json");
console.log(mazda.make); // "Mazda"OOP API (Recommended)
The package provides a fluent, object-oriented API for querying car data:
import { CarQuery } from "car-json-datasets";
// Create a query instance
const query = new CarQuery();
// Fluent interface - set make first
query.setMake("Volkswagen");
// Get available models for Volkswagen
const models = query.getAvailableModels();
console.log(models); // ['Golf', 'Passat', 'Tiguan', ...]
// Set model and get available series
query.setModel("Golf");
const series = query.getAvailableSeries();
console.log(series); // ['Mk1 (A1)', 'Mk2 (A2)', 'Mk3 (A3)', ...]
// Set year and get series filtered by year
query.setYear(2020);
const seriesForYear = query.getAvailableSeries(true);
console.log(seriesForYear); // Only series available in 2020
// Set series and get available body types
query.setSeries("Mk7 (A7)");
const bodyTypes = query.getAvailableBodyTypes();
console.log(bodyTypes); // ['Hatchback', 'Estate', 'Sportsvan']
// Set body type and get available engines
query.setBodyType("Hatchback");
const engines = query.getAvailableEngines();
console.log(engines); // Array of engine specifications
// Set year if needed
query.setYear(2020);
// Get the final result (properly typed)
const result = query.getResult();
console.log(result);
// {
// make: "Volkswagen",
// model?: { name: "Golf", minYear: 1974, maxYear: null, series: [...] },
// series?: { name: "Mk7 (A7)", startYear: 2012, endYear: 2020, bodyTypes: [...] },
// bodyType?: { type: "Hatchback", engines: [...] },
// year?: 2020
// }
// Reset to start a new query
query.reset();Advanced Usage
import { CarQuery, CarDataProvider } from "car-json-datasets";
// Custom data provider (for testing or custom data sources)
const customProvider = new CarDataProvider();
const query = new CarQuery(customProvider);
// Clone queries
const golfQuery = query.setMake("Volkswagen").setModel("Golf");
const passatQuery = golfQuery.clone().setModel("Passat");
// Check current state
if (query.isMakeSet()) {
console.log("Make is set to:", query.getMake());
}
// Get all available makes
const allMakes = query.getAvailableMakes();
console.log("Available makes:", allMakes);Package structure
car-json-datasets/
data/
mazda/
mazda.json
volkswagen/
volkswagen.json
...
dist/
index.js # Compiled JavaScript
index.d.ts # TypeScript declarationsAPI Reference
CarQuery Class
Main class for building car queries with a fluent interface.
Methods
setMake(make: string): CarQuery- Set the car makesetModel(model: string): CarQuery- Set the car modelsetSeries(series: string): CarQuery- Set the car seriessetBodyType(bodyType: string): CarQuery- Set the body typesetYear(year: number): CarQuery- Set the yeargetResult(): any- Get the current query resultexecute(): any- Alias for getResult()reset(): CarQuery- Reset all query parametersclone(): CarQuery- Create a copy of the current query
State Getters
getMake(): string | nullgetModel(): string | nullgetSeries(): string | nullgetBodyType(): string | nullgetYear(): number | null
Available Options
getAvailableMakes(): string[]getAvailableModels(): string[]getAvailableSeries(includeYears?: boolean): string[]getAvailableBodyTypes(): string[]getAvailableYears(): number[]
Interfaces
ICarQuery- Main query interfaceICarDataProvider- Data provider interfaceIQueryState- Query state management interface
SOLID Principles Implementation
Single Responsibility: Each class has one clear purpose
CarQuery: Orchestrates the query processCarDataProvider: Handles data accessQueryState: Manages query state
Open/Closed: Easy to extend without modifying existing code
- Custom data providers can implement
ICarDataProvider - Custom state managers can implement
IQueryState
- Custom data providers can implement
Liskov Substitution: All implementations can be substituted for their interfaces
Interface Segregation: Small, focused interfaces for each responsibility
Dependency Inversion: High-level modules depend on abstractions, not concretions
This package is updated automatically when car-json-generator's main branch is updated.
