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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +3 -3
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
  3. package/dist/3d-tiles-attributes-worker.js +2 -3
  4. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +8 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +57 -43
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -5
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +21 -17
  11. package/dist/converter-cli.js +29 -4
  12. package/dist/converter.min.js +24 -21
  13. package/dist/deps-installer/deps-installer.d.ts +5 -1
  14. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  15. package/dist/deps-installer/deps-installer.js +29 -1
  16. package/dist/dist.min.js +42714 -45782
  17. package/dist/es5/3d-tiles-attributes-worker.js +4 -7
  18. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  19. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +125 -210
  20. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  21. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +53 -85
  22. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  23. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
  24. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  25. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
  26. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  27. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
  28. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  29. package/dist/es5/bundle.js +0 -1
  30. package/dist/es5/bundle.js.map +1 -1
  31. package/dist/es5/constants.js.map +1 -1
  32. package/dist/es5/converter-cli.js +25 -58
  33. package/dist/es5/converter-cli.js.map +1 -1
  34. package/dist/es5/deps-installer/deps-installer.js +73 -28
  35. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  36. package/dist/es5/i3s-attributes-worker.js +3 -6
  37. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  38. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +18 -29
  39. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  40. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +8 -25
  41. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  42. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
  43. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  44. package/dist/es5/i3s-converter/helpers/feature-attributes.js +184 -0
  45. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  46. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +60 -51
  47. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  48. package/dist/es5/i3s-converter/helpers/geometry-converter.js +504 -350
  49. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  50. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +57 -57
  51. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  52. package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
  53. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  54. package/dist/es5/i3s-converter/helpers/node-index-document.js +517 -0
  55. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  56. package/dist/es5/i3s-converter/helpers/node-pages.js +478 -168
  57. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  58. package/dist/es5/i3s-converter/i3s-converter.js +770 -1131
  59. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  60. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  61. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  62. package/dist/es5/i3s-converter/json-templates/layers.js +2 -107
  63. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  64. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
  65. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  66. package/dist/es5/i3s-converter/json-templates/node.js +2 -12
  67. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  68. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
  69. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  70. package/dist/es5/i3s-converter/json-templates/shared-resources.js +9 -32
  71. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  72. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  73. package/dist/es5/i3s-converter/types.js.map +1 -1
  74. package/dist/es5/i3s-server/app.js +0 -5
  75. package/dist/es5/i3s-server/app.js.map +1 -1
  76. package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
  77. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  78. package/dist/es5/i3s-server/routes/index.js +1 -10
  79. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  80. package/dist/es5/index.js +0 -3
  81. package/dist/es5/index.js.map +1 -1
  82. package/dist/es5/lib/utils/compress-util.js +19 -74
  83. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  84. package/dist/es5/lib/utils/file-utils.js +103 -47
  85. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  86. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
  87. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  88. package/dist/es5/lib/utils/queue.js +0 -14
  89. package/dist/es5/lib/utils/queue.js.map +1 -1
  90. package/dist/es5/lib/utils/statistic-utills.js +1 -46
  91. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  92. package/dist/es5/lib/utils/write-queue.js +86 -87
  93. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  94. package/dist/es5/pgm-loader.js +1 -8
  95. package/dist/es5/pgm-loader.js.map +1 -1
  96. package/dist/es5/workers/3d-tiles-attributes-worker.js +2 -9
  97. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
  98. package/dist/es5/workers/i3s-attributes-worker.js +2 -10
  99. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  100. package/dist/esm/3d-tiles-attributes-worker.js +4 -2
  101. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  102. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +60 -77
  103. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  104. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +29 -50
  105. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  106. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
  107. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  108. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
  109. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  110. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
  111. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  112. package/dist/esm/bundle.js +1 -1
  113. package/dist/esm/bundle.js.map +1 -1
  114. package/dist/esm/constants.js.map +1 -1
  115. package/dist/esm/converter-cli.js +26 -43
  116. package/dist/esm/converter-cli.js.map +1 -1
  117. package/dist/esm/deps-installer/deps-installer.js +30 -4
  118. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  119. package/dist/esm/i3s-attributes-worker.js +3 -1
  120. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  121. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +20 -24
  122. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  123. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +11 -12
  124. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  125. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
  126. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  127. package/dist/esm/i3s-converter/helpers/feature-attributes.js +158 -0
  128. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  129. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +39 -33
  130. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  131. package/dist/esm/i3s-converter/helpers/geometry-converter.js +286 -192
  132. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  133. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +59 -48
  134. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  135. package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
  136. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  137. package/dist/esm/i3s-converter/helpers/node-index-document.js +202 -0
  138. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  139. package/dist/esm/i3s-converter/helpers/node-pages.js +161 -87
  140. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  141. package/dist/esm/i3s-converter/i3s-converter.js +217 -509
  142. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  143. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  144. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  145. package/dist/esm/i3s-converter/json-templates/layers.js +2 -95
  146. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  147. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  148. package/dist/esm/i3s-converter/json-templates/node.js +0 -4
  149. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
  150. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  151. package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -15
  152. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  153. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  154. package/dist/esm/i3s-converter/types.js.map +1 -1
  155. package/dist/esm/i3s-server/app.js +0 -5
  156. package/dist/esm/i3s-server/app.js.map +1 -1
  157. package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
  158. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  159. package/dist/esm/i3s-server/routes/index.js +0 -3
  160. package/dist/esm/i3s-server/routes/index.js.map +1 -1
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lib/utils/compress-util.js +19 -12
  163. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  164. package/dist/esm/lib/utils/file-utils.js +54 -11
  165. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  166. package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
  167. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  168. package/dist/esm/lib/utils/queue.js +0 -4
  169. package/dist/esm/lib/utils/queue.js.map +1 -1
  170. package/dist/esm/lib/utils/statistic-utills.js +0 -11
  171. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  172. package/dist/esm/lib/utils/write-queue.js +29 -28
  173. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  174. package/dist/esm/pgm-loader.js +3 -1
  175. package/dist/esm/pgm-loader.js.map +1 -1
  176. package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
  177. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
  178. package/dist/esm/workers/i3s-attributes-worker.js +4 -1
  179. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  180. package/dist/i3s-attributes-worker.d.ts +7 -3
  181. package/dist/i3s-attributes-worker.d.ts.map +1 -1
  182. package/dist/i3s-attributes-worker.js +2 -3
  183. package/dist/i3s-attributes-worker.js.map +3 -3
  184. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +5 -6
  185. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  186. package/dist/i3s-converter/helpers/batch-ids-extensions.js +18 -4
  187. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +2 -2
  188. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  189. package/dist/i3s-converter/helpers/coordinate-converter.js +8 -6
  190. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  191. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  192. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  193. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  194. package/dist/i3s-converter/helpers/geometry-attributes.js +42 -17
  195. package/dist/i3s-converter/helpers/geometry-converter.d.ts +18 -6
  196. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  197. package/dist/i3s-converter/helpers/geometry-converter.js +337 -92
  198. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  199. package/dist/i3s-converter/helpers/gltf-attributes.js +51 -32
  200. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  201. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  202. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  203. package/dist/i3s-converter/helpers/node-pages.d.ts +81 -42
  204. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  205. package/dist/i3s-converter/helpers/node-pages.js +201 -93
  206. package/dist/i3s-converter/i3s-converter.d.ts +52 -108
  207. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  208. package/dist/i3s-converter/i3s-converter.js +223 -421
  209. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  210. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  211. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  212. package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
  213. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  214. package/dist/i3s-converter/json-templates/layers.js +2 -86
  215. package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
  216. package/dist/i3s-converter/types.d.ts +37 -55
  217. package/dist/i3s-converter/types.d.ts.map +1 -1
  218. package/dist/lib/utils/file-utils.d.ts +17 -1
  219. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  220. package/dist/lib/utils/file-utils.js +64 -7
  221. package/dist/lib/utils/write-queue.d.ts +19 -2
  222. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  223. package/dist/lib/utils/write-queue.js +26 -7
  224. package/dist/pgm-loader.d.ts.map +1 -1
  225. package/dist/pgm-loader.js +2 -1
  226. package/dist/workers/3d-tiles-attributes-worker.js +1 -1
  227. package/dist/workers/i3s-attributes-worker.js +1 -1
  228. package/package.json +18 -16
  229. package/src/3d-tiles-attributes-worker.ts +1 -1
  230. package/src/3d-tiles-converter/3d-tiles-converter.ts +71 -55
  231. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +25 -18
  232. package/src/converter-cli.ts +38 -4
  233. package/src/deps-installer/deps-installer.ts +38 -2
  234. package/src/i3s-attributes-worker.ts +5 -1
  235. package/src/i3s-converter/helpers/batch-ids-extensions.ts +38 -14
  236. package/src/i3s-converter/helpers/coordinate-converter.ts +10 -8
  237. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  238. package/src/i3s-converter/helpers/geometry-attributes.ts +46 -18
  239. package/src/i3s-converter/helpers/geometry-converter.ts +405 -108
  240. package/src/i3s-converter/helpers/gltf-attributes.ts +55 -35
  241. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  242. package/src/i3s-converter/helpers/node-pages.ts +222 -109
  243. package/src/i3s-converter/i3s-converter.ts +269 -500
  244. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  245. package/src/i3s-converter/json-templates/layers.ts +2 -91
  246. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  247. package/src/i3s-converter/types.ts +31 -51
  248. package/src/lib/utils/file-utils.ts +62 -7
  249. package/src/lib/utils/write-queue.ts +43 -10
  250. package/src/pgm-loader.ts +2 -2
  251. package/src/workers/3d-tiles-attributes-worker.ts +1 -1
  252. package/src/workers/i3s-attributes-worker.ts +2 -1
