@loaders.gl/tile-converter 3.3.0-alpha.8 → 3.3.1

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 (132) hide show
  1. package/dist/3d-tiles-attributes-worker.js +2 -2
  2. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  3. package/dist/converter-cli.js +14 -2
  4. package/dist/converter.min.js +22 -22
  5. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  6. package/dist/deps-installer/deps-installer.js +8 -0
  7. package/dist/dist.min.js +1167 -848
  8. package/dist/es5/3d-tiles-attributes-worker.js +1 -1
  9. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  10. package/dist/es5/converter-cli.js +14 -2
  11. package/dist/es5/converter-cli.js.map +1 -1
  12. package/dist/es5/deps-installer/deps-installer.js +13 -2
  13. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  14. package/dist/es5/i3s-attributes-worker.js +1 -1
  15. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  16. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  17. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +16 -7
  18. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  19. package/dist/es5/i3s-converter/helpers/geometry-converter.js +363 -113
  20. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  21. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +6 -11
  22. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/node-index-document.js +517 -0
  24. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  25. package/dist/es5/i3s-converter/helpers/node-pages.js +455 -173
  26. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  27. package/dist/es5/i3s-converter/i3s-converter.js +549 -618
  28. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  29. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  30. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  31. package/dist/es5/i3s-converter/json-templates/layers.js +2 -93
  32. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  33. package/dist/es5/i3s-converter/json-templates/shared-resources.js +3 -3
  34. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  35. package/dist/es5/i3s-converter/types.js.map +1 -1
  36. package/dist/es5/lib/utils/file-utils.js +93 -9
  37. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  38. package/dist/es5/lib/utils/write-queue.js +38 -25
  39. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  40. package/dist/es5/pgm-loader.js +1 -1
  41. package/dist/es5/pgm-loader.js.map +1 -1
  42. package/dist/es5/workers/i3s-attributes-worker.js +1 -1
  43. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  44. package/dist/esm/3d-tiles-attributes-worker.js +1 -1
  45. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  46. package/dist/esm/converter-cli.js +14 -2
  47. package/dist/esm/converter-cli.js.map +1 -1
  48. package/dist/esm/deps-installer/deps-installer.js +9 -1
  49. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  50. package/dist/esm/i3s-attributes-worker.js +1 -1
  51. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  52. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  53. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +16 -7
  54. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  55. package/dist/esm/i3s-converter/helpers/geometry-converter.js +150 -40
  56. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  57. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +6 -9
  58. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  59. package/dist/esm/i3s-converter/helpers/node-index-document.js +202 -0
  60. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  61. package/dist/esm/i3s-converter/helpers/node-pages.js +162 -76
  62. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  63. package/dist/esm/i3s-converter/i3s-converter.js +115 -220
  64. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  65. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  66. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  67. package/dist/esm/i3s-converter/json-templates/layers.js +2 -85
  68. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  69. package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -3
  70. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  71. package/dist/esm/i3s-converter/types.js.map +1 -1
  72. package/dist/esm/lib/utils/file-utils.js +44 -3
  73. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  74. package/dist/esm/lib/utils/write-queue.js +19 -10
  75. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  76. package/dist/esm/pgm-loader.js +1 -1
  77. package/dist/esm/pgm-loader.js.map +1 -1
  78. package/dist/esm/workers/i3s-attributes-worker.js +1 -1
  79. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  80. package/dist/i3s-attributes-worker.js +2 -2
  81. package/dist/i3s-attributes-worker.js.map +2 -2
  82. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +3 -3
  83. package/dist/i3s-converter/helpers/batch-ids-extensions.js +3 -3
  84. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  85. package/dist/i3s-converter/helpers/geometry-attributes.js +16 -10
  86. package/dist/i3s-converter/helpers/geometry-converter.d.ts +8 -4
  87. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  88. package/dist/i3s-converter/helpers/geometry-converter.js +200 -44
  89. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  90. package/dist/i3s-converter/helpers/gltf-attributes.js +2 -3
  91. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  92. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  93. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  94. package/dist/i3s-converter/helpers/node-pages.d.ts +78 -43
  95. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  96. package/dist/i3s-converter/helpers/node-pages.js +194 -93
  97. package/dist/i3s-converter/i3s-converter.d.ts +33 -58
  98. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  99. package/dist/i3s-converter/i3s-converter.js +122 -233
  100. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  101. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  102. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  103. package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
  104. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  105. package/dist/i3s-converter/json-templates/layers.js +2 -86
  106. package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
  107. package/dist/i3s-converter/types.d.ts +28 -2
  108. package/dist/i3s-converter/types.d.ts.map +1 -1
  109. package/dist/lib/utils/file-utils.d.ts +17 -1
  110. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  111. package/dist/lib/utils/file-utils.js +64 -7
  112. package/dist/lib/utils/write-queue.d.ts +18 -2
  113. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  114. package/dist/lib/utils/write-queue.js +18 -12
  115. package/dist/workers/i3s-attributes-worker.js +1 -1
  116. package/package.json +25 -20
  117. package/src/converter-cli.ts +22 -2
  118. package/src/deps-installer/deps-installer.ts +9 -0
  119. package/src/i3s-converter/helpers/batch-ids-extensions.ts +3 -3
  120. package/src/i3s-converter/helpers/geometry-attributes.ts +16 -11
  121. package/src/i3s-converter/helpers/geometry-converter.ts +217 -48
  122. package/src/i3s-converter/helpers/gltf-attributes.ts +2 -3
  123. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  124. package/src/i3s-converter/helpers/node-pages.ts +215 -110
  125. package/src/i3s-converter/i3s-converter.ts +170 -312
  126. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  127. package/src/i3s-converter/json-templates/layers.ts +2 -91
  128. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  129. package/src/i3s-converter/types.ts +29 -2
  130. package/src/lib/utils/file-utils.ts +62 -7
  131. package/src/lib/utils/write-queue.ts +36 -15
  132. package/src/workers/i3s-attributes-worker.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"layers.js","names":["PLAIN_GEOMETRY_DEFINITION","offset","position","type","component","normal","uv0","color","featureId","binding","faceRange","PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0","COMPRESSED_GEOMETRY_DEFINITION","compressedAttributes","encoding","attributes","COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0","SPATIAL_REFERENCE","wkid","path","default","latestWkid","vcsWkid","latestVcsWkid","HEIGHT_MODEL_INFO","heightModel","vertCRS","heightUnit","NODE_PAGES","nodesPerPage","lodSelectionMetricType","FULL_EXTENT","xmin","ymin","xmax","ymax","zmin","zmax","LAYERS","version","transform","val","toUpperCase","id","name","href","layerType","spatialReference","capabilities","store","STORE","fullExtent","heightModelInfo","nodePages","materialDefinitions","textureSetDefinitions","geometryDefinitions","result","geometryBuffers","push","attributeStorageInfo","fields","popupInfo"],"sources":["../../../../src/i3s-converter/json-templates/layers.ts"],"sourcesContent":["import transform from 'json-map-transform';\nimport {STORE} from './store';\n\nconst PLAIN_GEOMETRY_DEFINITION = () => ({\n offset: 8,\n position: {\n type: 'Float32',\n component: 3\n },\n normal: {\n type: 'Float32',\n component: 3\n },\n uv0: {\n type: 'Float32',\n component: 2\n },\n color: {\n type: 'UInt8',\n component: 4\n },\n featureId: {\n binding: 'per-feature',\n type: 'UInt64',\n component: 1\n },\n faceRange: {\n binding: 'per-feature',\n type: 'UInt32',\n component: 2\n }\n});\n\nconst PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({\n offset: 8,\n position: {\n type: 'Float32',\n component: 3\n },\n normal: {\n type: 'Float32',\n component: 3\n },\n color: {\n type: 'UInt8',\n component: 4\n },\n featureId: {\n binding: 'per-feature',\n type: 'UInt64',\n component: 1\n },\n faceRange: {\n binding: 'per-feature',\n type: 'UInt32',\n component: 2\n }\n});\n\nconst COMPRESSED_GEOMETRY_DEFINITION = () => ({\n compressedAttributes: {\n encoding: 'draco',\n attributes: ['position', 'normal', 'uv0', 'color', 'feature-index']\n }\n});\n\nconst COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = () => ({\n compressedAttributes: {\n encoding: 'draco',\n attributes: ['position', 'normal', 'color', 'feature-index']\n }\n});\n\nconst SPATIAL_REFERENCE = () => ({\n wkid: {\n path: 'wkid',\n default: 4326\n },\n latestWkid: {\n path: 'latestWkid',\n default: 4326\n },\n vcsWkid: {\n path: 'vcsWkid',\n default: 5773\n },\n latestVcsWkid: {\n path: 'latestVcsWkid',\n default: 5773\n }\n});\n\nconst HEIGHT_MODEL_INFO = () => ({\n heightModel: {\n path: 'heightModel',\n default: 'gravity_related_height'\n },\n vertCRS: {\n path: 'vertCRS',\n default: 'EGM96_Geoid'\n },\n heightUnit: {\n path: 'heightUnit',\n default: 'meter'\n }\n});\n\nconst NODE_PAGES = () => ({\n nodesPerPage: {\n path: 'nodesPerPage'\n },\n lodSelectionMetricType: {\n path: 'lodSelectionMetricType',\n default: 'maxScreenThresholdSQ'\n }\n});\n\nconst FULL_EXTENT = () => ({\n xmin: {\n path: 'xmin'\n },\n ymin: {\n path: 'ymin'\n },\n xmax: {\n path: 'xmax'\n },\n ymax: {\n path: 'ymax'\n },\n zmin: {\n path: 'zmin'\n },\n zmax: {\n path: 'zmax'\n }\n});\n\nexport const LAYERS = () => ({\n version: {\n path: 'version',\n transform: (val) => val.toUpperCase()\n },\n id: {\n path: 'id',\n default: 0\n },\n name: {\n path: 'name'\n },\n href: {\n path: 'href',\n default: './layers/0'\n },\n layerType: {\n path: 'layerType',\n default: 'IntegratedMesh'\n },\n spatialReference: {\n path: 'spatialReference',\n transform: (val) => transform(val, SPATIAL_REFERENCE())\n },\n capabilities: {\n path: 'capabilities',\n default: ['View', 'Query']\n },\n store: {\n path: 'store',\n transform: (val) => transform(val, STORE)\n },\n fullExtent: {\n path: 'fullExtent',\n transform: (val) => transform(val, FULL_EXTENT())\n },\n heightModelInfo: {\n path: 'heightModelInfo',\n transform: (val) => transform(val, HEIGHT_MODEL_INFO())\n },\n nodePages: {\n path: 'nodePages',\n transform: (val) => transform(val, NODE_PAGES())\n },\n materialDefinitions: {\n path: 'materialDefinitions',\n default: []\n },\n textureSetDefinitions: {\n path: 'textureSetDefinitions',\n default: []\n },\n geometryDefinitions: {\n path: 'compressGeometry',\n transform: (val) => {\n const result = [{geometryBuffers: []}, {geometryBuffers: []}];\n\n // @ts-expect-error\n result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION());\n // @ts-expect-error\n result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0());\n if (val) {\n // @ts-expect-error\n result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION());\n // @ts-expect-error\n result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0());\n }\n return result;\n },\n default: [\n {\n geometryBuffers: [PLAIN_GEOMETRY_DEFINITION(), PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0()]\n }\n ]\n },\n attributeStorageInfo: {\n path: 'attributeStorageInfo',\n default: []\n },\n fields: {\n path: 'fields',\n default: []\n },\n popupInfo: {\n path: 'popupInfo',\n default: null\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"layers.js","names":["SPATIAL_REFERENCE","wkid","path","default","latestWkid","vcsWkid","latestVcsWkid","HEIGHT_MODEL_INFO","heightModel","vertCRS","heightUnit","NODE_PAGES","nodesPerPage","lodSelectionMetricType","FULL_EXTENT","xmin","ymin","xmax","ymax","zmin","zmax","LAYERS","version","transform","val","toUpperCase","id","name","href","layerType","spatialReference","capabilities","store","STORE","fullExtent","heightModelInfo","nodePages","materialDefinitions","textureSetDefinitions","geometryDefinitions","attributeStorageInfo","fields","popupInfo"],"sources":["../../../../src/i3s-converter/json-templates/layers.ts"],"sourcesContent":["import transform from 'json-map-transform';\nimport {STORE} from './store';\n\nconst SPATIAL_REFERENCE = () => ({\n wkid: {\n path: 'wkid',\n default: 4326\n },\n latestWkid: {\n path: 'latestWkid',\n default: 4326\n },\n vcsWkid: {\n path: 'vcsWkid',\n default: 5773\n },\n latestVcsWkid: {\n path: 'latestVcsWkid',\n default: 5773\n }\n});\n\nconst HEIGHT_MODEL_INFO = () => ({\n heightModel: {\n path: 'heightModel',\n default: 'gravity_related_height'\n },\n vertCRS: {\n path: 'vertCRS',\n default: 'EGM96_Geoid'\n },\n heightUnit: {\n path: 'heightUnit',\n default: 'meter'\n }\n});\n\nconst NODE_PAGES = () => ({\n nodesPerPage: {\n path: 'nodesPerPage'\n },\n lodSelectionMetricType: {\n path: 'lodSelectionMetricType',\n default: 'maxScreenThresholdSQ'\n }\n});\n\nconst FULL_EXTENT = () => ({\n xmin: {\n path: 'xmin'\n },\n ymin: {\n path: 'ymin'\n },\n xmax: {\n path: 'xmax'\n },\n ymax: {\n path: 'ymax'\n },\n zmin: {\n path: 'zmin'\n },\n zmax: {\n path: 'zmax'\n }\n});\n\nexport const LAYERS = () => ({\n version: {\n path: 'version',\n transform: (val) => val.toUpperCase()\n },\n id: {\n path: 'id',\n default: 0\n },\n name: {\n path: 'name'\n },\n href: {\n path: 'href',\n default: './layers/0'\n },\n layerType: {\n path: 'layerType',\n default: 'IntegratedMesh'\n },\n spatialReference: {\n path: 'spatialReference',\n transform: (val) => transform(val, SPATIAL_REFERENCE())\n },\n capabilities: {\n path: 'capabilities',\n default: ['View', 'Query']\n },\n store: {\n path: 'store',\n transform: (val) => transform(val, STORE)\n },\n fullExtent: {\n path: 'fullExtent',\n transform: (val) => transform(val, FULL_EXTENT())\n },\n heightModelInfo: {\n path: 'heightModelInfo',\n transform: (val) => transform(val, HEIGHT_MODEL_INFO())\n },\n nodePages: {\n path: 'nodePages',\n transform: (val) => transform(val, NODE_PAGES())\n },\n materialDefinitions: {\n path: 'materialDefinitions',\n default: []\n },\n textureSetDefinitions: {\n path: 'textureSetDefinitions',\n default: []\n },\n geometryDefinitions: {\n path: 'geometryDefinitions',\n default: []\n },\n attributeStorageInfo: {\n path: 'attributeStorageInfo',\n default: []\n },\n fields: {\n path: 'fields',\n default: []\n },\n popupInfo: {\n path: 'popupInfo',\n default: null\n }\n});\n"],"mappings":";;;;;;;AAAA;AACA;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB;EAAA,OAAU;IAC/BC,IAAI,EAAE;MACJC,IAAI,EAAE,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDC,UAAU,EAAE;MACVF,IAAI,EAAE,YAAY;MAClBC,OAAO,EAAE;IACX,CAAC;IACDE,OAAO,EAAE;MACPH,IAAI,EAAE,SAAS;MACfC,OAAO,EAAE;IACX,CAAC;IACDG,aAAa,EAAE;MACbJ,IAAI,EAAE,eAAe;MACrBC,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC;AAEF,IAAMI,iBAAiB,GAAG,SAApBA,iBAAiB;EAAA,OAAU;IAC/BC,WAAW,EAAE;MACXN,IAAI,EAAE,aAAa;MACnBC,OAAO,EAAE;IACX,CAAC;IACDM,OAAO,EAAE;MACPP,IAAI,EAAE,SAAS;MACfC,OAAO,EAAE;IACX,CAAC;IACDO,UAAU,EAAE;MACVR,IAAI,EAAE,YAAY;MAClBC,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC;AAEF,IAAMQ,UAAU,GAAG,SAAbA,UAAU;EAAA,OAAU;IACxBC,YAAY,EAAE;MACZV,IAAI,EAAE;IACR,CAAC;IACDW,sBAAsB,EAAE;MACtBX,IAAI,EAAE,wBAAwB;MAC9BC,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC;AAEF,IAAMW,WAAW,GAAG,SAAdA,WAAW;EAAA,OAAU;IACzBC,IAAI,EAAE;MACJb,IAAI,EAAE;IACR,CAAC;IACDc,IAAI,EAAE;MACJd,IAAI,EAAE;IACR,CAAC;IACDe,IAAI,EAAE;MACJf,IAAI,EAAE;IACR,CAAC;IACDgB,IAAI,EAAE;MACJhB,IAAI,EAAE;IACR,CAAC;IACDiB,IAAI,EAAE;MACJjB,IAAI,EAAE;IACR,CAAC;IACDkB,IAAI,EAAE;MACJlB,IAAI,EAAE;IACR;EACF,CAAC;AAAA,CAAC;AAEK,IAAMmB,MAAM,GAAG,SAATA,MAAM;EAAA,OAAU;IAC3BC,OAAO,EAAE;MACPpB,IAAI,EAAE,SAAS;MACfqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAKA,GAAG,CAACC,WAAW,EAAE;MAAA;IACvC,CAAC;IACDC,EAAE,EAAE;MACFxB,IAAI,EAAE,IAAI;MACVC,OAAO,EAAE;IACX,CAAC;IACDwB,IAAI,EAAE;MACJzB,IAAI,EAAE;IACR,CAAC;IACD0B,IAAI,EAAE;MACJ1B,IAAI,EAAE,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACD0B,SAAS,EAAE;MACT3B,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAE;IACX,CAAC;IACD2B,gBAAgB,EAAE;MAChB5B,IAAI,EAAE,kBAAkB;MACxBqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAK,IAAAD,yBAAS,EAACC,GAAG,EAAExB,iBAAiB,EAAE,CAAC;MAAA;IACzD,CAAC;IACD+B,YAAY,EAAE;MACZ7B,IAAI,EAAE,cAAc;MACpBC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO;IAC3B,CAAC;IACD6B,KAAK,EAAE;MACL9B,IAAI,EAAE,OAAO;MACbqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAK,IAAAD,yBAAS,EAACC,GAAG,EAAES,YAAK,CAAC;MAAA;IAC3C,CAAC;IACDC,UAAU,EAAE;MACVhC,IAAI,EAAE,YAAY;MAClBqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAK,IAAAD,yBAAS,EAACC,GAAG,EAAEV,WAAW,EAAE,CAAC;MAAA;IACnD,CAAC;IACDqB,eAAe,EAAE;MACfjC,IAAI,EAAE,iBAAiB;MACvBqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAK,IAAAD,yBAAS,EAACC,GAAG,EAAEjB,iBAAiB,EAAE,CAAC;MAAA;IACzD,CAAC;IACD6B,SAAS,EAAE;MACTlC,IAAI,EAAE,WAAW;MACjBqB,SAAS,EAAE,mBAACC,GAAG;QAAA,OAAK,IAAAD,yBAAS,EAACC,GAAG,EAAEb,UAAU,EAAE,CAAC;MAAA;IAClD,CAAC;IACD0B,mBAAmB,EAAE;MACnBnC,IAAI,EAAE,qBAAqB;MAC3BC,OAAO,EAAE;IACX,CAAC;IACDmC,qBAAqB,EAAE;MACrBpC,IAAI,EAAE,uBAAuB;MAC7BC,OAAO,EAAE;IACX,CAAC;IACDoC,mBAAmB,EAAE;MACnBrC,IAAI,EAAE,qBAAqB;MAC3BC,OAAO,EAAE;IACX,CAAC;IACDqC,oBAAoB,EAAE;MACpBtC,IAAI,EAAE,sBAAsB;MAC5BC,OAAO,EAAE;IACX,CAAC;IACDsC,MAAM,EAAE;MACNvC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE;IACX,CAAC;IACDuC,SAAS,EAAE;MACTxC,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC;AAAC"}
@@ -26,15 +26,15 @@ var MATERIAL_DEFINITION_INFO_PARAMS = function MATERIAL_DEFINITION_INFO_PARAMS()
26
26
  },
