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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/3d-tiles-attributes-worker.js +2 -3
  2. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  3. package/dist/converter-cli.js +15 -2
  4. package/dist/converter.min.js +23 -20
  5. package/dist/dist.min.js +38236 -46911
  6. package/dist/es5/3d-tiles-attributes-worker.js +3 -6
  7. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  8. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +12 -111
  9. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  10. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +32 -72
  11. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  12. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
  13. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  14. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
  15. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  16. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
  17. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  18. package/dist/es5/bundle.js +0 -1
  19. package/dist/es5/bundle.js.map +1 -1
  20. package/dist/es5/constants.js.map +1 -1
  21. package/dist/es5/converter-cli.js +11 -56
  22. package/dist/es5/converter-cli.js.map +1 -1
  23. package/dist/es5/deps-installer/deps-installer.js +5 -35
  24. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  25. package/dist/es5/i3s-attributes-worker.js +3 -6
  26. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  27. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +2 -28
  28. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  29. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +8 -25
  30. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  31. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
  32. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  33. package/dist/es5/i3s-converter/helpers/feature-attributes.js +5 -34
  34. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
  35. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +13 -45
  36. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  37. package/dist/es5/i3s-converter/helpers/geometry-converter.js +26 -221
  38. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  39. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +2 -16
  40. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  41. package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
  42. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  43. package/dist/es5/i3s-converter/helpers/node-pages.js +50 -86
  44. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  45. package/dist/es5/i3s-converter/i3s-converter.js +69 -384
  46. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  47. package/dist/es5/i3s-converter/json-templates/layers.js +1 -15
  48. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  49. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
  50. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  51. package/dist/es5/i3s-converter/json-templates/node.js +2 -12
  52. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  53. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
  54. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  55. package/dist/es5/i3s-converter/json-templates/shared-resources.js +6 -29
  56. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  57. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  58. package/dist/es5/i3s-converter/types.js.map +1 -1
  59. package/dist/es5/i3s-server/app.js +0 -5
  60. package/dist/es5/i3s-server/app.js.map +1 -1
  61. package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
  62. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  63. package/dist/es5/i3s-server/routes/index.js +1 -10
  64. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  65. package/dist/es5/index.js +0 -3
  66. package/dist/es5/index.js.map +1 -1
  67. package/dist/es5/lib/utils/compress-util.js +19 -74
  68. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  69. package/dist/es5/lib/utils/file-utils.js +10 -38
  70. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  71. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
  72. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  73. package/dist/es5/lib/utils/queue.js +0 -14
  74. package/dist/es5/lib/utils/queue.js.map +1 -1
  75. package/dist/es5/lib/utils/statistic-utills.js +1 -46
  76. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  77. package/dist/es5/lib/utils/write-queue.js +0 -52
  78. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  79. package/dist/es5/pgm-loader.js +1 -8
  80. package/dist/es5/pgm-loader.js.map +1 -1
  81. package/dist/es5/workers/3d-tiles-attributes-worker.js +1 -8
  82. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
  83. package/dist/es5/workers/i3s-attributes-worker.js +1 -9
  84. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  85. package/dist/esm/3d-tiles-attributes-worker.js +3 -1
  86. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  87. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +8 -40
  88. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  89. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -38
  90. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  91. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
  92. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  93. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
  94. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  95. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
  96. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  97. package/dist/esm/bundle.js +1 -1
  98. package/dist/esm/bundle.js.map +1 -1
  99. package/dist/esm/constants.js.map +1 -1
  100. package/dist/esm/converter-cli.js +12 -41
  101. package/dist/esm/converter-cli.js.map +1 -1
  102. package/dist/esm/deps-installer/deps-installer.js +6 -7
  103. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  104. package/dist/esm/i3s-attributes-worker.js +3 -1
  105. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  106. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -23
  107. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  108. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +11 -12
  109. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  110. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
  111. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  112. package/dist/esm/i3s-converter/helpers/feature-attributes.js +6 -20
  113. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
  114. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +3 -22
  115. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  116. package/dist/esm/i3s-converter/helpers/geometry-converter.js +28 -139
  117. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  118. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +7 -12
  119. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  120. package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
  121. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  122. package/dist/esm/i3s-converter/helpers/node-pages.js +2 -21
  123. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  124. package/dist/esm/i3s-converter/i3s-converter.js +59 -144
  125. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  126. package/dist/esm/i3s-converter/json-templates/layers.js +1 -11
  127. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  128. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  129. package/dist/esm/i3s-converter/json-templates/node.js +0 -4
  130. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
  131. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  132. package/dist/esm/i3s-converter/json-templates/shared-resources.js +0 -12
  133. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  134. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  135. package/dist/esm/i3s-converter/types.js.map +1 -1
  136. package/dist/esm/i3s-server/app.js +0 -5
  137. package/dist/esm/i3s-server/app.js.map +1 -1
  138. package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
  139. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  140. package/dist/esm/i3s-server/routes/index.js +0 -3
  141. package/dist/esm/i3s-server/routes/index.js.map +1 -1
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/lib/utils/compress-util.js +19 -12
  144. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  145. package/dist/esm/lib/utils/file-utils.js +10 -8
  146. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  147. package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
  148. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  149. package/dist/esm/lib/utils/queue.js +0 -4
  150. package/dist/esm/lib/utils/queue.js.map +1 -1
  151. package/dist/esm/lib/utils/statistic-utills.js +0 -11
  152. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  153. package/dist/esm/lib/utils/write-queue.js +5 -23
  154. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  155. package/dist/esm/pgm-loader.js +3 -1
  156. package/dist/esm/pgm-loader.js.map +1 -1
  157. package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
  158. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
  159. package/dist/esm/workers/i3s-attributes-worker.js +4 -1
  160. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  161. package/dist/i3s-attributes-worker.js +2 -3
  162. package/dist/i3s-attributes-worker.js.map +3 -3
  163. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  164. package/dist/i3s-converter/helpers/coordinate-converter.js +8 -6
  165. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  166. package/dist/i3s-converter/helpers/geometry-converter.js +2 -0
  167. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  168. package/dist/i3s-converter/i3s-converter.js +14 -8
  169. package/dist/pgm-loader.d.ts.map +1 -1
  170. package/dist/pgm-loader.js +2 -1
  171. package/package.json +15 -15
  172. package/src/converter-cli.ts +16 -2
  173. package/src/i3s-converter/helpers/coordinate-converter.ts +8 -6
  174. package/src/i3s-converter/helpers/geometry-converter.ts +2 -0
  175. package/src/i3s-converter/i3s-converter.ts +17 -7
  176. package/src/pgm-loader.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/lod-conversion-utils.ts"],"names":["DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR","convertGeometricErrorToScreenThreshold","tile","coordinates","lodSelection","boundingVolume","lodMetricValue","maxScreenThreshold","metricType","maxError","mbs","maxScreenThresholdSQ","Math","PI","constructor","name","push","convertScreenThresholdToGeometricError","node","metricData","header","sqMetricData","sqrt"],"mappings":";;;;;;;AAIA,IAAMA,kCAAkC,GAAG,EAA3C;;AA6BO,SAASC,sCAAT,CAAgDC,IAAhD,EAA8DC,WAA9D,EAA4F;AACjG,MAAMC,YAAsD,GAAG,EAA/D;AACA,MAAMC,cAAc,GAAGH,IAAI,CAACG,cAA5B;AACA,MAAMC,cAAc,GAAGJ,IAAI,CAACI,cAAL,IAAuB,GAA9C;AACA,MAAMC,kBAAkB,GAAG;AACzBC,IAAAA,UAAU,EAAE,oBADa;AAEzBC,IAAAA,QAAQ,EAAGN,WAAW,CAACO,GAAZ,CAAgB,CAAhB,IAAqB,CAArB,GAAyBV,kCAA1B,GAAgEM;AAFjD,GAA3B;AAIA,MAAMK,oBAAoB,GAAG;AAC3BH,IAAAA,UAAU,EAAE,sBADe;AAE3BC,IAAAA,QAAQ,EAAEG,IAAI,CAACC,EAAL,GAAU,IAAV,GAAiBN,kBAAkB,CAACE,QAApC,GAA+CF,kBAAkB,CAACE;AAFjD,GAA7B;;AAKA,MAAIJ,cAAc,CAACS,WAAf,CAA2BC,IAA3B,KAAoC,qBAAxC,EAA+D;AAC7DX,IAAAA,YAAY,CAACY,IAAb,CAAkBL,oBAAlB;AACAP,IAAAA,YAAY,CAACY,IAAb,CAAkBT,kBAAlB;AACD,GAHD,MAGO;AACLH,IAAAA,YAAY,CAACY,IAAb,CAAkBT,kBAAlB;AACAH,IAAAA,YAAY,CAACY,IAAb,CAAkBL,oBAAlB;AACD;;AAED,SAAOP,YAAP;AACD;;AAOM,SAASa,sCAAT,CAAgDC,IAAhD,EAAsE;AAC3E,MAAMC,UAAU,GAAGD,IAAI,CAACE,MAAL,CAAYhB,YAAZ,CAAyBG,kBAAzB,IAA+C,EAAlE;AACA,MAAIE,QAAQ,GAAGU,UAAU,CAACV,QAA1B;;AACA,MAAI,CAACA,QAAL,EAAe;AACb,QAAMY,YAAY,GAAGH,IAAI,CAACE,MAAL,CAAYhB,YAAZ,CAAyBO,oBAA9C;;AACA,QAAIU,YAAJ,EAAkB;AAChBZ,MAAAA,QAAQ,GAAGG,IAAI,CAACU,IAAL,CAAUD,YAAY,CAACZ,QAAb,IAAyBG,IAAI,CAACC,EAAL,GAAU,IAAnC,CAAV,CAAX;AACD;AACF;;AAED,MAAI,CAACJ,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAGT,kCAAX;AACD;;AAED,SAAQkB,IAAI,CAACE,MAAL,CAAYV,GAAZ,CAAgB,CAAhB,IAAqB,CAArB,GAAyBV,kCAA1B,GAAgES,QAAvE;AACD","sourcesContent":["import {BoundingVolumes} from '@loaders.gl/i3s';\nimport {Tile3D} from '@loaders.gl/tiles';\n\n// https://cesium.com/docs/cesiumjs-ref-doc/Cesium3DTileset.html\nconst DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;\n/**\n * Do conversion from geometric error to screen threshold\n * \n * In 3DTiles we have HLOD logic and parent tile also has bigger lodMetric value then its children.\n * In I3s we have reverse logic related to maxError. Parent has lower maxError than its child.\n * In nodes where are no children tile.lodMetricValue is 0. This is because of logic of HLOD in 3DTiles\n * 3DTiles spec:\n * https://github.com/CesiumGS/3d-tiles/tree/master/specification#geometric-error\n * I3S spec:\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/lodSelection.cmn.md\n * To avoid infinity values when we do calculations of maxError we shold replace 0 with value which allows us\n * to make child maxError bigger than his parent maxError.\n * \n * @param tile - 3d-tiles tile Object\n * @param coordinates - node converted coordinates\n * @returns An array of LOD metrics in format compatible with i3s 3DNodeIndexDocument.lodSelection\n * @example \n * [\n {\n \"metricType\": \"maxScreenThresholdSQ\",\n \"maxError\": 870638.071285568\n },\n {\n \"metricType\": \"maxScreenThreshold\",\n \"maxError\": 1052.8679031638949\n }\n ]\n */\nexport function convertGeometricErrorToScreenThreshold(tile: Tile3D, coordinates: BoundingVolumes) {\n const lodSelection: {metricType: string; maxError: number}[] = [];\n const boundingVolume = tile.boundingVolume;\n const lodMetricValue = tile.lodMetricValue || 0.1;\n const maxScreenThreshold = {\n metricType: 'maxScreenThreshold',\n maxError: (coordinates.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / lodMetricValue\n };\n const maxScreenThresholdSQ = {\n metricType: 'maxScreenThresholdSQ',\n maxError: Math.PI * 0.25 * maxScreenThreshold.maxError * maxScreenThreshold.maxError\n };\n\n if (boundingVolume.constructor.name === 'OrientedBoundingBox') {\n lodSelection.push(maxScreenThresholdSQ);\n lodSelection.push(maxScreenThreshold);\n } else {\n lodSelection.push(maxScreenThreshold);\n lodSelection.push(maxScreenThresholdSQ);\n }\n\n return lodSelection;\n}\n\n/**\n * Convert LOD metric from \"Screen Threshold\" to \"Screen Space Error\"\n * @param node - i3s node data\n * @returns lod metric in 3d-tiles format\n */\nexport function convertScreenThresholdToGeometricError(node: Tile3D): number {\n const metricData = node.header.lodSelection.maxScreenThreshold || {};\n let maxError = metricData.maxError;\n if (!maxError) {\n const sqMetricData = node.header.lodSelection.maxScreenThresholdSQ;\n if (sqMetricData) {\n maxError = Math.sqrt(sqMetricData.maxError / (Math.PI * 0.25));\n }\n }\n\n if (!maxError) {\n maxError = DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR;\n }\n\n return (node.header.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / maxError;\n}\n"],"file":"lod-conversion-utils.js"}
