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