@@ -1,62 +1,47 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
6
  var path = require('path');
10
-
11
7
  var fs = require('fs');
12
-
13
8
  var promises = fs.promises;
14
9
  var I3S_LAYER_PATH = process.env.I3sLayerPath || '';
15
10
  var FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH);
16
-
17
11
  function getFileNameByUrl(_x) {
18
12
  return _getFileNameByUrl.apply(this, arguments);
19
13
  }
20
-
21
14
  function _getFileNameByUrl() {
22
15
  _getFileNameByUrl = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(url) {
23
16
  var extensions, _i, _extensions, ext, fileName;
24
-
25
17
  return _regenerator.default.wrap(function _callee$(_context) {
26
18
  while (1) {
27
19
  switch (_context.prev = _context.next) {
28
20
  case 0:
29
21
  extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];
30
22
  _i = 0, _extensions = extensions;
31
-
32
23
  case 2:
33
24
  if (!(_i < _extensions.length)) {
34
25
  _context.next = 17;
35
26
  break;
36
27
  }
37
-
38
28
  ext = _extensions[_i];
39
29
  fileName = "".concat(FULL_LAYER_PATH).concat(url, "/index.").concat(ext);
40
30
  _context.prev = 5;
41
31
  _context.next = 8;
42
32
  return promises.access(fileName);
43
-
44
33
  case 8:
45
34
  return _context.abrupt("return", fileName);
46
-
47
35
  case 11:
48
36
  _context.prev = 11;
49
37
  _context.t0 = _context["catch"](5);
50
38
  return _context.abrupt("continue", 14);
51
-
52
39
  case 14:
53
40
  _i++;
54
41
  _context.next = 2;
55
42
  break;
56
-
57
43
  case 17:
58
44
  return _context.abrupt("return", null);
59
-
60
45
  case 18:
61
46
  case "end":
62
47
  return _context.stop();
@@ -66,7 +51,6 @@ function _getFileNameByUrl() {
66
51
  }));
67
52
  return _getFileNameByUrl.apply(this, arguments);
68
53
  }
69
-
70
54
  module.exports = {
71
55
  getFileNameByUrl: getFileNameByUrl
72
56
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/i3s-server/controllers/index-controller.js"],"names":["path","require","fs","promises","I3S_LAYER_PATH","process","env","I3sLayerPath","FULL_LAYER_PATH","join","cwd","getFileNameByUrl","url","extensions","ext","fileName","access","module","exports"],"mappings":";;;;;;;;AAAA,IAAMA,IAAI,GAAGC,OAAO,CAAC,MAAD,CAApB;;AACA,IAAMC,EAAE,GAAGD,OAAO,CAAC,IAAD,CAAlB;;AAEA,IAAOE,QAAP,GAAmBD,EAAnB,CAAOC,QAAP;AAEA,IAAMC,cAAc,GAAGC,OAAO,CAACC,GAAR,CAAYC,YAAZ,IAA4B,EAAnD;AACA,IAAMC,eAAe,GAAGR,IAAI,CAACS,IAAL,CAAUJ,OAAO,CAACK,GAAR,EAAV,EAAyBN,cAAzB,CAAxB;;SAEeO,gB;;;;;gFAAf,iBAAgCC,GAAhC;AAAA;;AAAA;AAAA;AAAA;AAAA;AACQC,YAAAA,UADR,GACqB,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,SAAtC,EAAiD,MAAjD,CADrB;AAAA,kCAEoBA,UAFpB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEaC,YAAAA,GAFb;AAGUC,YAAAA,QAHV,aAGwBP,eAHxB,SAG0CI,GAH1C,oBAGuDE,GAHvD;AAAA;AAAA;AAAA,mBAKYX,QAAQ,CAACa,MAAT,CAAgBD,QAAhB,CALZ;;AAAA;AAAA,6CAMaA,QANb;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,6CAWS,IAXT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAcAE,MAAM,CAACC,OAAP,GAAiB;AACfP,EAAAA,gBAAgB,EAAhBA;AADe,CAAjB","sourcesContent":["const path = require('path');\nconst fs = require('fs');\n\nconst {promises} = fs;\n\nconst I3S_LAYER_PATH = process.env.I3sLayerPath || ''; // eslint-disable-line no-process-env, no-undef\nconst FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH); // eslint-disable-line no-undef\n\nasync function getFileNameByUrl(url) {\n const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];\n for (const ext of extensions) {\n const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;\n try {\n await promises.access(fileName);\n return fileName;\n } catch {\n continue; // eslint-disable-line no-continue\n }\n }\n return null;\n}\n\nmodule.exports = {\n getFileNameByUrl\n};\n"],"file":"index-controller.js"}
1
+ {"version":3,"file":"index-controller.js","names":["path","require","fs","promises","I3S_LAYER_PATH","process","env","I3sLayerPath","FULL_LAYER_PATH","join","cwd","getFileNameByUrl","url","extensions","ext","fileName","access","module","exports"],"sources":["../../../../src/i3s-server/controllers/index-controller.js"],"sourcesContent":["const path = require('path');\nconst fs = require('fs');\n\nconst {promises} = fs;\n\nconst I3S_LAYER_PATH = process.env.I3sLayerPath || ''; // eslint-disable-line no-process-env, no-undef\nconst FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH); // eslint-disable-line no-undef\n\nasync function getFileNameByUrl(url) {\n const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];\n for (const ext of extensions) {\n const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;\n try {\n await promises.access(fileName);\n return fileName;\n } catch {\n continue; // eslint-disable-line no-continue\n }\n }\n return null;\n}\n\nmodule.exports = {\n getFileNameByUrl\n};\n"],"mappings":";;;;;AAAA,IAAMA,IAAI,GAAGC,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAMC,EAAE,GAAGD,OAAO,CAAC,IAAI,CAAC;AAExB,IAAOE,QAAQ,GAAID,EAAE,CAAdC,QAAQ;AAEf,IAAMC,cAAc,GAAGC,OAAO,CAACC,GAAG,CAACC,YAAY,IAAI,EAAE;AACrD,IAAMC,eAAe,GAAGR,IAAI,CAACS,IAAI,CAACJ,OAAO,CAACK,GAAG,EAAE,EAAEN,cAAc,CAAC;AAAC,SAElDO,gBAAgB;EAAA;AAAA;AAAA;EAAA,8EAA/B,iBAAgCC,GAAG;IAAA;IAAA;MAAA;QAAA;UAAA;YAC3BC,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC;YAAA,sBACzDA,UAAU;UAAA;YAAA;cAAA;cAAA;YAAA;YAAjBC,GAAG;YACNC,QAAQ,aAAMP,eAAe,SAAGI,GAAG,oBAAUE,GAAG;YAAA;YAAA;YAAA,OAE9CX,QAAQ,CAACa,MAAM,CAACD,QAAQ,CAAC;UAAA;YAAA,iCACxBA,QAAQ;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA,iCAKZ,IAAI;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AAEDE,MAAM,CAACC,OAAO,GAAG;EACfP,gBAAgB,EAAhBA;AACF,CAAC"}
@@ -1,17 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
6
  var express = require('express');
10
-
11
7
  var router = express.Router();
12
-
13
8
  var _require = require('../controllers/index-controller'),
14
- getFileNameByUrl = _require.getFileNameByUrl;
9
+ getFileNameByUrl = _require.getFileNameByUrl;
15
10
 
16
11
  router.get('*', function () {
17
12
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(req, res, next) {
@@ -22,17 +17,14 @@ router.get('*', function () {
22
17
  case 0:
23
18
  _context.next = 2;
24
19
  return getFileNameByUrl(req.path);
25
-
26
20
  case 2:
27
21
  fileName = _context.sent;
28
-
29
22
  if (fileName) {
30
23
  res.sendFile(fileName);
31
24
  } else {
32
25
  res.status(404);
33
26
  res.send('File not found');
34
27
  }
35
-
36
28
  case 4:
37
29
  case "end":
38
30
  return _context.stop();
@@ -40,7 +32,6 @@ router.get('*', function () {
40
32
  }
41
33
  }, _callee);
42
34
  }));
43
-
44
35
  return function (_x, _x2, _x3) {
45
36
  return _ref.apply(this, arguments);
46
37
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/i3s-server/routes/index.js"],"names":["express","require","router","Router","getFileNameByUrl","get","req","res","next","path","fileName","sendFile","status","send","module","exports"],"mappings":";;;;;;;;AAAA,IAAMA,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,IAAMC,MAAM,GAAGF,OAAO,CAACG,MAAR,EAAf;;AACA,eAA2BF,OAAO,CAAC,iCAAD,CAAlC;AAAA,IAAOG,gBAAP,YAAOA,gBAAP;;AAGAF,MAAM,CAACG,GAAP,CAAW,GAAX;AAAA,uEAAgB,iBAAgBC,GAAhB,EAAqBC,GAArB,EAA0BC,IAA1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACSJ,gBAAgB,CAACE,GAAG,CAACG,IAAL,CADzB;;AAAA;AACRC,YAAAA,QADQ;;AAEd,gBAAIA,QAAJ,EAAc;AACZH,cAAAA,GAAG,CAACI,QAAJ,CAAaD,QAAb;AACD,aAFD,MAEO;AACLH,cAAAA,GAAG,CAACK,MAAJ,CAAW,GAAX;AACAL,cAAAA,GAAG,CAACM,IAAJ,CAAS,gBAAT;AACD;;AAPa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAhB;;AAAA;AAAA;AAAA;AAAA;AAUAC,MAAM,CAACC,OAAP,GAAiBb,MAAjB","sourcesContent":["const express = require('express');\nconst router = express.Router();\nconst {getFileNameByUrl} = require('../controllers/index-controller');\n\n/* GET home page. */\nrouter.get('*', async function (req, res, next) {\n const fileName = await getFileNameByUrl(req.path);\n if (fileName) {\n res.sendFile(fileName);\n } else {\n res.status(404);\n res.send('File not found');\n }\n});\n\nmodule.exports = router;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["express","require","router","Router","getFileNameByUrl","get","req","res","next","path","fileName","sendFile","status","send","module","exports"],"sources":["../../../../src/i3s-server/routes/index.js"],"sourcesContent":["const express = require('express');\nconst router = express.Router();\nconst {getFileNameByUrl} = require('../controllers/index-controller');\n\n/* GET home page. */\nrouter.get('*', async function (req, res, next) {\n const fileName = await getFileNameByUrl(req.path);\n if (fileName) {\n res.sendFile(fileName);\n } else {\n res.status(404);\n res.send('File not found');\n }\n});\n\nmodule.exports = router;\n"],"mappings":";;;;;AAAA,IAAMA,OAAO,GAAGC,OAAO,CAAC,SAAS,CAAC;AAClC,IAAMC,MAAM,GAAGF,OAAO,CAACG,MAAM,EAAE;AAC/B,eAA2BF,OAAO,CAAC,iCAAiC,CAAC;EAA9DG,gBAAgB,YAAhBA,gBAAgB;;AAGvBF,MAAM,CAACG,GAAG,CAAC,GAAG;EAAA,qEAAE,iBAAgBC,GAAG,EAAEC,GAAG,EAAEC,IAAI;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA;YAAA,OACrBJ,gBAAgB,CAACE,GAAG,CAACG,IAAI,CAAC;UAAA;YAA3CC,QAAQ;YACd,IAAIA,QAAQ,EAAE;cACZH,GAAG,CAACI,QAAQ,CAACD,QAAQ,CAAC;YACxB,CAAC,MAAM;cACLH,GAAG,CAACK,MAAM,CAAC,GAAG,CAAC;cACfL,GAAG,CAACM,IAAI,CAAC,gBAAgB,CAAC;YAC5B;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACF;EAAA;IAAA;EAAA;AAAA,IAAC;AAEFC,MAAM,CAACC,OAAO,GAAGb,MAAM"}
package/dist/es5/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -17,8 +16,6 @@ Object.defineProperty(exports, "Tiles3DConverter", {
17
16
  return _dTilesConverter.default;
18
17
  }
19
18
  });
20
-
21
19
  var _i3sConverter = _interopRequireDefault(require("./i3s-converter/i3s-converter"));
22
-
23
20
  var _dTilesConverter = _interopRequireDefault(require("./3d-tiles-converter/3d-tiles-converter"));
24
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export {default as I3SConverter} from './i3s-converter/i3s-converter';\nexport {default as Tiles3DConverter} from './3d-tiles-converter/3d-tiles-converter';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export {default as I3SConverter} from './i3s-converter/i3s-converter';\nexport {default as Tiles3DConverter} from './3d-tiles-converter/3d-tiles-converter';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA"}
@@ -1,38 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
7
+ exports.addFileToZip = addFileToZip;
8
8
  exports.compressFileWithGzip = compressFileWithGzip;
9
9
  exports.compressFilesWithZip = compressFilesWithZip;
10
10
  exports.compressWithChildProcess = compressWithChildProcess;
11
11
  exports.generateHash128FromZip = generateHash128FromZip;
12
- exports.addFileToZip = addFileToZip;
13
-
14
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
-
16
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
14
  var _zlib = require("zlib");
19
-
20
15
  var _path = require("path");
21
-
22
16
  var _fs = require("fs");
23
-
24
17
  var _archiver = _interopRequireDefault(require("archiver"));
25
-
26
18
  var _fileUtils = require("./file-utils");
27
-
28
19
  var _workerUtils = require("@loaders.gl/worker-utils");
29
-
30
20
  var _jszip = _interopRequireDefault(require("jszip"));
31
-
32
21
  var _crypto = require("@loaders.gl/crypto");
33
-
34
22
  var _crypt = _interopRequireDefault(require("crypt"));
35
-
36
23
  function compressFileWithGzip(pathFile) {
37
24
  var compressedPathFile = "".concat(pathFile, ".gz");
38
25
  var gzip = (0, _zlib.createGzip)();
@@ -54,13 +41,12 @@ function compressFileWithGzip(pathFile) {
54
41
  function compressFilesWithZip(_x, _x2) {
55
42
  return _compressFilesWithZip.apply(this, arguments);
56
43
  }
57
-
58
44
  function _compressFilesWithZip() {
59
45
  _compressFilesWithZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(fileMap, outputFile) {
60
46
  var level,
61
- output,
62
- archive,
63
- _args2 = arguments;
47
+ output,
48
+ archive,
49
+ _args2 = arguments;
64
50
  return _regenerator.default.wrap(function _callee2$(_context2) {
65
51
  while (1) {
66
52
  switch (_context2.prev = _context2.next) {
@@ -69,15 +55,12 @@ function _compressFilesWithZip() {
69
55
  _context2.prev = 1;
70
56
  _context2.next = 4;
71
57
  return (0, _fileUtils.removeFile)(outputFile);
72
-
73
58
  case 4:
74
59
  _context2.next = 8;
75
60
  break;
76
-
77
61
  case 6:
78
62
  _context2.prev = 6;
79
63
  _context2.t0 = _context2["catch"](1);
80
-
81
64
  case 8:
82
65
  output = (0, _fs.createWriteStream)(outputFile);
83
66
  archive = (0, _archiver.default)('zip', {
@@ -97,38 +80,37 @@ function _compressFilesWithZip() {
97
80
  console.log("".concat(archive.pointer(), " total bytes"));
98
81
  resolve(null);
99
82
  });
83
+
100
84
  output.on('end', function () {
101
85
  console.log('Data has been drained');
102
86
  resolve(null);
103
87
  });
88
+
104
89
  archive.on('warning', function (err) {
105
90
  console.log(err);
106
91
  reject(err);
107
92
  });
93
+
108
94
  archive.on('error', function (err) {
109
95
  reject(err);
110
96
  });
97
+
111
98
  archive.pipe(output);
112
99
  _context.t0 = _regenerator.default.keys(fileMap);
113
-
114
100
  case 6:
115
101
  if ((_context.t1 = _context.t0()).done) {
116
102
  _context.next = 13;
117
103
  break;
118
104
  }
119
-
120
105
  subFileName = _context.t1.value;
121
106
  subFileData = fileMap[subFileName];
122
107
  _context.next = 11;
123
108
  return appendFileToArchive(archive, subFileName, subFileData);
124
-
125
109
  case 11:
126
110
  _context.next = 6;
127
111
  break;
128
-
129
112
  case 13:
130
113
  archive.finalize();
131
-
132
114
  case 14:
133
115
  case "end":
134
116
  return _context.stop();
@@ -136,12 +118,10 @@ function _compressFilesWithZip() {
136
118
  }
137
119
  }, _callee);
138
120
  }));
139
-
140
121
  return function (_x18, _x19) {
141
122
  return _ref.apply(this, arguments);
142
123
  };
143
124
  }()));
144
-
145
125
  case 11:
146
126
  case "end":
147
127
  return _context2.stop();
@@ -151,11 +131,9 @@ function _compressFilesWithZip() {
151
131
  }));
152
132
  return _compressFilesWithZip.apply(this, arguments);
153
133
  }
154
-
155
134
  function compressWithChildProcess(_x3, _x4, _x5, _x6, _x7) {
156
135
  return _compressWithChildProcess.apply(this, arguments);
157
136
  }
158
-
159
137
  function _compressWithChildProcess() {
160
138
  _compressWithChildProcess = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(inputFolder, outputFile, level, inputFiles, sevenZipExe) {
161
139
  return _regenerator.default.wrap(function _callee3$(_context3) {
@@ -166,18 +144,14 @@ function _compressWithChildProcess() {
166
144
  _context3.next = 5;
167
145
  break;
168
146
  }
169
-
170
147
  _context3.next = 3;
171
148
  return compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);
172
-
173
149
  case 3:
174
150
  _context3.next = 7;
175
151
  break;
176
-
177
152
  case 5:
178
153
  _context3.next = 7;
179
154
  return compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);
180
-
181
155
  case 7:
182
156
  case "end":
183
157
  return _context3.stop();
@@ -187,19 +161,17 @@ function _compressWithChildProcess() {
187
161
  }));
188
162
  return _compressWithChildProcess.apply(this, arguments);
189
163
  }
190
-
191
164
  function compressWithChildProcessUnix(_x8, _x9) {
192
165
  return _compressWithChildProcessUnix.apply(this, arguments);
193
166
  }
194
-
195
167
  function _compressWithChildProcessUnix() {
196
168
  _compressWithChildProcessUnix = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(inputFolder, outputFile) {
197
169
  var level,
198
- inputFiles,
199
- fullOutputFile,
200
- args,
201
- childProcess,
202
- _args4 = arguments;
170
+ inputFiles,
171
+ fullOutputFile,
172
+ args,
173
+ childProcess,
174
+ _args4 = arguments;
203
175
  return _regenerator.default.wrap(function _callee4$(_context4) {
204
176
  while (1) {
205
177
  switch (_context4.prev = _context4.next) {
@@ -218,7 +190,6 @@ function _compressWithChildProcessUnix() {
218
190
  },
219
191
  wait: 0
220
192
  });
221
-
222
193
  case 7:
223
194
  case "end":
224
195
  return _context4.stop();
@@ -228,20 +199,18 @@ function _compressWithChildProcessUnix() {
228
199
  }));
229
200
  return _compressWithChildProcessUnix.apply(this, arguments);
230
201
  }
231
-
232
202
  function compressWithChildProcessWindows(_x10, _x11) {
233
203
  return _compressWithChildProcessWindows.apply(this, arguments);
234
204
  }
235
-
236
205
  function _compressWithChildProcessWindows() {
237
206
  _compressWithChildProcessWindows = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(inputFolder, outputFile) {
238
207
  var level,
239
- inputFiles,
240
- sevenZipExe,
241
- fullOutputFile,
242
- args,
243
- childProcess,
244
- _args5 = arguments;
208
+ inputFiles,
209
+ sevenZipExe,
210
+ fullOutputFile,
211
+ args,
212
+ childProcess,
213
+ _args5 = arguments;
245
214
  return _regenerator.default.wrap(function _callee5$(_context5) {
246
215
  while (1) {
247
216
  switch (_context5.prev = _context5.next) {
@@ -249,11 +218,9 @@ function _compressWithChildProcessWindows() {
249
218
  level = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : 0;
250
219
  inputFiles = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : (0, _path.join)('.', '*');
251
220
  sevenZipExe = _args5.length > 4 ? _args5[4] : undefined;
252
-
253
221
  if (inputFiles[0] === '@') {
254
222
  inputFiles = "*".concat(inputFiles.substr(1));
255
223
  }
256
-
257
224
  fullOutputFile = (0, _fileUtils.getAbsoluteFilePath)(outputFile);
258
225
  args = ['a', '-tzip', "-mx=".concat(level), fullOutputFile, inputFiles];
259
226
  childProcess = new _workerUtils.ChildProcessProxy();
@@ -266,7 +233,6 @@ function _compressWithChildProcessWindows() {
266
233
  },
267
234
  wait: 0
268
235
  });
269
-
270
236
  case 9:
271
237
  case "end":
272
238
  return _context5.stop();
@@ -276,55 +242,44 @@ function _compressWithChildProcessWindows() {
276
242
  }));
277
243
  return _compressWithChildProcessWindows.apply(this, arguments);
278
244
  }
279
-
280
245
  function generateHash128FromZip(_x12, _x13) {
281
246
  return _generateHash128FromZip.apply(this, arguments);
282
247
  }
283
-
284
248
  function _generateHash128FromZip() {
285
249
  _generateHash128FromZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(inputZipFile, outputFile) {
286
250
  var input, zip, hashTable, zipFiles, relativePath, zipEntry, _data, content, hash, output;
287
-
288
251
  return _regenerator.default.wrap(function _callee6$(_context6) {
289
252
  while (1) {
290
253
  switch (_context6.prev = _context6.next) {
291
254
  case 0:
292
255
  _context6.next = 2;
293
256
  return _fs.promises.readFile(inputZipFile);
294
-
295
257
  case 2:
296
258
  input = _context6.sent;
297
259
  _context6.next = 5;
298
260
  return _jszip.default.loadAsync(input);
299
-
300
261
  case 5:
301
262
  zip = _context6.sent;
302
263
  hashTable = [];
303
264
  zipFiles = zip.files;
304
265
  _context6.t0 = _regenerator.default.keys(zipFiles);
305
-
306
266
  case 9:
307
267
  if ((_context6.t1 = _context6.t0()).done) {
308
268
  _context6.next = 22;
309
269
  break;
310
270
  }
311
-
312
271
  relativePath = _context6.t1.value;
313
272
  zipEntry = zipFiles[relativePath];
314
273
  _data = '_data';
315
274
  content = zipEntry[_data].compressedContent;
316
-
317
275
  if (!zipEntry.dir) {
318
276
  _context6.next = 16;
319
277
  break;
320
278
  }
321
-
322
279
  return _context6.abrupt("continue", 9);
323
-
324
280
  case 16:
325
281
  _context6.next = 18;
326
282
  return new _crypto.MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));
327
-
328
283
  case 18:
329
284
  hash = _context6.sent;
330
285
  hashTable.push({
@@ -333,13 +288,11 @@ function _generateHash128FromZip() {
333
288
  });
334
289
  _context6.next = 9;
335
290
  break;
336
-
337
291
  case 22:
338
292
  hashTable.sort(function (prev, next) {
339
293
  if (prev.key === next.key) {
340
294
  return prev.value < next.value ? -1 : 1;
341
295
  }
342
-
343
296
  return prev.key < next.key ? -1 : 1;
344
297
  });
345
298
  output = (0, _fs.createWriteStream)(outputFile);
@@ -352,16 +305,13 @@ function _generateHash128FromZip() {
352
305
  console.log(err);
353
306
  reject(err);
354
307
  });
355
-
356
308
  for (var _key in hashTable) {
357
309
  var item = hashTable[_key];
358
310
  var value = longToByteArray(item.value);
359
311
  output.write(Buffer.from(_crypt.default.hexToBytes(item.key).concat(value)));
360
312
  }
361
-
362
313
  output.close();
363
314
  }));
364
-
365
315
  case 25:
366
316
  case "end":
367
317
  return _context6.stop();
@@ -371,7 +321,6 @@ function _generateHash128FromZip() {
371
321
  }));
372
322
  return _generateHash128FromZip.apply(this, arguments);
373
323
  }
374
-
375
324
  function longToByteArray(long) {
376
325
  var buffer = new ArrayBuffer(8);
377
326
  var longNum = new Float64Array(buffer);
@@ -382,7 +331,6 @@ function longToByteArray(long) {
382
331
  function addFileToZip(_x14, _x15, _x16, _x17) {
383
332
  return _addFileToZip.apply(this, arguments);
384
333
  }
385
-
386
334
  function _addFileToZip() {
387
335
  _addFileToZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(inputFolder, fileName, zipFile, sevenZipExe) {
388
336
  return _regenerator.default.wrap(function _callee7$(_context7) {
@@ -391,10 +339,8 @@ function _addFileToZip() {
391
339
  case 0:
392
340
  _context7.next = 2;
393
341
  return compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);
394
-
395
342
  case 2:
396
343
  console.log("".concat(fileName, " added to ").concat(zipFile, "."));
397
-
398
344
  case 3:
399
345
  case "end":
400
346
  return _context7.stop();
@@ -404,7 +350,6 @@ function _addFileToZip() {
404
350
  }));
405
351
  return _addFileToZip.apply(this, arguments);
406
352
  }
407
-
408
353
  function appendFileToArchive(archive, subFileName, subFileData) {
409
354
  return new Promise(function (resolve) {
410
355
  var fileStream = (0, _fs.createReadStream)(subFileData);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/compress-util.ts"],"names":["compressFileWithGzip","pathFile","compressedPathFile","gzip","input","output","Promise","resolve","reject","on","console","log","error","pipe","compressFilesWithZip","fileMap","outputFile","level","archive","zlib","pointer","err","subFileName","subFileData","appendFileToArchive","finalize","compressWithChildProcess","inputFolder","inputFiles","sevenZipExe","process","platform","compressWithChildProcessWindows","compressWithChildProcessUnix","fullOutputFile","args","childProcess","ChildProcessProxy","start","command","arguments","spawn","cwd","wait","substr","generateHash128FromZip","inputZipFile","fs","readFile","JSZip","loadAsync","zip","hashTable","zipFiles","files","relativePath","zipEntry","_data","content","compressedContent","dir","MD5Hash","hash","Buffer","from","toLowerCase","push","key","atob","value","byteOffset","sort","prev","next","item","longToByteArray","write","crypt","hexToBytes","concat","close","long","buffer","ArrayBuffer","longNum","Float64Array","parseInt","Array","Uint8Array","reverse","addFileToZip","fileName","zipFile","fileStream","append","name"],"mappings":"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","sourcesContent":["import {createGzip} from 'zlib';\nimport {join} from 'path';\nimport {promises as fs, createReadStream, createWriteStream} from 'fs';\nimport archiver from 'archiver';\nimport {removeFile} from './file-utils';\nimport {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport JSZip from 'jszip';\nimport {MD5Hash} from '@loaders.gl/crypto';\nimport crypt from 'crypt';\nimport {getAbsoluteFilePath} from './file-utils';\n\n/**\n * Compress file to gzip file\n *\n * @param pathFile - the path to the file\n * @return the path to the gzip file\n */\nexport function compressFileWithGzip(pathFile: string): Promise<string> {\n const compressedPathFile = `${pathFile}.gz`;\n const gzip = createGzip();\n const input = createReadStream(pathFile);\n const output = createWriteStream(compressedPathFile);\n\n return new Promise((resolve, reject) => {\n input.on('end', () => {\n console.log(`${compressedPathFile} compressed and saved.`); // eslint-disable-line no-undef,no-console\n resolve(compressedPathFile);\n });\n input.on('error', (error) => {\n console.log(`${compressedPathFile}: compression error!`); // eslint-disable-line no-undef,no-console\n reject(error);\n });\n input.pipe(gzip).pipe(output);\n });\n}\n\n/**\n * Compress files from map into slpk file\n *\n * @param fileMap - map with file paths (key: output path, value: input path)\n * @param outputFile - output slpk file\n * @param level - compression level\n */\nexport async function compressFilesWithZip(\n fileMap: {[key: string]: string},\n outputFile: string,\n level: number = 0\n) {\n // Before creating a new file, we need to delete the old file\n try {\n await removeFile(outputFile);\n } catch (e) {\n // Do nothing if old file doesn't exist\n }\n\n const output = createWriteStream(outputFile);\n const archive = archiver('zip', {\n zlib: {level} // Sets the compression level.\n });\n\n return new Promise(async (resolve, reject) => {\n // listen for all archive data to be writte\n // 'close' event is fired only when a file descriptor is involved\n output.on('close', function () {\n console.log(`${outputFile} saved.`); // eslint-disable-line no-undef,no-console\n console.log(`${archive.pointer()} total bytes`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // This event is fired when the data source is drained no matter what was the data source.\n // It is not part of this library but rather from the NodeJS Stream API.\n // @see: https://nodejs.org/api/stream.html#stream_event_end\n output.on('end', function () {\n console.log('Data has been drained'); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // good practice to catch warnings (ie stat failures and other non-blocking errors)\n archive.on('warning', function (err) {\n console.log(err); // eslint-disable-line no-undef,no-console\n reject(err);\n });\n\n // good practice to catch this error explicitly\n archive.on('error', function (err) {\n reject(err);\n });\n\n // pipe archive data to the file\n archive.pipe(output);\n\n for (const subFileName in fileMap) {\n const subFileData = fileMap[subFileName];\n await appendFileToArchive(archive, subFileName, subFileData);\n }\n\n // finalize the archive (ie we are done appending files but streams have to finish yet)\n archive.finalize();\n });\n}\n\n/**\n * Compress files using external tool 'zip'/'7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nexport async function compressWithChildProcess(\n inputFolder: string,\n outputFile: string,\n level: number,\n inputFiles: string,\n sevenZipExe: string\n) {\n // eslint-disable-next-line no-undef\n if (process.platform === 'win32') {\n await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);\n } else {\n await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);\n }\n}\n\n/**\n * Compress files using external linux tool 'zip'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n */\nasync function compressWithChildProcessUnix(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = '.'\n) {\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = [`-${level}`, '-r', fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'zip',\n arguments: args,\n spawn: {\n cwd: inputFolder\n },\n wait: 0\n });\n}\n\n/**\n * Compress files using windows external tool '7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nasync function compressWithChildProcessWindows(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = join('.', '*'),\n sevenZipExe: string\n) {\n // Workaround for @listfile issue. In 7z.exe @-leading files are handled as listfiles\n // https://sevenzip.osdn.jp/chm/cmdline/syntax.htm\n if (inputFiles[0] === '@') {\n inputFiles = `*${inputFiles.substr(1)}`;\n }\n\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = ['a', '-tzip', `-mx=${level}`, fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: sevenZipExe,\n arguments: args,\n spawn: {\n cwd: `${inputFolder}`\n },\n wait: 0\n });\n}\n\n/**\n * Generate hash file from zip archive\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/slpk_hashtable.cmn.md\n *\n * @param inputZipFile\n * @param outputFile\n */\nexport async function generateHash128FromZip(inputZipFile: string, outputFile: string) {\n const input = await fs.readFile(inputZipFile);\n const zip = await JSZip.loadAsync(input);\n const hashTable: {key: string; value: string}[] = [];\n const zipFiles = zip.files;\n for (const relativePath in zipFiles) {\n const zipEntry = zipFiles[relativePath];\n // Had to use a workaround because the correct string is getting the wrong data\n // const content = await zipEntry.async('nodebuffer');\n // _data isn't described in the interface, so lint thought it was wrong\n const _data = '_data';\n const content = zipEntry[_data].compressedContent;\n if (zipEntry.dir) continue; // eslint-disable-line no-continue\n // eslint-disable-next-line no-undef\n const hash = await new MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));\n // eslint-disable-next-line no-undef\n hashTable.push({key: atob(hash), value: content.byteOffset});\n }\n\n hashTable.sort((prev, next) => {\n if (prev.key === next.key) {\n return prev.value < next.value ? -1 : 1;\n }\n return prev.key < next.key ? -1 : 1;\n });\n\n const output = createWriteStream(outputFile);\n return new Promise((resolve, reject) => {\n output.on('close', function () {\n console.log(`${outputFile} generated and saved`); // eslint-disable-line\n resolve(null);\n });\n output.on('error', function (err) {\n console.log(err); // eslint-disable-line\n reject(err);\n });\n for (const key in hashTable) {\n const item = hashTable[key];\n const value = longToByteArray(item.value);\n // TODO: perhaps you need to wait for the 'drain' event if the write returns 'false'\n // eslint-disable-next-line no-undef\n output.write(Buffer.from(crypt.hexToBytes(item.key).concat(value)));\n }\n output.close();\n });\n}\n\n/**\n * Encode 64 bit value to byte array\n *\n * @param long - stringified number\n * @returns\n */\nfunction longToByteArray(long: string): number[] {\n const buffer = new ArrayBuffer(8); // JS numbers are 8 bytes long, or 64 bits\n const longNum = new Float64Array(buffer); // so equivalent to Float64\n longNum[0] = parseInt(long);\n return Array.from(new Uint8Array(buffer)).reverse(); // reverse to get little endian\n}\n\n/**\n * Add file to zip archive\n *\n * @param inputFile\n * @param fileName\n * @param zipFile\n * @param sevenZipExe\n */\nexport async function addFileToZip(\n inputFolder: string,\n fileName: string,\n zipFile: string,\n sevenZipExe: string\n) {\n await compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);\n console.log(`${fileName} added to ${zipFile}.`); // eslint-disable-line\n}\n\n/**\n *\n * @param archive zip archive instance\n * @param subFileName file path inside archive\n * @param subFileData source file path\n * @returns\n */\nfunction appendFileToArchive(archive: any, subFileName: string, subFileData: string) {\n return new Promise((resolve) => {\n const fileStream = createReadStream(subFileData);\n console.log(`Compression start: ${subFileName}`); // eslint-disable-line no-undef,no-console\n fileStream.on('close', () => {\n console.log(`Compression finish: ${subFileName}`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n archive.append(fileStream, {name: subFileName});\n });\n}\n"],"file":"compress-util.js"}
1
+ {"version":3,"file":"compress-util.js","names":["compressFileWithGzip","pathFile","compressedPathFile","gzip","createGzip","input","createReadStream","output","createWriteStream","Promise","resolve","reject","on","console","log","error","pipe","compressFilesWithZip","fileMap","outputFile","level","removeFile","archive","archiver","zlib","pointer","err","subFileName","subFileData","appendFileToArchive","finalize","compressWithChildProcess","inputFolder","inputFiles","sevenZipExe","process","platform","compressWithChildProcessWindows","compressWithChildProcessUnix","fullOutputFile","getAbsoluteFilePath","args","childProcess","ChildProcessProxy","start","command","arguments","spawn","cwd","wait","join","substr","generateHash128FromZip","inputZipFile","fs","readFile","JSZip","loadAsync","zip","hashTable","zipFiles","files","relativePath","zipEntry","_data","content","compressedContent","dir","MD5Hash","hash","Buffer","from","toLowerCase","push","key","atob","value","byteOffset","sort","prev","next","item","longToByteArray","write","crypt","hexToBytes","concat","close","long","buffer","ArrayBuffer","longNum","Float64Array","parseInt","Array","Uint8Array","reverse","addFileToZip","fileName","zipFile","fileStream","append","name"],"sources":["../../../../src/lib/utils/compress-util.ts"],"sourcesContent":["import {createGzip} from 'zlib';\nimport {join} from 'path';\nimport {promises as fs, createReadStream, createWriteStream} from 'fs';\nimport archiver from 'archiver';\nimport {removeFile} from './file-utils';\nimport {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport JSZip from 'jszip';\nimport {MD5Hash} from '@loaders.gl/crypto';\nimport crypt from 'crypt';\nimport {getAbsoluteFilePath} from './file-utils';\n\n/**\n * Compress file to gzip file\n *\n * @param pathFile - the path to the file\n * @return the path to the gzip file\n */\nexport function compressFileWithGzip(pathFile: string): Promise<string> {\n const compressedPathFile = `${pathFile}.gz`;\n const gzip = createGzip();\n const input = createReadStream(pathFile);\n const output = createWriteStream(compressedPathFile);\n\n return new Promise((resolve, reject) => {\n input.on('end', () => {\n console.log(`${compressedPathFile} compressed and saved.`); // eslint-disable-line no-undef,no-console\n resolve(compressedPathFile);\n });\n input.on('error', (error) => {\n console.log(`${compressedPathFile}: compression error!`); // eslint-disable-line no-undef,no-console\n reject(error);\n });\n input.pipe(gzip).pipe(output);\n });\n}\n\n/**\n * Compress files from map into slpk file\n *\n * @param fileMap - map with file paths (key: output path, value: input path)\n * @param outputFile - output slpk file\n * @param level - compression level\n */\nexport async function compressFilesWithZip(\n fileMap: {[key: string]: string},\n outputFile: string,\n level: number = 0\n) {\n // Before creating a new file, we need to delete the old file\n try {\n await removeFile(outputFile);\n } catch (e) {\n // Do nothing if old file doesn't exist\n }\n\n const output = createWriteStream(outputFile);\n const archive = archiver('zip', {\n zlib: {level} // Sets the compression level.\n });\n\n return new Promise(async (resolve, reject) => {\n // listen for all archive data to be writte\n // 'close' event is fired only when a file descriptor is involved\n output.on('close', function () {\n console.log(`${outputFile} saved.`); // eslint-disable-line no-undef,no-console\n console.log(`${archive.pointer()} total bytes`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // This event is fired when the data source is drained no matter what was the data source.\n // It is not part of this library but rather from the NodeJS Stream API.\n // @see: https://nodejs.org/api/stream.html#stream_event_end\n output.on('end', function () {\n console.log('Data has been drained'); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // good practice to catch warnings (ie stat failures and other non-blocking errors)\n archive.on('warning', function (err) {\n console.log(err); // eslint-disable-line no-undef,no-console\n reject(err);\n });\n\n // good practice to catch this error explicitly\n archive.on('error', function (err) {\n reject(err);\n });\n\n // pipe archive data to the file\n archive.pipe(output);\n\n for (const subFileName in fileMap) {\n const subFileData = fileMap[subFileName];\n await appendFileToArchive(archive, subFileName, subFileData);\n }\n\n // finalize the archive (ie we are done appending files but streams have to finish yet)\n archive.finalize();\n });\n}\n\n/**\n * Compress files using external tool 'zip'/'7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nexport async function compressWithChildProcess(\n inputFolder: string,\n outputFile: string,\n level: number,\n inputFiles: string,\n sevenZipExe: string\n) {\n // eslint-disable-next-line no-undef\n if (process.platform === 'win32') {\n await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);\n } else {\n await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);\n }\n}\n\n/**\n * Compress files using external linux tool 'zip'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n */\nasync function compressWithChildProcessUnix(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = '.'\n) {\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = [`-${level}`, '-r', fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'zip',\n arguments: args,\n spawn: {\n cwd: inputFolder\n },\n wait: 0\n });\n}\n\n/**\n * Compress files using windows external tool '7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nasync function compressWithChildProcessWindows(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = join('.', '*'),\n sevenZipExe: string\n) {\n // Workaround for @listfile issue. In 7z.exe @-leading files are handled as listfiles\n // https://sevenzip.osdn.jp/chm/cmdline/syntax.htm\n if (inputFiles[0] === '@') {\n inputFiles = `*${inputFiles.substr(1)}`;\n }\n\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = ['a', '-tzip', `-mx=${level}`, fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: sevenZipExe,\n arguments: args,\n spawn: {\n cwd: `${inputFolder}`\n },\n wait: 0\n });\n}\n\n/**\n * Generate hash file from zip archive\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/slpk_hashtable.cmn.md\n *\n * @param inputZipFile\n * @param outputFile\n */\nexport async function generateHash128FromZip(inputZipFile: string, outputFile: string) {\n const input = await fs.readFile(inputZipFile);\n const zip = await JSZip.loadAsync(input);\n const hashTable: {key: string; value: string}[] = [];\n const zipFiles = zip.files;\n for (const relativePath in zipFiles) {\n const zipEntry = zipFiles[relativePath];\n // Had to use a workaround because the correct string is getting the wrong data\n // const content = await zipEntry.async('nodebuffer');\n // _data isn't described in the interface, so lint thought it was wrong\n const _data = '_data';\n const content = zipEntry[_data].compressedContent;\n if (zipEntry.dir) continue; // eslint-disable-line no-continue\n // eslint-disable-next-line no-undef\n const hash = await new MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));\n // eslint-disable-next-line no-undef\n hashTable.push({key: atob(hash), value: content.byteOffset});\n }\n\n hashTable.sort((prev, next) => {\n if (prev.key === next.key) {\n return prev.value < next.value ? -1 : 1;\n }\n return prev.key < next.key ? -1 : 1;\n });\n\n const output = createWriteStream(outputFile);\n return new Promise((resolve, reject) => {\n output.on('close', function () {\n console.log(`${outputFile} generated and saved`); // eslint-disable-line\n resolve(null);\n });\n output.on('error', function (err) {\n console.log(err); // eslint-disable-line\n reject(err);\n });\n for (const key in hashTable) {\n const item = hashTable[key];\n const value = longToByteArray(item.value);\n // TODO: perhaps you need to wait for the 'drain' event if the write returns 'false'\n // eslint-disable-next-line no-undef\n output.write(Buffer.from(crypt.hexToBytes(item.key).concat(value)));\n }\n output.close();\n });\n}\n\n/**\n * Encode 64 bit value to byte array\n *\n * @param long - stringified number\n * @returns\n */\nfunction longToByteArray(long: string): number[] {\n const buffer = new ArrayBuffer(8); // JS numbers are 8 bytes long, or 64 bits\n const longNum = new Float64Array(buffer); // so equivalent to Float64\n longNum[0] = parseInt(long);\n return Array.from(new Uint8Array(buffer)).reverse(); // reverse to get little endian\n}\n\n/**\n * Add file to zip archive\n *\n * @param inputFile\n * @param fileName\n * @param zipFile\n * @param sevenZipExe\n */\nexport async function addFileToZip(\n inputFolder: string,\n fileName: string,\n zipFile: string,\n sevenZipExe: string\n) {\n await compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);\n console.log(`${fileName} added to ${zipFile}.`); // eslint-disable-line\n}\n\n/**\n *\n * @param archive zip archive instance\n * @param subFileName file path inside archive\n * @param subFileData source file path\n * @returns\n */\nfunction appendFileToArchive(archive: any, subFileName: string, subFileData: string) {\n return new Promise((resolve) => {\n const fileStream = createReadStream(subFileData);\n console.log(`Compression start: ${subFileName}`); // eslint-disable-line no-undef,no-console\n fileStream.on('close', () => {\n console.log(`Compression finish: ${subFileName}`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n archive.append(fileStream, {name: subFileName});\n });\n}\n"],"mappings":"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"}