1
+ {"version":3,"file":"lod-conversion-utils.js","names":["DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR","convertGeometricErrorToScreenThreshold","tile","coordinates","lodSelection","boundingVolume","lodMetricValue","maxScreenThreshold","metricType","maxError","mbs","maxScreenThresholdSQ","Math","PI","constructor","name","push","convertScreenThresholdToGeometricError","node","metricData","header","sqMetricData","sqrt"],"sources":["../../../../src/lib/utils/lod-conversion-utils.ts"],"sourcesContent":["import {BoundingVolumes} from '@loaders.gl/i3s';\nimport {Tile3D} from '@loaders.gl/tiles';\n\n// https://cesium.com/docs/cesiumjs-ref-doc/Cesium3DTileset.html\nconst DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;\n/**\n * Do conversion from geometric error to screen threshold\n * \n * In 3DTiles we have HLOD logic and parent tile also has bigger lodMetric value then its children.\n * In I3s we have reverse logic related to maxError. Parent has lower maxError than its child.\n * In nodes where are no children tile.lodMetricValue is 0. This is because of logic of HLOD in 3DTiles\n * 3DTiles spec:\n * https://github.com/CesiumGS/3d-tiles/tree/master/specification#geometric-error\n * I3S spec:\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/lodSelection.cmn.md\n * To avoid infinity values when we do calculations of maxError we shold replace 0 with value which allows us\n * to make child maxError bigger than his parent maxError.\n * \n * @param tile - 3d-tiles tile Object\n * @param coordinates - node converted coordinates\n * @returns An array of LOD metrics in format compatible with i3s 3DNodeIndexDocument.lodSelection\n * @example \n * [\n {\n \"metricType\": \"maxScreenThresholdSQ\",\n \"maxError\": 870638.071285568\n },\n {\n \"metricType\": \"maxScreenThreshold\",\n \"maxError\": 1052.8679031638949\n }\n ]\n */\nexport function convertGeometricErrorToScreenThreshold(tile: Tile3D, coordinates: BoundingVolumes) {\n const lodSelection: {metricType: string; maxError: number}[] = [];\n const boundingVolume = tile.boundingVolume;\n const lodMetricValue = tile.lodMetricValue || 0.1;\n const maxScreenThreshold = {\n metricType: 'maxScreenThreshold',\n maxError: (coordinates.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / lodMetricValue\n };\n const maxScreenThresholdSQ = {\n metricType: 'maxScreenThresholdSQ',\n maxError: Math.PI * 0.25 * maxScreenThreshold.maxError * maxScreenThreshold.maxError\n };\n\n if (boundingVolume.constructor.name === 'OrientedBoundingBox') {\n lodSelection.push(maxScreenThresholdSQ);\n lodSelection.push(maxScreenThreshold);\n } else {\n lodSelection.push(maxScreenThreshold);\n lodSelection.push(maxScreenThresholdSQ);\n }\n\n return lodSelection;\n}\n\n/**\n * Convert LOD metric from \"Screen Threshold\" to \"Screen Space Error\"\n * @param node - i3s node data\n * @returns lod metric in 3d-tiles format\n */\nexport function convertScreenThresholdToGeometricError(node: Tile3D): number {\n const metricData = node.header.lodSelection.maxScreenThreshold || {};\n let maxError = metricData.maxError;\n if (!maxError) {\n const sqMetricData = node.header.lodSelection.maxScreenThresholdSQ;\n if (sqMetricData) {\n maxError = Math.sqrt(sqMetricData.maxError / (Math.PI * 0.25));\n }\n }\n\n if (!maxError) {\n maxError = DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR;\n }\n\n return (node.header.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / maxError;\n}\n"],"mappings":";;;;;;;AAIA,IAAMA,kCAAkC,GAAG,EAAE;AA6BtC,SAASC,sCAAsC,CAACC,IAAY,EAAEC,WAA4B,EAAE;EACjG,IAAMC,YAAsD,GAAG,EAAE;EACjE,IAAMC,cAAc,GAAGH,IAAI,CAACG,cAAc;EAC1C,IAAMC,cAAc,GAAGJ,IAAI,CAACI,cAAc,IAAI,GAAG;EACjD,IAAMC,kBAAkB,GAAG;IACzBC,UAAU,EAAE,oBAAoB;IAChCC,QAAQ,EAAGN,WAAW,CAACO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGV,kCAAkC,GAAIM;EAC5E,CAAC;EACD,IAAMK,oBAAoB,GAAG;IAC3BH,UAAU,EAAE,sBAAsB;IAClCC,QAAQ,EAAEG,IAAI,CAACC,EAAE,GAAG,IAAI,GAAGN,kBAAkB,CAACE,QAAQ,GAAGF,kBAAkB,CAACE;EAC9E,CAAC;EAED,IAAIJ,cAAc,CAACS,WAAW,CAACC,IAAI,KAAK,qBAAqB,EAAE;IAC7DX,YAAY,CAACY,IAAI,CAACL,oBAAoB,CAAC;IACvCP,YAAY,CAACY,IAAI,CAACT,kBAAkB,CAAC;EACvC,CAAC,MAAM;IACLH,YAAY,CAACY,IAAI,CAACT,kBAAkB,CAAC;IACrCH,YAAY,CAACY,IAAI,CAACL,oBAAoB,CAAC;EACzC;EAEA,OAAOP,YAAY;AACrB;;AAOO,SAASa,sCAAsC,CAACC,IAAY,EAAU;EAC3E,IAAMC,UAAU,GAAGD,IAAI,CAACE,MAAM,CAAChB,YAAY,CAACG,kBAAkB,IAAI,CAAC,CAAC;EACpE,IAAIE,QAAQ,GAAGU,UAAU,CAACV,QAAQ;EAClC,IAAI,CAACA,QAAQ,EAAE;IACb,IAAMY,YAAY,GAAGH,IAAI,CAACE,MAAM,CAAChB,YAAY,CAACO,oBAAoB;IAClE,IAAIU,YAAY,EAAE;MAChBZ,QAAQ,GAAGG,IAAI,CAACU,IAAI,CAACD,YAAY,CAACZ,QAAQ,IAAIG,IAAI,CAACC,EAAE,GAAG,IAAI,CAAC,CAAC;IAChE;EACF;EAEA,IAAI,CAACJ,QAAQ,EAAE;IACbA,QAAQ,GAAGT,kCAAkC;EAC/C;EAEA,OAAQkB,IAAI,CAACE,MAAM,CAACV,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGV,kCAAkC,GAAIS,QAAQ;AACjF"}
@@ -1,38 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Queue = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
-
16
11
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
-
18
12
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
-
20
13
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
21
-
22
14
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
-
24
15
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
-
26
16
  var Queue = function (_Array) {
27
17
  (0, _inherits2.default)(Queue, _Array);
28
-
29
18
  var _super = _createSuper(Queue);
30
-
31
19
  function Queue() {
32
20
  (0, _classCallCheck2.default)(this, Queue);
33
21
  return _super.apply(this, arguments);
34
22
  }
35
-
36
23
  (0, _createClass2.default)(Queue, [{
37
24
  key: "enqueue",
38
25
  value: function enqueue(val) {
@@ -56,6 +43,5 @@ var Queue = function (_Array) {
56
43
  }]);
57
44
  return Queue;
58
45
  }((0, _wrapNativeSuper2.default)(Array));
59
-
60
46
  exports.Queue = Queue;
61
47
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/queue.ts"],"names":["Queue","val","push","shift","length","Array"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,K;;;;;;;;;;;;WACX,iBAAQC,GAAR,EAAgB;AACd,WAAKC,IAAL,CAAUD,GAAV;AACD;;;WAED,mBAAyB;AACvB,aAAO,KAAKE,KAAL,EAAP;AACD;;;WAED,gBAAU;AACR,aAAO,KAAK,CAAL,CAAP;AACD;;;WAED,mBAAU;AACR,aAAO,KAAKC,MAAL,KAAgB,CAAvB;AACD;;;iCAf2BC,K","sourcesContent":["export class Queue<T> extends Array<T> {\n enqueue(val: T) {\n this.push(val);\n }\n\n dequeue(): T | undefined {\n return this.shift();\n }\n\n peek(): T {\n return this[0];\n }\n\n isEmpty() {\n return this.length === 0;\n }\n}\n"],"file":"queue.js"}
1
+ {"version":3,"file":"queue.js","names":["Queue","val","push","shift","length","Array"],"sources":["../../../../src/lib/utils/queue.ts"],"sourcesContent":["export class Queue<T> extends Array<T> {\n enqueue(val: T) {\n this.push(val);\n }\n\n dequeue(): T | undefined {\n return this.shift();\n }\n\n peek(): T {\n return this[0];\n }\n\n isEmpty() {\n return this.length === 0;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;IAAaA,KAAK;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OAChB,iBAAQC,GAAM,EAAE;MACd,IAAI,CAACC,IAAI,CAACD,GAAG,CAAC;IAChB;EAAC;IAAA;IAAA,OAED,mBAAyB;MACvB,OAAO,IAAI,CAACE,KAAK,EAAE;IACrB;EAAC;IAAA;IAAA,OAED,gBAAU;MACR,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB;EAAC;IAAA;IAAA,OAED,mBAAU;MACR,OAAO,IAAI,CAACC,MAAM,KAAK,CAAC;IAC1B;EAAC;EAAA;AAAA,iCAf2BC,KAAK;AAAA"}
@@ -1,29 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports.timeConverter = timeConverter;
9
7
  exports.calculateFilesSize = calculateFilesSize;
10
-
8
+ exports.timeConverter = timeConverter;
11
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
-
15
11
  var _path = require("path");
16
-
17
12
  var _fs = require("fs");
18
-
19
13
  var _fileUtils = require("./file-utils");
20
-
21
14
  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; } } }; }
