@loaders.gl/tile-converter 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (368) hide show
  1. package/bin/converter.js +1 -1
  2. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  3. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  4. package/dist/3d-tiles-attributes-worker.js +3 -0
  5. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +13 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  8. package/dist/3d-tiles-converter/3d-tiles-converter.js +274 -233
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +9 -16
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  11. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -246
  12. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
  13. package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
  14. package/dist/3d-tiles-converter/json-templates/tileset.js +38 -35
  15. package/dist/bundle.js +2 -2
  16. package/dist/constants.d.ts +2 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +4 -0
  19. package/dist/converter-cli.d.ts +2 -0
  20. package/dist/converter-cli.d.ts.map +1 -0
  21. package/dist/converter-cli.js +280 -0
  22. package/dist/converter.min.js +185 -190
  23. package/dist/deps-installer/deps-installer.d.ts +11 -3
  24. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  25. package/dist/deps-installer/deps-installer.js +59 -18
  26. package/dist/dist.min.js +15153 -37895
  27. package/dist/es5/3d-tiles-attributes-worker.js +25 -0
  28. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  29. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
  30. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  31. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
  32. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  33. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
  34. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  35. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  36. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  37. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
  38. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  39. package/dist/es5/bundle.js +6 -0
  40. package/dist/es5/bundle.js.map +1 -0
  41. package/dist/es5/constants.js +9 -0
  42. package/dist/es5/constants.js.map +1 -0
  43. package/dist/es5/converter-cli.js +289 -0
  44. package/dist/es5/converter-cli.js.map +1 -0
  45. package/dist/es5/deps-installer/deps-installer.js +123 -0
  46. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  47. package/dist/es5/i3s-attributes-worker.js +25 -0
  48. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  49. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
  50. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  51. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +90 -0
  52. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  53. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
  54. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  55. package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
  56. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  57. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
  58. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  59. package/dist/es5/i3s-converter/helpers/geometry-converter.js +1181 -0
  60. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  61. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +80 -0
  62. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  63. package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
  64. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  65. package/dist/es5/i3s-converter/helpers/node-index-document.js +492 -0
  66. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  67. package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
  68. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  69. package/dist/es5/i3s-converter/i3s-converter.js +1512 -0
  70. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  71. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  72. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  73. package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
  74. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  75. package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
  76. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  77. package/dist/es5/i3s-converter/json-templates/node.js +99 -0
  78. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  79. package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
  80. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  81. package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
  82. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  83. package/dist/es5/i3s-converter/json-templates/store.js +107 -0
  84. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  85. package/dist/es5/i3s-converter/types.js +2 -0
  86. package/dist/es5/i3s-converter/types.js.map +1 -0
  87. package/dist/es5/i3s-server/app.js +18 -0
  88. package/dist/es5/i3s-server/app.js.map +1 -0
  89. package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
  90. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  91. package/dist/es5/i3s-server/routes/index.js +37 -0
  92. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  93. package/dist/es5/index.js +21 -0
  94. package/dist/es5/index.js.map +1 -0
  95. package/dist/es5/lib/utils/compress-util.js +346 -0
  96. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  97. package/dist/es5/lib/utils/file-utils.js +208 -0
  98. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  99. package/dist/es5/lib/utils/geometry-utils.js +15 -0
  100. package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
  101. package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
  102. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  103. package/dist/es5/lib/utils/queue.js +47 -0
  104. package/dist/es5/lib/utils/queue.js.map +1 -0
  105. package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
  106. package/dist/es5/lib/utils/statistic-utills.js +147 -0
  107. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  108. package/dist/es5/lib/utils/write-queue.js +214 -0
  109. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  110. package/dist/es5/pgm-loader.js +41 -0
  111. package/dist/es5/pgm-loader.js.map +1 -0
  112. package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
  113. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  114. package/dist/es5/workers/i3s-attributes-worker.js +30 -0
  115. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  116. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  117. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  118. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
  119. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  120. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
  121. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  122. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
  123. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  124. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
  125. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  126. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
  127. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  128. package/dist/esm/bundle.js +4 -0
  129. package/dist/esm/bundle.js.map +1 -0
  130. package/dist/esm/constants.js +2 -0
  131. package/dist/esm/constants.js.map +1 -0
  132. package/dist/esm/converter-cli.js +232 -0
  133. package/dist/esm/converter-cli.js.map +1 -0
  134. package/dist/esm/deps-installer/deps-installer.js +44 -0
  135. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  136. package/dist/esm/i3s-attributes-worker.js +16 -0
  137. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  138. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
  139. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  140. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +80 -0
  141. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  142. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
  143. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  144. package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
  145. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  146. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +190 -0
  147. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  148. package/dist/esm/i3s-converter/helpers/geometry-converter.js +895 -0
  149. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  150. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +73 -0
  151. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  152. package/dist/esm/i3s-converter/helpers/node-debug.js +72 -0
  153. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  154. package/dist/esm/i3s-converter/helpers/node-index-document.js +188 -0
  155. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  156. package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
  157. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  158. package/dist/esm/i3s-converter/i3s-converter.js +764 -0
  159. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  160. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  161. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  162. package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
  163. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  164. package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
  165. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  166. package/dist/esm/i3s-converter/json-templates/node.js +80 -0
  167. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  168. package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
  169. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  170. package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
  171. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  172. package/dist/esm/i3s-converter/json-templates/store.js +98 -0
  173. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  174. package/dist/esm/i3s-converter/types.js +2 -0
  175. package/dist/esm/i3s-converter/types.js.map +1 -0
  176. package/dist/esm/i3s-server/app.js +16 -0
  177. package/dist/esm/i3s-server/app.js.map +1 -0
  178. package/dist/esm/i3s-server/bin/www +102 -0
  179. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  180. package/dist/esm/i3s-server/certs/key.pem +27 -0
  181. package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
  182. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  183. package/dist/esm/i3s-server/routes/index.js +16 -0
  184. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  185. package/dist/esm/index.js +3 -0
  186. package/dist/esm/index.js.map +1 -0
  187. package/dist/esm/lib/utils/compress-util.js +168 -0
  188. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  189. package/dist/esm/lib/utils/file-utils.js +87 -0
  190. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  191. package/dist/esm/lib/utils/geometry-utils.js +8 -0
  192. package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
  193. package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
  194. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  195. package/dist/esm/lib/utils/queue.js +15 -0
  196. package/dist/esm/lib/utils/queue.js.map +1 -0
  197. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  198. package/dist/esm/lib/utils/statistic-utills.js +62 -0
  199. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  200. package/dist/esm/lib/utils/write-queue.js +85 -0
  201. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  202. package/dist/esm/pgm-loader.js +15 -0
  203. package/dist/esm/pgm-loader.js.map +1 -0
  204. package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
  205. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  206. package/dist/esm/workers/i3s-attributes-worker.js +7 -0
  207. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  208. package/dist/i3s-attributes-worker.d.ts +45 -0
  209. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  210. package/dist/i3s-attributes-worker.js +9 -0
  211. package/dist/i3s-attributes-worker.js.map +7 -0
  212. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
  213. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  214. package/dist/i3s-converter/helpers/batch-ids-extensions.js +141 -0
  215. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +9 -9
  216. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  217. package/dist/i3s-converter/helpers/coordinate-converter.js +118 -72
  218. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +5 -5
  219. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -1
  220. package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
  221. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  222. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  223. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  224. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +4 -19
  225. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  226. package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
  227. package/dist/i3s-converter/helpers/geometry-converter.d.ts +36 -39
  228. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  229. package/dist/i3s-converter/helpers/geometry-converter.js +1150 -689
  230. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  231. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  232. package/dist/i3s-converter/helpers/gltf-attributes.js +85 -0
  233. package/dist/i3s-converter/helpers/node-debug.d.ts +7 -1
  234. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -1
  235. package/dist/i3s-converter/helpers/node-debug.js +106 -72
  236. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  237. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  238. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  239. package/dist/i3s-converter/helpers/node-pages.d.ts +81 -41
  240. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  241. package/dist/i3s-converter/helpers/node-pages.js +313 -144
  242. package/dist/i3s-converter/i3s-converter.d.ts +60 -113
  243. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  244. package/dist/i3s-converter/i3s-converter.js +858 -951
  245. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  246. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  247. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  248. package/dist/i3s-converter/json-templates/layers.d.ts +5 -30
  249. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  250. package/dist/i3s-converter/json-templates/layers.js +132 -194
  251. package/dist/i3s-converter/json-templates/metadata.js +24 -21
  252. package/dist/i3s-converter/json-templates/node.js +82 -77
  253. package/dist/i3s-converter/json-templates/scene-server.js +30 -27
  254. package/dist/i3s-converter/json-templates/shared-resources.js +116 -122
  255. package/dist/i3s-converter/json-templates/store.js +100 -95
  256. package/dist/i3s-converter/types.d.ts +137 -6
  257. package/dist/i3s-converter/types.d.ts.map +1 -1
  258. package/dist/i3s-converter/types.js +2 -2
  259. package/dist/i3s-server/app.js +2 -9
  260. package/dist/i3s-server/controllers/index-controller.js +16 -24
  261. package/dist/i3s-server/routes/index.js +11 -15
  262. package/dist/index.d.ts +0 -2
  263. package/dist/index.d.ts.map +1 -1
  264. package/dist/index.js +10 -5
  265. package/dist/lib/utils/compress-util.d.ts +12 -20
  266. package/dist/lib/utils/compress-util.d.ts.map +1 -1
  267. package/dist/lib/utils/compress-util.js +238 -160
  268. package/dist/lib/utils/file-utils.d.ts +22 -14
  269. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  270. package/dist/lib/utils/file-utils.js +133 -36
  271. package/dist/lib/utils/geometry-utils.d.ts +9 -0
  272. package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
  273. package/dist/lib/utils/geometry-utils.js +18 -0
  274. package/dist/lib/utils/lod-conversion-utils.d.ts +21 -12
  275. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  276. package/dist/lib/utils/lod-conversion-utils.js +72 -39
  277. package/dist/lib/utils/queue.d.ts +7 -0
  278. package/dist/lib/utils/queue.d.ts.map +1 -0
  279. package/dist/lib/utils/queue.js +18 -0
  280. package/dist/lib/utils/statistic-utills.d.ts +3 -25
  281. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  282. package/dist/lib/utils/statistic-utills.js +58 -67
  283. package/dist/lib/utils/write-queue.d.ts +39 -0
  284. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  285. package/dist/lib/utils/write-queue.js +80 -0
  286. package/dist/pgm-loader.d.ts.map +1 -1
  287. package/dist/pgm-loader.js +23 -14
  288. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  289. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  290. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  291. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  292. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  293. package/dist/workers/i3s-attributes-worker.js +5 -0
  294. package/package.json +32 -24
  295. package/src/3d-tiles-attributes-worker.ts +43 -0
  296. package/src/3d-tiles-converter/3d-tiles-converter.ts +102 -40
  297. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +39 -44
  298. package/src/constants.ts +2 -0
  299. package/src/converter-cli.ts +370 -0
  300. package/src/deps-installer/deps-installer.ts +71 -0
  301. package/src/i3s-attributes-worker.ts +59 -0
  302. package/src/i3s-converter/helpers/batch-ids-extensions.ts +205 -0
  303. package/src/i3s-converter/helpers/coordinate-converter.ts +33 -26
  304. package/src/i3s-converter/helpers/create-scene-server-path.ts +9 -5
  305. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  306. package/src/i3s-converter/helpers/geometry-attributes.ts +98 -47
  307. package/src/i3s-converter/helpers/geometry-converter.ts +1635 -0
  308. package/src/i3s-converter/helpers/gltf-attributes.ts +100 -0
  309. package/src/i3s-converter/helpers/node-debug.ts +68 -16
  310. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  311. package/src/i3s-converter/helpers/node-pages.ts +222 -101
  312. package/src/i3s-converter/i3s-converter.ts +408 -555
  313. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  314. package/src/i3s-converter/json-templates/layers.ts +27 -91
  315. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  316. package/src/i3s-converter/types.ts +156 -5
  317. package/src/index.ts +0 -4
  318. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  319. package/src/lib/utils/file-utils.ts +139 -0
  320. package/src/lib/utils/geometry-utils.ts +14 -0
  321. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  322. package/src/lib/utils/queue.ts +17 -0
  323. package/src/lib/utils/write-queue.ts +110 -0
  324. package/src/pgm-loader.ts +2 -2
  325. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  326. package/src/workers/i3s-attributes-worker.ts +7 -0
  327. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  328. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  329. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  330. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  331. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  332. package/dist/bundle.js.map +0 -1
  333. package/dist/deps-installer/deps-installer.js.map +0 -1
  334. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  335. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  336. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  337. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  338. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  339. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  340. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  341. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  342. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  343. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  344. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  345. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  346. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  347. package/dist/i3s-converter/types.js.map +0 -1
  348. package/dist/i3s-server/app.js.map +0 -1
  349. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  350. package/dist/i3s-server/routes/index.js.map +0 -1
  351. package/dist/index.js.map +0 -1
  352. package/dist/lib/utils/compress-util.js.map +0 -1
  353. package/dist/lib/utils/file-utils.js.map +0 -1
  354. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  355. package/dist/lib/utils/statistic-utills.js.map +0 -1
  356. package/dist/pgm-loader.js.map +0 -1
  357. package/src/deps-installer/deps-installer.d.ts +0 -10
  358. package/src/deps-installer/deps-installer.js +0 -22
  359. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  360. package/src/i3s-converter/helpers/geometry-converter.js +0 -992
  361. package/src/lib/utils/compress-util.d.ts +0 -53
  362. package/src/lib/utils/file-utils.d.ts +0 -43
  363. package/src/lib/utils/file-utils.js +0 -38
  364. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
  365. /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  366. /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  367. /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  368. /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
