@loaders.gl/tile-converter 4.2.0-alpha.4 → 4.2.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +4 -4
  2. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  3. package/dist/3d-tiles-converter/3d-tiles-converter.js +349 -293
  4. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  5. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +261 -200
  6. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +14 -5
  7. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts.map +1 -1
  8. package/dist/3d-tiles-converter/helpers/load-i3s.js +83 -77
  9. package/dist/3d-tiles-converter/helpers/texture-atlas.js +44 -21
  10. package/dist/3d-tiles-converter/json-templates/tileset.js +32 -33
  11. package/dist/constants.js +0 -1
  12. package/dist/converter-cli.js +257 -234
  13. package/dist/converter.min.cjs +95 -105
  14. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  15. package/dist/deps-installer/deps-installer.js +78 -59
  16. package/dist/i3s-converter/helpers/attribute-metadata-info.js +210 -153
  17. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +1 -1
  18. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  19. package/dist/i3s-converter/helpers/batch-ids-extensions.js +146 -103
  20. package/dist/i3s-converter/helpers/coordinate-converter.js +100 -65
  21. package/dist/i3s-converter/helpers/create-scene-server-path.js +14 -9
  22. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -1
  23. package/dist/i3s-converter/helpers/feature-attributes.js +170 -105
  24. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +1 -1
  25. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  26. package/dist/i3s-converter/helpers/geometry-attributes.js +205 -212
  27. package/dist/i3s-converter/helpers/geometry-converter.d.ts +17 -3
  28. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  29. package/dist/i3s-converter/helpers/geometry-converter.js +1189 -830
  30. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +1 -1
  31. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  32. package/dist/i3s-converter/helpers/gltf-attributes.js +109 -97
  33. package/dist/i3s-converter/helpers/load-3d-tiles.js +103 -66
  34. package/dist/i3s-converter/helpers/node-debug.js +98 -54
  35. package/dist/i3s-converter/helpers/node-index-document.d.ts +11 -4
  36. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
  37. package/dist/i3s-converter/helpers/node-index-document.js +255 -177
  38. package/dist/i3s-converter/helpers/node-pages.d.ts +1 -1
  39. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  40. package/dist/i3s-converter/helpers/node-pages.js +299 -193
  41. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +1 -1
  42. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
  43. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +92 -60
  44. package/dist/i3s-converter/helpers/progress.d.ts.map +1 -1
  45. package/dist/i3s-converter/helpers/progress.js +139 -83
  46. package/dist/i3s-converter/helpers/tileset-traversal.d.ts +9 -2
  47. package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -1
  48. package/dist/i3s-converter/helpers/tileset-traversal.js +33 -13
  49. package/dist/i3s-converter/i3s-converter.d.ts +7 -7
  50. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  51. package/dist/i3s-converter/i3s-converter.js +1165 -895
  52. package/dist/i3s-converter/json-templates/geometry-definitions.js +70 -79
  53. package/dist/i3s-converter/json-templates/layers.js +120 -121
  54. package/dist/i3s-converter/json-templates/metadata.js +19 -20
  55. package/dist/i3s-converter/json-templates/node.js +73 -71
  56. package/dist/i3s-converter/json-templates/scene-server.js +25 -26
  57. package/dist/i3s-converter/json-templates/shared-resources.js +107 -108
  58. package/dist/i3s-converter/json-templates/store.js +96 -94
  59. package/dist/i3s-converter/types.js +35 -23
  60. package/dist/i3s-server/app.js +15 -12
  61. package/dist/i3s-server/bin/i3s-server.min.cjs +69 -69
  62. package/dist/i3s-server/bin/www.js +16 -7
  63. package/dist/i3s-server/controllers/index-controller.js +18 -15
  64. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -1
  65. package/dist/i3s-server/controllers/slpk-controller.js +24 -11
  66. package/dist/i3s-server/routes/index.js +13 -9
  67. package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -1
  68. package/dist/i3s-server/routes/slpk-router.js +26 -19
  69. package/dist/i3s-server/utils/create-scene-server.js +15 -10
  70. package/dist/i3s-server/utils/server-utils.d.ts.map +1 -1
  71. package/dist/i3s-server/utils/server-utils.js +52 -32
  72. package/dist/index.cjs +616 -967
  73. package/dist/index.cjs.map +7 -0
  74. package/dist/index.d.ts +2 -2
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +0 -1
  77. package/dist/lib/json-schemas/conversion-dump-json-schema.js +243 -421
  78. package/dist/lib/utils/cli-utils.d.ts.map +1 -1
  79. package/dist/lib/utils/cli-utils.js +65 -36
  80. package/dist/lib/utils/compress-util.js +20 -15
  81. package/dist/lib/utils/conversion-dump.d.ts +10 -2
  82. package/dist/lib/utils/conversion-dump.d.ts.map +1 -1
  83. package/dist/lib/utils/conversion-dump.js +242 -197
  84. package/dist/lib/utils/file-utils.d.ts +1 -1
  85. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  86. package/dist/lib/utils/file-utils.js +120 -74
  87. package/dist/lib/utils/geometry-utils.js +13 -7
  88. package/dist/lib/utils/lod-conversion-utils.js +65 -33
  89. package/dist/lib/utils/queue.js +12 -13
  90. package/dist/lib/utils/statistic-utills.d.ts +6 -23
  91. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  92. package/dist/lib/utils/statistic-utills.js +58 -55
  93. package/dist/lib/utils/write-queue.d.ts +2 -2
  94. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  95. package/dist/lib/utils/write-queue.js +72 -86
  96. package/dist/pgm-loader.js +17 -13
  97. package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -1
  98. package/dist/slpk-extractor/slpk-extractor.js +60 -50
  99. package/dist/slpk-extractor-cli.d.ts.map +1 -1
  100. package/dist/slpk-extractor-cli.js +90 -59
  101. package/dist/slpk-extractor.min.cjs +1 -1
  102. package/package.json +27 -26
  103. package/src/3d-tiles-converter/3d-tiles-converter.ts +21 -10
  104. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +1 -0
  105. package/src/3d-tiles-converter/helpers/load-i3s.ts +3 -27
  106. package/src/converter-cli.ts +4 -2
  107. package/src/deps-installer/deps-installer.ts +7 -0
  108. package/src/i3s-converter/helpers/attribute-metadata-info.ts +1 -1
  109. package/src/i3s-converter/helpers/batch-ids-extensions.ts +3 -1
  110. package/src/i3s-converter/helpers/coordinate-converter.ts +2 -2
  111. package/src/i3s-converter/helpers/feature-attributes.ts +5 -2
  112. package/src/i3s-converter/helpers/geometry-attributes.ts +6 -5
  113. package/src/i3s-converter/helpers/geometry-converter.ts +118 -72
  114. package/src/i3s-converter/helpers/gltf-attributes.ts +12 -13
  115. package/src/i3s-converter/helpers/node-index-document.ts +18 -10
  116. package/src/i3s-converter/helpers/node-pages.ts +27 -29
  117. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +1 -0
  118. package/src/i3s-converter/helpers/progress.ts +1 -0
  119. package/src/i3s-converter/helpers/tileset-traversal.ts +22 -13
  120. package/src/i3s-converter/i3s-converter.ts +173 -114
  121. package/src/i3s-converter/json-templates/node.ts +1 -1
  122. package/src/i3s-server/bin/www.ts +6 -4
  123. package/src/i3s-server/controllers/slpk-controller.ts +4 -2
  124. package/src/i3s-server/routes/index.ts +10 -7
  125. package/src/i3s-server/routes/slpk-router.ts +22 -16
  126. package/src/i3s-server/utils/server-utils.ts +6 -4
  127. package/src/lib/utils/cli-utils.ts +2 -0
  128. package/src/lib/utils/conversion-dump.ts +35 -20
  129. package/src/lib/utils/file-utils.ts +11 -11
  130. package/src/lib/utils/statistic-utills.ts +5 -6
  131. package/src/lib/utils/write-queue.ts +2 -2
  132. package/src/slpk-extractor/slpk-extractor.ts +2 -1
  133. package/src/slpk-extractor-cli.ts +16 -8
  134. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  135. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  136. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  137. package/dist/3d-tiles-converter/helpers/load-i3s.js.map +0 -1
  138. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  139. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  140. package/dist/constants.js.map +0 -1
  141. package/dist/converter-cli.js.map +0 -1
  142. package/dist/deps-installer/deps-installer.js.map +0 -1
  143. package/dist/i3s-converter/helpers/attribute-metadata-info.js.map +0 -1
  144. package/dist/i3s-converter/helpers/batch-ids-extensions.js.map +0 -1
  145. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  146. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  147. package/dist/i3s-converter/helpers/feature-attributes.js.map +0 -1
  148. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  149. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  150. package/dist/i3s-converter/helpers/gltf-attributes.js.map +0 -1
  151. package/dist/i3s-converter/helpers/load-3d-tiles.js.map +0 -1
  152. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  153. package/dist/i3s-converter/helpers/node-index-document.js.map +0 -1
  154. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  155. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js.map +0 -1
  156. package/dist/i3s-converter/helpers/progress.js.map +0 -1
  157. package/dist/i3s-converter/helpers/tileset-traversal.js.map +0 -1
  158. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  159. package/dist/i3s-converter/json-templates/geometry-definitions.js.map +0 -1
  160. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  161. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  162. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  163. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  164. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  165. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  166. package/dist/i3s-converter/types.js.map +0 -1
  167. package/dist/i3s-server/README.md +0 -63
  168. package/dist/i3s-server/app.js.map +0 -1
  169. package/dist/i3s-server/bin/www.js.map +0 -1
  170. package/dist/i3s-server/certs/cert.pem +0 -19
  171. package/dist/i3s-server/certs/key.pem +0 -27
  172. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  173. package/dist/i3s-server/controllers/slpk-controller.js.map +0 -1
  174. package/dist/i3s-server/routes/index.js.map +0 -1
  175. package/dist/i3s-server/routes/slpk-router.js.map +0 -1
  176. package/dist/i3s-server/utils/create-scene-server.js.map +0 -1
  177. package/dist/i3s-server/utils/server-utils.js.map +0 -1
  178. package/dist/index.js.map +0 -1
  179. package/dist/lib/json-schemas/conversion-dump-json-schema.js.map +0 -1
  180. package/dist/lib/utils/cli-utils.js.map +0 -1
  181. package/dist/lib/utils/compress-util.js.map +0 -1
  182. package/dist/lib/utils/conversion-dump.js.map +0 -1
  183. package/dist/lib/utils/file-utils.js.map +0 -1
  184. package/dist/lib/utils/geometry-utils.js.map +0 -1
  185. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  186. package/dist/lib/utils/queue.js.map +0 -1
  187. package/dist/lib/utils/statistic-utills.js.map +0 -1
  188. package/dist/lib/utils/write-queue.js.map +0 -1
  189. package/dist/pgm-loader.js.map +0 -1
  190. package/dist/slpk-extractor/slpk-extractor.js.map +0 -1
  191. package/dist/slpk-extractor-cli.js.map +0 -1
  192. package/src/lib/utils/statistic-utills.d.ts +0 -25
