@loaders.gl/tile-converter 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (502) hide show
  1. package/bin/converter.js +1 -1
  2. package/bin/slpk-extractor.js +4 -0
  3. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  4. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  5. package/dist/3d-tiles-attributes-worker.js +3 -0
  6. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  7. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +90 -0
  8. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  9. package/dist/3d-tiles-converter/3d-tiles-converter.js +275 -226
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +71 -18
  11. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  12. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -236
  13. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
  14. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  15. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
  16. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  17. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  18. package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
  19. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  20. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  21. package/dist/3d-tiles-converter/json-templates/tileset.js +42 -36
  22. package/dist/bundle.d.ts +2 -0
  23. package/dist/bundle.d.ts.map +1 -0
  24. package/dist/bundle.js +2 -2
  25. package/dist/constants.d.ts +2 -0
  26. package/dist/constants.d.ts.map +1 -0
  27. package/dist/constants.js +4 -0
  28. package/dist/converter-cli.d.ts +2 -0
  29. package/dist/converter-cli.d.ts.map +1 -0
  30. package/dist/converter-cli.js +214 -0
  31. package/dist/converter.min.js +185 -190
  32. package/dist/deps-installer/deps-installer.d.ts +11 -3
  33. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  34. package/dist/deps-installer/deps-installer.js +61 -23
  35. package/dist/dist.min.js +64143 -0
  36. package/dist/es5/3d-tiles-attributes-worker.js +25 -0
  37. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  38. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
  39. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  40. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
  41. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  42. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
  43. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  44. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  45. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  46. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
  47. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  48. package/dist/es5/bundle.js +6 -0
  49. package/dist/es5/bundle.js.map +1 -0
  50. package/dist/es5/constants.js +9 -0
  51. package/dist/es5/constants.js.map +1 -0
  52. package/dist/es5/converter-cli.js +244 -0
  53. package/dist/es5/converter-cli.js.map +1 -0
  54. package/dist/es5/deps-installer/deps-installer.js +124 -0
  55. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  56. package/dist/es5/i3s-attributes-worker.js +25 -0
  57. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  58. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
  59. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  60. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +89 -0
  61. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  62. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
  63. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  64. package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
  65. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  66. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
  67. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  68. package/dist/es5/i3s-converter/helpers/geometry-converter.js +1192 -0
  69. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  70. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +113 -0
  71. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  72. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
  73. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  74. package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
  75. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  76. package/dist/es5/i3s-converter/helpers/node-index-document.js +521 -0
  77. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  78. package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
  79. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  80. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
  81. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  82. package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
  83. package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  84. package/dist/es5/i3s-converter/i3s-converter.js +1541 -0
  85. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  86. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  87. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  88. package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
  89. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  90. package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
  91. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  92. package/dist/es5/i3s-converter/json-templates/node.js +99 -0
  93. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  94. package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
  95. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  96. package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
  97. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  98. package/dist/es5/i3s-converter/json-templates/store.js +107 -0
  99. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  100. package/dist/es5/i3s-converter/types.js +18 -0
  101. package/dist/es5/i3s-converter/types.js.map +1 -0
  102. package/dist/es5/i3s-server/README.md +19 -0
  103. package/dist/es5/i3s-server/app.js +27 -0
  104. package/dist/es5/i3s-server/app.js.map +1 -0
  105. package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
  106. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  107. package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
  108. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
  109. package/dist/es5/i3s-server/routes/index.js +37 -0
  110. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  111. package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
  112. package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
  113. package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
  114. package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
  115. package/dist/es5/index.js +21 -0
  116. package/dist/es5/index.js.map +1 -0
  117. package/dist/es5/lib/utils/cli-utils.js +57 -0
  118. package/dist/es5/lib/utils/cli-utils.js.map +1 -0
  119. package/dist/es5/lib/utils/compress-util.js +346 -0
  120. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  121. package/dist/es5/lib/utils/file-utils.js +208 -0
  122. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  123. package/dist/es5/lib/utils/geometry-utils.js +15 -0
  124. package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
  125. package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
  126. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  127. package/dist/es5/lib/utils/queue.js +47 -0
  128. package/dist/es5/lib/utils/queue.js.map +1 -0
  129. package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
  130. package/dist/es5/lib/utils/statistic-utills.js +147 -0
  131. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  132. package/dist/es5/lib/utils/write-queue.js +214 -0
  133. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  134. package/dist/es5/pgm-loader.js +41 -0
  135. package/dist/es5/pgm-loader.js.map +1 -0
  136. package/dist/es5/slpk-extractor/helpers/file-handle-provider.js +181 -0
  137. package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
  138. package/dist/es5/slpk-extractor/slpk-extractor.js +172 -0
  139. package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -0
  140. package/dist/es5/slpk-extractor-cli.js +117 -0
  141. package/dist/es5/slpk-extractor-cli.js.map +1 -0
  142. package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
  143. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  144. package/dist/es5/workers/i3s-attributes-worker.js +30 -0
  145. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  146. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  147. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  148. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
  149. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  150. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
  151. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  152. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
  153. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  154. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
  155. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  156. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
  157. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  158. package/dist/esm/bundle.js +4 -0
  159. package/dist/esm/bundle.js.map +1 -0
  160. package/dist/esm/constants.js +2 -0
  161. package/dist/esm/constants.js.map +1 -0
  162. package/dist/esm/converter-cli.js +187 -0
  163. package/dist/esm/converter-cli.js.map +1 -0
  164. package/dist/esm/deps-installer/deps-installer.js +45 -0
  165. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  166. package/dist/esm/i3s-attributes-worker.js +16 -0
  167. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  168. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
  169. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  170. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +79 -0
  171. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  172. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
  173. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  174. package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
  175. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  176. package/{src → dist/esm}/i3s-converter/helpers/geometry-attributes.js +80 -106
  177. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  178. package/dist/esm/i3s-converter/helpers/geometry-converter.js +906 -0
  179. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  180. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +110 -0
  181. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  182. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
  183. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  184. package/{src → dist/esm}/i3s-converter/helpers/node-debug.js +20 -41
  185. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  186. package/dist/esm/i3s-converter/helpers/node-index-document.js +201 -0
  187. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  188. package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
  189. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  190. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
  191. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  192. package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
  193. package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  194. package/dist/esm/i3s-converter/i3s-converter.js +778 -0
  195. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  196. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  197. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  198. package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
  199. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  200. package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
  201. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  202. package/dist/esm/i3s-converter/json-templates/node.js +80 -0
  203. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  204. package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
  205. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  206. package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
  207. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  208. package/dist/esm/i3s-converter/json-templates/store.js +98 -0
  209. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  210. package/dist/esm/i3s-converter/types.js +11 -0
  211. package/dist/esm/i3s-converter/types.js.map +1 -0
  212. package/dist/esm/i3s-server/README.md +19 -0
  213. package/dist/esm/i3s-server/app.js +26 -0
  214. package/dist/esm/i3s-server/app.js.map +1 -0
  215. package/dist/esm/i3s-server/bin/www +102 -0
  216. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  217. package/dist/esm/i3s-server/certs/key.pem +27 -0
  218. package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
  219. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  220. package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
  221. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
  222. package/dist/esm/i3s-server/routes/index.js +16 -0
  223. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  224. package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
  225. package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
  226. package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
  227. package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
  228. package/dist/esm/index.js +3 -0
  229. package/dist/esm/index.js.map +1 -0
  230. package/dist/esm/lib/utils/cli-utils.js +47 -0
  231. package/dist/esm/lib/utils/cli-utils.js.map +1 -0
  232. package/dist/esm/lib/utils/compress-util.js +168 -0
  233. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  234. package/dist/esm/lib/utils/file-utils.js +87 -0
  235. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  236. package/dist/esm/lib/utils/geometry-utils.js +8 -0
  237. package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
  238. package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
  239. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  240. package/dist/esm/lib/utils/queue.js +15 -0
  241. package/dist/esm/lib/utils/queue.js.map +1 -0
  242. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  243. package/dist/esm/lib/utils/statistic-utills.js +62 -0
  244. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  245. package/dist/esm/lib/utils/write-queue.js +85 -0
  246. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  247. package/dist/esm/pgm-loader.js +15 -0
  248. package/dist/esm/pgm-loader.js.map +1 -0
  249. package/dist/esm/slpk-extractor/helpers/file-handle-provider.js +43 -0
  250. package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
  251. package/dist/esm/slpk-extractor/slpk-extractor.js +63 -0
  252. package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -0
  253. package/dist/esm/slpk-extractor-cli.js +74 -0
  254. package/dist/esm/slpk-extractor-cli.js.map +1 -0
  255. package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
  256. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  257. package/dist/esm/workers/i3s-attributes-worker.js +7 -0
  258. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  259. package/dist/i3s-attributes-worker.d.ts +45 -0
  260. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  261. package/dist/i3s-attributes-worker.js +9 -0
  262. package/dist/i3s-attributes-worker.js.map +7 -0
  263. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
  264. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  265. package/dist/i3s-converter/helpers/batch-ids-extensions.js +138 -0
  266. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +39 -0
  267. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  268. package/dist/i3s-converter/helpers/coordinate-converter.js +118 -42
  269. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  270. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  271. package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
  272. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  273. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  274. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  275. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  276. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  277. package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
  278. package/dist/i3s-converter/helpers/geometry-converter.d.ts +41 -35
  279. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  280. package/dist/i3s-converter/helpers/geometry-converter.js +1179 -650
  281. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +28 -0
  282. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  283. package/dist/i3s-converter/helpers/gltf-attributes.js +129 -0
  284. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
  285. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
  286. package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
  287. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  288. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  289. package/dist/i3s-converter/helpers/node-debug.js +106 -74
  290. package/dist/i3s-converter/helpers/node-index-document.d.ts +103 -0
  291. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  292. package/dist/i3s-converter/helpers/node-index-document.js +268 -0
  293. package/dist/i3s-converter/helpers/node-pages.d.ts +125 -113
  294. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  295. package/dist/i3s-converter/helpers/node-pages.js +313 -133
  296. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +22 -0
  297. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
  298. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +75 -0
  299. package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
  300. package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
  301. package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
  302. package/dist/i3s-converter/i3s-converter.d.ts +267 -0
  303. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  304. package/dist/i3s-converter/i3s-converter.js +891 -867
  305. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  306. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  307. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  308. package/dist/i3s-converter/json-templates/layers.d.ts +70 -0
  309. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  310. package/dist/i3s-converter/json-templates/layers.js +138 -190
  311. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  312. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  313. package/dist/i3s-converter/json-templates/metadata.js +25 -22
  314. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  315. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  316. package/dist/i3s-converter/json-templates/node.js +88 -79
  317. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  318. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  319. package/dist/i3s-converter/json-templates/scene-server.js +31 -28
  320. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  321. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  322. package/dist/i3s-converter/json-templates/shared-resources.js +124 -125
  323. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  324. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  325. package/dist/i3s-converter/json-templates/store.js +100 -95
  326. package/dist/i3s-converter/types.d.ts +163 -0
  327. package/dist/i3s-converter/types.d.ts.map +1 -0
  328. package/dist/i3s-converter/types.js +17 -0
  329. package/dist/i3s-server/app.d.ts +3 -0
  330. package/dist/i3s-server/app.d.ts.map +1 -0
  331. package/dist/i3s-server/app.js +11 -10
  332. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  333. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  334. package/dist/i3s-server/controllers/index-controller.js +16 -24
  335. package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
  336. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
  337. package/dist/i3s-server/controllers/slpk-controller.js +32 -0
  338. package/dist/i3s-server/routes/index.d.ts +3 -0
  339. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  340. package/dist/i3s-server/routes/index.js +11 -15
  341. package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
  342. package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
  343. package/dist/i3s-server/routes/slpk-router.js +33 -0
  344. package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
  345. package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
  346. package/dist/i3s-server/utils/create-scene-server.js +14 -0
  347. package/dist/index.d.ts +3 -0
  348. package/dist/index.d.ts.map +1 -0
  349. package/dist/index.js +10 -5
  350. package/dist/lib/utils/cli-utils.d.ts +34 -0
  351. package/dist/lib/utils/cli-utils.d.ts.map +1 -0
  352. package/dist/lib/utils/cli-utils.js +82 -0
  353. package/dist/lib/utils/compress-util.d.ts +45 -0
  354. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  355. package/dist/lib/utils/compress-util.js +238 -160
  356. package/dist/lib/utils/file-utils.d.ts +22 -14
  357. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  358. package/dist/lib/utils/file-utils.js +134 -36
  359. package/dist/lib/utils/geometry-utils.d.ts +9 -0
  360. package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
  361. package/dist/lib/utils/geometry-utils.js +18 -0
  362. package/dist/lib/utils/lod-conversion-utils.d.ts +23 -13
  363. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  364. package/dist/lib/utils/lod-conversion-utils.js +72 -39
  365. package/dist/lib/utils/queue.d.ts +7 -0
  366. package/dist/lib/utils/queue.d.ts.map +1 -0
  367. package/dist/lib/utils/queue.js +18 -0
  368. package/dist/lib/utils/statistic-utills.d.ts +3 -25
  369. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  370. package/dist/lib/utils/statistic-utills.js +58 -67
  371. package/dist/lib/utils/write-queue.d.ts +39 -0
  372. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  373. package/dist/lib/utils/write-queue.js +80 -0
  374. package/dist/pgm-loader.d.ts +6 -0
  375. package/dist/pgm-loader.d.ts.map +1 -0
  376. package/dist/pgm-loader.js +23 -14
  377. package/dist/slpk-extractor/helpers/file-handle-provider.d.ts +48 -0
  378. package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +1 -0
  379. package/dist/slpk-extractor/helpers/file-handle-provider.js +71 -0
  380. package/dist/slpk-extractor/slpk-extractor.d.ts +23 -0
  381. package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -0
  382. package/dist/slpk-extractor/slpk-extractor.js +78 -0
  383. package/dist/slpk-extractor-cli.d.ts +17 -0
  384. package/dist/slpk-extractor-cli.d.ts.map +1 -0
  385. package/dist/slpk-extractor-cli.js +102 -0
  386. package/dist/slpk-extractor.min.js +189 -0
  387. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  388. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  389. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  390. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  391. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  392. package/dist/workers/i3s-attributes-worker.js +5 -0
  393. package/package.json +36 -24
  394. package/src/3d-tiles-attributes-worker.ts +43 -0
  395. package/src/3d-tiles-converter/3d-tiles-converter.ts +131 -63
  396. package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +72 -53
  397. package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
  398. package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
  399. package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
  400. package/src/constants.ts +2 -0
  401. package/src/converter-cli.ts +305 -0
  402. package/src/deps-installer/deps-installer.ts +72 -0
  403. package/src/i3s-attributes-worker.ts +59 -0
  404. package/src/i3s-converter/helpers/batch-ids-extensions.ts +202 -0
  405. package/src/i3s-converter/helpers/coordinate-converter.ts +94 -34
  406. package/src/i3s-converter/helpers/create-scene-server-path.ts +29 -0
  407. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  408. package/src/i3s-converter/helpers/geometry-attributes.ts +267 -0
  409. package/src/i3s-converter/helpers/geometry-converter.ts +1667 -0
  410. package/src/i3s-converter/helpers/gltf-attributes.ts +162 -0
  411. package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
  412. package/src/i3s-converter/helpers/node-debug.ts +146 -0
  413. package/src/i3s-converter/helpers/node-index-document.ts +335 -0
  414. package/src/i3s-converter/helpers/node-pages.ts +344 -0
  415. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +79 -0
  416. package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
  417. package/src/i3s-converter/i3s-converter.ts +650 -669
  418. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  419. package/src/i3s-converter/json-templates/layers.ts +137 -0
  420. package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
  421. package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
  422. package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
  423. package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +17 -17
  424. package/src/i3s-converter/types.ts +185 -0
  425. package/src/i3s-server/README.md +19 -0
  426. package/src/i3s-server/app.js +8 -1
  427. package/src/i3s-server/controllers/slpk-controller.js +38 -0
  428. package/src/i3s-server/routes/slpk-router.js +33 -0
  429. package/src/i3s-server/utils/create-scene-server.js +15 -0
  430. package/src/index.ts +0 -4
  431. package/src/lib/utils/cli-utils.ts +78 -0
  432. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  433. package/src/lib/utils/file-utils.ts +140 -0
  434. package/src/lib/utils/geometry-utils.ts +14 -0
  435. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +31 -5
  436. package/src/lib/utils/queue.ts +17 -0
  437. package/src/lib/utils/write-queue.ts +110 -0
  438. package/src/pgm-loader.ts +3 -3
  439. package/src/slpk-extractor/helpers/file-handle-provider.ts +91 -0
  440. package/src/slpk-extractor/slpk-extractor.ts +102 -0
  441. package/src/slpk-extractor-cli.ts +128 -0
  442. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  443. package/src/workers/i3s-attributes-worker.ts +7 -0
  444. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  445. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  446. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  447. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  448. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  449. package/dist/bundle.js.map +0 -1
  450. package/dist/deps-installer/deps-installer.js.map +0 -1
  451. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  452. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  453. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  454. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  455. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  456. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  457. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  458. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  459. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  460. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  461. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  462. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  463. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  464. package/dist/i3s-server/app.js.map +0 -1
  465. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  466. package/dist/i3s-server/routes/index.js.map +0 -1
  467. package/dist/index.js.map +0 -1
  468. package/dist/lib/geoid-height-model.d.ts +0 -41
  469. package/dist/lib/geoid-height-model.js +0 -140
  470. package/dist/lib/geoid-height-model.js.map +0 -1
  471. package/dist/lib/pgm-parser.d.ts +0 -14
  472. package/dist/lib/pgm-parser.js +0 -183
  473. package/dist/lib/pgm-parser.js.map +0 -1
  474. package/dist/lib/utils/compress-util.js.map +0 -1
  475. package/dist/lib/utils/compress-utils.d.ts +0 -53
  476. package/dist/lib/utils/file-utils.js.map +0 -1
  477. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  478. package/dist/lib/utils/statistic-utills.js.map +0 -1
  479. package/dist/pgm-loader.js.map +0 -1
  480. package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  481. package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  482. package/src/deps-installer/deps-installer.d.ts +0 -10
  483. package/src/deps-installer/deps-installer.js +0 -22
  484. package/src/i3s-converter/helpers/create-scene-server-path.js +0 -25
  485. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -40
  486. package/src/i3s-converter/helpers/geometry-converter.js +0 -915
  487. package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
  488. package/src/i3s-converter/helpers/node-pages.js +0 -208
  489. package/src/i3s-converter/json-templates/layers.js +0 -199
  490. package/src/lib/geoid-height-model.d.ts +0 -41
  491. package/src/lib/geoid-height-model.js +0 -239
  492. package/src/lib/pgm-parser.d.ts +0 -14
  493. package/src/lib/pgm-parser.js +0 -179
  494. package/src/lib/utils/compress-utils.d.ts +0 -53
  495. package/src/lib/utils/file-utils.d.ts +0 -43
  496. package/src/lib/utils/file-utils.js +0 -38
  497. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
  498. /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  499. /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  500. /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  501. /package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
  502. /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { Queue } from './queue';
