@loaders.gl/tile-converter 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (407) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  3. package/dist/3d-tiles-attributes-worker.js +3 -0
  4. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +90 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +273 -231
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +79 -18
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +269 -236
  11. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
  12. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  13. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
  14. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  15. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  16. package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
  17. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  18. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  19. package/dist/3d-tiles-converter/json-templates/tileset.js +42 -36
  20. package/dist/bundle.d.ts +2 -0
  21. package/dist/bundle.d.ts.map +1 -0
  22. package/dist/bundle.js +2 -2
  23. package/dist/constants.d.ts +2 -0
  24. package/dist/constants.d.ts.map +1 -0
  25. package/dist/constants.js +4 -0
  26. package/dist/converter-cli.d.ts +2 -0
  27. package/dist/converter-cli.d.ts.map +1 -0
  28. package/dist/converter-cli.js +280 -0
  29. package/dist/converter.min.js +186 -190
  30. package/dist/deps-installer/deps-installer.d.ts +11 -3
  31. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  32. package/dist/deps-installer/deps-installer.js +60 -23
  33. package/dist/dist.min.js +63496 -0
  34. package/dist/es5/3d-tiles-attributes-worker.js +25 -0
  35. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  36. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +470 -0
  37. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  38. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +301 -0
  39. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  40. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
  41. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  42. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  43. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  44. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
  45. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  46. package/dist/es5/bundle.js +6 -0
  47. package/dist/es5/bundle.js.map +1 -0
  48. package/dist/es5/constants.js +9 -0
  49. package/dist/es5/constants.js.map +1 -0
  50. package/dist/es5/converter-cli.js +289 -0
  51. package/dist/es5/converter-cli.js.map +1 -0
  52. package/dist/es5/deps-installer/deps-installer.js +123 -0
  53. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  54. package/dist/es5/i3s-attributes-worker.js +25 -0
  55. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  56. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
  57. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  58. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +90 -0
  59. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  60. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
  61. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  62. package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
  63. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  64. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
  65. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  66. package/dist/es5/i3s-converter/helpers/geometry-converter.js +1173 -0
  67. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  68. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +83 -0
  69. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  70. package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
  71. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  72. package/dist/es5/i3s-converter/helpers/node-index-document.js +492 -0
  73. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  74. package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
  75. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  76. package/dist/es5/i3s-converter/i3s-converter.js +1519 -0
  77. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  78. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  79. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  80. package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
  81. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  82. package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
  83. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  84. package/dist/es5/i3s-converter/json-templates/node.js +99 -0
  85. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  86. package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
  87. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  88. package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
  89. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  90. package/dist/es5/i3s-converter/json-templates/store.js +107 -0
  91. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  92. package/dist/es5/i3s-converter/types.js +2 -0
  93. package/dist/es5/i3s-converter/types.js.map +1 -0
  94. package/dist/es5/i3s-server/app.js +18 -0
  95. package/dist/es5/i3s-server/app.js.map +1 -0
  96. package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
  97. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  98. package/dist/es5/i3s-server/routes/index.js +37 -0
  99. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  100. package/dist/es5/index.js +21 -0
  101. package/dist/es5/index.js.map +1 -0
  102. package/dist/es5/lib/utils/compress-util.js +346 -0
  103. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  104. package/dist/es5/lib/utils/file-utils.js +208 -0
  105. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  106. package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
  107. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  108. package/dist/es5/lib/utils/queue.js +47 -0
  109. package/dist/es5/lib/utils/queue.js.map +1 -0
  110. package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
  111. package/dist/es5/lib/utils/statistic-utills.js +147 -0
  112. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  113. package/dist/es5/lib/utils/write-queue.js +214 -0
  114. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  115. package/dist/es5/pgm-loader.js +41 -0
  116. package/dist/es5/pgm-loader.js.map +1 -0
  117. package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
  118. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  119. package/dist/es5/workers/i3s-attributes-worker.js +30 -0
  120. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  121. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  122. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  123. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +248 -0
  124. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  125. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +224 -0
  126. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  127. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
  128. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  129. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
  130. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  131. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
  132. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  133. package/dist/esm/bundle.js +4 -0
  134. package/dist/esm/bundle.js.map +1 -0
  135. package/dist/esm/constants.js +2 -0
  136. package/dist/esm/constants.js.map +1 -0
  137. package/dist/esm/converter-cli.js +232 -0
  138. package/dist/esm/converter-cli.js.map +1 -0
  139. package/dist/esm/deps-installer/deps-installer.js +44 -0
  140. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  141. package/dist/esm/i3s-attributes-worker.js +16 -0
  142. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  143. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
  144. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  145. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +80 -0
  146. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  147. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
  148. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  149. package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
  150. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  151. package/{src → dist/esm}/i3s-converter/helpers/geometry-attributes.js +80 -106
  152. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  153. package/dist/esm/i3s-converter/helpers/geometry-converter.js +887 -0
  154. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  155. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +76 -0
  156. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  157. package/{src → dist/esm}/i3s-converter/helpers/node-debug.js +20 -41
  158. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  159. package/dist/esm/i3s-converter/helpers/node-index-document.js +188 -0
  160. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  161. package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
  162. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  163. package/dist/esm/i3s-converter/i3s-converter.js +771 -0
  164. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  165. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  166. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  167. package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
  168. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  169. package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
  170. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  171. package/dist/esm/i3s-converter/json-templates/node.js +80 -0
  172. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  173. package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
  174. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  175. package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
  176. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  177. package/dist/esm/i3s-converter/json-templates/store.js +98 -0
  178. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  179. package/dist/esm/i3s-converter/types.js +2 -0
  180. package/dist/esm/i3s-converter/types.js.map +1 -0
  181. package/dist/esm/i3s-server/app.js +16 -0
  182. package/dist/esm/i3s-server/app.js.map +1 -0
  183. package/dist/esm/i3s-server/bin/www +102 -0
  184. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  185. package/dist/esm/i3s-server/certs/key.pem +27 -0
  186. package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
  187. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  188. package/dist/esm/i3s-server/routes/index.js +16 -0
  189. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  190. package/dist/esm/index.js +3 -0
  191. package/dist/esm/index.js.map +1 -0
  192. package/dist/esm/lib/utils/compress-util.js +168 -0
  193. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  194. package/dist/esm/lib/utils/file-utils.js +87 -0
  195. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  196. package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
  197. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  198. package/dist/esm/lib/utils/queue.js +15 -0
  199. package/dist/esm/lib/utils/queue.js.map +1 -0
  200. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  201. package/dist/esm/lib/utils/statistic-utills.js +62 -0
  202. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  203. package/dist/esm/lib/utils/write-queue.js +85 -0
  204. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  205. package/dist/esm/pgm-loader.js +15 -0
  206. package/dist/esm/pgm-loader.js.map +1 -0
  207. package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
  208. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  209. package/dist/esm/workers/i3s-attributes-worker.js +7 -0
  210. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  211. package/dist/i3s-attributes-worker.d.ts +37 -0
  212. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  213. package/dist/i3s-attributes-worker.js +9 -0
  214. package/dist/i3s-attributes-worker.js.map +7 -0
  215. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -0
  216. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  217. package/dist/i3s-converter/helpers/batch-ids-extensions.js +141 -0
  218. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
  219. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  220. package/dist/i3s-converter/helpers/coordinate-converter.js +120 -42
  221. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  222. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  223. package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
  224. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  225. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  226. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  227. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  228. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  229. package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
  230. package/dist/i3s-converter/helpers/geometry-converter.d.ts +36 -35
  231. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  232. package/dist/i3s-converter/helpers/geometry-converter.js +1149 -650
  233. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  234. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  235. package/dist/i3s-converter/helpers/gltf-attributes.js +88 -0
  236. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  237. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  238. package/dist/i3s-converter/helpers/node-debug.js +106 -74
  239. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  240. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  241. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  242. package/dist/i3s-converter/helpers/node-pages.d.ts +125 -113
  243. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  244. package/dist/i3s-converter/helpers/node-pages.js +313 -133
  245. package/dist/i3s-converter/i3s-converter.d.ts +267 -0
  246. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  247. package/dist/i3s-converter/i3s-converter.js +860 -861
  248. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  249. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  250. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  251. package/dist/i3s-converter/json-templates/layers.d.ts +70 -0
  252. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  253. package/dist/i3s-converter/json-templates/layers.js +138 -190
  254. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  255. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  256. package/dist/i3s-converter/json-templates/metadata.js +25 -22
  257. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  258. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  259. package/dist/i3s-converter/json-templates/node.js +88 -79
  260. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  261. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  262. package/dist/i3s-converter/json-templates/scene-server.js +31 -28
  263. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  264. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  265. package/dist/i3s-converter/json-templates/shared-resources.js +124 -125
  266. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  267. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  268. package/dist/i3s-converter/json-templates/store.js +100 -95
  269. package/dist/i3s-converter/types.d.ts +145 -0
  270. package/dist/i3s-converter/types.d.ts.map +1 -0
  271. package/dist/i3s-converter/types.js +2 -0
  272. package/dist/i3s-server/app.d.ts +3 -0
  273. package/dist/i3s-server/app.d.ts.map +1 -0
  274. package/dist/i3s-server/app.js +2 -9
  275. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  276. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  277. package/dist/i3s-server/controllers/index-controller.js +16 -24
  278. package/dist/i3s-server/routes/index.d.ts +3 -0
  279. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  280. package/dist/i3s-server/routes/index.js +11 -15
  281. package/dist/index.d.ts +3 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +10 -5
  284. package/dist/lib/utils/compress-util.d.ts +45 -0
  285. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  286. package/dist/lib/utils/compress-util.js +238 -160
  287. package/dist/lib/utils/file-utils.d.ts +22 -14
  288. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  289. package/dist/lib/utils/file-utils.js +133 -36
  290. package/dist/lib/utils/lod-conversion-utils.d.ts +21 -12
  291. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  292. package/dist/lib/utils/lod-conversion-utils.js +72 -39
  293. package/dist/lib/utils/queue.d.ts +7 -0
  294. package/dist/lib/utils/queue.d.ts.map +1 -0
  295. package/dist/lib/utils/queue.js +18 -0
  296. package/dist/lib/utils/statistic-utills.d.ts +3 -25
  297. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  298. package/dist/lib/utils/statistic-utills.js +58 -67
  299. package/dist/lib/utils/write-queue.d.ts +39 -0
  300. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  301. package/dist/lib/utils/write-queue.js +80 -0
  302. package/dist/pgm-loader.d.ts +6 -0
  303. package/dist/pgm-loader.d.ts.map +1 -0
  304. package/dist/pgm-loader.js +23 -14
  305. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  306. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  307. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  308. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  309. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  310. package/dist/workers/i3s-attributes-worker.js +5 -0
  311. package/package.json +35 -24
  312. package/src/3d-tiles-attributes-worker.ts +43 -0
  313. package/src/3d-tiles-converter/3d-tiles-converter.ts +124 -59
  314. package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +71 -38
  315. package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
  316. package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
  317. package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
  318. package/src/constants.ts +2 -0
  319. package/src/converter-cli.ts +370 -0
  320. package/src/deps-installer/deps-installer.ts +71 -0
  321. package/src/i3s-attributes-worker.ts +50 -0
  322. package/src/i3s-converter/helpers/batch-ids-extensions.ts +206 -0
  323. package/src/i3s-converter/helpers/coordinate-converter.ts +87 -27
  324. package/src/i3s-converter/helpers/create-scene-server-path.ts +29 -0
  325. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  326. package/src/i3s-converter/helpers/geometry-attributes.ts +267 -0
  327. package/src/i3s-converter/helpers/geometry-converter.ts +1608 -0
  328. package/src/i3s-converter/helpers/gltf-attributes.ts +103 -0
  329. package/src/i3s-converter/helpers/node-debug.ts +146 -0
  330. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  331. package/src/i3s-converter/helpers/node-pages.ts +344 -0
  332. package/src/i3s-converter/i3s-converter.ts +557 -627
  333. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  334. package/src/i3s-converter/json-templates/layers.ts +137 -0
  335. package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
  336. package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
  337. package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
  338. package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +17 -17
  339. package/src/i3s-converter/types.ts +165 -0
  340. package/src/index.ts +0 -4
  341. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  342. package/src/lib/utils/file-utils.ts +139 -0
  343. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  344. package/src/lib/utils/queue.ts +17 -0
  345. package/src/lib/utils/write-queue.ts +110 -0
  346. package/src/pgm-loader.ts +3 -3
  347. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  348. package/src/workers/i3s-attributes-worker.ts +7 -0
  349. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  350. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  351. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  352. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  353. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  354. package/dist/bundle.js.map +0 -1
  355. package/dist/deps-installer/deps-installer.js.map +0 -1
  356. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  357. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  358. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  359. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  360. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  361. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  362. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  363. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  364. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  365. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  366. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  367. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  368. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  369. package/dist/i3s-server/app.js.map +0 -1
  370. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  371. package/dist/i3s-server/routes/index.js.map +0 -1
  372. package/dist/index.js.map +0 -1
  373. package/dist/lib/geoid-height-model.d.ts +0 -41
  374. package/dist/lib/geoid-height-model.js +0 -140
  375. package/dist/lib/geoid-height-model.js.map +0 -1
  376. package/dist/lib/pgm-parser.d.ts +0 -14
  377. package/dist/lib/pgm-parser.js +0 -183
  378. package/dist/lib/pgm-parser.js.map +0 -1
  379. package/dist/lib/utils/compress-util.js.map +0 -1
  380. package/dist/lib/utils/compress-utils.d.ts +0 -53
  381. package/dist/lib/utils/file-utils.js.map +0 -1
  382. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  383. package/dist/lib/utils/statistic-utills.js.map +0 -1
  384. package/dist/pgm-loader.js.map +0 -1
  385. package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  386. package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  387. package/src/deps-installer/deps-installer.d.ts +0 -10
  388. package/src/deps-installer/deps-installer.js +0 -22
  389. package/src/i3s-converter/helpers/create-scene-server-path.js +0 -25
  390. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -40
  391. package/src/i3s-converter/helpers/geometry-converter.js +0 -915
  392. package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
  393. package/src/i3s-converter/helpers/node-pages.js +0 -208
  394. package/src/i3s-converter/json-templates/layers.js +0 -199
  395. package/src/lib/geoid-height-model.d.ts +0 -41
  396. package/src/lib/geoid-height-model.js +0 -239
  397. package/src/lib/pgm-parser.d.ts +0 -14
  398. package/src/lib/pgm-parser.js +0 -179
  399. package/src/lib/utils/compress-utils.d.ts +0 -53
  400. package/src/lib/utils/file-utils.d.ts +0 -43
  401. package/src/lib/utils/file-utils.js +0 -38
  402. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
  403. /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  404. /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  405. /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  406. /package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
  407. /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