22
-
23
15
  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); }
24
-
25
16
  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; }
26
-
27
17
  function timeConverter(time) {
28
18
  var nanoSecondsInMillisecond = 1e6;
29
19
  var timeInSeconds = time[0];
@@ -34,30 +24,23 @@ function timeConverter(time) {
34
24
  var seconds = Math.floor(timeInSeconds);
35
25
  var milliseconds = time[1] / nanoSecondsInMillisecond;
36
26
  var result = '';
37
-
38
27
  if (hours) {
39
28
  result += "".concat(hours, "h ");
40
29
  }
41
-
42
30
  if (minutes) {
43
31
  result += "".concat(minutes, "m ");
44
32
  }
45
-
46
33
  if (seconds) {
47
34
  result += "".concat(seconds, "s");
48
35
  }
49
-
50
36
  if (!result) {
51
37
  result += "".concat(milliseconds, "ms");
52
38
  }
53
-
54
39
  return result;
55
40
  }
56
-
57
41
  function calculateFilesSize(_x) {
58
42
  return _calculateFilesSize.apply(this, arguments);
59
43
  }
60
-
61
44
  function _calculateFilesSize() {
62
45
  _calculateFilesSize = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(params) {
63
46
  var slpk, outputPath, tilesetName, fullOutputPath, slpkPath, stat, directoryPath, totalSize;
@@ -68,35 +51,28 @@ function _calculateFilesSize() {
68
51
  slpk = params.slpk, outputPath = params.outputPath, tilesetName = params.tilesetName;
69
52
  fullOutputPath = (0, _fileUtils.getAbsoluteFilePath)(outputPath);
70
53
  _context.prev = 2;
71
-
72
54
  if (!slpk) {
73
55
  _context.next = 9;
74
56
  break;
75
57
  }
76
-
77
58
  slpkPath = (0, _path.join)(fullOutputPath, "".concat(tilesetName, ".slpk"));
78
59
  _context.next = 7;
79
60
  return _fs.promises.stat(slpkPath);
80
-
81
61
  case 7:
82
62
  stat = _context.sent;
83
63
  return _context.abrupt("return", stat.size);
84
-
85
64
  case 9:
86
65
  directoryPath = (0, _path.join)(fullOutputPath, tilesetName);
87
66
  _context.next = 12;
88
67
  return getTotalFilesSize(directoryPath);
89
-
90
68
  case 12:
91
69
  totalSize = _context.sent;
92
70
  return _context.abrupt("return", totalSize);
93
-
94
71
  case 16:
95
72
  _context.prev = 16;
96
73
  _context.t0 = _context["catch"](2);
97
74
  console.log('Calculate file sizes error: ', _context.t0);
98
75
  return _context.abrupt("return", null);
99
-
100
76
  case 20:
101
77
  case "end":
102
78
  return _context.stop();
@@ -106,15 +82,12 @@ function _calculateFilesSize() {
106
82
  }));
107
83
  return _calculateFilesSize.apply(this, arguments);
108
84
  }
109
-
110
85
  function getTotalFilesSize(_x2) {
111
86
  return _getTotalFilesSize.apply(this, arguments);
112
87
  }
113
-
114
88
  function _getTotalFilesSize() {
115
89
  _getTotalFilesSize = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(dirPath) {
116
90
  var totalFileSize, files, _iterator, _step, file, fileStat;
117
-
118
91
  return _regenerator.default.wrap(function _callee2$(_context2) {
119
92
  while (1) {
120
93
  switch (_context2.prev = _context2.next) {
@@ -122,68 +95,50 @@ function _getTotalFilesSize() {
122
95
  totalFileSize = 0;
123
96
  _context2.next = 3;
124
97
  return _fs.promises.readdir(dirPath);
125
-
126
98
  case 3:
127
99
  files = _context2.sent;
128
100
  _iterator = _createForOfIteratorHelper(files);
129
101
  _context2.prev = 5;
130
-
131
102
  _iterator.s();
132
-
133
103
  case 7:
134
104
  if ((_step = _iterator.n()).done) {
135
105
  _context2.next = 22;
136
106
  break;
137
107
  }
138
-
139
108
  file = _step.value;
140
109
  _context2.next = 11;
141
110
  return _fs.promises.stat((0, _path.join)(dirPath, file));
142
-
143
111
  case 11:
144
112
  fileStat = _context2.sent;
145
-
146
113
  if (!fileStat.isDirectory()) {
147
114
  _context2.next = 19;
148
115
  break;
149
116
  }
150
-
151
117
  _context2.t0 = totalFileSize;
152
118
  _context2.next = 16;
153
119
  return getTotalFilesSize((0, _path.join)(dirPath, file));
154
-
155
120
  case 16:
156
121
  totalFileSize = _context2.t0 += _context2.sent;
157
122
  _context2.next = 20;
158
123
  break;
159
-
160
124
  case 19:
161
125
  totalFileSize += fileStat.size;
162
-
163
126
  case 20:
164
127
  _context2.next = 7;
165
128
  break;
166
-
167
129
  case 22:
168
130
  _context2.next = 27;
169
131
  break;
170
-
171
132
  case 24:
172
133
  _context2.prev = 24;
173
134
  _context2.t1 = _context2["catch"](5);
174
-
175
135
  _iterator.e(_context2.t1);
176
-
177
136
  case 27:
178
137
  _context2.prev = 27;
179
-
180
138
  _iterator.f();
181
-
182
139
  return _context2.finish(27);
183
-
184
140
  case 30:
185
141
  return _context2.abrupt("return", totalFileSize);
186
-
187
142
  case 31:
188
143
  case "end":
189
144
  return _context2.stop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/statistic-utills.ts"],"names":["timeConverter","time","nanoSecondsInMillisecond","timeInSeconds","hours","Math","floor","minutes","seconds","milliseconds","result","calculateFilesSize","params","slpk","outputPath","tilesetName","fullOutputPath","slpkPath","fs","stat","size","directoryPath","getTotalFilesSize","totalSize","console","log","dirPath","totalFileSize","readdir","files","file","fileStat","isDirectory"],"mappings":"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","sourcesContent":["import {join} from 'path';\nimport {promises as fs} from 'fs';\nimport {getAbsoluteFilePath} from './file-utils';\n\nexport function timeConverter(time) {\n const nanoSecondsInMillisecond = 1e6;\n let timeInSeconds = time[0];\n const hours = Math.floor(timeInSeconds / 3600);\n timeInSeconds = timeInSeconds - hours * 3600;\n const minutes = Math.floor(timeInSeconds / 60);\n timeInSeconds = timeInSeconds - minutes * 60;\n const seconds = Math.floor(timeInSeconds);\n const milliseconds = time[1] / nanoSecondsInMillisecond;\n let result = '';\n\n if (hours) {\n result += `${hours}h `;\n }\n\n if (minutes) {\n result += `${minutes}m `;\n }\n\n if (seconds) {\n result += `${seconds}s`;\n }\n\n if (!result) {\n result += `${milliseconds}ms`;\n }\n\n return result;\n}\n\nexport async function calculateFilesSize(params) {\n const {slpk, outputPath, tilesetName} = params;\n const fullOutputPath = getAbsoluteFilePath(outputPath);\n\n try {\n if (slpk) {\n const slpkPath = join(fullOutputPath, `${tilesetName}.slpk`);\n const stat = await fs.stat(slpkPath);\n return stat.size;\n }\n\n const directoryPath = join(fullOutputPath, tilesetName);\n const totalSize = await getTotalFilesSize(directoryPath);\n return totalSize;\n } catch (error) {\n console.log('Calculate file sizes error: ', error); // eslint-disable-line\n return null;\n }\n}\n\nasync function getTotalFilesSize(dirPath) {\n let totalFileSize = 0;\n\n const files = await fs.readdir(dirPath);\n\n for (const file of files) {\n const fileStat = await fs.stat(join(dirPath, file));\n if (fileStat.isDirectory()) {\n totalFileSize += await getTotalFilesSize(join(dirPath, file));\n } else {\n totalFileSize += fileStat.size;\n }\n }\n return totalFileSize;\n}\n"],"file":"statistic-utills.js"}
1
+ {"version":3,"file":"statistic-utills.js","names":["timeConverter","time","nanoSecondsInMillisecond","timeInSeconds","hours","Math","floor","minutes","seconds","milliseconds","result","calculateFilesSize","params","slpk","outputPath","tilesetName","fullOutputPath","getAbsoluteFilePath","slpkPath","join","fs","stat","size","directoryPath","getTotalFilesSize","totalSize","console","log","dirPath","totalFileSize","readdir","files","file","fileStat","isDirectory"],"sources":["../../../../src/lib/utils/statistic-utills.ts"],"sourcesContent":["import {join} from 'path';\nimport {promises as fs} from 'fs';\nimport {getAbsoluteFilePath} from './file-utils';\n\nexport function timeConverter(time) {\n const nanoSecondsInMillisecond = 1e6;\n let timeInSeconds = time[0];\n const hours = Math.floor(timeInSeconds / 3600);\n timeInSeconds = timeInSeconds - hours * 3600;\n const minutes = Math.floor(timeInSeconds / 60);\n timeInSeconds = timeInSeconds - minutes * 60;\n const seconds = Math.floor(timeInSeconds);\n const milliseconds = time[1] / nanoSecondsInMillisecond;\n let result = '';\n\n if (hours) {\n result += `${hours}h `;\n }\n\n if (minutes) {\n result += `${minutes}m `;\n }\n\n if (seconds) {\n result += `${seconds}s`;\n }\n\n if (!result) {\n result += `${milliseconds}ms`;\n }\n\n return result;\n}\n\nexport async function calculateFilesSize(params) {\n const {slpk, outputPath, tilesetName} = params;\n const fullOutputPath = getAbsoluteFilePath(outputPath);\n\n try {\n if (slpk) {\n const slpkPath = join(fullOutputPath, `${tilesetName}.slpk`);\n const stat = await fs.stat(slpkPath);\n return stat.size;\n }\n\n const directoryPath = join(fullOutputPath, tilesetName);\n const totalSize = await getTotalFilesSize(directoryPath);\n return totalSize;\n } catch (error) {\n console.log('Calculate file sizes error: ', error); // eslint-disable-line\n return null;\n }\n}\n\nasync function getTotalFilesSize(dirPath) {\n let totalFileSize = 0;\n\n const files = await fs.readdir(dirPath);\n\n for (const file of files) {\n const fileStat = await fs.stat(join(dirPath, file));\n if (fileStat.isDirectory()) {\n totalFileSize += await getTotalFilesSize(join(dirPath, file));\n } else {\n totalFileSize += fileStat.size;\n }\n }\n return totalFileSize;\n}\n"],"mappings":"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"}
@@ -1,50 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
13
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
21
-
22
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
28
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
18
  var _queue = require("./queue");
31
-
32
19
  var _process = _interopRequireDefault(require("process"));
33
-
34
20
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
35
-
36
21
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
37
-
38
22
  var MEMORY_LIMIT = 4 * 1024 * 1024 * 1024;
39
-
40
23
  var WriteQueue = function (_Queue) {
41
24
  (0, _inherits2.default)(WriteQueue, _Queue);
42
-
43
25
  var _super = _createSuper(WriteQueue);
44
-
45
26
  function WriteQueue() {
46
27
  var _this;
47
-
48
28
  var listeningInterval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
49
29
  var writeConcurrency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
50
30
  (0, _classCallCheck2.default)(this, WriteQueue);
@@ -58,7 +38,6 @@ var WriteQueue = function (_Queue) {
58
38
  _this.writeConcurrency = writeConcurrency;
59
39
  return _this;
60
40
  }
61
-
62
41
  (0, _createClass2.default)(WriteQueue, [{
63
42
  key: "enqueue",
64
43
  value: function () {
@@ -68,15 +47,12 @@ var WriteQueue = function (_Queue) {
68
47
  switch (_context.prev = _context.next) {
69
48
  case 0:
70
49
  (0, _get2.default)((0, _getPrototypeOf2.default)(WriteQueue.prototype), "enqueue", this).call(this, val);
71
-
72
50
  if (!(_process.default.memoryUsage().rss > MEMORY_LIMIT)) {
73
51
  _context.next = 4;
74
52
  break;
75
53
  }
76
-
77
54
  _context.next = 4;
78
55
  return this.startWrite();
79
-
80
56
  case 4:
81
57
  case "end":
82
58
  return _context.stop();
@@ -84,11 +60,9 @@ var WriteQueue = function (_Queue) {
84
60
  }
85
61
  }, _callee, this);
86
62
  }));
87
-
88
63
  function enqueue(_x) {
89
64
  return _enqueue.apply(this, arguments);
90
65
  }
91
-
92
66
  return enqueue;
93
67
  }()
94
68
  }, {
@@ -115,22 +89,17 @@ var WriteQueue = function (_Queue) {
115
89
  _context2.next = 5;
116
90
  break;
117
91
  }
118
-
119
92
  _context2.next = 3;
120
93
  return this.writePromise;
121
-
122
94
  case 3:
123
95
  this.writePromise = null;
124
96
  return _context2.abrupt("return");
125
-
126
97
  case 5:
127
98
  this.writePromise = this.doWrite();
128
99
  _context2.next = 8;
129
100
  return this.writePromise;
130
-
131
101
  case 8:
132
102
  this.writePromise = null;
133
-
134
103
  case 9:
135
104
  case "end":
136
105
  return _context2.stop();
@@ -138,11 +107,9 @@ var WriteQueue = function (_Queue) {
138
107
  }
139
108
  }, _callee2, this);
140
109
  }));
141
-
142
110
  function startWrite() {
143
111
  return _startWrite.apply(this, arguments);
144
112
  }
145
-
146
113
  return startWrite;
147
114
  }()
148
115
  }, {
@@ -156,7 +123,6 @@ var WriteQueue = function (_Queue) {
156
123
  this.stopListening();
157
124
  _context3.next = 3;
158
125
  return this.startWrite();
159
-
160
126
  case 3:
161
127
  case "end":
162
128
  return _context3.stop();
@@ -164,11 +130,9 @@ var WriteQueue = function (_Queue) {
164
130
  }
165
131
  }, _callee3, this);
166
132
  }));
167
-
168
133
  function finalize() {
169
134
  return _finalize.apply(this, arguments);
170
135
  }
171
-
172
136
  return finalize;
173
137
  }()
174
138
  }, {
@@ -176,7 +140,6 @@ var WriteQueue = function (_Queue) {
176
140
  value: function () {
177
141
  var _doWrite = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
178
142
  var promises, archiveKeys, i, item, _ref, archiveKey, writePromise, writeResults;
179
-
180
143
  return _regenerator.default.wrap(function _callee4$(_context4) {
181
144
  while (1) {
182
145
  switch (_context4.prev = _context4.next) {
@@ -185,49 +148,38 @@ var WriteQueue = function (_Queue) {
185
148
  _context4.next = 20;
186
149
  break;
187
150
  }
188
-
189
151
  promises = [];
190
152
  archiveKeys = [];
191
153
  i = 0;
192
-
193
154
  case 4:
194
155
  if (!(i < this.writeConcurrency)) {
195
156
  _context4.next = 14;
196
157
  break;
197
158
  }
198
-
199
159
  item = this.dequeue();
200
-
201
160
  if (item) {
202
161
  _context4.next = 8;
203
162
  break;
204
163
  }
205
-
206
164
  return _context4.abrupt("break", 14);
207
-
208
165
  case 8:
209
166
  _ref = item, archiveKey = _ref.archiveKey, writePromise = _ref.writePromise;
210
167
  archiveKeys.push(archiveKey);
211
168
  promises.push(writePromise);
212
-
213
169
  case 11:
214
170
  i++;
215
171
  _context4.next = 4;
216
172
  break;
217
-
218
173
  case 14:
219
174
  _context4.next = 16;
220
175
  return Promise.allSettled(promises);
221
-
222
176
  case 16:
223
177
  writeResults = _context4.sent;
224
178
  this.updateFileMap(archiveKeys, writeResults);
225
179
  _context4.next = 0;
226
180
  break;
227
-
228
181
  case 20:
229
182
  this.writePromise = null;
230
-
231
183
  case 21:
232
184
  case "end":
233
185
  return _context4.stop();
@@ -235,11 +187,9 @@ var WriteQueue = function (_Queue) {
235
187
  }
236
188
  }, _callee4, this);
237
189
  }));
238
-
239
190
  function doWrite() {
240
191
  return _doWrite.apply(this, arguments);
241
192
  }
242
-
243
193
  return doWrite;
244
194
  }()
245
195
  }, {
@@ -247,7 +197,6 @@ var WriteQueue = function (_Queue) {
247
197
  value: function updateFileMap(archiveKeys, writeResults) {
248
198
  for (var i = 0; i < archiveKeys.length; i++) {
249
199
  var archiveKey = archiveKeys[i];
250
-
251
200
  if (archiveKey && 'value' in writeResults[i]) {
252
201
  this.fileMap[archiveKey] = writeResults[i].value;
253
202
  }
@@ -256,6 +205,5 @@ var WriteQueue = function (_Queue) {
256
205
  }]);
257
206
  return WriteQueue;
258
207
  }(_queue.Queue);
259
-
260
208
  exports.default = WriteQueue;
261
209
  //# sourceMappingURL=write-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/write-queue.ts"],"names":["MEMORY_LIMIT","WriteQueue","listeningInterval","writeConcurrency","val","process","memoryUsage","rss","startWrite","intervalId","setInterval","bind","clearInterval","writePromise","doWrite","stopListening","length","promises","archiveKeys","i","item","dequeue","archiveKey","push","Promise","allSettled","writeResults","updateFileMap","fileMap","value","Queue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAGA,IAAMA,YAAY,GAAG,IAAI,IAAJ,GAAW,IAAX,GAAkB,IAAvC;;IAOqBC,U;;;;;AAOnB,wBAA8E;AAAA;;AAAA,QAAlEC,iBAAkE,uEAAtC,IAAsC;AAAA,QAAhCC,gBAAgC,uEAAL,GAAK;AAAA;AAC5E;AAD4E;AAAA,+FALlC,IAKkC;AAAA,0FAJpC,EAIoC;AAAA;AAAA;AAE5E,UAAKD,iBAAL,GAAyBA,iBAAzB;AACA,UAAKC,gBAAL,GAAwBA,gBAAxB;AAH4E;AAI7E;;;;;+EAED,iBAAcC,GAAd;AAAA;AAAA;AAAA;AAAA;AACE,oHAAcA,GAAd;;AADF,sBAGMC,iBAAQC,WAAR,GAAsBC,GAAtB,GAA4BP,YAHlC;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAIU,KAAKQ,UAAL,EAJV;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAQA,0BAAiB;AACf,WAAKC,UAAL,GAAkBC,WAAW,CAAC,KAAKF,UAAL,CAAgBG,IAAhB,CAAqB,IAArB,CAAD,EAA6B,KAAKT,iBAAlC,CAA7B;AACD;;;WAED,yBAAgB;AACd,UAAI,KAAKO,UAAT,EAAqB;AACnBG,QAAAA,aAAa,CAAC,KAAKH,UAAN,CAAb;AACD;AACF;;;;kFAED;AAAA;AAAA;AAAA;AAAA;AAAA,qBACM,KAAKI,YADX;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAEU,KAAKA,YAFf;;AAAA;AAGI,qBAAKA,YAAL,GAAoB,IAApB;AAHJ;;AAAA;AAME,qBAAKA,YAAL,GAAoB,KAAKC,OAAL,EAApB;AANF;AAAA,uBAOQ,KAAKD,YAPb;;AAAA;AAQE,qBAAKA,YAAL,GAAoB,IAApB;;AARF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gFAWA;AAAA;AAAA;AAAA;AAAA;AACE,qBAAKE,aAAL;AADF;AAAA,uBAEQ,KAAKP,UAAL,EAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+EAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qBACS,KAAKQ,MADd;AAAA;AAAA;AAAA;;AAEUC,gBAAAA,QAFV,GAEwC,EAFxC;AAGUC,gBAAAA,WAHV,GAGgD,EAHhD;AAIaC,gBAAAA,CAJb,GAIiB,CAJjB;;AAAA;AAAA,sBAIoBA,CAAC,GAAG,KAAKhB,gBAJ7B;AAAA;AAAA;AAAA;;AAKYiB,gBAAAA,IALZ,GAKmB,KAAKC,OAAL,EALnB;;AAAA,oBAMWD,IANX;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,uBASyCA,IATzC,EASaE,UATb,QASaA,UATb,EASyBT,YATzB,QASyBA,YATzB;AAUMK,gBAAAA,WAAW,CAACK,IAAZ,CAAiBD,UAAjB;AACAL,gBAAAA,QAAQ,CAACM,IAAT,CAAcV,YAAd;;AAXN;AAI+CM,gBAAAA,CAAC,EAJhD;AAAA;AAAA;;AAAA;AAAA;AAAA,uBAa+BK,OAAO,CAACC,UAAR,CAAmBR,QAAnB,CAb/B;;AAAA;AAaUS,gBAAAA,YAbV;AAcI,qBAAKC,aAAL,CAAmBT,WAAnB,EAAgCQ,YAAhC;AAdJ;AAAA;;AAAA;AAgBE,qBAAKb,YAAL,GAAoB,IAApB;;AAhBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAmBA,uBACEK,WADF,EAEEQ,YAFF,EAGE;AACA,WAAK,IAAIP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,WAAW,CAACF,MAAhC,EAAwCG,CAAC,EAAzC,EAA6C;AAC3C,YAAMG,UAAU,GAAGJ,WAAW,CAACC,CAAD,CAA9B;;AACA,YAAIG,UAAU,IAAI,WAAWI,YAAY,CAACP,CAAD,CAAzC,EAA8C;AAC5C,eAAKS,OAAL,CAAaN,UAAb,IAA4BI,YAAY,CAACP,CAAD,CAAb,CAAoDU,KAA/E;AACD;AACF;AACF;;;EA5E+DC,Y","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 writePromise: Promise<string>;\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) {\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 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 await this.writePromise;\n this.writePromise = null;\n return;\n }\n this.writePromise = this.doWrite();\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>[] = [];\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 promises.push(writePromise);\n }\n const writeResults = await Promise.allSettled(promises);\n this.updateFileMap(archiveKeys, writeResults);\n }\n this.writePromise = null;\n }\n\n private updateFileMap(\n archiveKeys: (string | undefined)[],\n writeResults: PromiseSettledResult<string>[]\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"],"file":"write-queue.js"}
1
+ {"version":3,"file":"write-queue.js","names":["MEMORY_LIMIT","WriteQueue","listeningInterval","writeConcurrency","val","process","memoryUsage","rss","startWrite","intervalId","setInterval","bind","clearInterval","writePromise","doWrite","stopListening","length","promises","archiveKeys","i","item","dequeue","archiveKey","push","Promise","allSettled","writeResults","updateFileMap","fileMap","value","Queue"],"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 writePromise: Promise<string>;\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) {\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 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 await this.writePromise;\n this.writePromise = null;\n return;\n }\n this.writePromise = this.doWrite();\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>[] = [];\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 promises.push(writePromise);\n }\n const writeResults = await Promise.allSettled(promises);\n this.updateFileMap(archiveKeys, writeResults);\n }\n this.writePromise = null;\n }\n\n private updateFileMap(\n archiveKeys: (string | undefined)[],\n writeResults: PromiseSettledResult<string>[]\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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"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.PGMLoader = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _geoid = require("@math.gl/geoid");
11
+ var VERSION = typeof "3.3.0-alpha.7" !== 'undefined' ? "3.3.0-alpha.7" : 'latest';
15
12
 
16
- var VERSION = typeof "3.3.0-alpha.5" !== 'undefined' ? "3.3.0-alpha.5" : 'latest';
17
13
  var PGMLoader = {
18
14
  name: 'PGM - Netpbm grayscale image format',
19
15
  id: 'pgm',
@@ -27,7 +23,6 @@ var PGMLoader = {
27
23
  switch (_context.prev = _context.next) {
28
24
  case 0:
29
25
  return _context.abrupt("return", (0, _geoid.parsePGM)(new Uint8Array(arrayBuffer), options));
30
-
31
26
  case 1:
32
27
  case "end":
33
28
  return _context.stop();
@@ -35,11 +30,9 @@ var PGMLoader = {
35
30
  }
36
31
  }, _callee);
37
32
  }));
