@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,492 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.NodeIndexDocument = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _path = require("path");
14
+ var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
15
+ var _uuid = require("uuid");
16
+ var _fileUtils = require("../../lib/utils/file-utils");
17
+ var _node = require("../json-templates/node");
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ 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; } } }; }
21
+ 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); }
22
+ 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; }
23
+ var NodeIndexDocument = function () {
24
+ function NodeIndexDocument(id, converter) {
25
+ (0, _classCallCheck2.default)(this, NodeIndexDocument);
26
+ (0, _defineProperty2.default)(this, "id", void 0);
27
+ (0, _defineProperty2.default)(this, "inPageId", void 0);
28
+ (0, _defineProperty2.default)(this, "data", null);
29
+ (0, _defineProperty2.default)(this, "children", []);
30
+ (0, _defineProperty2.default)(this, "converter", void 0);
31
+ this.inPageId = id;
32
+ this.id = id === 0 ? 'root' : id.toString();
33
+ this.converter = converter;
34
+ }
35
+ (0, _createClass2.default)(NodeIndexDocument, [{
36
+ key: "addData",
37
+ value: function () {
38
+ var _addData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
39
+ return _regenerator.default.wrap(function _callee$(_context) {
40
+ while (1) switch (_context.prev = _context.next) {
41
+ case 0:
42
+ if (!this.converter.options.instantNodeWriting) {
43
+ _context.next = 5;
44
+ break;
45
+ }
46
+ _context.next = 3;
47
+ return this.write(data);
48
+ case 3:
49
+ _context.next = 6;
50
+ break;
51
+ case 5:
52
+ this.data = data;
53
+ case 6:
54
+ return _context.abrupt("return", this);
55
+ case 7:
56
+ case "end":
57
+ return _context.stop();
58
+ }
59
+ }, _callee, this);
60
+ }));
61
+ function addData(_x) {
62
+ return _addData.apply(this, arguments);
63
+ }
64
+ return addData;
65
+ }()
66
+ }, {
67
+ key: "addChildren",
68
+ value: function () {
69
+ var _addChildren = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(childNodes) {
70
+ var newChildren, _iterator, _step, node, nodeData, data, _data$children;
71
+ return _regenerator.default.wrap(function _callee2$(_context2) {
72
+ while (1) switch (_context2.prev = _context2.next) {
73
+ case 0:
74
+ newChildren = [];
75
+ _iterator = _createForOfIteratorHelper(childNodes);
76
+ _context2.prev = 2;
77
+ _iterator.s();
78
+ case 4:
79
+ if ((_step = _iterator.n()).done) {
80
+ _context2.next = 12;
81
+ break;
82
+ }
83
+ node = _step.value;
84
+ _context2.next = 8;
85
+ return node.load();
86
+ case 8:
87
+ nodeData = _context2.sent;
88
+ newChildren.push({
89
+ id: node.id,
90
+ href: "../".concat(node.id),
91
+ obb: nodeData.obb,
92
+ mbs: nodeData.mbs
93
+ });
94
+ case 10:
95
+ _context2.next = 4;
96
+ break;
97
+ case 12:
98
+ _context2.next = 17;
99
+ break;
100
+ case 14:
101
+ _context2.prev = 14;
102
+ _context2.t0 = _context2["catch"](2);
103
+ _iterator.e(_context2.t0);
104
+ case 17:
105
+ _context2.prev = 17;
106
+ _iterator.f();
107
+ return _context2.finish(17);
108
+ case 20:
109
+ this.children = this.children.concat(childNodes);
110
+ data = this.data;
111
+ if (!this.converter.options.instantNodeWriting) {
112
+ _context2.next = 26;
113
+ break;
114
+ }
115
+ _context2.next = 25;
116
+ return this.load();
117
+ case 25:
118
+ data = _context2.sent;
119
+ case 26:
120
+ if (data) {
121
+ data.children = (_data$children = data.children) !== null && _data$children !== void 0 ? _data$children : [];
122
+ data.children = data.children.concat(newChildren);
123
+ }
124
+ if (!(this.converter.options.instantNodeWriting && data)) {
125
+ _context2.next = 30;
126
+ break;
127
+ }
128
+ _context2.next = 30;
129
+ return this.write(data);
130
+ case 30:
131
+ case "end":
132
+ return _context2.stop();
133
+ }
134
+ }, _callee2, this, [[2, 14, 17, 20]]);
135
+ }));
136
+ function addChildren(_x2) {
137
+ return _addChildren.apply(this, arguments);
138
+ }
139
+ return addChildren;
140
+ }()
141
+ }, {
142
+ key: "addNeighbors",
143
+ value: function () {
144
+ var _addNeighbors = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
145
+ var nodeData, _iterator2, _step2, _childNodeData$neighb, _nodeData$children, childNode, childNodeData, _iterator3, _step3, neighbor;
146
+ return _regenerator.default.wrap(function _callee3$(_context3) {
147
+ while (1) switch (_context3.prev = _context3.next) {
148
+ case 0:
149
+ _context3.next = 2;
150
+ return this.load();
151
+ case 2:
152
+ nodeData = _context3.sent;
153
+ _iterator2 = _createForOfIteratorHelper(this.children);
154
+ _context3.prev = 4;
155
+ _iterator2.s();
156
+ case 6:
157
+ if ((_step2 = _iterator2.n()).done) {
158
+ _context3.next = 43;
159
+ break;
160
+ }
161
+ childNode = _step2.value;
162
+ _context3.next = 10;
163
+ return childNode.load();
164
+ case 10:
165
+ childNodeData = _context3.sent;
166
+ childNodeData.neighbors = (_childNodeData$neighb = childNodeData.neighbors) !== null && _childNodeData$neighb !== void 0 ? _childNodeData$neighb : [];
167
+ if (!(Number(nodeData === null || nodeData === void 0 ? void 0 : (_nodeData$children = nodeData.children) === null || _nodeData$children === void 0 ? void 0 : _nodeData$children.length) < 1000)) {
168
+ _context3.next = 33;
169
+ break;
170
+ }
171
+ _iterator3 = _createForOfIteratorHelper(nodeData.children || []);
172
+ _context3.prev = 14;
173
+ _iterator3.s();
174
+ case 16:
175
+ if ((_step3 = _iterator3.n()).done) {
176
+ _context3.next = 23;
177
+ break;
178
+ }
179
+ neighbor = _step3.value;
180
+ if (!(childNode.id === neighbor.id)) {
181
+ _context3.next = 20;
182
+ break;
183
+ }
184
+ return _context3.abrupt("continue", 21);
185
+ case 20:
186
+ childNodeData.neighbors.push(_objectSpread({}, neighbor));
187
+ case 21:
188
+ _context3.next = 16;
189
+ break;
190
+ case 23:
191
+ _context3.next = 28;
192
+ break;
193
+ case 25:
194
+ _context3.prev = 25;
195
+ _context3.t0 = _context3["catch"](14);
196
+ _iterator3.e(_context3.t0);
197
+ case 28:
198
+ _context3.prev = 28;
199
+ _iterator3.f();
200
+ return _context3.finish(28);
201
+ case 31:
202
+ _context3.next = 35;
203
+ break;
204
+ case 33:
205
+ console.warn("Node ".concat(childNode.id, ": neighbors attribute is omited because of large number of neigbors"));
206
+ delete childNodeData.neighbors;
207
+ case 35:
208
+ if (!(this.converter.options.instantNodeWriting && childNodeData)) {
209
+ _context3.next = 38;
210
+ break;
211
+ }
212
+ _context3.next = 38;
213
+ return childNode.write(childNodeData);
214
+ case 38:
215
+ _context3.next = 40;
216
+ return childNode.save();
217
+ case 40:
218
+ childNode.flush();
219
+ case 41:
220
+ _context3.next = 6;
221
+ break;
222
+ case 43:
223
+ _context3.next = 48;
224
+ break;
225
+ case 45:
226
+ _context3.prev = 45;
227
+ _context3.t1 = _context3["catch"](4);
228
+ _iterator2.e(_context3.t1);
229
+ case 48:
230
+ _context3.prev = 48;
231
+ _iterator2.f();
232
+ return _context3.finish(48);
233
+ case 51:
234
+ case "end":
235
+ return _context3.stop();
236
+ }
237
+ }, _callee3, this, [[4, 45, 48, 51], [14, 25, 28, 31]]);
238
+ }));
239
+ function addNeighbors() {
240
+ return _addNeighbors.apply(this, arguments);
241
+ }
242
+ return addNeighbors;
243
+ }()
244
+ }, {
245
+ key: "save",
246
+ value: function () {
247
+ var _save = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
248
+ return _regenerator.default.wrap(function _callee4$(_context4) {
249
+ while (1) switch (_context4.prev = _context4.next) {
250
+ case 0:
251
+ if (!this.data) {
252
+ _context4.next = 3;
253
+ break;
254
+ }
255
+ _context4.next = 3;
256
+ return this.write(this.data);
257
+ case 3:
258
+ case "end":
259
+ return _context4.stop();
260
+ }
261
+ }, _callee4, this);
262
+ }));
263
+ function save() {
264
+ return _save.apply(this, arguments);
265
+ }
266
+ return save;
267
+ }()
268
+ }, {
269
+ key: "write",
270
+ value: function () {
271
+ var _write = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(node) {
272
+ var _this = this;
273
+ var path;
274
+ return _regenerator.default.wrap(function _callee5$(_context5) {
275
+ while (1) switch (_context5.prev = _context5.next) {
276
+ case 0:
277
+ path = (0, _path.join)(this.converter.layers0Path, 'nodes', this.id);
278
+ if (!this.converter.options.slpk) {
279
+ _context5.next = 6;
280
+ break;
281
+ }
282
+ _context5.next = 4;
283
+ return this.converter.writeQueue.enqueue({
284
+ archiveKey: "nodes/".concat(this.id, "/3dNodeIndexDocument.json.gz"),
285
+ writePromise: function writePromise() {
286
+ return (0, _fileUtils.writeFileForSlpk)(path, JSON.stringify(node), '3dNodeIndexDocument.json', true, _this.converter.compressList);
287
+ }
288
+ }, true);
289
+ case 4:
290
+ _context5.next = 8;
291
+ break;
292
+ case 6:
293
+ _context5.next = 8;
294
+ return this.converter.writeQueue.enqueue({
295
+ writePromise: function writePromise() {
296
+ return (0, _fileUtils.writeFile)(path, JSON.stringify(node));
297
+ }
298
+ }, true);
299
+ case 8:
300
+ case "end":
301
+ return _context5.stop();
302
+ }
303
+ }, _callee5, this);
304
+ }));
305
+ function write(_x3) {
306
+ return _write.apply(this, arguments);
307
+ }
308
+ return write;
309
+ }()
310
+ }, {
311
+ key: "load",
312
+ value: function () {
313
+ var _load = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
314
+ var path, parentNodePath, parentNodeFileName;
315
+ return _regenerator.default.wrap(function _callee6$(_context6) {
316
+ while (1) switch (_context6.prev = _context6.next) {
317
+ case 0:
318
+ if (!this.data) {
319
+ _context6.next = 2;
320
+ break;
321
+ }
322
+ return _context6.abrupt("return", this.data);
323
+ case 2:
324
+ path = this.id;
325
+ parentNodePath = (0, _path.join)(this.converter.layers0Path, 'nodes', path);
326
+ parentNodeFileName = 'index.json';
327
+ if (this.converter.options.slpk) {
328
+ parentNodeFileName = '3dNodeIndexDocument.json';
329
+ }
330
+ _context6.next = 8;
331
+ return (0, _fileUtils.openJson)(parentNodePath, parentNodeFileName);
332
+ case 8:
333
+ return _context6.abrupt("return", _context6.sent);
334
+ case 9:
335
+ case "end":
336
+ return _context6.stop();
337
+ }
338
+ }, _callee6, this);
339
+ }));
340
+ function load() {
341
+ return _load.apply(this, arguments);
342
+ }
343
+ return load;
344
+ }()
345
+ }, {
346
+ key: "flush",
347
+ value: function flush() {
348
+ this.data = null;
349
+ }
350
+ }], [{
351
+ key: "createRootNode",
352
+ value: function () {
353
+ var _createRootNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(boundingVolumes, converter) {
354
+ var rootData, rootNode;
355
+ return _regenerator.default.wrap(function _callee7$(_context7) {
356
+ while (1) switch (_context7.prev = _context7.next) {
357
+ case 0:
358
+ rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);
359
+ _context7.next = 3;
360
+ return new NodeIndexDocument(0, converter).addData(rootData);
361
+ case 3:
362
+ rootNode = _context7.sent;
363
+ return _context7.abrupt("return", rootNode);
364
+ case 5:
365
+ case "end":
366
+ return _context7.stop();
367
+ }
368
+ }, _callee7);
369
+ }));
370
+ function createRootNode(_x4, _x5) {
371
+ return _createRootNode.apply(this, arguments);
372
+ }
373
+ return createRootNode;
374
+ }()
375
+ }, {
376
+ key: "createNode",
377
+ value: function () {
378
+ var _createNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(parentNode, boundingVolumes, lodSelection, nodeInPage, resources, converter) {
379
+ var data, node;
380
+ return _regenerator.default.wrap(function _callee8$(_context8) {
381
+ while (1) switch (_context8.prev = _context8.next) {
382
+ case 0:
383
+ _context8.next = 2;
384
+ return NodeIndexDocument.createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources);
385
+ case 2:
386
+ data = _context8.sent;
387
+ _context8.next = 5;
388
+ return new NodeIndexDocument(nodeInPage.index, converter).addData(data);
389
+ case 5:
390
+ node = _context8.sent;
391
+ return _context8.abrupt("return", node);
392
+ case 7:
393
+ case "end":
394
+ return _context8.stop();
395
+ }
396
+ }, _callee8);
397
+ }));
398
+ function createNode(_x6, _x7, _x8, _x9, _x10, _x11) {
399
+ return _createNode.apply(this, arguments);
400
+ }
401
+ return createNode;
402
+ }()
403
+ }, {
404
+ key: "createRootNodeIndexDocument",
405
+ value: function createRootNodeIndexDocument(boundingVolumes) {
406
+ var root0data = _objectSpread(_objectSpread({
407
+ version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
408
+ id: 'root',
409
+ level: 0,
410
+ lodSelection: [{
411
+ metricType: 'maxScreenThresholdSQ',
412
+ maxError: 0
413
+ }, {
414
+ metricType: 'maxScreenThreshold',
415
+ maxError: 0
416
+ }]
417
+ }, boundingVolumes), {}, {
418
+ children: []
419
+ });
420
+ return (0, _jsonMapTransform.default)(root0data, (0, _node.NODE)());
421
+ }
422
+ }, {
423
+ key: "createNodeIndexDocument",
424
+ value: function () {
425
+ var _createNodeIndexDocument = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
426
+ var texture, attributes, nodeId, parentNodeData, nodeData, node, _parentNode$converter, _parentNode$converter2, index, folderName;
427
+ return _regenerator.default.wrap(function _callee9$(_context9) {
428
+ while (1) switch (_context9.prev = _context9.next) {
429
+ case 0:
430
+ texture = resources.texture, attributes = resources.attributes;
431
+ nodeId = nodeInPage.index;
432
+ _context9.next = 4;
433
+ return parentNode.load();
434
+ case 4:
435
+ parentNodeData = _context9.sent;
436
+ nodeData = _objectSpread(_objectSpread({
437
+ version: parentNodeData.version,
438
+ id: nodeId.toString(),
439
+ level: parentNodeData.level + 1
440
+ }, boundingVolumes), {}, {
441
+ lodSelection: lodSelection,
442
+ parentNode: {
443
+ id: parentNode.id,
444
+ href: "../".concat(parentNode.id),
445
+ mbs: parentNodeData.mbs,
446
+ obb: parentNodeData.obb
447
+ },
448
+ children: [],
449
+ neighbors: []
450
+ });
451
+ node = (0, _jsonMapTransform.default)(nodeData, (0, _node.NODE)());
452
+ if (nodeInPage.mesh) {
453
+ node.geometryData = [{
454
+ href: './geometries/0'
455
+ }];
456
+ node.sharedResource = {
457
+ href: './shared'
458
+ };
459
+ if (texture) {
460
+ node.textureData = [{
461
+ href: './textures/0'
462
+ }, {
463
+ href: './textures/1'
464
+ }];
465
+ }
466
+ if (attributes && attributes.length && (_parentNode$converter = parentNode.converter.layers0) !== null && _parentNode$converter !== void 0 && (_parentNode$converter2 = _parentNode$converter.attributeStorageInfo) !== null && _parentNode$converter2 !== void 0 && _parentNode$converter2.length) {
467
+ node.attributeData = [];
468
+ for (index = 0; index < attributes.length; index++) {
469
+ folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
470
+ node.attributeData.push({
471
+ href: "./attributes/".concat(folderName, "/0")
472
+ });
473
+ }
474
+ }
475
+ }
476
+ return _context9.abrupt("return", node);
477
+ case 9:
478
+ case "end":
479
+ return _context9.stop();
480
+ }
481
+ }, _callee9);
482
+ }));
483
+ function createNodeIndexDocument(_x12, _x13, _x14, _x15, _x16) {
484
+ return _createNodeIndexDocument.apply(this, arguments);
485
+ }
486
+ return createNodeIndexDocument;
487
+ }()
488
+ }]);
489
+ return NodeIndexDocument;
490
+ }();
491
+ exports.NodeIndexDocument = NodeIndexDocument;
492
+ //# sourceMappingURL=node-index-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-index-document.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_uuid","_fileUtils","_node","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodeIndexDocument","id","converter","_classCallCheck2","inPageId","_createClass2","_addData","_asyncToGenerator2","_regenerator","mark","_callee","data","wrap","_callee$","_context","prev","options","instantNodeWriting","write","abrupt","stop","addData","_x","_addChildren","_callee2","childNodes","newChildren","_iterator","_step","node","nodeData","_data$children","_callee2$","_context2","load","sent","href","concat","obb","mbs","t0","finish","children","addChildren","_x2","_addNeighbors","_callee3","_iterator2","_step2","_childNodeData$neighb","_nodeData$children","childNode","childNodeData","_iterator3","_step3","neighbor","_callee3$","_context3","neighbors","Number","console","warn","save","flush","t1","addNeighbors","_save","_callee4","_callee4$","_context4","_write","_callee5","_this","path","_callee5$","_context5","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","_x3","_load","_callee6","parentNodePath","parentNodeFileName","_callee6$","_context6","openJson","_createRootNode","_callee7","boundingVolumes","rootData","rootNode","_callee7$","_context7","createRootNodeIndexDocument","createRootNode","_x4","_x5","_createNode","_callee8","parentNode","lodSelection","nodeInPage","resources","_callee8$","_context8","createNodeIndexDocument","index","createNode","_x6","_x7","_x8","_x9","_x10","_x11","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","_createNodeIndexDocument","_callee9","texture","attributes","nodeId","parentNodeData","_parentNode$converter","_parentNode$converter2","folderName","_callee9$","_context9","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","_x12","_x13","_x14","_x15","_x16","exports"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n // The save after adding neighbors is the last one. Flush the the node\n childNode.flush();\n }\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}