@@ -0,0 +1,519 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _path = require("path");
15
+ var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
16
+ var _metadata = require("../json-templates/metadata");
17
+ var _fileUtils = require("../../lib/utils/file-utils");
18
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
19
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
21
+ var NodePages = function () {
22
+ function NodePages(writeFileFunc, nodesPerPage, converter) {
23
+ (0, _classCallCheck2.default)(this, NodePages);
24
+ (0, _defineProperty2.default)(this, "nodesPerPage", void 0);
25
+ (0, _defineProperty2.default)(this, "nodesCounter", void 0);
26
+ (0, _defineProperty2.default)(this, "writeFile", void 0);
27
+ (0, _defineProperty2.default)(this, "converter", void 0);
28
+ (0, _defineProperty2.default)(this, "nodePages", void 0);
29
+ (0, _defineProperty2.default)(this, "length", 0);
30
+ this.nodesPerPage = nodesPerPage;
31
+ this.nodesCounter = 0;
32
+ this.nodePages = [{}];
33
+ this.nodePages[0].nodes = [];
34
+ this.writeFile = writeFileFunc;
35
+ this.converter = converter;
36
+ this.length = 0;
37
+ }
38
+ (0, _createClass2.default)(NodePages, [{
39
+ key: "useWriteFunction",
40
+ value: function useWriteFunction(func) {
41
+ this.writeFile = func;
42
+ }
43
+ }, {
44
+ key: "getNodePageFileName",
45
+ value: function getNodePageFileName(nodePageId) {
46
+ var filePath;
47
+ var fileName;
48
+ if (this.converter.options.slpk) {
49
+ filePath = (0, _path.join)(this.converter.layers0Path, 'nodepages');
50
+ fileName = "".concat(nodePageId.toString(), ".json");
51
+ } else {
52
+ filePath = (0, _path.join)(this.converter.layers0Path, 'nodepages', nodePageId.toString());
53
+ fileName = 'index.json';
54
+ }
55
+ return {
56
+ filePath: filePath,
57
+ fileName: fileName
58
+ };
59
+ }
60
+ }, {
61
+ key: "loadNodePage",
62
+ value: function () {
63
+ var _loadNodePage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(nodePageId) {
64
+ var _this$getNodePageFile, filePath, fileName, fullName;
65
+ return _regenerator.default.wrap(function _callee$(_context) {
66
+ while (1) switch (_context.prev = _context.next) {
67
+ case 0:
68
+ _this$getNodePageFile = this.getNodePageFileName(nodePageId), filePath = _this$getNodePageFile.filePath, fileName = _this$getNodePageFile.fileName;
69
+ fullName = (0, _path.join)(filePath, fileName);
70
+ _context.next = 4;
71
+ return (0, _fileUtils.isFileExists)(fullName);
72
+ case 4:
73
+ if (!_context.sent) {
74
+ _context.next = 11;
75
+ break;
76
+ }
77
+ console.log("load ".concat(fullName, "."));
78
+ _context.next = 8;
79
+ return (0, _fileUtils.openJson)(filePath, fileName);
80
+ case 8:
81
+ return _context.abrupt("return", _context.sent);
82
+ case 11:
83
+ return _context.abrupt("return", {
84
+ nodes: []
85
+ });
86
+ case 12:
87
+ case "end":
88
+ return _context.stop();
89
+ }
90
+ }, _callee, this);
91
+ }));
92
+ function loadNodePage(_x) {
93
+ return _loadNodePage.apply(this, arguments);
94
+ }
95
+ return loadNodePage;
96
+ }()
97
+ }, {
98
+ key: "getPageIndexByNodeId",
99
+ value: function getPageIndexByNodeId(id) {
100
+ return Math.floor(id / this.nodesPerPage);
101
+ }
102
+ }, {
103
+ key: "getPageByNodeId",
104
+ value: function () {
105
+ var _getPageByNodeId = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(id) {
106
+ var pageIndex;
107
+ return _regenerator.default.wrap(function _callee2$(_context2) {
108
+ while (1) switch (_context2.prev = _context2.next) {
109
+ case 0:
110
+ pageIndex = this.getPageIndexByNodeId(id);
111
+ if (!this.converter.options.instantNodeWriting) {
112
+ _context2.next = 5;
113
+ break;
114
+ }
115
+ _context2.next = 4;
116
+ return this.loadNodePage(pageIndex);
117
+ case 4:
118
+ return _context2.abrupt("return", _context2.sent);
119
+ case 5:
120
+ return _context2.abrupt("return", this.nodePages[pageIndex]);
121
+ case 6:
122
+ case "end":
123
+ return _context2.stop();
124
+ }
125
+ }, _callee2, this);
126
+ }));
127
+ function getPageByNodeId(_x2) {
128
+ return _getPageByNodeId.apply(this, arguments);
129
+ }
130
+ return getPageByNodeId;
131
+ }()
132
+ }, {
133
+ key: "getNodeById",
134
+ value: function () {
135
+ var _getNodeById = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(id, nodePage) {
136
+ var nodeIndex;
137
+ return _regenerator.default.wrap(function _callee3$(_context3) {
138
+ while (1) switch (_context3.prev = _context3.next) {
139
+ case 0:
140
+ nodeIndex = id % this.nodesPerPage;
141
+ _context3.t0 = nodePage;
142
+ if (_context3.t0) {
143
+ _context3.next = 6;
144
+ break;
145
+ }
146
+ _context3.next = 5;
147
+ return this.getPageByNodeId(id);
148
+ case 5:
149
+ _context3.t0 = _context3.sent;
150
+ case 6:
151
+ nodePage = _context3.t0;
152
+ return _context3.abrupt("return", nodePage.nodes[nodeIndex]);
153
+ case 8:
154
+ case "end":
155
+ return _context3.stop();
156
+ }
157
+ }, _callee3, this);
158
+ }));
159
+ function getNodeById(_x3, _x4) {
160
+ return _getNodeById.apply(this, arguments);
161
+ }
162
+ return getNodeById;
163
+ }()
164
+ }, {
165
+ key: "addChildRelation",
166
+ value: function () {
167
+ var _addChildRelation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(parentId, childId) {
168
+ var _parentNode$children;
169
+ var parentNode;
170
+ return _regenerator.default.wrap(function _callee4$(_context4) {
171
+ while (1) switch (_context4.prev = _context4.next) {
172
+ case 0:
173
+ if (!(parentId === null || parentId === undefined)) {
174
+ _context4.next = 2;
175
+ break;
176
+ }
177
+ return _context4.abrupt("return");
178
+ case 2:
179
+ _context4.next = 4;
180
+ return this.getNodeById(parentId);
181
+ case 4:
182
+ parentNode = _context4.sent;
183
+ (_parentNode$children = parentNode.children) === null || _parentNode$children === void 0 ? void 0 : _parentNode$children.push(childId);
184
+ _context4.next = 8;
185
+ return this.saveNode(parentNode);
186
+ case 8:
187
+ case "end":
188
+ return _context4.stop();
189
+ }
190
+ }, _callee4, this);
191
+ }));
192
+ function addChildRelation(_x5, _x6) {
193
+ return _addChildRelation.apply(this, arguments);
194
+ }
195
+ return addChildRelation;
196
+ }()
197
+ }, {
198
+ key: "push",
199
+ value: function () {
200
+ var _push = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(node, parentId) {
201
+ var currentNodePage;
202
+ return _regenerator.default.wrap(function _callee5$(_context5) {
203
+ while (1) switch (_context5.prev = _context5.next) {
204
+ case 0:
205
+ node.index = this.nodesCounter++;
206
+ if (!this.converter.options.instantNodeWriting) {
207
+ currentNodePage = this.nodePages[this.nodePages.length - 1];
208
+ if (currentNodePage.nodes.length === this.nodesPerPage) {
209
+ currentNodePage = {
210
+ nodes: []
211
+ };
212
+ this.nodePages.push(currentNodePage);
213
+ }
214
+ currentNodePage.nodes.push(node);
215
+ }
216
+ _context5.next = 4;
217
+ return this.addChildRelation(parentId, node.index);
218
+ case 4:
219
+ NodePages.updateResourceInMesh(node);
220
+ _context5.next = 7;
221
+ return this.saveNode(node);
222
+ case 7:
223
+ return _context5.abrupt("return", node);
224
+ case 8:
225
+ case "end":
226
+ return _context5.stop();
227
+ }
228
+ }, _callee5, this);
229
+ }));
230
+ function push(_x7, _x8) {
231
+ return _push.apply(this, arguments);
232
+ }
233
+ return push;
234
+ }()
235
+ }, {
236
+ key: "saveNode",
237
+ value: function () {
238
+ var _saveNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(node) {
239
+ var _this = this;
240
+ var nodePageIndex, nodePage, _this$getNodePageFile2, filePath, fileName, nodeToUpdate, nodePageStr;
241
+ return _regenerator.default.wrap(function _callee6$(_context6) {
242
+ while (1) switch (_context6.prev = _context6.next) {
243
+ case 0:
244
+ if (this.converter.options.instantNodeWriting) {
245
+ _context6.next = 4;
246
+ break;
247
+ }
248
+ return _context6.abrupt("return");
249
+ case 4:
250
+ nodePageIndex = this.getPageIndexByNodeId(node.index);
251
+ _context6.next = 7;
252
+ return this.getPageByNodeId(node.index);
253
+ case 7:
254
+ nodePage = _context6.sent;
255
+ _this$getNodePageFile2 = this.getNodePageFileName(nodePageIndex), filePath = _this$getNodePageFile2.filePath, fileName = _this$getNodePageFile2.fileName;
256
+ _context6.next = 11;
257
+ return this.getNodeById(node.index, nodePage);
258
+ case 11:
259
+ nodeToUpdate = _context6.sent;
260
+ if (nodeToUpdate) {
261
+ NodePages.updateAll(nodeToUpdate, node);
262
+ } else {
263
+ nodePage.nodes.push(node);
264
+ }
265
+ nodePageStr = JSON.stringify(nodePage);
266
+ if (!this.converter.options.slpk) {
267
+ _context6.next = 19;
268
+ break;
269
+ }
270
+ _context6.next = 17;
271
+ return this.converter.writeQueue.enqueue({
272
+ archiveKey: "nodePages/".concat(nodePageIndex.toString(), ".json.gz"),
273
+ writePromise: function writePromise() {
274
+ return _this.writeFile(filePath, nodePageStr, fileName, true, _this.converter.compressList);
275
+ }
276
+ }, true);
277
+ case 17:
278
+ _context6.next = 21;
279
+ break;
280
+ case 19:
281
+ _context6.next = 21;
282
+ return this.converter.writeQueue.enqueue({
283
+ writePromise: function writePromise() {
284
+ return _this.writeFile(filePath, nodePageStr);
285
+ }
286
+ }, true);
287
+ case 21:
288
+ case "end":
289
+ return _context6.stop();
290
+ }
291
+ }, _callee6, this);
292
+ }));
293
+ function saveNode(_x9) {
294
+ return _saveNode.apply(this, arguments);
295
+ }
296
+ return saveNode;
297
+ }()
298
+ }, {
299
+ key: "saveMetadata",
300
+ value: function () {
301
+ var _saveMetadata = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7() {
302
+ var _this2 = this;
303
+ var metadata, compress;
304
+ return _regenerator.default.wrap(function _callee7$(_context7) {
305
+ while (1) switch (_context7.prev = _context7.next) {
306
+ case 0:
307
+ metadata = (0, _jsonMapTransform.default)({
308
+ nodeCount: this.nodesCounter
309
+ }, (0, _metadata.METADATA)());
310
+ compress = false;
311
+ _context7.next = 4;
312
+ return this.converter.writeQueue.enqueue({
313
+ archiveKey: 'metadata.json',
314
+ writePromise: function writePromise() {
315
+ return _this2.writeFile(_this2.converter.layers0Path, JSON.stringify(metadata), 'metadata.json', compress);
316
+ }
317
+ });
318
+ case 4:
319
+ case "end":
320
+ return _context7.stop();
321
+ }
322
+ }, _callee7, this);
323
+ }));
324
+ function saveMetadata() {
325
+ return _saveMetadata.apply(this, arguments);
326
+ }
327
+ return saveMetadata;
328
+ }()
329
+ }, {
330
+ key: "save",
331
+ value: function () {
332
+ var _save = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8() {
333
+ var _this3 = this;
334
+ var _iterator, _step, _loop, _iterator2, _step2, _loop2;
335
+ return _regenerator.default.wrap(function _callee8$(_context10) {
336
+ while (1) switch (_context10.prev = _context10.next) {
337
+ case 0:
338
+ if (!this.converter.options.instantNodeWriting) {
339
+ _context10.next = 4;
340
+ break;
341
+ }
342
+ _context10.next = 3;
343
+ return this.saveMetadata();
344
+ case 3:
345
+ return _context10.abrupt("return");
346
+ case 4:
347
+ if (!this.converter.options.slpk) {
348
+ _context10.next = 25;
349
+ break;
350
+ }
351
+ _iterator = _createForOfIteratorHelper(this.nodePages.entries());
352
+ _context10.prev = 6;
353
+ _loop = _regenerator.default.mark(function _loop() {
354
+ var _step$value, index, nodePage, nodePageStr, slpkPath;
355
+ return _regenerator.default.wrap(function _loop$(_context8) {
356
+ while (1) switch (_context8.prev = _context8.next) {
357
+ case 0:
358
+ _step$value = (0, _slicedToArray2.default)(_step.value, 2), index = _step$value[0], nodePage = _step$value[1];
359
+ nodePageStr = JSON.stringify(nodePage);
360
+ slpkPath = (0, _path.join)(_this3.converter.layers0Path, 'nodepages');
361
+ _context8.next = 5;
362
+ return _this3.converter.writeQueue.enqueue({
363
+ archiveKey: "nodePages/".concat(index.toString(), ".json.gz"),
364
+ writePromise: function writePromise() {
365
+ return _this3.writeFile(slpkPath, nodePageStr, "".concat(index.toString(), ".json"));
366
+ }
367
+ });
368
+ case 5:
369
+ case "end":
370
+ return _context8.stop();
371
+ }
372
+ }, _loop);
373
+ });
374
+ _iterator.s();
375
+ case 9:
376
+ if ((_step = _iterator.n()).done) {
377
+ _context10.next = 13;
378
+ break;
379
+ }
380
+ return _context10.delegateYield(_loop(), "t0", 11);
381
+ case 11:
382
+ _context10.next = 9;
383
+ break;
384
+ case 13:
385
+ _context10.next = 18;
386
+ break;
387
+ case 15:
388
+ _context10.prev = 15;
389
+ _context10.t1 = _context10["catch"](6);
390
+ _iterator.e(_context10.t1);
391
+ case 18:
392
+ _context10.prev = 18;
393
+ _iterator.f();
394
+ return _context10.finish(18);
395
+ case 21:
396
+ _context10.next = 23;
397
+ return this.saveMetadata();
398
+ case 23:
399
+ _context10.next = 41;
400
+ break;
401
+ case 25:
402
+ _iterator2 = _createForOfIteratorHelper(this.nodePages.entries());
403
+ _context10.prev = 26;
404
+ _loop2 = _regenerator.default.mark(function _loop2() {
405
+ var _step2$value, index, nodePage, nodePageStr, nodePagePath;
406
+ return _regenerator.default.wrap(function _loop2$(_context9) {
407
+ while (1) switch (_context9.prev = _context9.next) {
408
+ case 0:
409
+ _step2$value = (0, _slicedToArray2.default)(_step2.value, 2), index = _step2$value[0], nodePage = _step2$value[1];
410
+ nodePageStr = JSON.stringify(nodePage);
411
+ nodePagePath = (0, _path.join)(_this3.converter.layers0Path, 'nodepages', index.toString());
412
+ _context9.next = 5;
413
+ return _this3.converter.writeQueue.enqueue({
414
+ writePromise: function writePromise() {
415
+ return _this3.writeFile(nodePagePath, nodePageStr);
416
+ }
417
+ });
418
+ case 5:
419
+ case "end":
420
+ return _context9.stop();
421
+ }
422
+ }, _loop2);
423
+ });
424
+ _iterator2.s();
425
+ case 29:
426
+ if ((_step2 = _iterator2.n()).done) {
427
+ _context10.next = 33;
428
+ break;
429
+ }
430
+ return _context10.delegateYield(_loop2(), "t2", 31);
431
+ case 31:
432
+ _context10.next = 29;
433
+ break;
434
+ case 33:
435
+ _context10.next = 38;
436
+ break;
437
+ case 35:
438
+ _context10.prev = 35;
439
+ _context10.t3 = _context10["catch"](26);
440
+ _iterator2.e(_context10.t3);
441
+ case 38:
442
+ _context10.prev = 38;
443
+ _iterator2.f();
444
+ return _context10.finish(38);
445
+ case 41:
446
+ case "end":
447
+ return _context10.stop();
448
+ }
449
+ }, _callee8, this, [[6, 15, 18, 21], [26, 35, 38, 41]]);
450
+ }));
451
+ function save() {
452
+ return _save.apply(this, arguments);
453
+ }
454
+ return save;
455
+ }()
456
+ }], [{
457
+ key: "updateResourceInMesh",
458
+ value: function updateResourceInMesh(node) {
459
+ if (node.mesh && isFinite(node.index)) {
460
+ node.mesh.geometry.resource = node.index;
461
+ }
462
+ }
463
+ }, {
464
+ key: "updateAll",
465
+ value: function updateAll(node, data) {
466
+ Object.assign(node, data, {
467
+ index: node.index
468
+ });
469
+ NodePages.updateResourceInMesh(node);
470
+ return node;
471
+ }
472
+ }, {
473
+ key: "updateMaterialByNodeId",
474
+ value: function updateMaterialByNodeId(node, materialId) {
475
+ if (!node.mesh) {
476
+ return;
477
+ }
478
+ node.mesh.material = {
479
+ definition: materialId,
480
+ resource: node.index
481
+ };
482
+ }
483
+ }, {
484
+ key: "updateVertexCountByNodeId",
485
+ value: function updateVertexCountByNodeId(node, vertexCount) {
486
+ if (!node.mesh) {
487
+ return;
488
+ }
489
+ node.mesh.geometry.vertexCount = vertexCount;
490
+ }
491
+ }, {
492
+ key: "updateNodeAttributeByNodeId",
493
+ value: function updateNodeAttributeByNodeId(node) {
494
+ if (!node.mesh || !node.index) {
495
+ return;
496
+ }
497
+ node.mesh.attribute.resource = node.index;
498
+ }
499
+ }, {
500
+ key: "updateFeatureCountByNodeId",
501
+ value: function updateFeatureCountByNodeId(node, featureCount) {
502
+ if (!node.mesh) {
503
+ return;
504
+ }
505
+ node.mesh.geometry.featureCount = featureCount;
506
+ }
507
+ }, {
508
+ key: "updateTexelCountHintByNodeId",
509
+ value: function updateTexelCountHintByNodeId(node, texelCountHint) {
510
+ if (!node.mesh || !node.mesh.material) {
511
+ return;
512
+ }
513
+ node.mesh.material.texelCountHint = texelCountHint;
514
+ }
515
+ }]);
516
+ return NodePages;
517
+ }();
518
+ exports.default = NodePages;
519
+ //# sourceMappingURL=node-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-pages.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_metadata","_fileUtils","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodePages","writeFileFunc","nodesPerPage","converter","_classCallCheck2","default","_defineProperty2","nodesCounter","nodePages","nodes","writeFile","_createClass2","key","useWriteFunction","func","getNodePageFileName","nodePageId","filePath","fileName","options","slpk","join","layers0Path","concat","_loadNodePage","_asyncToGenerator2","_regenerator","mark","_callee","_this$getNodePageFile","fullName","wrap","_callee$","_context","prev","isFileExists","sent","console","log","openJson","abrupt","stop","loadNodePage","_x","apply","arguments","getPageIndexByNodeId","id","Math","floor","_getPageByNodeId","_callee2","pageIndex","_callee2$","_context2","instantNodeWriting","getPageByNodeId","_x2","_getNodeById","_callee3","nodePage","nodeIndex","_callee3$","_context3","t0","getNodeById","_x3","_x4","_addChildRelation","_callee4","parentId","childId","_parentNode$children","parentNode","_callee4$","_context4","undefined","children","push","saveNode","addChildRelation","_x5","_x6","_push","_callee5","node","currentNodePage","_callee5$","_context5","index","updateResourceInMesh","_x7","_x8","_saveNode","_callee6","_this","nodePageIndex","_this$getNodePageFile2","nodeToUpdate","nodePageStr","_callee6$","_context6","updateAll","JSON","stringify","writeQueue","enqueue","archiveKey","writePromise","compressList","_x9","_saveMetadata","_callee7","_this2","metadata","compress","_callee7$","_context7","transform","nodeCount","metadataTemplate","saveMetadata","_save","_callee8","_this3","_iterator","_step","_loop","_iterator2","_step2","_loop2","_callee8$","_context10","entries","_step$value","slpkPath","_loop$","_context8","_slicedToArray2","delegateYield","t1","finish","_step2$value","nodePagePath","_loop2$","_context9","t3","save","mesh","isFinite","geometry","resource","data","assign","updateMaterialByNodeId","materialId","material","definition","updateVertexCountByNodeId","vertexCount","updateNodeAttributeByNodeId","attribute","updateFeatureCountByNodeId","featureCount","updateTexelCountHintByNodeId","texelCountHint","exports"],"sources":["../../../../src/i3s-converter/helpers/node-pages.ts"],"sourcesContent":["import {join} from 'path';\nimport transform from 'json-map-transform';\nimport {METADATA as metadataTemplate} from '../json-templates/metadata';\nimport {NodeInPage} from '@loaders.gl/i3s';\nimport {isFileExists, openJson} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\n\n/**\n * class NodePages - wrapper of nodePages array\n *\n * @example\n * import {writeFile} from './helpers/write-file';\n *\n * // create an instance of the class\n * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n * ...\n * // push root node\n * const parent = await nodePages.push({\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: []\n });\n * ...\n * // push node with parent relation\n * const nodeInPage = {\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: [],\n mesh: {\n geometry: {\n definition: 0\n }\n }\n };\n * const node = await this.nodePages.push(nodeInPage, parent.index);\n * ...\n * // save all the nodePages in the end of pushing all the nodes\n * await this.nodePages.save(layers0path);\n */\nexport default class NodePages {\n readonly nodesPerPage: number;\n nodesCounter: number;\n writeFile: (...args) => Promise<null | string>;\n converter: I3SConverter;\n readonly nodePages: {nodes: NodeInPage[]}[];\n readonly length: number = 0;\n\n /**\n * @constructs\n * Create a nodePages instance.\n * @param writeFileFunc - function to save one nodePage into a file\n * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met\n */\n constructor(writeFileFunc, nodesPerPage, converter: I3SConverter) {\n this.nodesPerPage = nodesPerPage;\n this.nodesCounter = 0;\n // @ts-expect-error\n this.nodePages = [{}];\n this.nodePages[0].nodes = [];\n this.writeFile = writeFileFunc;\n this.converter = converter;\n this.length = 0;\n }\n\n /**\n * Setup function to save node pages\n * @param func - function which should be used to save node pages\n */\n useWriteFunction(func: (...args) => Promise<null | string>): void {\n this.writeFile = func;\n }\n\n /**\n * Get file path and file name of the node page with the particular id\n * @param nodePageId - node page id\n * @returns file path and file name\n */\n private getNodePageFileName(nodePageId): {filePath: string; fileName: string} {\n let filePath;\n let fileName;\n if (this.converter.options.slpk) {\n filePath = join(this.converter.layers0Path, 'nodepages');\n fileName = `${nodePageId.toString()}.json`;\n } else {\n filePath = join(this.converter.layers0Path, 'nodepages', nodePageId.toString());\n fileName = 'index.json';\n }\n return {filePath, fileName};\n }\n\n /**\n * Load node page from a file on the disk\n * @param nodePageId - node page id\n * @returns - node page data\n */\n private async loadNodePage(nodePageId: number): Promise<{nodes: NodeInPage[]}> {\n const {filePath, fileName} = this.getNodePageFileName(nodePageId);\n const fullName = join(filePath, fileName);\n if (await isFileExists(fullName)) {\n console.log(`load ${fullName}.`); // eslint-disable-line\n return (await openJson(filePath, fileName)) as {nodes: NodeInPage[]};\n } else {\n return {nodes: []};\n }\n }\n\n /**\n * Get nodepage id by node id\n * @param id node id\n * @returns node page id\n */\n private getPageIndexByNodeId(id: number): number {\n return Math.floor(id / this.nodesPerPage);\n }\n\n /**\n * Get node page data by node id\n * @param id node id\n * @returns node page data\n */\n private async getPageByNodeId(id: number): Promise<{nodes: NodeInPage[]}> {\n const pageIndex = this.getPageIndexByNodeId(id);\n if (this.converter.options.instantNodeWriting) {\n return await this.loadNodePage(pageIndex);\n }\n return this.nodePages[pageIndex];\n }\n\n /**\n * Get the node by its end-to-end index\n * @param id - end-to-end index of the node\n * @return the node object\n */\n async getNodeById(id: number, nodePage?: {nodes: NodeInPage[]}): Promise<NodeInPage> {\n const nodeIndex = id % this.nodesPerPage;\n nodePage = nodePage || (await this.getPageByNodeId(id));\n return nodePage.nodes[nodeIndex];\n }\n\n /**\n * Add a child id into the parent node.children array\n * @param parentId - end-to-end parent node index\n * @param childId - end-to-end child node index\n */\n private async addChildRelation(parentId: number | undefined, childId: number): Promise<void> {\n if (parentId === null || parentId === undefined) {\n return;\n }\n const parentNode = await this.getNodeById(parentId);\n parentNode.children?.push(childId);\n await this.saveNode(parentNode);\n }\n\n /**\n * Put new node in nodePages array\n * @param node - node object\n * @param parentId - index of parent node\n * @return\n */\n async push(node: NodeInPage, parentId?: number): Promise<NodeInPage> {\n node.index = this.nodesCounter++;\n if (!this.converter.options.instantNodeWriting) {\n let currentNodePage = this.nodePages[this.nodePages.length - 1];\n if (currentNodePage.nodes.length === this.nodesPerPage) {\n currentNodePage = {nodes: []};\n this.nodePages.push(currentNodePage);\n }\n currentNodePage.nodes.push(node);\n }\n await this.addChildRelation(parentId, node.index);\n NodePages.updateResourceInMesh(node);\n await this.saveNode(node);\n return node;\n }\n\n /**\n * Save node to the file on the disk\n * @param node - node data\n */\n async saveNode(node: NodeInPage): Promise<void> {\n if (!this.converter.options.instantNodeWriting) {\n return;\n } else {\n const nodePageIndex = this.getPageIndexByNodeId(node.index);\n const nodePage = await this.getPageByNodeId(node.index);\n const {filePath, fileName} = this.getNodePageFileName(nodePageIndex);\n const nodeToUpdate = await this.getNodeById(node.index, nodePage);\n if (nodeToUpdate) {\n NodePages.updateAll(nodeToUpdate, node);\n } else {\n nodePage.nodes.push(node);\n }\n const nodePageStr = JSON.stringify(nodePage);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodePages/${nodePageIndex.toString()}.json.gz`,\n writePromise: () =>\n this.writeFile(filePath, nodePageStr, fileName, true, this.converter.compressList)\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {\n writePromise: () => this.writeFile(filePath, nodePageStr)\n },\n true\n );\n }\n }\n }\n\n /**\n * Save metadata file (for slpk only)\n */\n async saveMetadata(): Promise<void> {\n const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());\n const compress = false;\n await this.converter.writeQueue.enqueue({\n archiveKey: 'metadata.json',\n writePromise: () =>\n this.writeFile(\n this.converter.layers0Path,\n JSON.stringify(metadata),\n 'metadata.json',\n compress\n )\n });\n }\n\n /**\n * Save all the node pages\n * Run this method when all nodes is pushed in nodePages\n */\n async save(): Promise<void> {\n if (this.converter.options.instantNodeWriting) {\n await this.saveMetadata();\n return;\n }\n if (this.converter.options.slpk) {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const slpkPath = join(this.converter.layers0Path, 'nodepages');\n await this.converter.writeQueue.enqueue({\n archiveKey: `nodePages/${index.toString()}.json.gz`,\n writePromise: () => this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)\n });\n }\n await this.saveMetadata();\n } else {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const nodePagePath = join(this.converter.layers0Path, 'nodepages', index.toString());\n await this.converter.writeQueue.enqueue({\n writePromise: () => this.writeFile(nodePagePath, nodePageStr)\n });\n }\n }\n }\n\n /**\n * Update resource index in node.mesh object\n * @param node - node object\n */\n static updateResourceInMesh(node: NodeInPage): void {\n if (node.mesh && isFinite(node.index)) {\n node.mesh.geometry.resource = node.index;\n }\n }\n\n /**\n * Update all fields in the node excluding id\n * @param node - node object\n * @param data - NodeInPage data to replace original data\n */\n static updateAll(node: NodeInPage, data: NodeInPage): NodeInPage {\n Object.assign(node, data, {index: node.index});\n NodePages.updateResourceInMesh(node);\n return node;\n }\n\n /**\n * Update material in node.mesh object by node id\n * @param id - end-to-end index of the node\n * @param materialId - id from scene layer materialDefinitions\n */\n static updateMaterialByNodeId(node: NodeInPage, materialId: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.material = {\n definition: materialId,\n resource: node.index\n };\n }\n\n /**\n * Update vertexCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param vertexCount - vertex count for particular node\n */\n static updateVertexCountByNodeId(node: NodeInPage, vertexCount: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.vertexCount = vertexCount;\n }\n\n /**\n * Update resource in node.mesh.attribute object by node id\n * @param node - node object\n */\n static updateNodeAttributeByNodeId(node: NodeInPage): void {\n if (!node.mesh || !node.index) {\n return;\n }\n node.mesh.attribute.resource = node.index;\n }\n\n /**\n * Update featureCount in node.mesh.geometry object by node id\n * @param node - node object\n * @param featureCount - features count of the node\n */\n static updateFeatureCountByNodeId(node: NodeInPage, featureCount: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.featureCount = featureCount;\n }\n\n /**\n * Update texelCountHint in node.mesh.material object by node id\n * @param node - node object\n * @param texelCountHint - texelCountHint of particular node\n */\n static updateTexelCountHintByNodeId(node: NodeInPage, texelCountHint: number): void {\n if (!node.mesh || !node.mesh.material) {\n return;\n }\n node.mesh.material.texelCountHint = texelCountHint;\n }\n}\n"],"mappings":"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"}