@@ -4,27 +4,36 @@ import https from 'https';
4
4
  import http from 'http';
5
5
  import fs from 'fs';
6
6
  import path from 'path';
7
+ // For local debug
8
+ // import {fileURLToPath} from 'url';
7
9
  import { formErrorHandler, formListeningHandler, normalizePort } from "../utils/server-utils.js";
10
+ // For local debug
11
+ // const __filename = fileURLToPath(import.meta.url);
12
+ // const __dirname = path.dirname(__filename);
13
+ /** Get port from environment and store in Express. */
8
14
  const httpPort = normalizePort(process.env.PORT || '80');
9
15
  if (httpPort === false) {
10
- console.error(`Incorrect HTTP port`);
11
- process.exit(1);
16
+ // eslint-disable-next-line no-console
17
+ console.error('Incorrect HTTP port');
18
+ process.exit(1); // eslint-disable-line no-process-exit
12
19
  }
13
20
  const httpsPort = normalizePort(process.env.HTTPS_PORT || '443');
14
21
  if (httpsPort === false) {
15
- console.error(`Incorrect HTTPs port`);
16
- process.exit(1);
22
+ // eslint-disable-next-line no-console
23
+ console.error('Incorrect HTTPs port');
24
+ process.exit(1); // eslint-disable-line no-process-exit
17
25
  }