38
-
39
33
  function parse(_x, _x2) {
40
34
  return _parse.apply(this, arguments);
41
35
  }
42
-
43
36
  return parse;
44
37
  }(),
45
38
  extensions: ['pgm'],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pgm-loader.ts"],"names":["VERSION","PGMLoader","name","id","module","version","mimeTypes","parse","arrayBuffer","options","Uint8Array","extensions","cubic"],"mappings":";;;;;;;;;;;;;AAMA;;AAFA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAOO,IAAMC,SAA2B,GAAG;AACzCC,EAAAA,IAAI,EAAE,qCADmC;AAEzCC,EAAAA,EAAE,EAAE,KAFqC;AAGzCC,EAAAA,MAAM,EAAE,gBAHiC;AAIzCC,EAAAA,OAAO,EAAEL,OAJgC;AAKzCM,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAL8B;AAMzCC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAgC,qBAAS,IAAIC,UAAJ,CAAeF,WAAf,CAAT,EAAsCC,OAAtC,CAAhC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KANoC;AAOzCE,EAAAA,UAAU,EAAE,CAAC,KAAD,CAP6B;AAQzCF,EAAAA,OAAO,EAAE;AAEPG,IAAAA,KAAK,EAAE;AAFA;AARgC,CAApC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nimport {parsePGM} from '@math.gl/geoid';\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 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"],"file":"pgm-loader.js"}
