@meterapp/vehicle-db 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -39,8 +39,3 @@ export declare function getModels(options?: GetModelsOptions): Model[];
39
39
  * Get all available years in the database.
40
40
  */
41
41
  export declare function getAvailableYears(): number[];
42
- /**
43
- * Clear cached data (optional cleanup, frees memory).
44
- */
45
- export declare function close(): void;
46
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -7,31 +7,21 @@ exports.getVehicleTypes = getVehicleTypes;
7
7
  exports.getMakes = getMakes;
8
8
  exports.getModels = getModels;
9
9
  exports.getAvailableYears = getAvailableYears;
10
- exports.close = close;
11
- const path_1 = __importDefault(require("path"));
12
- const fs_1 = __importDefault(require("fs"));
13
- const DATA_PATH = path_1.default.join(__dirname, "..", "data", "compact.json");
10
+ const data_1 = __importDefault(require("./data"));
14
11
  // ---------------------------------------------------------------------------
15
- // Lazy-loaded singleton
12
+ // Internal lookup maps (lazy)
16
13
  // ---------------------------------------------------------------------------
17
- let _data = null;
18
14
  let _makeMap = null;
19
15
  let _typeMap = null;
20
- function getData() {
21
- if (!_data) {
22
- _data = JSON.parse(fs_1.default.readFileSync(DATA_PATH, "utf-8"));
23
- }
24
- return _data;
25
- }
26
16
  function getMakeMap() {
27
17
  if (!_makeMap) {
28
- _makeMap = new Map(getData().makes.map((m) => [m.make_id, m.make_name]));
18
+ _makeMap = new Map(data_1.default.makes.map((m) => [m.make_id, m.make_name]));
29
19
  }
30
20
  return _makeMap;
31
21
  }
32
22
  function getTypeMap() {
33
23
  if (!_typeMap) {
34
- _typeMap = new Map(getData().vehicleTypes.map((t) => [t.vehicle_type_id, t.vehicle_type_name]));
24
+ _typeMap = new Map(data_1.default.vehicleTypes.map((t) => [t.vehicle_type_id, t.vehicle_type_name]));
35
25
  }
36
26
  return _typeMap;
37
27
  }
@@ -42,7 +32,7 @@ function getTypeMap() {
42
32
  * Returns all vehicle types in the database.
43
33
  */
44
34
  function getVehicleTypes() {
45
- return getData().vehicleTypes.map((t) => ({
35
+ return data_1.default.vehicleTypes.map((t) => ({
46
36
  vehicleTypeId: t.vehicle_type_id,
47
37
  vehicleTypeName: t.vehicle_type_name,
48
38
  }));
@@ -51,13 +41,12 @@ function getVehicleTypes() {
51
41
  * Returns makes, optionally filtered by year and/or vehicle type.
52
42
  */
53
43
  function getMakes(options = {}) {
54
- const data = getData();
55
44
  const { year, vehicleTypeId } = options;
56
45
  if (year == null && vehicleTypeId == null) {
57
- return data.makes.map((m) => ({ makeId: m.make_id, makeName: m.make_name }));
46
+ return data_1.default.makes.map((m) => ({ makeId: m.make_id, makeName: m.make_name }));
58
47
  }
59
48
  const makeIds = new Set();
60
- for (const m of data.models) {
49
+ for (const m of data_1.default.models) {
61
50
  if (year != null && m[0] !== year)
62
51
  continue;
63
52
  if (vehicleTypeId != null && m[4] !== vehicleTypeId)
@@ -73,12 +62,11 @@ function getMakes(options = {}) {
73
62
  * Returns models, optionally filtered by year, vehicle type, and/or make.
74
63
  */
75
64
  function getModels(options = {}) {
76
- const data = getData();
77
65
  const makeMap = getMakeMap();
78
66
  const typeMap = getTypeMap();
79
67
  const { year, vehicleTypeId, makeId } = options;
80
68
  const results = [];
81
- for (const m of data.models) {
69
+ for (const m of data_1.default.models) {
82
70
  if (year != null && m[0] !== year)
83
71
  continue;
84
72
  if (makeId != null && m[1] !== makeId)
@@ -87,7 +75,7 @@ function getModels(options = {}) {
87
75
  continue;
88
76
  results.push({
89
77
  modelId: m[2],
90
- modelName: data.modelNames[m[3]],
78
+ modelName: data_1.default.modelNames[m[3]],
91
79
  makeId: m[1],
92
80
  makeName: makeMap.get(m[1]),
93
81
  vehicleTypeId: m[4],
@@ -101,17 +89,8 @@ function getModels(options = {}) {
101
89
  */
102
90
  function getAvailableYears() {
103
91
  const years = new Set();
104
- for (const m of getData().models) {
92
+ for (const m of data_1.default.models) {
105
93
  years.add(m[0]);
106
94
  }
107
95
  return [...years].sort((a, b) => a - b);
108
96
  }
109
- /**
110
- * Clear cached data (optional cleanup, frees memory).
111
- */
112
- function close() {
113
- _data = null;
114
- _makeMap = null;
115
- _typeMap = null;
116
- }
117
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@meterapp/vehicle-db",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Offline NHTSA vehicle makes/models database — zero dependencies",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
8
- "dist",
9
- "data/compact.json"
8
+ "dist"
10
9
  ],
11
10
  "scripts": {
12
11
  "build:db": "tsx scripts/build-db.ts",