26
+ /** Create HTTP server. */
18
27
  const options = {
19
- key: fs.readFileSync(path.join(__dirname, '../certs/key.pem')),
20
- cert: fs.readFileSync(path.join(__dirname, '../certs/cert.pem'))
28
+ key: fs.readFileSync(path.join(__dirname, '../certs/key.pem')),
29
+ cert: fs.readFileSync(path.join(__dirname, '../certs/cert.pem'))
21
30
  };
22
31
  const httpServer = http.createServer(app);
23
32
  const httpsServer = https.createServer(options, app);
33
+ /** Listen on provided port, on all network interfaces. */
24
34
  httpServer.listen(httpPort);
25
35
  httpServer.on('error', formErrorHandler(httpPort));
26
36
  httpServer.on('listening', formListeningHandler(httpServer));
27
37
  httpsServer.listen(httpsPort);
28
38
  httpsServer.on('error', formErrorHandler(httpsPort));
29
39
  httpsServer.on('listening', formListeningHandler(httpsServer));
30
- //# sourceMappingURL=www.js.map
@@ -1,21 +1,24 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
- const {
4
- promises
5
- } = fs;
3
+ const { promises } = fs;
6
4
  const I3S_LAYER_PATH = process.env.I3sLayerPath || '';
5
+ /**
6
+ * Get local file name by input HTTP URL
7
+ * @param url - I3S HTTP service url
8
+ * @returns - local file name
9
+ */
7
10
  export async function getFileNameByUrl(url) {
8
- const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];
9
- const FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH);
10
- for (const ext of extensions) {
11
- const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;
12
- try {
13
- await promises.access(fileName);
14
- return fileName;
15
- } catch {
16
- continue;
11
+ const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];
12
+ const FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH);
13
+ for (const ext of extensions) {
14
+ const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;
15
+ try {
16
+ await promises.access(fileName);
17
+ return fileName;
18
+ }
19
+ catch {
20
+ continue; // eslint-disable-line no-continue
21
+ }
17
22
  }