@@ -2,8 +2,9 @@ import {join} from 'path';
2
2
  import transform from 'json-map-transform';
3
3
  import {METADATA as metadataTemplate} from '../json-templates/metadata';
4
4
  import {NodeInPage} from '@loaders.gl/i3s';
5
+ import {isFileExists, openJson} from '../../lib/utils/file-utils';
6
+ import I3SConverter from '../i3s-converter';
5
7
 
6
- // @ts-nocheck
7
8
  /**
8
9
  * class NodePages - wrapper of nodePages array
9
10
  *
@@ -14,7 +15,7 @@ import {NodeInPage} from '@loaders.gl/i3s';
14
15
  * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);
15
16
  * ...
16
17
  * // push root node
17
- * const parentId = nodePages.push({
18
+ * const parent = await nodePages.push({
18
19
  lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
19
20
  obb: coordinates.obb,
20
21
  children: []
@@ -31,7 +32,7 @@ import {NodeInPage} from '@loaders.gl/i3s';
31
32
  }
32
33
  }
33
34
  };
34
- * const nodeId = this.nodePages.push(nodeInPage, parentId);
35
+ * const node = await this.nodePages.push(nodeInPage, parent.index);
35
36
  * ...
36
37
  * // save all the nodePages in the end of pushing all the nodes
37
38
  * await this.nodePages.save(layers0path);
@@ -39,8 +40,10 @@ import {NodeInPage} from '@loaders.gl/i3s';
39
40
  export default class NodePages {
40
41
  readonly nodesPerPage: number;
41
42
  nodesCounter: number;
42
- writeFile: Function;
43
+ writeFile: (...args) => Promise<null | string>;
44
+ converter: I3SConverter;
43
45
  readonly nodePages: {nodes: NodeInPage[]}[];
46
+ readonly length: number = 0;
44
47
 
45
48
  /**
46
49
  * @constructs
@@ -48,32 +51,233 @@ export default class NodePages {
48
51
  * @param writeFileFunc - function to save one nodePage into a file
49
52
  * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met
50
53
  */