1
+ {"version":3,"file":"pgm-loader.js","names":["VERSION","PGMLoader","name","id","module","version","mimeTypes","parse","arrayBuffer","options","parsePGM","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;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;;AAKpE,IAAMC,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;IAAA,uEAAE,iBAAOC,WAAW,EAAEC,OAAO;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAK,IAAAC,eAAQ,EAAC,IAAIC,UAAU,CAACH,WAAW,CAAC,EAAEC,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACrFG,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBH,OAAO,EAAE;IAEPI,KAAK,EAAE;EACT;AACF,CAAC;AAAC"}
@@ -1,27 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
6
  var _workerUtils = require("@loaders.gl/worker-utils");
10
-
11
7
  var _b3dmConverter = _interopRequireDefault(require("../3d-tiles-converter/helpers/b3dm-converter"));
12
-
13
8
  var b3dmConverter = new _b3dmConverter.default();
14
9
  (0, _workerUtils.createWorker)(function () {
15
10
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
16
11
  var options,
17
- _args = arguments;
12
+ _args = arguments;
18
13
  return _regenerator.default.wrap(function _callee$(_context) {
19
14
  while (1) {
20
15
  switch (_context.prev = _context.next) {
21
16
  case 0:
22
17
  options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
23
18
  return _context.abrupt("return", b3dmConverter.convert(data, options.featureAttributes));
24
-
25
19
  case 2:
26
20
  case "end":
27
21
  return _context.stop();
@@ -29,7 +23,6 @@ var b3dmConverter = new _b3dmConverter.default();
29
23
  }
30
24
  }, _callee);
31
25
  }));
32
-
33
26
  return function (_x) {
34
27
  return _ref.apply(this, arguments);
35
28
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workers/3d-tiles-attributes-worker.ts"],"names":["b3dmConverter","B3dmConverter","data","options","convert","featureAttributes"],"mappings":";;;;;;;;AAAA;;AACA;;AAEA,IAAMA,aAAa,GAAG,IAAIC,sBAAJ,EAAtB;AAEA;AAAA,uEAAa,iBAAOC,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAaC,YAAAA,OAAb,2DAAuB,EAAvB;AAAA,6CAA8BH,aAAa,CAACI,OAAd,CAAsBF,IAAtB,EAA4BC,OAAO,CAACE,iBAApC,CAA9B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAb;;AAAA;AAAA;AAAA;AAAA","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"],"file":"3d-tiles-attributes-worker.js"}
1
+ {"version":3,"file":"3d-tiles-attributes-worker.js","names":["b3dmConverter","B3dmConverter","createWorker","data","options","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;AACA;AAEA,IAAMA,aAAa,GAAG,IAAIC,sBAAa,EAAE;AAEzC,IAAAC,yBAAY;EAAA,qEAAC,iBAAOC,IAAI;IAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,OAAO,2DAAG,CAAC,CAAC;YAAA,iCAAKJ,aAAa,CAACK,OAAO,CAACF,IAAI,EAAEC,OAAO,CAACE,iBAAiB,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA,IAAC"}