18
- }
19
- return null;
23
+ return null;
20
24
  }
21
- //# sourceMappingURL=index-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slpk-controller.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/controllers/slpk-controller.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAM/B;;;GAGG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAW3E"}
1
+ {"version":3,"file":"slpk-controller.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/controllers/slpk-controller.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAM/B;;;GAGG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAW3E"}
@@ -2,18 +2,31 @@ import '@loaders.gl/polyfills';
2
2
  import { parseSLPKArchive } from '@loaders.gl/i3s';
3
3
  import { FileHandleFile } from '@loaders.gl/loader-utils';
4
4
  let slpkArchive;
5
+ /**
6
+ * Open SLPK file for reading and load HASH file
7
+ * @param fullLayerPath - full path to SLPK file
8
+ */
5
9
  export async function loadArchive(fullLayerPath) {
6
- slpkArchive = await parseSLPKArchive(new FileHandleFile(fullLayerPath), msg => console.log(msg));
7
- console.log('The server is ready to use');
10
+ slpkArchive = await parseSLPKArchive(new FileHandleFile(fullLayerPath), (msg) => console.log(msg) // eslint-disable-line no-console
11
+ );
12
+ // eslint-disable-next-line no-console
13
+ console.log('The server is ready to use');
8
14
  }
15
+ /**
16
+ * Get a file from SLPK
17
+ * @param url - I3S HTTP URL
18
+ * @returns - file content
19
+ */
9
20
  export async function getFileByUrl(url) {
10
- const trimmedPath = /^\/?(.*)\/?$/.exec(url);
11
- if (trimmedPath) {
12
- try {
13
- const uncompressedFile = await slpkArchive.getFile(trimmedPath[1], 'http');
14
- return uncompressedFile;
15
- } catch {}
16
- }
17
- return null;
21
+ const trimmedPath = /^\/?(.*)\/?$/.exec(url);
22
+ if (trimmedPath) {
23
+ try {
24
+ const uncompressedFile = await slpkArchive.getFile(trimmedPath[1], 'http');
25
+ return uncompressedFile;
26
+ }
27
+ catch {
28
+ // TODO - log error?
29
+ }
30
+ }
31
+ return null;
18
32
  }
19
- //# sourceMappingURL=slpk-controller.js.map
@@ -1,13 +1,17 @@
1
1
  import express from 'express';