27
27
  ambient: {
28
28
  path: 'ambient',
29
- default: [1, 1, 1, 1]
29
+ default: [1, 1, 1]
30
30
  },
31
31
  diffuse: {
32
32
  path: 'diffuse',
33
- default: [1, 1, 1, 1]
33
+ default: [1, 1, 1]
34
34
  },
35
35
  specular: {
36
36
  path: 'specular',
37
- default: [0, 0, 0, 0]
37
+ default: [0, 0, 0]
38
38
  },
39
39
  useVertexColorAlpha: {
40
40
  path: 'useVertexColorAlpha',
@@ -1 +1 @@
1
- {"version":3,"file":"shared-resources.js","names":["MATERIAL_DEFINITION_INFO_PARAMS","renderMode","path","default","shininess","reflectivity","ambient","diffuse","specular","useVertexColorAlpha","vertexRegions","vertexColors","MATERIAL_DEFINITION_INFO","name","type","params","transform","val","thisObject","originalObject","TEXTURE_DEFINITION_IMAGE","id","size","href","length","TEXTURE_DEFINITION_INFO","encoding","wrap","atlas","uvSet","channels","images","map","image","SHARED_RESOURCES","materialDefinitions","transfromMaterialDefinitions","textureDefinitions","transfromTextureDefinitions","materialDefinitionInfos","result","entries","index","materialDefinitionInfo","nodePath","textureDefinitionInfos","textureDefinitionInfo","imageIndex"],"sources":["../../../../src/i3s-converter/json-templates/shared-resources.ts"],"sourcesContent":["import transform from 'json-map-transform';\n\nconst MATERIAL_DEFINITION_INFO_PARAMS = () => ({\n renderMode: {\n path: 'renderMode',\n default: 'solid'\n },\n shininess: {\n path: 'shininess',\n default: 1\n },\n reflectivity: {\n path: 'reflectivity',\n default: 0\n },\n ambient: {\n path: 'ambient',\n default: [1, 1, 1, 1]\n },\n diffuse: {\n path: 'diffuse',\n default: [1, 1, 1, 1]\n },\n specular: {\n path: 'specular',\n default: [0, 0, 0, 0]\n },\n useVertexColorAlpha: {\n path: 'useVertexColorAlpha',\n default: false\n },\n vertexRegions: {\n path: 'vertexRegions',\n default: false\n },\n vertexColors: {\n path: 'vertexColors',\n default: true\n }\n});\n\nconst MATERIAL_DEFINITION_INFO = () => ({\n name: {\n path: 'name',\n default: 'standard'\n },\n type: {\n path: 'type',\n default: 'standard'\n },\n params: {\n path: 'params',\n transform: (val, thisObject, originalObject) =>\n transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS())\n }\n});\n\nconst TEXTURE_DEFINITION_IMAGE = () => ({\n id: {\n path: 'id'\n },\n size: {\n path: 'size'\n },\n href: {\n path: 'href',\n default: ['../textures/0']\n },\n length: {\n path: 'length'\n }\n});\n\nconst TEXTURE_DEFINITION_INFO = () => ({\n encoding: {\n path: 'encoding'\n },\n wrap: {\n path: 'wrap',\n default: ['none']\n },\n atlas: {\n path: 'atlas',\n default: false\n },\n uvSet: {\n path: 'uvSet',\n default: 'uv0'\n },\n channels: {\n path: 'channels',\n default: 'rgb'\n },\n images: {\n path: 'images',\n transform: (val, thisObject, originalObject) =>\n val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE()))\n }\n});\n\nexport const SHARED_RESOURCES = () => ({\n materialDefinitions: {\n path: 'materialDefinitionInfos',\n transform: transfromMaterialDefinitions\n },\n textureDefinitions: {\n path: 'textureDefinitionInfos',\n transform: transfromTextureDefinitions\n }\n});\n\nfunction transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {\n const result = {};\n for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {\n result[`Mat${originalObject.nodePath}${index}`] = transform(\n materialDefinitionInfo,\n MATERIAL_DEFINITION_INFO()\n );\n }\n return result;\n}\n\nfunction transfromTextureDefinitions(textureDefinitionInfos, thisObject, originalObject) {\n if (!textureDefinitionInfos) {\n return null;\n }\n const result = {};\n for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {\n const imageIndex = `${originalObject.nodePath}${index}`;\n textureDefinitionInfo.imageIndex = imageIndex;\n result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO());\n }\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"shared-resources.js","names":["MATERIAL_DEFINITION_INFO_PARAMS","renderMode","path","default","shininess","reflectivity","ambient","diffuse","specular","useVertexColorAlpha","vertexRegions","vertexColors","MATERIAL_DEFINITION_INFO","name","type","params","transform","val","thisObject","originalObject","TEXTURE_DEFINITION_IMAGE","id","size","href","length","TEXTURE_DEFINITION_INFO","encoding","wrap","atlas","uvSet","channels","images","map","image","SHARED_RESOURCES","materialDefinitions","transfromMaterialDefinitions","textureDefinitions","transfromTextureDefinitions","materialDefinitionInfos","result","entries","index","materialDefinitionInfo","nodePath","textureDefinitionInfos","textureDefinitionInfo","imageIndex"],"sources":["../../../../src/i3s-converter/json-templates/shared-resources.ts"],"sourcesContent":["import transform from 'json-map-transform';\n\nconst MATERIAL_DEFINITION_INFO_PARAMS = () => ({\n renderMode: {\n path: 'renderMode',\n default: 'solid'\n },\n shininess: {\n path: 'shininess',\n default: 1\n },\n reflectivity: {\n path: 'reflectivity',\n default: 0\n },\n ambient: {\n path: 'ambient',\n default: [1, 1, 1]\n },\n diffuse: {\n path: 'diffuse',\n default: [1, 1, 1]\n },\n specular: {\n path: 'specular',\n default: [0, 0, 0]\n },\n useVertexColorAlpha: {\n path: 'useVertexColorAlpha',\n default: false\n },\n vertexRegions: {\n path: 'vertexRegions',\n default: false\n },\n vertexColors: {\n path: 'vertexColors',\n default: true\n }\n});\n\nconst MATERIAL_DEFINITION_INFO = () => ({\n name: {\n path: 'name',\n default: 'standard'\n },\n type: {\n path: 'type',\n default: 'standard'\n },\n params: {\n path: 'params',\n transform: (val, thisObject, originalObject) =>\n transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS())\n }\n});\n\nconst TEXTURE_DEFINITION_IMAGE = () => ({\n id: {\n path: 'id'\n },\n size: {\n path: 'size'\n },\n href: {\n path: 'href',\n default: ['../textures/0']\n },\n length: {\n path: 'length'\n }\n});\n\nconst TEXTURE_DEFINITION_INFO = () => ({\n encoding: {\n path: 'encoding'\n },\n wrap: {\n path: 'wrap',\n default: ['none']\n },\n atlas: {\n path: 'atlas',\n default: false\n },\n uvSet: {\n path: 'uvSet',\n default: 'uv0'\n },\n channels: {\n path: 'channels',\n default: 'rgb'\n },\n images: {\n path: 'images',\n transform: (val, thisObject, originalObject) =>\n val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE()))\n }\n});\n\nexport const SHARED_RESOURCES = () => ({\n materialDefinitions: {\n path: 'materialDefinitionInfos',\n transform: transfromMaterialDefinitions\n },\n textureDefinitions: {\n path: 'textureDefinitionInfos',\n transform: transfromTextureDefinitions\n }\n});\n\nfunction transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {\n const result = {};\n for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {\n result[`Mat${originalObject.nodePath}${index}`] = transform(\n materialDefinitionInfo,\n MATERIAL_DEFINITION_INFO()\n );\n }\n return result;\n}\n\nfunction transfromTextureDefinitions(textureDefinitionInfos, thisObject, originalObject) {\n if (!textureDefinitionInfos) {\n return null;\n }\n const result = {};\n for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {\n const imageIndex = `${originalObject.nodePath}${index}`;\n textureDefinitionInfo.imageIndex = imageIndex;\n result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO());\n }\n return result;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/i3s-converter/types.ts"],"sourcesContent":["import {\n BoundingVolumes,\n I3SMaterialDefinition,\n MaterialDefinitionInfo,\n TextureDefinitionInfo\n} from '@loaders.gl/i3s';\nimport {ImageDataType} from '@loaders.gl/images';\n\n/** Converted resources for specific node */\nexport type I3SConvertedResources = {\n /**\n * Node id\n */\n nodeId?: number;\n /** Non-compressed geometry buffer that have structure met\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.8/defaultGeometrySchema.cmn.md\n * (Geometry buffer)\n */\n geometry: ArrayBuffer | null;\n /**\n * Draco compressed geometry\n */\n compressedGeometry?: Promise<ArrayBuffer> | null;\n /**\n * Texture image content\n */\n texture: any | null;\n /**\n * Shared resources built from GLTF material\n */\n sharedResources: SharedResourcesArrays | null;\n /**\n * Material definition of the node\n */\n meshMaterial?: I3SMaterialDefinition | null;\n /**\n * Number of vertices in the node\n */\n vertexCount: number | null;\n /**\n * Feature attributes contents\n */\n attributes: ArrayBuffer[] | null;\n /**\n * Number of features in the node\n */\n featureCount: number | null;\n /**\n * MBS and/or OBB bounding volumes of the node\n */\n boundingVolumes: BoundingVolumes | null;\n};\n\n/**\n * Geometry and feature attributes converted from GLTF primitives\n */\nexport type ConvertedAttributes = {\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** Feature indices grouped by ...\n * converted from \"batch ids\" of GLTF\n */\n featureIndicesGroups?: number[][];\n /** Feature indices converted from \"batch ids\" */\n featureIndices: number[];\n /**\n * MBS and/or OBB bounding volumes of the node\n */\n boundingVolumes: null | BoundingVolumes;\n};\n\n/** Postprocessed geometry and feature attributes\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.8/defaultGeometrySchema.cmn.md\n */\nexport type GeometryAttributes = {\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** faceRanges attribute value */\n faceRange: Uint32Array;\n /** feature Ids attribute value */\n featureIds: number[];\n /** number of features in the node */\n featureCount: number;\n};\n\n/** Geometry attributes specific for the particular feature */\nexport type GroupedByFeatureIdAttributes = {\n /** Feature Id */\n featureId: number;\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n};\n\n/** Shared resources made from GLTF material */\nexport type SharedResourcesArrays = {\n /** material definitions list https://github.com/Esri/i3s-spec/blob/master/docs/1.8/materialDefinitionInfo.cmn.md */\n materialDefinitionInfos?: MaterialDefinitionInfo[];\n /** texture definitions list https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureDefinitionInfo.cmn.md*/\n textureDefinitionInfos?: TextureDefinitionInfo[];\n /** node id to make unique SharedResource ids */\n nodePath?: string;\n};\n\n/** I3S material definition and texture content taken from GLTF material */\nexport type I3SMaterialWithTexture = {\n /** Material definition https://github.com/Esri/i3s-spec/blob/master/docs/1.8/materialDefinitions.cmn.md */\n material: I3SMaterialDefinition;\n /** Texture content (image) */\n texture?: ImageDataType;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/i3s-converter/types.ts"],"sourcesContent":["import {GLTFImagePostprocessed} from '@loaders.gl/gltf';\nimport {\n BoundingVolumes,\n I3SMaterialDefinition,\n MaterialDefinitionInfo,\n TextureDefinitionInfo\n} from '@loaders.gl/i3s';\n\n/** Converted resources for specific node */\nexport type I3SConvertedResources = {\n /**\n * Node id\n */\n nodeId?: number;\n /** Non-compressed geometry buffer that have structure met\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.8/defaultGeometrySchema.cmn.md\n * (Geometry buffer)\n */\n geometry: ArrayBuffer | null;\n /**\n * Draco compressed geometry\n */\n compressedGeometry?: Promise<ArrayBuffer> | null;\n /**\n * Texture image content\n */\n texture: any | null;\n /**\n * If the resource has uvRegions geometry attribute\n */\n hasUvRegions: boolean;\n /**\n * Shared resources built from GLTF material\n */\n sharedResources: SharedResourcesArrays | null;\n /**\n * Material definition of the node\n */\n meshMaterial?: I3SMaterialDefinition | null;\n /**\n * Number of vertices in the node\n */\n vertexCount: number | null;\n /**\n * Feature attributes contents\n */\n attributes: ArrayBuffer[] | null;\n /**\n * Number of features in the node\n */\n featureCount: number | null;\n /**\n * MBS and/or OBB bounding volumes of the node\n */\n boundingVolumes: BoundingVolumes | null;\n};\n\n/**\n * Geometry and feature attributes converted from GLTF primitives\n */\nexport type ConvertedAttributes = {\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** uvRegion attribute for a texture atlas */\n uvRegions: Uint16Array;\n /** Feature indices grouped by ...\n * converted from \"batch ids\" of GLTF\n */\n featureIndicesGroups?: number[][];\n /** Feature indices converted from \"batch ids\" */\n featureIndices: number[];\n /**\n * MBS and/or OBB bounding volumes of the node\n */\n boundingVolumes: null | BoundingVolumes;\n /** merged materials data */\n mergedMaterials: MergedMaterial[];\n};\n\n/** Postprocessed geometry and feature attributes\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.8/defaultGeometrySchema.cmn.md\n */\nexport type GeometryAttributes = {\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** uvRegion attribute for a texture atlas */\n uvRegions: Uint16Array;\n /** faceRanges attribute value */\n faceRange: Uint32Array;\n /** feature Ids attribute value */\n featureIds: number[];\n /** number of features in the node */\n featureCount: number;\n};\n\n/** Geometry attributes specific for the particular feature */\nexport type GroupedByFeatureIdAttributes = {\n /** Feature Id */\n featureId: number;\n /** POSITION attribute value */\n positions: Float32Array;\n /** NORMAL attribute value */\n normals: Float32Array;\n /** COLOR_0 attribute value */\n colors: Uint8Array;\n /** uvRegion attribute for a texture atlas */\n uvRegions: Uint16Array;\n /** TEXCOORD_0 attribute value */\n texCoords: Float32Array;\n};\n\n/** Shared resources made from GLTF material */\nexport type SharedResourcesArrays = {\n /** material definitions list https://github.com/Esri/i3s-spec/blob/master/docs/1.8/materialDefinitionInfo.cmn.md */\n materialDefinitionInfos?: MaterialDefinitionInfo[];\n /** texture definitions list https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureDefinitionInfo.cmn.md*/\n textureDefinitionInfos?: TextureDefinitionInfo[];\n /** node id to make unique SharedResource ids */\n nodePath?: string;\n};\n\n/** I3S material definition and texture content taken from GLTF material */\nexport type I3SMaterialWithTexture = {\n /** Material definition https://github.com/Esri/i3s-spec/blob/master/docs/1.8/materialDefinitions.cmn.md */\n material: I3SMaterialDefinition;\n /** Texture content (image) */\n texture?: GLTFImagePostprocessed;\n /** Metadata of all merged materials */\n mergedMaterials: MergedMaterial[];\n};\n\n/** Metadata of some original texture */\nexport type MergedMaterial = {\n /** Gltf material Id */\n originalMaterialId: string;\n /** Original texture size */\n textureSize?: {\n width: number;\n height: number;\n };\n /** Uint16Array of 4 elements https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md */\n uvRegion?: Uint16Array;\n};\n"],"mappings":""}
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.getAbsoluteFilePath = getAbsoluteFilePath;
8
+ exports.isFileExists = isFileExists;
9
+ exports.openJson = openJson;
8
10
  exports.removeDir = removeDir;
