@jscad/obj-serializer 2.1.21 → 2.1.23

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +7 -91
  2. package/index.js +6 -5
  3. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,198 +3,114 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [2.1.21](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.20...@jscad/obj-serializer@2.1.21) (2025-09-20)
6
+ ## [2.1.23](https://github.com/jscad/OpenJSCAD/compare/@jscad/obj-serializer@2.1.22...@jscad/obj-serializer@2.1.23) (2026-02-22)
7
7
 
8
8
  **Note:** Version bump only for package @jscad/obj-serializer
9
9
 
10
+ ## [2.1.22](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.21...@jscad/obj-serializer@2.1.22) (2026-02-11)
10
11
 
12
+ ### Performance Improvements
11
13
 
14
+ * **obj-serializer:** improved performance by using Map for unique vertices ([93d5df5](https://github.com/jscad/OpenJSCAD.org/commit/93d5df5d8515797f4a3117195bd3e9d1970abf84))
12
15
 
13
-
14
- ## [2.1.20](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.19...@jscad/obj-serializer@2.1.20) (2024-12-29)
16
+ ## [2.1.21](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.20...@jscad/obj-serializer@2.1.21) (2025-09-20)
15
17
 
16
18
  **Note:** Version bump only for package @jscad/obj-serializer
17
19
 
20
+ ## [2.1.20](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.19...@jscad/obj-serializer@2.1.20) (2024-12-29)
18
21
 
19
-
20
-
22
+ **Note:** Version bump only for package @jscad/obj-serializer
21
23
 
22
24
  ## [2.1.19](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.18...@jscad/obj-serializer@2.1.19) (2024-11-10)
23
25
 
24
26
  **Note:** Version bump only for package @jscad/obj-serializer
25
27
 
26
-
27
-
28
-
29
-
30
28
  ## [2.1.18](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.17...@jscad/obj-serializer@2.1.18) (2024-10-06)
31
29
 
32
30
  **Note:** Version bump only for package @jscad/obj-serializer
33
31
 
34
-
35
-
36
-
37
-
38
32
  ## [2.1.17](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.16...@jscad/obj-serializer@2.1.17) (2024-06-02)
39
33
 
40
34
  **Note:** Version bump only for package @jscad/obj-serializer
41
35
 
42
-
43
-
44
-
45
-
46
36
  ## [2.1.16](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.15...@jscad/obj-serializer@2.1.16) (2024-02-18)
47
37
 
48
38
  **Note:** Version bump only for package @jscad/obj-serializer
49
39
 
50
-
51
-
52
-
53
-
54
40
  ## [2.1.15](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.14...@jscad/obj-serializer@2.1.15) (2023-06-27)
55
41
 
56
42
  **Note:** Version bump only for package @jscad/obj-serializer
57
43
 
58
-
59
-
60
-
61
-
62
44
  ## [2.1.14](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.13...@jscad/obj-serializer@2.1.14) (2023-04-30)
63
45
 
64
46
  **Note:** Version bump only for package @jscad/obj-serializer
65
47
 
66
-
67
-
68
-
69
-
70
48
  ## [2.1.13](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.12...@jscad/obj-serializer@2.1.13) (2022-11-26)
71
49
 
72
50
  **Note:** Version bump only for package @jscad/obj-serializer
73
51
 
74
-
75
-
76
-
77
-
78
52
  ## [2.1.12](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.11...@jscad/obj-serializer@2.1.12) (2022-08-21)
79
53
 
80
54
  **Note:** Version bump only for package @jscad/obj-serializer
81
55
 
82
-
83
-
84
-
85
-
86
56
  ## [2.1.11](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.10...@jscad/obj-serializer@2.1.11) (2022-07-17)
87
57
 
88
58
  **Note:** Version bump only for package @jscad/obj-serializer
89
59
 
90
-
91
-
92
-
93
-
94
60
  ## [2.1.10](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.9...@jscad/obj-serializer@2.1.10) (2022-06-12)
95
61
 
96
62
  **Note:** Version bump only for package @jscad/obj-serializer
97
63
 
98
-
99
-
100
-
101
-
102
64
  ## [2.1.9](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.8...@jscad/obj-serializer@2.1.9) (2022-05-15)
103
65
 
104
66
  **Note:** Version bump only for package @jscad/obj-serializer
105
67
 
106
-
107
-
108
-
109
-
110
68
  ## [2.1.8](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.7...@jscad/obj-serializer@2.1.8) (2022-04-24)
111
69
 
112
70
  **Note:** Version bump only for package @jscad/obj-serializer
113
71
 
114
-
115
-
116
-
117
-
118
72
  ## [2.1.7](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.6...@jscad/obj-serializer@2.1.7) (2022-04-03)
119
73
 
120
74
  **Note:** Version bump only for package @jscad/obj-serializer
121
75
 
122
-
123
-
124
-
125
-
126
76
  ## [2.1.6](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.5...@jscad/obj-serializer@2.1.6) (2022-04-03)
127
77
 
128
78
  **Note:** Version bump only for package @jscad/obj-serializer
129
79
 
130
-
131
-
132
-
133
-
134
80
  ## [2.1.5](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.4...@jscad/obj-serializer@2.1.5) (2022-03-13)
135
81
 
136
82
  **Note:** Version bump only for package @jscad/obj-serializer
137
83
 
138
-
139
-
140
-
141
-
142
84
  ## [2.1.4](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.3...@jscad/obj-serializer@2.1.4) (2022-03-06)
143
85
 
144
86
  **Note:** Version bump only for package @jscad/obj-serializer
145
87
 
146
-
147
-
148
-
149
-
150
88
  ## [2.1.3](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.2...@jscad/obj-serializer@2.1.3) (2022-02-19)
151
89
 
152
90
  **Note:** Version bump only for package @jscad/obj-serializer
153
91
 
154
-
155
-
156
-
157
-
158
92
  ## [2.1.2](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.1...@jscad/obj-serializer@2.1.2) (2021-12-26)
159
93
 
160
94
  **Note:** Version bump only for package @jscad/obj-serializer
161
95
 
162
-
163
-
164
-
165
-
166
96
  ## [2.1.1](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.0...@jscad/obj-serializer@2.1.1) (2021-12-11)
167
97
 
168
98
  **Note:** Version bump only for package @jscad/obj-serializer
169
99
 
170
-
171
-
172
-
173
-
174
100
  # 2.1.0 (2021-11-07)
175
101
 
176
-
177
102
  ### Bug Fixes
178
103
 
179
104
  * **obj-serializer:** added default material when serializing objects without colors ([#947](https://github.com/jscad/OpenJSCAD.org/issues/947)) ([843865b](https://github.com/jscad/OpenJSCAD.org/commit/843865b94f4d348ea67523b6d442f9c562bef021))
180
105
 
181
-
182
106
  ### Features
183
107
 
184
108
  * **io:** new serializer for OBJ ([#942](https://github.com/jscad/OpenJSCAD.org/issues/942)) ([baaae18](https://github.com/jscad/OpenJSCAD.org/commit/baaae18ad55252ec71b074bd85dea7d137a22eb8))
185
109
 
186
-
187
-
188
-
189
-
190
110
  # 2.0.0 (2021-10-25)
191
111
 
192
112
  ### Features
193
113
 
194
114
  * **obj-serializer:** create OBJ serializer (#515)
195
115
 
196
-
197
-
198
-
199
-
200
116
  **Note:** Version bump only for package @jscad/obj-serializer
package/index.js CHANGED
@@ -69,8 +69,8 @@ const serialize = (options, ...objects) => {
69
69
  // construct the contents of the OBJ file
70
70
  let body = '# Wavefront OBJ file generated by JSCAD\n'
71
71
 
72
- // find unique vertices
73
- const vertices = []
72
+ // find unique vertices - use Map for O(1) lookup instead of O(n) indexOf
73
+ const vertexMap = new Map() // vertex string -> index (1-based)
74
74
 
75
75
  // convert objects
76
76
  // TODO: group objects together
@@ -86,9 +86,10 @@ const serialize = (options, ...objects) => {
86
86
  polygons.forEach((polygon) => {
87
87
  polygon.vertices.forEach((vertex) => {
88
88
  const vertexString = convertVertex(vertex)
89
- if (vertices.indexOf(vertexString) < 0) {
89
+ if (!vertexMap.has(vertexString)) {
90
90
  // add unique vertices
91
- vertices.push(vertexString)
91
+ const index = vertexMap.size + 1 // OBJ uses 1-based indexing
92
+ vertexMap.set(vertexString, index)
92
93
  body += `${vertexString}\n`
93
94
  }
94
95
  })
@@ -99,7 +100,7 @@ const serialize = (options, ...objects) => {
99
100
  polygons.forEach((polygon) => {
100
101
  // convert vertices to indices
101
102
  const indices = polygon.vertices
102
- .map((v) => vertices.indexOf(convertVertex(v)) + 1)
103
+ .map((v) => vertexMap.get(convertVertex(v)))
103
104
  // set face color
104
105
  const color = getColorName(polygon) || objectColor || 'default'
105
106
  if (color !== previousColor) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jscad/obj-serializer",
3
- "version": "2.1.21",
3
+ "version": "2.1.23",
4
4
  "description": "OBJ Serializer for JSCAD",
5
5
  "homepage": "https://openjscad.xyz/",
6
6
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -28,11 +28,11 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@jscad/array-utils": "2.1.4",
31
- "@jscad/modeling": "2.12.6"
31
+ "@jscad/modeling": "2.13.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "ava": "3.15.0",
35
35
  "nyc": "15.1.0"
36
36
  },
37
- "gitHead": "11a9a2d9235d804360116f776076c9f3237a3eb0"
37
+ "gitHead": "602bb2a3a2c2c7c21315e2801804dd1ec0cbd3f8"
38
38
  }