51
- constructor(writeFileFunc, nodesPerPage) {
54
+ constructor(writeFileFunc, nodesPerPage, converter: I3SConverter) {
52
55
  this.nodesPerPage = nodesPerPage;
53
56
  this.nodesCounter = 0;
54
57
  // @ts-expect-error
55
58
  this.nodePages = [{}];
56
59
  this.nodePages[0].nodes = [];
57
60
  this.writeFile = writeFileFunc;
61
+ this.converter = converter;
62
+ this.length = 0;
58
63
  }
59
64
 
60
65
  /**
61
66
  * Setup function to save node pages
62
67
  * @param func - function which should be used to save node pages
63
68
  */
64
- useWriteFunction(func: Function): void {
69
+ useWriteFunction(func: (...args) => Promise<null | string>): void {
65
70
  this.writeFile = func;
66
71
  }
67
72
 
73
+ /**
74
+ * Get file path and file name of the node page with the particular id
75
+ * @param nodePageId - node page id
76
+ * @returns file path and file name
77
+ */
78
+ private getNodePageFileName(nodePageId): {filePath: string; fileName: string} {
79
+ let filePath;
80
+ let fileName;
81
+ if (this.converter.options.slpk) {
82
+ filePath = join(this.converter.layers0Path, 'nodepages');
83
+ fileName = `${nodePageId.toString()}.json`;
84
+ } else {
85
+ filePath = join(this.converter.layers0Path, 'nodepages', nodePageId.toString());
86
+ fileName = 'index.json';
87
+ }
88
+ return {filePath, fileName};
89
+ }
90
+
91
+ /**
92
+ * Load node page from a file on the disk
93
+ * @param nodePageId - node page id
94
+ * @returns - node page data
95
+ */
96
+ private async loadNodePage(nodePageId: number): Promise<{nodes: NodeInPage[]}> {
97
+ const {filePath, fileName} = this.getNodePageFileName(nodePageId);
98
+ const fullName = join(filePath, fileName);
99
+ if (await isFileExists(fullName)) {
100
+ console.log(`load ${fullName}.`); // eslint-disable-line
101
+ return (await openJson(filePath, fileName)) as {nodes: NodeInPage[]};
102
+ } else {
103
+ return {nodes: []};
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Get nodepage id by node id
109
+ * @param id node id
110
+ * @returns node page id
111
+ */
112
+ private getPageIndexByNodeId(id: number): number {
113
+ return Math.floor(id / this.nodesPerPage);
114
+ }
115
+
116
+ /**
117
+ * Get node page data by node id
118
+ * @param id node id
119
+ * @returns node page data
120
+ */
121
+ private async getPageByNodeId(id: number): Promise<{nodes: NodeInPage[]}> {
122
+ const pageIndex = this.getPageIndexByNodeId(id);
123
+ if (this.converter.options.instantNodeWriting) {
124
+ return await this.loadNodePage(pageIndex);
125
+ }
126
+ return this.nodePages[pageIndex];
127
+ }
128
+
68
129
  /**
69
130
  * Get the node by its end-to-end index
70
131
  * @param id - end-to-end index of the node
71
132
  * @return the node object
72
133
  */
73
- getNodeById(id: number): NodeInPage {
74
- const pageIndex = Math.floor(id / this.nodesPerPage);
134
+ async getNodeById(id: number, nodePage?: {nodes: NodeInPage[]}): Promise<NodeInPage> {
75
135
  const nodeIndex = id % this.nodesPerPage;
76
- return this.nodePages[pageIndex].nodes[nodeIndex];
136
+ nodePage = nodePage || (await this.getPageByNodeId(id));
137
+ return nodePage.nodes[nodeIndex];
138
+ }
139
+
140
+ /**
141
+ * Add a child id into the parent node.children array
142
+ * @param parentId - end-to-end parent node index
143
+ * @param childId - end-to-end child node index
144
+ */
145
+ private async addChildRelation(parentId: number | undefined, childId: number): Promise<void> {
146
+ if (parentId === null || parentId === undefined) {
147
+ return;
148
+ }
149
+ const parentNode = await this.getNodeById(parentId);
150
+ parentNode.children?.push(childId);
151
+ await this.saveNode(parentNode);
152
+ }
153
+
154
+ /**
155
+ * Put new node in nodePages array
156
+ * @param node - node object
157
+ * @param parentId - index of parent node
158
+ * @return
159
+ */
160
+ async push(node: NodeInPage, parentId?: number): Promise<NodeInPage> {
161
+ node.index = this.nodesCounter++;
162
+ if (!this.converter.options.instantNodeWriting) {
163
+ let currentNodePage = this.nodePages[this.nodePages.length - 1];
164
+ if (currentNodePage.nodes.length === this.nodesPerPage) {
165
+ currentNodePage = {nodes: []};
166
+ this.nodePages.push(currentNodePage);
167
+ }
168
+ currentNodePage.nodes.push(node);
169
+ }
170
+ await this.addChildRelation(parentId, node.index);
171
+ NodePages.updateResourceInMesh(node);
172
+ await this.saveNode(node);
173
+ return node;
174
+ }
175
+
176
+ /**
177
+ * Save node to the file on the disk
178
+ * @param node - node data
179
+ */
180
+ async saveNode(node: NodeInPage): Promise<void> {
181
+ if (!this.converter.options.instantNodeWriting) {
182
+ return;
183
+ } else {
184
+ const nodePageIndex = this.getPageIndexByNodeId(node.index);
185
+ const nodePage = await this.getPageByNodeId(node.index);
186
+ const {filePath, fileName} = this.getNodePageFileName(nodePageIndex);
187
+ const nodeToUpdate = await this.getNodeById(node.index, nodePage);
188
+ if (nodeToUpdate) {
189
+ NodePages.updateAll(nodeToUpdate, node);
190
+ } else {
191
+ nodePage.nodes.push(node);
192
+ }
193
+ const nodePageStr = JSON.stringify(nodePage);
194
+ if (this.converter.options.slpk) {
195
+ await this.converter.writeQueue.enqueue(
196
+ {
197
+ archiveKey: `nodePages/${nodePageIndex.toString()}.json.gz`,
198
+ writePromise: () =>
199
+ this.writeFile(filePath, nodePageStr, fileName, true, this.converter.compressList)
200
+ },
201
+ true
202
+ );
203
+ } else {
204
+ await this.converter.writeQueue.enqueue(
205
+ {
206
+ writePromise: () => this.writeFile(filePath, nodePageStr)
207
+ },
208
+ true
209
+ );
210
+ }
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Save metadata file (for slpk only)
216
+ */
217
+ async saveMetadata(): Promise<void> {
218
+ const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());
219
+ const compress = false;
220
+ await this.converter.writeQueue.enqueue({
221
+ archiveKey: 'metadata.json',
222
+ writePromise: () =>
223
+ this.writeFile(
224
+ this.converter.layers0Path,
225
+ JSON.stringify(metadata),
226
+ 'metadata.json',
227
+ compress
228
+ )
229
+ });
230
+ }
231
+
232
+ /**
233
+ * Save all the node pages
234
+ * Run this method when all nodes is pushed in nodePages
235
+ */
236
+ async save(): Promise<void> {
237
+ if (this.converter.options.instantNodeWriting) {
238
+ await this.saveMetadata();
239
+ return;
240
+ }
241
+ if (this.converter.options.slpk) {
242
+ for (const [index, nodePage] of this.nodePages.entries()) {
243
+ const nodePageStr = JSON.stringify(nodePage);
244
+ const slpkPath = join(this.converter.layers0Path, 'nodepages');
245
+ await this.converter.writeQueue.enqueue({
246
+ archiveKey: `nodePages/${index.toString()}.json.gz`,
247
+ writePromise: () => this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
248
+ });
249
+ }
250
+ await this.saveMetadata();
251
+ } else {
252
+ for (const [index, nodePage] of this.nodePages.entries()) {
253
+ const nodePageStr = JSON.stringify(nodePage);
254
+ const nodePagePath = join(this.converter.layers0Path, 'nodepages', index.toString());
255
+ await this.converter.writeQueue.enqueue({
256
+ writePromise: () => this.writeFile(nodePagePath, nodePageStr)
257
+ });
258
+ }
259
+ }
260
+ }
261
+
262
+ /**
263
+ * Update resource index in node.mesh object
264
+ * @param node - node object
265
+ */
266
+ static updateResourceInMesh(node: NodeInPage): void {
267
+ if (node.mesh && isFinite(node.index)) {
268
+ node.mesh.geometry.resource = node.index;
269
+ }
270
+ }
271
+
272
+ /**
273
+ * Update all fields in the node excluding id
274
+ * @param node - node object
275
+ * @param data - NodeInPage data to replace original data
276
+ */
277
+ static updateAll(node: NodeInPage, data: NodeInPage): NodeInPage {
278
+ Object.assign(node, data, {index: node.index});
279
+ NodePages.updateResourceInMesh(node);
280
+ return node;
77
281
  }
78
282
 
79
283
  /**
@@ -81,8 +285,7 @@ export default class NodePages {
81
285
  * @param id - end-to-end index of the node
82
286
  * @param materialId - id from scene layer materialDefinitions
83
287
  */
84
- updateMaterialByNodeId(id: number, materialId: number): void {
85
- const node = this.getNodeById(id);
288
+ static updateMaterialByNodeId(node: NodeInPage, materialId: number): void {
86
289
  if (!node.mesh) {
87
290
  return;
88
291
  }
@@ -97,8 +300,7 @@ export default class NodePages {
97
300
  * @param id - end-to-end index of the node
98
301
  * @param vertexCount - vertex count for particular node
99
302
  */
100
- updateVertexCountByNodeId(id: number, vertexCount: number): void {
101
- const node = this.getNodeById(id);
303
+ static updateVertexCountByNodeId(node: NodeInPage, vertexCount: number): void {
102
304
  if (!node.mesh) {
103
305
  return;
104
306
  }
@@ -107,11 +309,10 @@ export default class NodePages {
107
309
 
108
310
  /**
109
311
  * Update resource in node.mesh.attribute object by node id
110
- * @param id - end-to-end index of the node
312
+ * @param node - node object
111
313
  */
112
- updateNodeAttributeByNodeId(id: number): void {
113
- const node = this.getNodeById(id);
114
- if (!node.mesh) {
314
+ static updateNodeAttributeByNodeId(node: NodeInPage): void {
315
+ if (!node.mesh || !node.index) {
115
316
  return;
116
317
  }
117
318
  node.mesh.attribute.resource = node.index;
@@ -119,11 +320,10 @@ export default class NodePages {
119
320
 
120
321
  /**
121
322
  * Update featureCount in node.mesh.geometry object by node id
122
- * @param id - end-to-end index of the node
323
+ * @param node - node object
123
324
  * @param featureCount - features count of the node
124
325
  */
125
- updateFeatureCountByNodeId(id: number, featureCount: number): void {
126
- const node = this.getNodeById(id);
326
+ static updateFeatureCountByNodeId(node: NodeInPage, featureCount: number): void {
127
327
  if (!node.mesh) {
128
328
  return;
129
329
  }
@@ -132,92 +332,13 @@ export default class NodePages {
132
332
 
133
333
  /**
134
334
  * Update texelCountHint in node.mesh.material object by node id
135
- * @param id - end-to-end index of the node
335
+ * @param node - node object
136
336
  * @param texelCountHint - texelCountHint of particular node
137
337
  */
138
- updateTexelCountHintByNodeId(id: number, texelCountHint: number): void {
139
- const node = this.getNodeById(id);
338
+ static updateTexelCountHintByNodeId(node: NodeInPage, texelCountHint: number): void {
140
339
  if (!node.mesh || !node.mesh.material) {
141
340
  return;
142
341
  }
143
342
  node.mesh.material.texelCountHint = texelCountHint;
144
343
  }
145
-
146
- /**
147
- * Add a child id into the parent node.children array
148
- * @param parentId - end-to-end parent node index
149
- * @param childId - end-to-end child node index
150
- */
151
- addChildRelation(parentId: number | undefined, childId: number): void {
152
- if (parentId === null || parentId === undefined) {
153
- return;
154
- }
155
- const parentNode = this.getNodeById(parentId);
156
- parentNode.children?.push(childId);
157
- }
158
-
159
- /**
160
- * Update resource index in node.mesh object
161
- * @param node - node object
162
- */
163
- updateResourceInMesh(node: NodeInPage): void {
164
- if (node.mesh) {
165
- node.mesh.geometry.resource = node.index;
166
- }
167
- }
168
-
169
- /**
170
- * Put new node in nodePages array
171
- * @param node - node object
172
- * @param parentId - index of parent node
173
- * @return
174
- */
175
- push(node: NodeInPage, parentId?: number): number {
176
- let currentNodePage = this.nodePages[this.nodePages.length - 1];
177
- if (currentNodePage.nodes.length === this.nodesPerPage) {
178
- currentNodePage = {nodes: []};
179
- this.nodePages.push(currentNodePage);
180
- }
181
- node.index = this.nodesCounter++;
182
- currentNodePage.nodes.push(node);
183
- this.addChildRelation(parentId, node.index);
184
- this.updateResourceInMesh(node);
185
- return node.index;
186
- }
187
-
188
- /**
189
- * Save all the node pages
190
- * Run this method when all nodes is pushed in nodePages
191
- * @param {string} layers0Path - path of layer
192
- * @param {Object} fileMap - fileMap which keep info for slpk archive
193
- * @param {boolean} slpk
194
- * @return {promise}
195
- */
196
- async save(layers0Path: string, fileMap: Object, slpk: boolean = false): Promise<void> {
197
- const promises: Promise<any>[] = [];
198
- if (slpk) {
199
- for (const [index, nodePage] of this.nodePages.entries()) {
200
- const nodePageStr = JSON.stringify(nodePage);
201
- const slpkPath = join(layers0Path, 'nodepages');
202
- promises.push(this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`));
203
- fileMap[`nodePages/${index.toString()}.json.gz`] = `${slpkPath}.json.gz`;
204
- }
205
- const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());
206
- const compress = false;
207
- fileMap['metadata.json'] = await this.writeFile(
208
- layers0Path,
209
- JSON.stringify(metadata),
210
- 'metadata.json',
211
- compress
212
- );
213
- } else {
214
- for (const [index, nodePage] of this.nodePages.entries()) {
215
- const nodePageStr = JSON.stringify(nodePage);
216
- const nodePagePath = join(layers0Path, 'nodepages', index.toString());
217
- promises.push(this.writeFile(nodePagePath, nodePageStr));
218
- }
219
- }
220
-
221
- await Promise.all(promises);
222
- }
223
344
  }