9
11
  exports.removeFile = removeFile;
10
12
  exports.writeFile = writeFile;
11
13
  exports.writeFileForSlpk = writeFileForSlpk;
12
14
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
15
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
+ var _core = require("@loaders.gl/core");
17
+ var _loaderUtils = require("@loaders.gl/loader-utils");
14
18
  var _fs = require("fs");
15
19
  var _path = require("path");
16
20
  var _compressUtil = require("./compress-util");
@@ -82,6 +86,7 @@ function _writeFileForSlpk() {
82
86
  _writeFileForSlpk = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(path, data) {
83
87
  var fileName,
84
88
  compress,
89
+ compressList,
85
90
  pathFile,
86
91
  pathGzFile,
87
92
  _args2 = arguments;
@@ -91,25 +96,42 @@ function _writeFileForSlpk() {
91
96
  case 0:
92
97
  fileName = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : 'index.json';
93
98
  compress = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : true;
94
- _context2.next = 4;
99
+ compressList = _args2.length > 4 ? _args2[4] : undefined;
100
+ _context2.next = 5;
95
101
  return writeFile(path, data, fileName);
96
- case 4:
102
+ case 5:
97
103
  pathFile = _context2.sent;
98
104
  if (!compress) {
99
- _context2.next = 12;
105
+ _context2.next = 22;
106
+ break;
107
+ }
108
+ if (!compressList) {
109
+ _context2.next = 16;
110
+ break;
111
+ }
112
+ if (compressList.includes(pathFile)) {
113
+ _context2.next = 13;
100
114
  break;
101
115
  }
102
- _context2.next = 8;
116
+ compressList.push(pathFile);
117
+ return _context2.abrupt("return", "".concat(pathFile, ".gz"));
118
+ case 13:
119
+ return _context2.abrupt("return", null);
120
+ case 14:
121
+ _context2.next = 22;
122
+ break;
123
+ case 16:
124
+ _context2.next = 18;
103
125
  return (0, _compressUtil.compressFileWithGzip)(pathFile);
104
- case 8:
126
+ case 18:
105
127
  pathGzFile = _context2.sent;
106
- _context2.next = 11;
128
+ _context2.next = 21;
107
129
  return removeFile(pathFile);
108
- case 11:
130
+ case 21:
109
131
  return _context2.abrupt("return", pathGzFile);
110
- case 12:
132
+ case 22:
111
133
  return _context2.abrupt("return", pathFile);
112
- case 13:
134
+ case 23:
113
135
  case "end":
114
136
  return _context2.stop();
115
137
  }
@@ -118,6 +140,68 @@ function _writeFileForSlpk() {
118
140
  }));