2
2
  import { getFileNameByUrl } from "../controllers/index-controller.js";
3
3
  export const router = express.Router();
4
- router.get('*', async function (req, res, next) {
5
- const fileName = await getFileNameByUrl(req.path);
6
- if (fileName) {
7
- res.sendFile(fileName);
8
- } else {
9
- res.status(404);
10
- res.send('File not found');
11
- }
4
+ /* GET home page. */
5
+ router.get('*', (req, res, next) => {
6
+ async function routerCallback(req, res, next) {
7
+ const fileName = await getFileNameByUrl(req.path);
8
+ if (fileName) {
9
+ res.sendFile(fileName);
10
+ }
11
+ else {
12
+ res.status(404);
13
+ res.send('File not found');
14
+ }
15
+ }
16
+ routerCallback(req, res, next);
12
17
  });
13
- //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slpk-router.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/routes/slpk-router.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,4CAAmB,CAAC;AAalD,eAAO,MAAM,MAAM,4CAAmB,CAAC"}
1
+ {"version":3,"file":"slpk-router.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/routes/slpk-router.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,4CAAmB,CAAC;AAgBlD,eAAO,MAAM,MAAM,4CAAmB,CAAC"}
@@ -3,25 +3,32 @@ import { getFileByUrl } from "../controllers/slpk-controller.js";
3
3
  import { createSceneServer } from "../utils/create-scene-server.js";
4
4
  const textDecoder = new TextDecoder();
5
5
  export const sceneServerRouter = express.Router();
6
- sceneServerRouter.get('*', async function (req, res, next) {
7
- const file = await getFileByUrl('/');
8
- if (file) {
9
- const layer = JSON.parse(textDecoder.decode(file));
10
- const sceneServerResponse = createSceneServer(layer.name, layer);
11
- res.send(sceneServerResponse);
12
- } else {
13
- res.status(404);
14
- res.send('File not found');
15
- }
6
+ sceneServerRouter.get('*', (req, res, next) => {
7
+ async function routerCallback(req, res, next) {
8
+ const file = await getFileByUrl('/');
9
+ if (file) {
10
+ const layer = JSON.parse(textDecoder.decode(file));
11
+ const sceneServerResponse = createSceneServer(layer.name, layer);
12
+ res.send(sceneServerResponse);
13
+ }
14
+ else {
15
+ res.status(404);
16
+ res.send('File not found');
17
+ }
18
+ }
19
+ routerCallback(req, res, next);
16
20
  });
17
21
  export const router = express.Router();
18
- router.get('*', async function (req, res, next) {
19
- const file = await getFileByUrl(req.path.replace(/\/+$/, ''));
20
- if (file) {
21
- res.send(Buffer.from(file));
22
- } else {
23
- res.status(404);
24
- res.send('File not found');
25
- }
22
+ router.get('*', (req, res, next) => {
23
+ async function routerCallback(req, res, next) {
24
+ const file = await getFileByUrl(req.path.replace(/\/+$/, ''));
25
+ if (file) {
26
+ res.send(Buffer.from(file));
27
+ }
28
+ else {
29
+ res.status(404);
30
+ res.send('File not found');
31
+ }
32
+ }
33
+ routerCallback(req, res, next);
26
34
  });
27
- //# sourceMappingURL=slpk-router.js.map
@@ -1,13 +1,18 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
+ /**
3
+ * Create `/SceneServer` response
4
+ * @param name - service name, custom user-friendly name of the service
5
+ * @param layer - I3S layer JSON
6
+ * @returns reponse JSON for `/SceneServer` route
7
+ */
2
8
  export const createSceneServer = (name, layer) => {
3
- return {
4
- serviceItemId: uuidv4().replace(/-/gi, ''),
5
- serviceName: name,
6
- name,
7
- currentVersion: '10.7',
8
- serviceVersion: '1.8',
9
- supportedBindings: ['REST'],
10
- layers: [layer]
11
- };
9
+ return {
10
+ serviceItemId: uuidv4().replace(/-/gi, ''),
11
+ serviceName: name,
12
+ name,
13
+ currentVersion: '10.7',
14
+ serviceVersion: '1.8',
15
+ supportedBindings: ['REST'],
16
+ layers: [layer]
17
+ };
12
18
  };
13
- //# sourceMappingURL=create-scene-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/utils/server-utils.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAC,MAAM,IAAI,WAAW,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAK/C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAclE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,GAAG,MAAM,GAC5B,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,CAsBxC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,IAAI,CAMzF"}
1
+ {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../../src/i3s-server/utils/server-utils.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAC,MAAM,IAAI,WAAW,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAK/C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAclE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,GAAG,MAAM,GAE5B,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,CAuBxC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,IAAI,CAMzF"}
@@ -1,40 +1,60 @@
1
1
  import debugFactory from 'debug';
2
2
  const debug = debugFactory('i3s-server:server');
3
+ /**
4
+ * Normalize a port into a number, string, or false.
5
+ * @param val - port value from env variables
6
+ * @returns - `number` for port, `string` for a named pipe, or `false` if the port number is not correct
7
+ */
3
8
  export function normalizePort(val) {
4
- const chkPort = parseInt(val, 10);
5
- if (Number.isNaN(chkPort)) {
6
- return val;
7
- }
8
- if (chkPort >= 0) {
9
- return chkPort;
10
- }
11
- return false;
12
- }
13
- export function formErrorHandler(optionalPort) {
14
- return function onError(error) {
15
- if (error.syscall !== 'listen') {
16
- throw error;
9
+ const chkPort = parseInt(val, 10);
10
+ if (Number.isNaN(chkPort)) {
11
+ // named pipe
12
+ return val;
17
13
  }
18
- const bind = typeof optionalPort === 'string' ? `Pipe ${optionalPort}` : `Port ${optionalPort}`;
19
- switch (error.code) {
20
- case 'EACCES':
21
- console.error(`${bind} requires elevated privileges`);
22
- process.exit(1);
23
- break;
24
- case 'EADDRINUSE':
25
- console.error(`${bind} is already in use`);
26
- process.exit(1);
27
- break;
28
- default:
29
- throw error;
14
+ if (chkPort >= 0) {
15
+ // port number
16
+ return chkPort;
30
17
  }
31
- };
18
+ return false;
19
+ }
20
+ /**
21
+ * Event listener creator for HTTP/HTTPS server "error" event.
22
+ * @param optionalPort - the port/named pipe the server is started on
23
+ * @return callback to handle server errors
24
+ */
25
+ export function formErrorHandler(optionalPort
26
+ // eslint-disable-next-line no-undef
27
+ ) {
28
+ // eslint-disable-next-line no-undef
29
+ return function onError(error) {
30
+ if (error.syscall !== 'listen') {
31
+ throw error;
32
+ }
33
+ const bind = typeof optionalPort === 'string' ? `Pipe ${optionalPort}` : `Port ${optionalPort}`;
34
+ // handle specific listen errors with friendly messages
35
+ switch (error.code) {
36
+ case 'EACCES':
37
+ console.error(`${bind} requires elevated privileges`); // eslint-disable-line no-console
38
+ process.exit(1); // eslint-disable-line no-process-exit
39
+ break;
40
+ case 'EADDRINUSE':
41
+ console.error(`${bind} is already in use`); // eslint-disable-line no-console
42
+ process.exit(1); // eslint-disable-line no-process-exit
43
+ break;
44
+ default:
45
+ throw error;
46
+ }
47
+ };
32
48
  }
49
+ /**
50
+ * Event listener for HTTP/HTTPS server "listening" event.
51
+ * @param optionalServer - http or https NodeJS server
52
+ * @return callback that is triggered when the server has started
53
+ */
33
54
  export function formListeningHandler(optionalServer) {
34
- return function onListening() {
35
- const addr = optionalServer.address();
36
- const bind = typeof addr === 'string' ? `pipe ${addr}` : `port ${addr === null || addr === void 0 ? void 0 : addr.port}`;
37
- debug(`Listening on ${bind}`);
38
- };
55
+ return function onListening() {
56
+ const addr = optionalServer.address();
57
+ const bind = typeof addr === 'string' ? `pipe ${addr}` : `port ${addr?.port}`;
58
+ debug(`Listening on ${bind}`);
59
+ };
39
60
  }
40
- //# sourceMappingURL=server-utils.js.map