3
+ import process from 'process';
4
+ const MEMORY_LIMIT = 4 * 1024 * 1024 * 1024;
5
+ export default class WriteQueue extends Queue {
6
+ constructor() {
7
+ let listeningInterval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
8
+ let writeConcurrency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
9
+ super();
10
+ _defineProperty(this, "intervalId", void 0);
11
+ _defineProperty(this, "writePromise", null);
12
+ _defineProperty(this, "fileMap", {});
13
+ _defineProperty(this, "listeningInterval", void 0);
14
+ _defineProperty(this, "writeConcurrency", void 0);
15
+ this.listeningInterval = listeningInterval;
16
+ this.writeConcurrency = writeConcurrency;
17
+ }
18
+ async enqueue(val) {
19
+ let writeImmediately = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
20
+ if (writeImmediately) {
21
+ const {
22
+ archiveKey,
23
+ writePromise
24
+ } = val;
25
+ const result = await writePromise();
26
+ if (archiveKey && result) {
27
+ this.fileMap[archiveKey] = result;
28
+ }
29
+ } else {
30
+ super.enqueue(val);
31
+ if (process.memoryUsage().rss > MEMORY_LIMIT) {
32
+ await this.startWrite();
33
+ }
34
+ }
35
+ }
36
+ startListening() {
37
+ this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
38
+ }
39
+ stopListening() {
40
+ if (this.intervalId) {
41
+ clearInterval(this.intervalId);
42
+ }
43
+ }
44
+ async startWrite() {
45
+ if (!this.writePromise) {
46
+ this.writePromise = this.doWrite();
47
+ }
48
+ await this.writePromise;
49
+ this.writePromise = null;
50
+ }
51
+ async finalize() {
52
+ this.stopListening();
53
+ await this.startWrite();
54
+ }
55
+ async doWrite() {
56
+ while (this.length) {
57
+ const promises = [];
58
+ const archiveKeys = [];
59
+ for (let i = 0; i < this.writeConcurrency; i++) {
60
+ const item = this.dequeue();
61
+ if (!item) {
62
+ break;
63
+ }
64
+ const {
65
+ archiveKey,
66
+ writePromise
67
+ } = item;
68
+ archiveKeys.push(archiveKey);
69
+ const promise = writePromise();
70
+ promises.push(promise);
71
+ }
72
+ const writeResults = await Promise.allSettled(promises);
73
+ this.updateFileMap(archiveKeys, writeResults);
74
+ }
75
+ }
76
+ updateFileMap(archiveKeys, writeResults) {
77
+ for (let i = 0; i < archiveKeys.length; i++) {
78
+ const archiveKey = archiveKeys[i];
79
+ if (archiveKey && 'value' in writeResults[i]) {
80
+ this.fileMap[archiveKey] = writeResults[i].value;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ //# sourceMappingURL=write-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-queue.js","names":["Queue","process","MEMORY_LIMIT","WriteQueue","constructor","listeningInterval","arguments","length","undefined","writeConcurrency","_defineProperty","enqueue","val","writeImmediately","archiveKey","writePromise","result","fileMap","memoryUsage","rss","startWrite","startListening","intervalId","setInterval","bind","stopListening","clearInterval","doWrite","finalize","promises","archiveKeys","i","item","dequeue","push","promise","writeResults","Promise","allSettled","updateFileMap","value"],"sources":["../../../../src/lib/utils/write-queue.ts"],"sourcesContent":["import {Queue} from './queue';\nimport process from 'process';\n\n/** Memory limit size is based on testing */\nconst MEMORY_LIMIT = 4 * 1024 * 1024 * 1024; // 4GB\n\nexport type WriteQueueItem = {\n archiveKey?: string;\n /**\n * writePromise() returns a Promise that will be awaited in Promise.allSettled(promises);\n * Arguments for this call are specified in writeQueue.enqueue call like this:\n * await writeQueue.enqueue({\n * archiveKey: `nodePages/xxx.json.gz`,\n * writePromise: () => writeFileForSlpk(slpkPath, data, `xxx.json`)\n * });\n * Note, a function like writeFileForSlpk should NOT be called when initializing the object for enqueue().\n * If he function is called, the promise will be created\n * and the function will allocate resources (file descriptors) for file writing.\n * It will be done for ALL items in the queue, which is not supposed to happen.\n * That's why the function should be passed as\n * writePromise: () => writeFileForSlpk(slpkPath, content, `xxx.json`)\n * instead of\n * writePromise: writeFileForSlpk(slpkPath, content, `xxx.json`) // INCORRECT !\n */\n writePromise: () => Promise<string | null>;\n};\n\nexport default class WriteQueue<T extends WriteQueueItem> extends Queue<T> {\n private intervalId?: NodeJS.Timeout;\n public writePromise: Promise<void> | null = null;\n public fileMap: {[key: string]: string} = {};\n public listeningInterval: number;\n public writeConcurrency: number;\n\n constructor(listeningInterval: number = 2000, writeConcurrency: number = 400) {\n super();\n this.listeningInterval = listeningInterval;\n this.writeConcurrency = writeConcurrency;\n }\n\n async enqueue(val: T, writeImmediately: boolean = false) {\n if (writeImmediately) {\n const {archiveKey, writePromise} = val as WriteQueueItem;\n const result = await writePromise();\n if (archiveKey && result) {\n this.fileMap[archiveKey] = result;\n }\n } else {\n super.enqueue(val);\n /** https://nodejs.org/docs/latest-v14.x/api/process.html#process_process_memoryusage */\n if (process.memoryUsage().rss > MEMORY_LIMIT) {\n await this.startWrite();\n }\n }\n }\n\n startListening() {\n this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);\n }\n\n stopListening() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n\n async startWrite(): Promise<void> {\n if (!this.writePromise) {\n this.writePromise = this.doWrite();\n }\n await this.writePromise;\n this.writePromise = null;\n }\n\n async finalize(): Promise<void> {\n this.stopListening();\n await this.startWrite();\n }\n\n private async doWrite(): Promise<void> {\n while (this.length) {\n const promises: Promise<string | null>[] = [];\n const archiveKeys: (string | undefined)[] = [];\n for (let i = 0; i < this.writeConcurrency; i++) {\n const item = this.dequeue();\n if (!item) {\n break;\n }\n const {archiveKey, writePromise} = item as WriteQueueItem;\n archiveKeys.push(archiveKey);\n const promise = writePromise();\n promises.push(promise);\n }\n const writeResults = await Promise.allSettled(promises);\n this.updateFileMap(archiveKeys, writeResults);\n }\n }\n\n private updateFileMap(\n archiveKeys: (string | undefined)[],\n writeResults: PromiseSettledResult<string | null>[]\n ) {\n for (let i = 0; i < archiveKeys.length; i++) {\n const archiveKey = archiveKeys[i];\n if (archiveKey && 'value' in writeResults[i]) {\n this.fileMap[archiveKey] = (writeResults[i] as PromiseFulfilledResult<string>).value;\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { parsePGM } from '@math.gl/geoid';
2
+ const VERSION = typeof "4.0.0-alpha.11" !== 'undefined' ? "4.0.0-alpha.11" : 'latest';
3
+ export const PGMLoader = {
4
+ name: 'PGM - Netpbm grayscale image format',
5
+ id: 'pgm',
6
+ module: 'tile-converter',
7
+ version: VERSION,
8
+ mimeTypes: ['image/x-portable-graymap'],
9
+ parse: async (arrayBuffer, options) => parsePGM(new Uint8Array(arrayBuffer), options),
10
+ extensions: ['pgm'],
11
+ options: {
12
+ cubic: false
13
+ }
14
+ };
15
+ //# sourceMappingURL=pgm-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgm-loader.js","names":["parsePGM","VERSION","PGMLoader","name","id","module","version","mimeTypes","parse","arrayBuffer","options","Uint8Array","extensions","cubic"],"sources":["../../src/pgm-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parsePGM} from '@math.gl/geoid';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * Loader for PGM - Netpbm grayscale image format\n */\nexport const PGMLoader: LoaderWithParser = {\n name: 'PGM - Netpbm grayscale image format',\n id: 'pgm',\n module: 'tile-converter',\n version: VERSION,\n mimeTypes: ['image/x-portable-graymap'],\n // @ts-expect-error LoaderOptions does not have cubic parameter\n parse: async (arrayBuffer, options) => parsePGM(new Uint8Array(arrayBuffer), options),\n extensions: ['pgm'],\n options: {\n // TODO - use pgm namespace\n cubic: false\n }\n};\n"],"mappings":"AACA,SAAQA,QAAQ,QAAO,gBAAgB;AAIvC,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAK3E,OAAO,MAAMC,SAA2B,GAAG;EACzCC,IAAI,EAAE,qCAAqC;EAC3CC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,gBAAgB;EACxBC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,0BAA0B,CAAC;EAEvCC,KAAK,EAAE,MAAAA,CAAOC,WAAW,EAAEC,OAAO,KAAKV,QAAQ,CAAC,IAAIW,UAAU,CAACF,WAAW,CAAC,EAAEC,OAAO,CAAC;EACrFE,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBF,OAAO,EAAE;IAEPG,KAAK,EAAE;EACT;AACF,CAAC"}
@@ -0,0 +1,43 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { promises as fsPromises } from 'fs';
3
+ export class FileHandleProvider {
4
+ static async from(path) {
5
+ const fileDescriptor = await fsPromises.open(path);
6
+ return new FileHandleProvider(fileDescriptor, (await fileDescriptor.stat()).size);
7
+ }
8
+ constructor(fileDescriptor, size) {
9
+ _defineProperty(this, "fileDescriptor", void 0);
10
+ _defineProperty(this, "size", void 0);
11
+ this.fileDescriptor = fileDescriptor;
12
+ this.size = size;
13
+ }
14
+ async getUint8(offset) {
15
+ const val = new Uint8Array((await this.fileDescriptor.read(Buffer.alloc(1), 0, 1, offset)).buffer.buffer).at(0);
16
+ if (val === undefined) {
17
+ throw new Error('something went wrong');
18
+ }
19
+ return val;
20
+ }
21
+ async getUint16(offset) {
22
+ const val = new Uint16Array((await this.fileDescriptor.read(Buffer.alloc(2), 0, 2, offset)).buffer.buffer).at(0);
23
+ if (val === undefined) {
24
+ throw new Error('something went wrong');
25
+ }
26
+ return val;
27
+ }
28
+ async getUint32(offset) {
29
+ const val = new Uint32Array((await this.fileDescriptor.read(Buffer.alloc(4), 0, 4, offset)).buffer.buffer).at(0);
30
+ if (val === undefined) {
31
+ throw new Error('something went wrong');
32
+ }
33
+ return val;
34
+ }
35
+ async slice(startOffset, endOffset) {
36
+ const length = endOffset - startOffset;
37
+ return (await this.fileDescriptor.read(Buffer.alloc(length), 0, length, startOffset)).buffer.buffer;
38
+ }
39
+ get length() {
40
+ return this.size;
41
+ }
42
+ }
43
+ //# sourceMappingURL=file-handle-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-handle-provider.js","names":["promises","fsPromises","FileHandleProvider","from","path","fileDescriptor","open","stat","size","constructor","_defineProperty","getUint8","offset","val","Uint8Array","read","Buffer","alloc","buffer","at","undefined","Error","getUint16","Uint16Array","getUint32","Uint32Array","slice","startOffset","endOffset","length"],"sources":["../../../../src/slpk-extractor/helpers/file-handle-provider.ts"],"sourcesContent":["import {FileProvider} from '@loaders.gl/i3s';\nimport {promises as fsPromises, PathLike} from 'fs';\n\n/**\n * Provides file data using node fs library\n */\nexport class FileHandleProvider implements FileProvider {\n /**\n * Returns a new copy of FileHandleProvider\n * @param path The path to the file in file system\n */\n static async from(path: PathLike): Promise<FileHandleProvider> {\n const fileDescriptor = await fsPromises.open(path);\n return new FileHandleProvider(fileDescriptor, (await fileDescriptor.stat()).size);\n }\n\n /**\n * The FileHandle from which data is provided\n */\n private fileDescriptor: fsPromises.FileHandle;\n\n /**\n * The file length in bytes\n */\n private size: number;\n\n private constructor(fileDescriptor: fsPromises.FileHandle, size: number) {\n this.fileDescriptor = fileDescriptor;\n this.size = size;\n }\n\n /**\n * Gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n async getUint8(offset: number): Promise<number> {\n const val = new Uint8Array(\n (await this.fileDescriptor.read(Buffer.alloc(1), 0, 1, offset)).buffer.buffer\n ).at(0);\n if (val === undefined) {\n throw new Error('something went wrong');\n }\n return val;\n }\n\n /**\n * Gets an unsigned 16-bit integer (unsigned byte) at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n async getUint16(offset: number): Promise<number> {\n const val = new Uint16Array(\n (await this.fileDescriptor.read(Buffer.alloc(2), 0, 2, offset)).buffer.buffer\n ).at(0);\n if (val === undefined) {\n throw new Error('something went wrong');\n }\n return val;\n }\n\n /**\n * Gets an unsigned 32-bit integer (unsigned byte) at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n async getUint32(offset: number): Promise<number> {\n const val = new Uint32Array(\n (await this.fileDescriptor.read(Buffer.alloc(4), 0, 4, offset)).buffer.buffer\n ).at(0);\n if (val === undefined) {\n throw new Error('something went wrong');\n }\n return val;\n }\n\n /**\n * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.\n * @param startOffset The offset, in bytes, from the start of the file where to start reading the data.\n * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.\n */\n async slice(startOffset: number, endOffset: number): Promise<ArrayBuffer> {\n const length = endOffset - startOffset;\n return (await this.fileDescriptor.read(Buffer.alloc(length), 0, length, startOffset)).buffer\n .buffer;\n }\n\n /**\n * the length (in bytes) of the data.\n */\n get length(): number {\n return this.size;\n }\n}\n"],"mappings":";AACA,SAAQA,QAAQ,IAAIC,UAAU,QAAiB,IAAI;AAKnD,OAAO,MAAMC,kBAAkB,CAAyB;EAKtD,aAAaC,IAAIA,CAACC,IAAc,EAA+B;IAC7D,MAAMC,cAAc,GAAG,MAAMJ,UAAU,CAACK,IAAI,CAACF,IAAI,CAAC;IAClD,OAAO,IAAIF,kBAAkB,CAACG,cAAc,EAAE,CAAC,MAAMA,cAAc,CAACE,IAAI,CAAC,CAAC,EAAEC,IAAI,CAAC;EACnF;EAYQC,WAAWA,CAACJ,cAAqC,EAAEG,IAAY,EAAE;IAAAE,eAAA;IAAAA,eAAA;IACvE,IAAI,CAACL,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACG,IAAI,GAAGA,IAAI;EAClB;EAMA,MAAMG,QAAQA,CAACC,MAAc,EAAmB;IAC9C,MAAMC,GAAG,GAAG,IAAIC,UAAU,CACxB,CAAC,MAAM,IAAI,CAACT,cAAc,CAACU,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEL,MAAM,CAAC,EAAEM,MAAM,CAACA,MACzE,CAAC,CAACC,EAAE,CAAC,CAAC,CAAC;IACP,IAAIN,GAAG,KAAKO,SAAS,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;IACzC;IACA,OAAOR,GAAG;EACZ;EAMA,MAAMS,SAASA,CAACV,MAAc,EAAmB;IAC/C,MAAMC,GAAG,GAAG,IAAIU,WAAW,CACzB,CAAC,MAAM,IAAI,CAAClB,cAAc,CAACU,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEL,MAAM,CAAC,EAAEM,MAAM,CAACA,MACzE,CAAC,CAACC,EAAE,CAAC,CAAC,CAAC;IACP,IAAIN,GAAG,KAAKO,SAAS,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;IACzC;IACA,OAAOR,GAAG;EACZ;EAMA,MAAMW,SAASA,CAACZ,MAAc,EAAmB;IAC/C,MAAMC,GAAG,GAAG,IAAIY,WAAW,CACzB,CAAC,MAAM,IAAI,CAACpB,cAAc,CAACU,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEL,MAAM,CAAC,EAAEM,MAAM,CAACA,MACzE,CAAC,CAACC,EAAE,CAAC,CAAC,CAAC;IACP,IAAIN,GAAG,KAAKO,SAAS,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;IACzC;IACA,OAAOR,GAAG;EACZ;EAOA,MAAMa,KAAKA,CAACC,WAAmB,EAAEC,SAAiB,EAAwB;IACxE,MAAMC,MAAM,GAAGD,SAAS,GAAGD,WAAW;IACtC,OAAO,CAAC,MAAM,IAAI,CAACtB,cAAc,CAACU,IAAI,CAACC,MAAM,CAACC,KAAK,CAACY,MAAM,CAAC,EAAE,CAAC,EAAEA,MAAM,EAAEF,WAAW,CAAC,EAAET,MAAM,CACzFA,MAAM;EACX;EAKA,IAAIW,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACrB,IAAI;EAClB;AACF"}
@@ -0,0 +1,63 @@
1
+ import { isBrowser } from '@loaders.gl/core';
2
+ import { BROWSER_ERROR_MESSAGE } from '../constants';
3
+ import { FileHandleProvider } from './helpers/file-handle-provider';
4
+ import { parseZipLocalFileHeader } from '@loaders.gl/i3s';
5
+ import { path } from '@loaders.gl/loader-utils';
6
+ import { GZipCompression } from '@loaders.gl/compression';
7
+ import { writeFile } from '../lib/utils/file-utils';
8
+ const indexNames = ['3dSceneLayer.json.gz', '3dNodeIndexDocument.json.gz', 'sharedResource.json.gz'];
9
+ export default class SLPKExtractor {
10
+ async extract(options) {
11
+ if (isBrowser) {
12
+ console.log(BROWSER_ERROR_MESSAGE);
13
+ return BROWSER_ERROR_MESSAGE;
14
+ }
15
+ const {
16
+ inputUrl
17
+ } = options;
18
+ const provider = await FileHandleProvider.from(inputUrl);
19
+ let localHeader = await parseZipLocalFileHeader(0, provider);
20
+ while (localHeader) {
21
+ var _localHeader, _localHeader2;
22
+ await this.writeFile(await this.unGzip({
23
+ name: this.correctIndexNames(localHeader.fileName),
24
+ data: await provider.slice(localHeader.fileDataOffset, localHeader.fileDataOffset + localHeader.compressedSize)
25
+ }), options.outputPath);
26
+ localHeader = await parseZipLocalFileHeader(((_localHeader = localHeader) === null || _localHeader === void 0 ? void 0 : _localHeader.fileDataOffset) + ((_localHeader2 = localHeader) === null || _localHeader2 === void 0 ? void 0 : _localHeader2.compressedSize), provider);
27
+ }
28
+ return 'success';
29
+ }
30
+ correctIndexNames(fileName) {
31
+ if (indexNames.includes(path.filename(path.join('/', fileName)))) {
32
+ return path.join(path.dirname(fileName), 'index.json.gz');
33
+ }
34
+ let parts = /^(.*\/[^\/\.]*)(\..+)$/.exec(fileName);
35
+ if (!parts) {
36
+ return null;
37
+ }
38
+ return "".concat(parts === null || parts === void 0 ? void 0 : parts.at(1), "/index").concat(parts === null || parts === void 0 ? void 0 : parts.at(2));
39
+ }
40
+ async unGzip(file) {
41
+ var _file$name;
42
+ if (/\.gz$/.test((_file$name = file.name) !== null && _file$name !== void 0 ? _file$name : '')) {
43
+ var _file$name2;
44
+ const compression = new GZipCompression();
45
+ const decompressedData = await compression.decompress(file.data);
46
+ return {
47
+ data: decompressedData,
48
+ name: ((_file$name2 = file.name) !== null && _file$name2 !== void 0 ? _file$name2 : '').slice(0, -3)
49
+ };
50
+ }
51
+ return Promise.resolve(file);
52
+ }
53
+ async writeFile(options, outputPath) {
54
+ if (!options.name) {
55
+ return;
56
+ }
57
+ const finalPath = path.join(outputPath, options.name);
58
+ const dirName = path.dirname(finalPath);
59
+ const fileName = path.filename(finalPath);
60
+ await writeFile(dirName, options.data, fileName);
61
+ }
62
+ }
63
+ //# sourceMappingURL=slpk-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slpk-extractor.js","names":["isBrowser","BROWSER_ERROR_MESSAGE","FileHandleProvider","parseZipLocalFileHeader","path","GZipCompression","writeFile","indexNames","SLPKExtractor","extract","options","console","log","inputUrl","provider","from","localHeader","_localHeader","_localHeader2","unGzip","name","correctIndexNames","fileName","data","slice","fileDataOffset","compressedSize","outputPath","includes","filename","join","dirname","parts","exec","concat","at","file","_file$name","test","_file$name2","compression","decompressedData","decompress","Promise","resolve","finalPath","dirName"],"sources":["../../../src/slpk-extractor/slpk-extractor.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/core';\n\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\nimport {FileHandleProvider} from './helpers/file-handle-provider';\nimport {parseZipLocalFileHeader} from '@loaders.gl/i3s';\nimport {path} from '@loaders.gl/loader-utils';\nimport {GZipCompression} from '@loaders.gl/compression';\nimport {writeFile} from '../lib/utils/file-utils';\n\n/**\n * names of files that should be changed to index\n */\nconst indexNames = [\n '3dSceneLayer.json.gz',\n '3dNodeIndexDocument.json.gz',\n 'sharedResource.json.gz'\n];\n\n/**\n * Description of the file in the SLPK\n */\ntype File = {\n name: string | null;\n data: ArrayBuffer;\n};\n\n/**\n * Converter from slpk to i3s\n */\nexport default class SLPKExtractor {\n /**\n * extract slpk to i3s\n * @param options\n * @param options.inputUrl the url to read SLPK file\n * @param options.outputPath the output filename\n */\n public async extract(options: {inputUrl: string; outputPath: string}): Promise<string> {\n if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\n const {inputUrl} = options;\n\n const provider = await FileHandleProvider.from(inputUrl);\n\n let localHeader = await parseZipLocalFileHeader(0, provider);\n while (localHeader) {\n await this.writeFile(\n await this.unGzip({\n name: this.correctIndexNames(localHeader.fileName),\n data: await provider.slice(\n localHeader.fileDataOffset,\n localHeader.fileDataOffset + localHeader.compressedSize\n )\n }),\n options.outputPath\n );\n localHeader = await parseZipLocalFileHeader(\n localHeader?.fileDataOffset + localHeader?.compressedSize,\n provider\n );\n }\n\n return 'success';\n }\n\n /**\n * Defines file name and path for i3s format\n * @param fileName initial file name and path\n */\n private correctIndexNames(fileName: string): string | null {\n if (indexNames.includes(path.filename(path.join('/', fileName)))) {\n return path.join(path.dirname(fileName), 'index.json.gz');\n }\n // finds path with name part and extention part\n let parts = /^(.*\\/[^\\/\\.]*)(\\..+)$/.exec(fileName);\n if (!parts) {\n return null;\n }\n return `${parts?.at(1)}/index${parts?.at(2)}`;\n }\n\n private async unGzip(file: File): Promise<File> {\n if (/\\.gz$/.test(file.name ?? '')) {\n const compression = new GZipCompression();\n\n const decompressedData = await compression.decompress(file.data);\n return {data: decompressedData, name: (file.name ?? '').slice(0, -3)};\n }\n return Promise.resolve(file);\n }\n\n private async writeFile(options: File, outputPath: string): Promise<void> {\n if (!options.name) {\n return;\n }\n const finalPath = path.join(outputPath, options.name);\n const dirName = path.dirname(finalPath);\n const fileName = path.filename(finalPath);\n await writeFile(dirName, options.data, fileName);\n }\n}\n"],"mappings":"AAAA,SAAQA,SAAS,QAAO,kBAAkB;AAE1C,SAAQC,qBAAqB,QAAO,cAAc;AAClD,SAAQC,kBAAkB,QAAO,gCAAgC;AACjE,SAAQC,uBAAuB,QAAO,iBAAiB;AACvD,SAAQC,IAAI,QAAO,0BAA0B;AAC7C,SAAQC,eAAe,QAAO,yBAAyB;AACvD,SAAQC,SAAS,QAAO,yBAAyB;AAKjD,MAAMC,UAAU,GAAG,CACjB,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,CACzB;AAaD,eAAe,MAAMC,aAAa,CAAC;EAOjC,MAAaC,OAAOA,CAACC,OAA+C,EAAmB;IACrF,IAAIV,SAAS,EAAE;MACbW,OAAO,CAACC,GAAG,CAACX,qBAAqB,CAAC;MAClC,OAAOA,qBAAqB;IAC9B;IACA,MAAM;MAACY;IAAQ,CAAC,GAAGH,OAAO;IAE1B,MAAMI,QAAQ,GAAG,MAAMZ,kBAAkB,CAACa,IAAI,CAACF,QAAQ,CAAC;IAExD,IAAIG,WAAW,GAAG,MAAMb,uBAAuB,CAAC,CAAC,EAAEW,QAAQ,CAAC;IAC5D,OAAOE,WAAW,EAAE;MAAA,IAAAC,YAAA,EAAAC,aAAA;MAClB,MAAM,IAAI,CAACZ,SAAS,CAClB,MAAM,IAAI,CAACa,MAAM,CAAC;QAChBC,IAAI,EAAE,IAAI,CAACC,iBAAiB,CAACL,WAAW,CAACM,QAAQ,CAAC;QAClDC,IAAI,EAAE,MAAMT,QAAQ,CAACU,KAAK,CACxBR,WAAW,CAACS,cAAc,EAC1BT,WAAW,CAACS,cAAc,GAAGT,WAAW,CAACU,cAC3C;MACF,CAAC,CAAC,EACFhB,OAAO,CAACiB,UACV,CAAC;MACDX,WAAW,GAAG,MAAMb,uBAAuB,CACzC,EAAAc,YAAA,GAAAD,WAAW,cAAAC,YAAA,uBAAXA,YAAA,CAAaQ,cAAc,MAAAP,aAAA,GAAGF,WAAW,cAAAE,aAAA,uBAAXA,aAAA,CAAaQ,cAAc,GACzDZ,QACF,CAAC;IACH;IAEA,OAAO,SAAS;EAClB;EAMQO,iBAAiBA,CAACC,QAAgB,EAAiB;IACzD,IAAIf,UAAU,CAACqB,QAAQ,CAACxB,IAAI,CAACyB,QAAQ,CAACzB,IAAI,CAAC0B,IAAI,CAAC,GAAG,EAAER,QAAQ,CAAC,CAAC,CAAC,EAAE;MAChE,OAAOlB,IAAI,CAAC0B,IAAI,CAAC1B,IAAI,CAAC2B,OAAO,CAACT,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3D;IAEA,IAAIU,KAAK,GAAG,wBAAwB,CAACC,IAAI,CAACX,QAAQ,CAAC;IACnD,IAAI,CAACU,KAAK,EAAE;MACV,OAAO,IAAI;IACb;IACA,UAAAE,MAAA,CAAUF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,EAAE,CAAC,CAAC,CAAC,YAAAD,MAAA,CAASF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,EAAE,CAAC,CAAC,CAAC;EAC7C;EAEA,MAAchB,MAAMA,CAACiB,IAAU,EAAiB;IAAA,IAAAC,UAAA;IAC9C,IAAI,OAAO,CAACC,IAAI,EAAAD,UAAA,GAACD,IAAI,CAAChB,IAAI,cAAAiB,UAAA,cAAAA,UAAA,GAAI,EAAE,CAAC,EAAE;MAAA,IAAAE,WAAA;MACjC,MAAMC,WAAW,GAAG,IAAInC,eAAe,CAAC,CAAC;MAEzC,MAAMoC,gBAAgB,GAAG,MAAMD,WAAW,CAACE,UAAU,CAACN,IAAI,CAACb,IAAI,CAAC;MAChE,OAAO;QAACA,IAAI,EAAEkB,gBAAgB;QAAErB,IAAI,EAAE,EAAAmB,WAAA,GAACH,IAAI,CAAChB,IAAI,cAAAmB,WAAA,cAAAA,WAAA,GAAI,EAAE,EAAEf,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MAAC,CAAC;IACvE;IACA,OAAOmB,OAAO,CAACC,OAAO,CAACR,IAAI,CAAC;EAC9B;EAEA,MAAc9B,SAASA,CAACI,OAAa,EAAEiB,UAAkB,EAAiB;IACxE,IAAI,CAACjB,OAAO,CAACU,IAAI,EAAE;MACjB;IACF;IACA,MAAMyB,SAAS,GAAGzC,IAAI,CAAC0B,IAAI,CAACH,UAAU,EAAEjB,OAAO,CAACU,IAAI,CAAC;IACrD,MAAM0B,OAAO,GAAG1C,IAAI,CAAC2B,OAAO,CAACc,SAAS,CAAC;IACvC,MAAMvB,QAAQ,GAAGlB,IAAI,CAACyB,QAAQ,CAACgB,SAAS,CAAC;IACzC,MAAMvC,SAAS,CAACwC,OAAO,EAAEpC,OAAO,CAACa,IAAI,EAAED,QAAQ,CAAC;EAClD;AACF"}
@@ -0,0 +1,74 @@
1
+ import '@loaders.gl/polyfills';
2
+ import SLPKExtractor from './slpk-extractor/slpk-extractor';
3
+ import { getURLValue, validateOptionsWithEqual } from './lib/utils/cli-utils';
4
+ async function main() {
5
+ const [,, ...args] = process.argv;
6
+ if (args.length === 0) {
7
+ printHelp();
8
+ }
9
+ const validatedOptionsArr = validateOptionsWithEqual(args);
10
+ const options = parseOptions(validatedOptionsArr);
11
+ const validatedOptions = validateOptions(options);
12
+ await convert(validatedOptions);
13
+ }
14
+ main().catch(error => {
15
+ console.log(error);
16
+ process.exit(1);
17
+ });
18
+ function printHelp() {
19
+ console.log('cli: converter slpk to I3S...');
20
+ console.log('--output [Output folder, default: "data" folder]');
21
+ console.log('--tileset [SLPK file]');
22
+ process.exit(0);
23
+ }
24
+ async function convert(options) {
25
+ console.log("------------------------------------------------");
26
+ console.log("Starting conversion of SLPK");
27
+ console.log("------------------------------------------------");
28
+ const slpkExtractor = new SLPKExtractor();
29
+ slpkExtractor.extract({
30
+ inputUrl: options.tileset,
31
+ outputPath: options.output
32
+ });
33
+ }
34
+ function validateOptions(options) {
35
+ const mandatoryOptionsWithExceptions = {
36
+ output: () => console.log('Missed: --output [Output path name]'),
37
+ tileset: () => console.log('Missed: --tileset [SLPK file]')
38
+ };
39
+ const exceptions = [];
40
+ for (const mandatoryOption in mandatoryOptionsWithExceptions) {
41
+ const optionValue = options[mandatoryOption];
42
+ if (!optionValue) {
43
+ exceptions.push(mandatoryOptionsWithExceptions[mandatoryOption]);
44
+ }
45
+ }
46
+ if (exceptions.length) {
47
+ exceptions.forEach(exeption => exeption());
48
+ process.exit(1);
49
+ }
50
+ return options;
51
+ }
52
+ function parseOptions(args) {
53
+ const opts = {};
54
+ args.forEach((arg, index) => {
55
+ if (arg.indexOf('--') === 0) {
56
+ switch (arg) {
57
+ case '--tileset':
58
+ opts.tileset = getURLValue(index, args);
59
+ break;
60
+ case '--output':
61
+ opts.output = getURLValue(index, args);
62
+ break;
63
+ case '--help':
64
+ printHelp();
65
+ break;
66
+ default:
67
+ console.warn("Unknown option ".concat(arg));
68
+ process.exit(0);
69
+ }
70
+ }
71
+ });
72
+ return opts;
73
+ }
74
+ //# sourceMappingURL=slpk-extractor-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slpk-extractor-cli.js","names":["SLPKExtractor","getURLValue","validateOptionsWithEqual","main","args","process","argv","length","printHelp","validatedOptionsArr","options","parseOptions","validatedOptions","validateOptions","convert","catch","error","console","log","exit","slpkExtractor","extract","inputUrl","tileset","outputPath","output","mandatoryOptionsWithExceptions","exceptions","mandatoryOption","optionValue","push","forEach","exeption","opts","arg","index","indexOf","warn","concat"],"sources":["../../src/slpk-extractor-cli.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport '@loaders.gl/polyfills';\nimport SLPKExtractor from './slpk-extractor/slpk-extractor';\nimport {getURLValue, validateOptionsWithEqual} from './lib/utils/cli-utils';\n\ntype SLPKExtractionOptions = {\n /** \"tileset.json\" file (3DTiles) / \"http://..../SceneServer/layers/0\" resource (I3S) */\n tileset?: string;\n /** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.\n * Default: \"data\" folder */\n output?: string;\n};\n\n/* During validation we check that particular options are defined so they can't be undefined */\nexport type ValidatedSLPKExtractionOptions = SLPKExtractionOptions & {\n /** slpk file */\n tileset: string;\n /** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.\n * Default: \"data\" folder */\n output: string;\n};\n\n/**\n * CLI entry\n * @returns\n */\nasync function main() {\n const [, , ...args] = process.argv;\n\n if (args.length === 0) {\n printHelp();\n }\n\n const validatedOptionsArr = validateOptionsWithEqual(args);\n\n const options: SLPKExtractionOptions = parseOptions(validatedOptionsArr);\n\n const validatedOptions: ValidatedSLPKExtractionOptions = validateOptions(options);\n\n await convert(validatedOptions);\n}\n\nmain().catch((error) => {\n console.log(error);\n process.exit(1); // eslint-disable-line\n});\n\n/**\n * Output for `npx slpk-extractor --help`\n */\nfunction printHelp(): void {\n console.log('cli: converter slpk to I3S...');\n console.log('--output [Output folder, default: \"data\" folder]');\n console.log('--tileset [SLPK file]');\n process.exit(0); // eslint-disable-line\n}\n\n/**\n * Run extraction process\n * @param options validated slpk-extractor options\n */\nasync function convert(options: ValidatedSLPKExtractionOptions) {\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Starting conversion of SLPK`); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n const slpkExtractor = new SLPKExtractor();\n slpkExtractor.extract({\n inputUrl: options.tileset,\n outputPath: options.output\n });\n}\n\n// OPTIONS\n/**\n * Validate input options of the CLI command\n * @param options - input options of the CLI command\n * @returns validated options\n */\nfunction validateOptions(options: SLPKExtractionOptions): ValidatedSLPKExtractionOptions {\n const mandatoryOptionsWithExceptions: {\n [key: string]: () => void;\n } = {\n output: () => console.log('Missed: --output [Output path name]'),\n tileset: () => console.log('Missed: --tileset [SLPK file]')\n };\n const exceptions: (() => void)[] = [];\n for (const mandatoryOption in mandatoryOptionsWithExceptions) {\n const optionValue = options[mandatoryOption];\n if (!optionValue) {\n exceptions.push(mandatoryOptionsWithExceptions[mandatoryOption]);\n }\n }\n if (exceptions.length) {\n exceptions.forEach((exeption) => exeption());\n process.exit(1);\n }\n return <ValidatedSLPKExtractionOptions>options;\n}\n\n/**\n * Parse option from the cli arguments array\n * @param args\n * @returns\n */\nfunction parseOptions(args: string[]): SLPKExtractionOptions {\n const opts: SLPKExtractionOptions = {};\n\n // eslint-disable-next-line complexity\n args.forEach((arg, index) => {\n if (arg.indexOf('--') === 0) {\n switch (arg) {\n case '--tileset':\n opts.tileset = getURLValue(index, args);\n break;\n case '--output':\n opts.output = getURLValue(index, args);\n break;\n case '--help':\n printHelp();\n break;\n default:\n console.warn(`Unknown option ${arg}`);\n process.exit(0); // eslint-disable-line\n }\n }\n });\n return opts;\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { createWorker } from '@loaders.gl/worker-utils';
2
+ import B3dmConverter from '../3d-tiles-converter/helpers/b3dm-converter';
3
+ const b3dmConverter = new B3dmConverter();
4
+ createWorker(async function (data) {
5
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6
+ return b3dmConverter.convert(data, options.featureAttributes);
7
+ });
8
+ //# sourceMappingURL=3d-tiles-attributes-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d-tiles-attributes-worker.js","names":["createWorker","B3dmConverter","b3dmConverter","data","options","arguments","length","undefined","convert","featureAttributes"],"sources":["../../../src/workers/3d-tiles-attributes-worker.ts"],"sourcesContent":["import {createWorker} from '@loaders.gl/worker-utils';\nimport B3dmConverter from '../3d-tiles-converter/helpers/b3dm-converter';\n\nconst b3dmConverter = new B3dmConverter();\n\ncreateWorker(async (data, options = {}) => b3dmConverter.convert(data, options.featureAttributes));\n"],"mappings":"AAAA,SAAQA,YAAY,QAAO,0BAA0B;AACrD,OAAOC,aAAa,MAAM,8CAA8C;AAExE,MAAMC,aAAa,GAAG,IAAID,aAAa,CAAC,CAAC;AAEzCD,YAAY,CAAC,gBAAOG,IAAI;EAAA,IAAEC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OAAKH,aAAa,CAACM,OAAO,CAACL,IAAI,EAAEC,OAAO,CAACK,iBAAiB,CAAC;AAAA,EAAC"}
@@ -0,0 +1,7 @@
1
+ import { createWorker } from '@loaders.gl/worker-utils';
2
+ import { convertAttributes } from '../i3s-converter/helpers/geometry-converter';
3
+ createWorker(async function (data) {
4
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5
+ return await convertAttributes(data, options.materialAndTextureList, options.useCartesianPositions);
6
+ });
7
+ //# sourceMappingURL=i3s-attributes-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-attributes-worker.js","names":["createWorker","convertAttributes","data","options","arguments","length","undefined","materialAndTextureList","useCartesianPositions"],"sources":["../../../src/workers/i3s-attributes-worker.ts"],"sourcesContent":["import {createWorker} from '@loaders.gl/worker-utils';\nimport {convertAttributes} from '../i3s-converter/helpers/geometry-converter';\n\ncreateWorker(\n async (data, options = {}) =>\n await convertAttributes(data, options.materialAndTextureList, options.useCartesianPositions)\n);\n"],"mappings":"AAAA,SAAQA,YAAY,QAAO,0BAA0B;AACrD,SAAQC,iBAAiB,QAAO,6CAA6C;AAE7ED,YAAY,CACV,gBAAOE,IAAI;EAAA,IAAEC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OACvB,MAAMH,iBAAiB,CAACC,IAAI,EAAEC,OAAO,CAACI,sBAAsB,EAAEJ,OAAO,CAACK,qBAAqB,CAAC;AAAA,CAChG,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { WorkerObject } from '@loaders.gl/worker-utils';
2
+ import type { ConvertedAttributes } from './i3s-converter/types';
3
+ import type { Matrix4, Vector3 } from '@math.gl/core';
4
+ import type { GLTFNodePostprocessed } from '@loaders.gl/gltf';
5
+ export type I3SAttributesWorkerOptions = {
6
+ _nodeWorkers: boolean;
7
+ reuseWorkers: boolean;
8
+ useCartesianPositions: boolean;
9
+ source: string;
10
+ };
11
+ export type TextureImageProperties = {
12
+ data: Uint8Array;
13
+ compressed?: boolean;
14
+ height?: number;
15
+ width?: number;
16
+ components?: number;
17
+ mimeType?: string;
18
+ };
19
+ export type B3DMAttributesData = {
20
+ gltfMaterials?: {
21
+ id: string;
22
+ }[];
23
+ nodes: GLTFNodePostprocessed[];
24
+ images: (null | TextureImageProperties)[];
25
+ cartographicOrigin: Vector3;
26
+ cartesianModelMatrix: Matrix4;
27
+ };
28
+ /**
29
+ * I3S Attributes Worker to handle B3DM object
30
+ */
31
+ export declare const I3SAttributesWorker: {
32
+ id: string;
33
+ name: string;
34
+ module: string;
35
+ version: any;
36
+ options: {
37
+ useCartesianPositions: boolean;
38
+ };
39
+ };
40
+ /**
41
+ * Performs I3S attributes transformation
42
+ */
43
+ export declare function transformI3SAttributesOnWorker(attributesData: B3DMAttributesData, options: I3SAttributesWorkerOptions): Promise<Map<string, ConvertedAttributes>>;
44
+ export declare const _typecheckI3SAttributesWorker: WorkerObject;
45
+ //# sourceMappingURL=i3s-attributes-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-attributes-worker.d.ts","sourceRoot":"","sources":["../src/i3s-attributes-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAQ5D,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,CAAC,EAAE;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC/B,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAQ/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,kBAAkB,EAClC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAE3C;AAED,eAAO,MAAM,6BAA6B,EAAE,YAAkC,CAAC"}