119
141
  return _writeFileForSlpk.apply(this, arguments);
120
142
  }
143
+ function openJson(_x5, _x6) {
144
+ return _openJson.apply(this, arguments);
145
+ }
146
+ function _openJson() {
147
+ _openJson = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(path, fileName) {
148
+ return _regenerator.default.wrap(function _callee3$(_context3) {
149
+ while (1) {
150
+ switch (_context3.prev = _context3.next) {
151
+ case 0:
152
+ return _context3.abrupt("return", new Promise(function (resolve, reject) {
153
+ var count = 0;
154
+ console.log("load ".concat(path, "/").concat(fileName, "."));
155
+ var intervalId = setInterval(function () {
156
+ var pathFile = (0, _path.join)(path, fileName);
157
+ (0, _core.load)(pathFile, _loaderUtils.JSONLoader).then(function (result) {
158
+ clearInterval(intervalId);
159
+ resolve(result);
160
+ }).catch(function () {
161
+ count++;
162
+ if (count > 100) {
163
+ clearInterval(intervalId);
164
+ reject(new Error("Cannon load ".concat(path, "/").concat(fileName, ".")));
165
+ }
166
+ });
167
+ }, 200);
168
+ }));
169
+ case 1:
170
+ case "end":
171
+ return _context3.stop();
172
+ }
173
+ }
174
+ }, _callee3);
175
+ }));
176
+ return _openJson.apply(this, arguments);
177
+ }
178
+ function isFileExists(_x7) {
179
+ return _isFileExists.apply(this, arguments);
180
+ }
181
+ function _isFileExists() {
182
+ _isFileExists = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(fileName) {
183
+ return _regenerator.default.wrap(function _callee4$(_context4) {
184
+ while (1) {
185
+ switch (_context4.prev = _context4.next) {
186
+ case 0:
187
+ _context4.prev = 0;
188
+ _context4.next = 3;
189
+ return _fs.promises.stat(fileName);
190
+ case 3:
191
+ return _context4.abrupt("return", true);
192
+ case 6:
193
+ _context4.prev = 6;
194
+ _context4.t0 = _context4["catch"](0);
195
+ return _context4.abrupt("return", false);
196
+ case 9:
197
+ case "end":
198
+ return _context4.stop();
199
+ }
200
+ }
201
+ }, _callee4, null, [[0, 6]]);
202
+ }));
203
+ return _isFileExists.apply(this, arguments);
204
+ }
121
205
  function removeDir(path) {
122
206
  return _fs.promises.rmdir(path, {
123
207
  recursive: true
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.js","names":["writeFile","path","data","fileName","Promise","Uint8Array","toWriteData","ArrayBuffer","fs","mkdir","recursive","pathFile","join","console","log","writeFileForSlpk","compress","compressFileWithGzip","pathGzFile","removeFile","removeDir","rmdir","unlink","getAbsoluteFilePath","filePath","isAbsolute","process","cwd"],"sources":["../../../../src/lib/utils/file-utils.ts"],"sourcesContent":["import {promises as fs} from 'fs';\nimport {isAbsolute, join} from 'path';\nimport {compressFileWithGzip} from './compress-util';\n\n/**\n * Write a file with data and name fileName to path\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n */\nexport async function writeFile(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json'\n): Promise<string> {\n let toWriteData: string | Uint8Array;\n if (data instanceof Promise) {\n toWriteData = new Uint8Array(await data);\n } else if (data instanceof ArrayBuffer) {\n toWriteData = new Uint8Array(data as ArrayBuffer);\n } else {\n toWriteData = data;\n }\n await fs.mkdir(path, {recursive: true});\n const pathFile = join(path, fileName);\n try {\n await fs.writeFile(pathFile, toWriteData);\n } catch (err) {\n throw err;\n }\n console.log(`${pathFile} saved.`); // eslint-disable-line\n return pathFile;\n}\n\n/**\n * Write a file with data and name fileName to path - specific one for further packaging into slpk\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n * @param compress - if need to compress file with gzip (default: true)\n */\nexport async function writeFileForSlpk(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json',\n compress: boolean = true\n): Promise<string> {\n const pathFile = await writeFile(path, data, fileName);\n if (compress) {\n const pathGzFile = await compressFileWithGzip(pathFile);\n // After compression, we don't need an uncompressed file\n await removeFile(pathFile);\n return pathGzFile;\n }\n return pathFile;\n}\n\n/**\n * Remove dir with path\n *\n * @param path\n */\nexport function removeDir(path: string) {\n return fs.rmdir(path, {recursive: true});\n}\n\n/**\n * Remove file with path\n *\n * @param path\n */\nexport function removeFile(path: string) {\n return fs.unlink(path);\n}\n\n/**\n * Generates absolute file path\n * @param filePath\n */\nexport function getAbsoluteFilePath(filePath: string) {\n return isAbsolute(filePath) ? filePath : join(process.cwd(), filePath); // eslint-disable-line no-undef\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AAAqD,SAS/BA,SAAS;EAAA;AAAA;AAAA;EAAA,uEAAxB,iBACLC,IAAY,EACZC,IAA8D;IAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAC9DC,QAAgB,2DAAG,YAAY;YAAA,MAG3BD,IAAI,YAAYE,OAAO;cAAA;cAAA;YAAA;YAAA,cACPC,UAAU;YAAA;YAAA,OAAOH,IAAI;UAAA;YAAA;YAAvCI,WAAW;YAAA;YAAA;UAAA;YACN,IAAIJ,IAAI,YAAYK,WAAW,EAAE;cACtCD,WAAW,GAAG,IAAID,UAAU,CAACH,IAAI,CAAgB;YACnD,CAAC,MAAM;cACLI,WAAW,GAAGJ,IAAI;YACpB;UAAC;YAAA;YAAA,OACKM,YAAE,CAACC,KAAK,CAACR,IAAI,EAAE;cAACS,SAAS,EAAE;YAAI,CAAC,CAAC;UAAA;YACjCC,QAAQ,GAAG,IAAAC,UAAI,EAACX,IAAI,EAAEE,QAAQ,CAAC;YAAA;YAAA;YAAA,OAE7BK,YAAE,CAACR,SAAS,CAACW,QAAQ,EAAEL,WAAW,CAAC;UAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAI3CO,OAAO,CAACC,GAAG,WAAIH,QAAQ,aAAU;YAAC,iCAC3BA,QAAQ;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChB;EAAA;AAAA;AAAA,SAUqBI,gBAAgB;EAAA;AAAA;AAAA;EAAA,8EAA/B,kBACLd,IAAY,EACZC,IAA8D;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAC9DC,QAAgB,8DAAG,YAAY;YAC/Ba,QAAiB,8DAAG,IAAI;YAAA;YAAA,OAEDhB,SAAS,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CAAC;UAAA;YAAhDQ,QAAQ;YAAA,KACVK,QAAQ;cAAA;cAAA;YAAA;YAAA;YAAA,OACe,IAAAC,kCAAoB,EAACN,QAAQ,CAAC;UAAA;YAAjDO,UAAU;YAAA;YAAA,OAEVC,UAAU,CAACR,QAAQ,CAAC;UAAA;YAAA,kCACnBO,UAAU;UAAA;YAAA,kCAEZP,QAAQ;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChB;EAAA;AAAA;AAOM,SAASS,SAAS,CAACnB,IAAY,EAAE;EACtC,OAAOO,YAAE,CAACa,KAAK,CAACpB,IAAI,EAAE;IAACS,SAAS,EAAE;EAAI,CAAC,CAAC;AAC1C;;AAOO,SAASS,UAAU,CAAClB,IAAY,EAAE;EACvC,OAAOO,YAAE,CAACc,MAAM,CAACrB,IAAI,CAAC;AACxB;;AAMO,SAASsB,mBAAmB,CAACC,QAAgB,EAAE;EACpD,OAAO,IAAAC,gBAAU,EAACD,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAAZ,UAAI,EAACc,OAAO,CAACC,GAAG,EAAE,EAAEH,QAAQ,CAAC;AACxE"}
1
+ {"version":3,"file":"file-utils.js","names":["writeFile","path","data","fileName","Promise","Uint8Array","toWriteData","ArrayBuffer","fs","mkdir","recursive","pathFile","join","console","log","writeFileForSlpk","compress","compressList","includes","push","compressFileWithGzip","pathGzFile","removeFile","openJson","resolve","reject","count","intervalId","setInterval","load","JSONLoader","then","result","clearInterval","catch","Error","isFileExists","stat","removeDir","rmdir","unlink","getAbsoluteFilePath","filePath","isAbsolute","process","cwd"],"sources":["../../../../src/lib/utils/file-utils.ts"],"sourcesContent":["import {load} from '@loaders.gl/core';\nimport {JSONLoader} from '@loaders.gl/loader-utils';\nimport {promises as fs} from 'fs';\nimport {isAbsolute, join} from 'path';\nimport {compressFileWithGzip} from './compress-util';\n\n/**\n * Write a file with data and name fileName to path\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n */\nexport async function writeFile(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json'\n): Promise<string> {\n let toWriteData: string | Uint8Array;\n if (data instanceof Promise) {\n toWriteData = new Uint8Array(await data);\n } else if (data instanceof ArrayBuffer) {\n toWriteData = new Uint8Array(data as ArrayBuffer);\n } else {\n toWriteData = data;\n }\n await fs.mkdir(path, {recursive: true});\n const pathFile = join(path, fileName);\n try {\n await fs.writeFile(pathFile, toWriteData);\n } catch (err) {\n throw err;\n }\n console.log(`${pathFile} saved.`); // eslint-disable-line\n return pathFile;\n}\n\n/**\n * Write a file with data and name fileName to path - specific one for further packaging into slpk\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n * @param compress - if need to compress file with gzip (default: true)\n * @param compressList - if set - the file should be added to this list and compressed in the end of conversion\n */\nexport async function writeFileForSlpk(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json',\n compress: boolean = true,\n compressList?: string[] | null\n): Promise<string | null> {\n const pathFile = await writeFile(path, data, fileName);\n if (compress) {\n if (compressList) {\n if (!compressList.includes(pathFile)) {\n compressList.push(pathFile);\n return `${pathFile}.gz`;\n } else {\n return null;\n }\n } else {\n const pathGzFile = await compressFileWithGzip(pathFile);\n // After compression, we don't need an uncompressed file\n await removeFile(pathFile);\n return pathGzFile;\n }\n }\n return pathFile;\n}\n\n/**\n * Open json file\n * @param path - path to the file\n * @param fileName - file name\n * @returns object\n */\nexport async function openJson(path: string, fileName: string): Promise<{[key: string]: any}> {\n return new Promise((resolve, reject) => {\n let count = 0;\n console.log(`load ${path}/${fileName}.`); // eslint-disable-line\n const intervalId = setInterval(() => {\n const pathFile = join(path, fileName);\n load(pathFile, JSONLoader)\n .then((result) => {\n clearInterval(intervalId);\n resolve(result);\n })\n .catch(() => {\n count++;\n if (count > 100) {\n clearInterval(intervalId);\n reject(new Error(`Cannon load ${path}/${fileName}.`));\n }\n });\n }, 200);\n });\n}\n\n/**\n * Check if the file exists\n * @param fileName - full name of file\n * @returns true if file exists, otherwise - false\n */\nexport async function isFileExists(fileName: string): Promise<boolean> {\n try {\n await fs.stat(fileName);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Remove dir with path\n *\n * @param path\n */\nexport function removeDir(path: string) {\n return fs.rmdir(path, {recursive: true});\n}\n\n/**\n * Remove file with path\n *\n * @param path\n */\nexport function removeFile(path: string) {\n return fs.unlink(path);\n}\n\n/**\n * Generates absolute file path\n * @param filePath\n */\nexport function getAbsoluteFilePath(filePath: string) {\n return isAbsolute(filePath) ? filePath : join(process.cwd(), filePath);\n}\n"],"mappings":"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"}
@@ -42,18 +42,40 @@ var WriteQueue = function (_Queue) {
42
42
  key: "enqueue",
43
43
  value: function () {
44
44
  var _enqueue = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(val) {
45
+ var writeImmediately,
46
+ _ref,
47
+ archiveKey,
48
+ writePromise,
49
+ result,
50
+ _args = arguments;
45
51
  return _regenerator.default.wrap(function _callee$(_context) {
46
52
  while (1) {
47
53
  switch (_context.prev = _context.next) {
48
54
  case 0:
55
+ writeImmediately = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
56
+ if (!writeImmediately) {
57
+ _context.next = 9;
58
+ break;
59
+ }
60
+ _ref = val, archiveKey = _ref.archiveKey, writePromise = _ref.writePromise;
61
+ _context.next = 5;
62
+ return writePromise();
63
+ case 5:
64
+ result = _context.sent;
65
+ if (archiveKey && result) {
66
+ this.fileMap[archiveKey] = result;
67
+ }
68
+ _context.next = 13;
69
+ break;
70
+ case 9:
49
71
  (0, _get2.default)((0, _getPrototypeOf2.default)(WriteQueue.prototype), "enqueue", this).call(this, val);
50
72
  if (!(_process.default.memoryUsage().rss > MEMORY_LIMIT)) {
51
- _context.next = 4;
73
+ _context.next = 13;
52
74
  break;
53
75
  }
54
- _context.next = 4;
76
+ _context.next = 13;
55
77
  return this.startWrite();
56
- case 4:
78
+ case 13:
57
79
  case "end":
58
80
  return _context.stop();
59
81
  }
@@ -86,21 +108,13 @@ var WriteQueue = function (_Queue) {
86
108
  switch (_context2.prev = _context2.next) {
87
109
  case 0:
88
110
  if (!this.writePromise) {
89
- _context2.next = 5;
90
- break;
111
+ this.writePromise = this.doWrite();
91
112
  }
92
113
  _context2.next = 3;
93
114
  return this.writePromise;
94
115
  case 3:
95
116
  this.writePromise = null;
96
- return _context2.abrupt("return");
97
- case 5:
98
- this.writePromise = this.doWrite();
99
- _context2.next = 8;
100
- return this.writePromise;
101
- case 8:
102
- this.writePromise = null;
103
- case 9:
117
+ case 4:
104
118
  case "end":
105
119
  return _context2.stop();
106
120
  }
@@ -139,13 +153,13 @@ var WriteQueue = function (_Queue) {
139
153
  key: "doWrite",
140
154
  value: function () {
141
155
  var _doWrite = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
142
- var promises, archiveKeys, i, item, _ref, archiveKey, writePromise, writeResults;
156
+ var promises, archiveKeys, i, item, _ref2, archiveKey, writePromise, promise, writeResults;
143
157
  return _regenerator.default.wrap(function _callee4$(_context4) {
144
158
  while (1) {
145
159
  switch (_context4.prev = _context4.next) {
146
160
  case 0:
147
161
  if (!this.length) {
148
- _context4.next = 20;
162
+ _context4.next = 21;
149
163
  break;
150
164
  }
151
165
  promises = [];
@@ -153,7 +167,7 @@ var WriteQueue = function (_Queue) {
153
167
  i = 0;
154
168
  case 4:
155
169
  if (!(i < this.writeConcurrency)) {
156
- _context4.next = 14;
170
+ _context4.next = 15;
157
171
  break;
158
172
  }
159
173
  item = this.dequeue();
@@ -161,25 +175,24 @@ var WriteQueue = function (_Queue) {
161
175
  _context4.next = 8;
162
176
  break;
163
177
  }
164
- return _context4.abrupt("break", 14);
178
+ return _context4.abrupt("break", 15);
165
179
  case 8:
166
- _ref = item, archiveKey = _ref.archiveKey, writePromise = _ref.writePromise;
180
+ _ref2 = item, archiveKey = _ref2.archiveKey, writePromise = _ref2.writePromise;
167
181
  archiveKeys.push(archiveKey);
168
- promises.push(writePromise);
169
- case 11:
182
+ promise = writePromise();
183
+ promises.push(promise);
184
+ case 12:
170
185
  i++;
171
186
  _context4.next = 4;
172
187
  break;
173
- case 14:
174
- _context4.next = 16;
188
+ case 15:
189
+ _context4.next = 17;
175
190
  return Promise.allSettled(promises);
176
- case 16:
191
+ case 17:
177
192
  writeResults = _context4.sent;
178
193
  this.updateFileMap(archiveKeys, writeResults);
179
194
  _context4.next = 0;
180
195
  break;
181
- case 20:
182
- this.writePromise = null;
183
196
  case 21:
184
197
  case "end":
185
198
  return _context4.stop();
@@ -1 +1 @@
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
+ {"version":3,"file":"write-queue.js","names":["MEMORY_LIMIT","WriteQueue","listeningInterval","writeConcurrency","val","writeImmediately","archiveKey","writePromise","result","fileMap","process","memoryUsage","rss","startWrite","intervalId","setInterval","bind","clearInterval","doWrite","stopListening","length","promises","archiveKeys","i","item","dequeue","push","promise","Promise","allSettled","writeResults","updateFileMap","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 /**\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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"}
@@ -8,7 +8,7 @@ exports.PGMLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _geoid = require("@math.gl/geoid");
11
- var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
11
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'latest';
12
12
 
13
13
  var PGMLoader = {
14
14
  name: 'PGM - Netpbm grayscale image format',
@@ -1 +1 @@
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
+ {"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,cAAkB,KAAK,WAAW,aAAiB,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"}
@@ -15,7 +15,7 @@ var _geometryConverter = require("../i3s-converter/helpers/geometry-converter");
15
15
  case 0:
16
16
  options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
17
17
  _context.next = 3;
18
- return (0, _geometryConverter.convertAttributes)(data, options.useCartesianPositions);
18
+ return (0, _geometryConverter.convertAttributes)(data, options.materialAndTextureList, options.useCartesianPositions);
19
19
  case 3:
20
20
  return _context.abrupt("return", _context.sent);
21
21
  case 4:
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-attributes-worker.js","names":["createWorker","data","options","convertAttributes","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 = {}) => await convertAttributes(data, options.useCartesianPositions)\n);\n"],"mappings":";;;;;AAAA;AACA;AAEA,IAAAA,yBAAY;EAAA,qEACV,iBAAOC,IAAI;IAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,OAAO,2DAAG,CAAC,CAAC;YAAA;YAAA,OAAW,IAAAC,oCAAiB,EAACF,IAAI,EAAEC,OAAO,CAACE,qBAAqB,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA,IAC3F"}
1
+ {"version":3,"file":"i3s-attributes-worker.js","names":["createWorker","data","options","convertAttributes","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;AACA;AAEA,IAAAA,yBAAY;EAAA,qEACV,iBAAOC,IAAI;IAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,OAAO,2DAAG,CAAC,CAAC;YAAA;YAAA,OACjB,IAAAC,oCAAiB,EAACF,IAAI,EAAEC,OAAO,CAACE,sBAAsB,EAAEF,OAAO,CAACG,qBAAqB,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA,IAC/F"}
@@ -1,6 +1,6 @@
1
1
  import { processOnWorker } from '@loaders.gl/worker-utils';
2
2
 
3
- const VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
3
+ const VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'latest';
4
4
  export const Tile3dAttributesWorker = {
5
5
  id: '3d-tiles-attributes',
6
6
  name: '3DTiles Attributes Worker',
@@ -1 +1 @@
1
- {"version":3,"file":"3d-tiles-attributes-worker.js","names":["processOnWorker","VERSION","Tile3dAttributesWorker","id","name","module","version","options","featureAttributes","transform3DTilesAttributesOnWorker","i3sAttributesData","_typecheckI3SAttributesWorker"],"sources":["../../src/3d-tiles-attributes-worker.ts"],"sourcesContent":["import type {WorkerObject} from '@loaders.gl/worker-utils';\nimport type {FeatureAttribute} from '@loaders.gl/i3s';\n\nimport {processOnWorker} from '@loaders.gl/worker-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\nexport type Tile3DAttributesWorkerOptions = {\n featureAttributes: FeatureAttribute | null;\n source: string;\n};\n\nexport type I3SAttributesData = {\n tileContent: any;\n textureFormat: string;\n};\n\n/**\n * I3S Attributes Worker to handle B3DM object\n */\nexport const Tile3dAttributesWorker = {\n id: '3d-tiles-attributes',\n name: '3DTiles Attributes Worker',\n module: 'tile-converter',\n version: VERSION,\n options: {\n featureAttributes: null\n }\n};\n\n/**\n * Performs I3S attributes transformation\n */\nexport function transform3DTilesAttributesOnWorker(\n i3sAttributesData: I3SAttributesData,\n options: Tile3DAttributesWorkerOptions\n): Promise<ArrayBuffer> {\n return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);\n}\n\nexport const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;\n"],"mappings":"AAGA,SAAQA,eAAe,QAAO,0BAA0B;;AAIxD,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAe3E,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,EAAE,EAAE,qBAAqB;EACzBC,IAAI,EAAE,2BAA2B;EACjCC,MAAM,EAAE,gBAAgB;EACxBC,OAAO,EAAEL,OAAO;EAChBM,OAAO,EAAE;IACPC,iBAAiB,EAAE;EACrB;AACF,CAAC;;AAKD,OAAO,SAASC,kCAAkC,CAChDC,iBAAoC,EACpCH,OAAsC,EAChB;EACtB,OAAOP,eAAe,CAACE,sBAAsB,EAAEQ,iBAAiB,EAAEH,OAAO,CAAC;AAC5E;AAEA,OAAO,MAAMI,6BAA2C,GAAGT,sBAAsB"}
1
+ {"version":3,"file":"3d-tiles-attributes-worker.js","names":["processOnWorker","VERSION","Tile3dAttributesWorker","id","name","module","version","options","featureAttributes","transform3DTilesAttributesOnWorker","i3sAttributesData","_typecheckI3SAttributesWorker"],"sources":["../../src/3d-tiles-attributes-worker.ts"],"sourcesContent":["import type {WorkerObject} from '@loaders.gl/worker-utils';\nimport type {FeatureAttribute} from '@loaders.gl/i3s';\n\nimport {processOnWorker} from '@loaders.gl/worker-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\nexport type Tile3DAttributesWorkerOptions = {\n featureAttributes: FeatureAttribute | null;\n source: string;\n};\n\nexport type I3SAttributesData = {\n tileContent: any;\n textureFormat: string;\n};\n\n/**\n * I3S Attributes Worker to handle B3DM object\n */\nexport const Tile3dAttributesWorker = {\n id: '3d-tiles-attributes',\n name: '3DTiles Attributes Worker',\n module: 'tile-converter',\n version: VERSION,\n options: {\n featureAttributes: null\n }\n};\n\n/**\n * Performs I3S attributes transformation\n */\nexport function transform3DTilesAttributesOnWorker(\n i3sAttributesData: I3SAttributesData,\n options: Tile3DAttributesWorkerOptions\n): Promise<ArrayBuffer> {\n return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);\n}\n\nexport const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;\n"],"mappings":"AAGA,SAAQA,eAAe,QAAO,0BAA0B;;AAIxD,MAAMC,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,QAAQ;AAe3E,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,EAAE,EAAE,qBAAqB;EACzBC,IAAI,EAAE,2BAA2B;EACjCC,MAAM,EAAE,gBAAgB;EACxBC,OAAO,EAAEL,OAAO;EAChBM,OAAO,EAAE;IACPC,iBAAiB,EAAE;EACrB;AACF,CAAC;;AAKD,OAAO,SAASC,kCAAkC,CAChDC,iBAAoC,EACpCH,OAAsC,EAChB;EACtB,OAAOP,eAAe,CAACE,sBAAsB,EAAEQ,iBAAiB,EAAEH,OAAO,CAAC;AAC5E;AAEA,OAAO,MAAMI,6BAA2C,GAAGT,sBAAsB"}
@@ -34,6 +34,8 @@ function printHelp() {
34
34
  console.log('--max-depth [Maximal depth of hierarchical tiles tree traversal, default: infinite]');
35
35
  console.log('--name [Tileset name]');
36
36
  console.log('--output [Output folder, default: "data" folder]');
37
+ console.log('--instant-node-writing [Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed]');
38
+ console.log('--split-nodes [Prevent to merge similar materials that could lead to incorrect visualization (I3S to 3DTiles conversion only)]');
37
39
  console.log('--slpk [Generate slpk (Scene Layer Packages) I3S output file]');
38
40
  console.log('--tileset [tileset.json file (3DTiles) / http://..../SceneServer/layers/0 resource (I3S)]');
39
41
  console.log('--input-type [tileset input type: I3S or 3DTILES]');
@@ -75,9 +77,11 @@ async function convert(options) {
75
77
  egmFilePath: options.egm,
76
78
  token: options.token,
77
79
  draco: options.draco,
80
+ mergeMaterials: options.mergeMaterials,
78
81
  generateTextures: options.generateTextures,
79
82
  generateBoundingVolumes: options.generateBoundingVolumes,
80
- validate: options.validate
83
+ validate: options.validate,
84
+ instantNodeWriting: options.instantNodeWriting
81
85
  });
82
86
  break;
83
87
  default:
@@ -124,6 +128,8 @@ function validateOptionsWithEqual(args) {
124
128
  function parseOptions(args) {
125
129
  const opts = {
126
130
  output: 'data',
131
+ instantNodeWriting: false,
132
+ mergeMaterials: true,
127
133
  sevenZipExe: 'C:\\Program Files\\7-Zip\\7z.exe',
128
134
  egm: join(process.cwd(), 'deps', 'egm2008-5.pgm'),
129
135
  draco: true,
@@ -149,6 +155,12 @@ function parseOptions(args) {
149
155
  case '--output':
150
156
  opts.output = getStringValue(index, args);
151
157
  break;
158
+ case '--instant-node-writing':
159
+ opts.instantNodeWriting = getBooleanValue(index, args);
160
+ break;
161
+ case '--split-nodes':
162
+ opts.mergeMaterials = getBooleanValue(index, args);
163
+ break;
152
164
  case '--max-depth':
153
165
  opts.maxDepth = getIntegerValue(index, args);
154
166
  break;
@@ -220,7 +232,7 @@ function getIntegerValue(index, args) {
220
232
  }
221
233
  function getBooleanValue(index, args) {
222
234
  const stringValue = getStringValue(index, args).toLowerCase().trim();
223
- if (args[index] === '--no-draco' && !stringValue) {
235
+ if (['--no-draco', '--split-nodes'].includes(args[index]) && !stringValue) {
224
236
  return false;
225
237
  }
226
238
  if (!stringValue || stringValue === 'true') {