@loaders.gl/i3s 4.0.0-alpha.18 → 4.0.0-alpha.20

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 (107) hide show
  1. package/dist/dist.min.js +338 -307
  2. package/dist/es5/arcgis-webscene-loader.js +1 -1
  3. package/dist/es5/i3s-attribute-loader.js +1 -1
  4. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  5. package/dist/es5/i3s-content-loader.js +1 -1
  6. package/dist/es5/i3s-loader.js +1 -1
  7. package/dist/es5/i3s-node-page-loader.js +1 -1
  8. package/dist/es5/i3s-slpk-loader.js +3 -3
  9. package/dist/es5/i3s-slpk-loader.js.map +1 -1
  10. package/dist/es5/index.js +0 -7
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/lib/parsers/parse-i3s.js +1 -0
  13. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  14. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +9 -25
  15. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +9 -33
  17. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  18. package/dist/es5/types.js.map +1 -1
  19. package/dist/esm/arcgis-webscene-loader.js +1 -1
  20. package/dist/esm/i3s-attribute-loader.js +1 -1
  21. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  22. package/dist/esm/i3s-content-loader.js +1 -1
  23. package/dist/esm/i3s-loader.js +1 -1
  24. package/dist/esm/i3s-node-page-loader.js +1 -1
  25. package/dist/esm/i3s-slpk-loader.js +3 -3
  26. package/dist/esm/i3s-slpk-loader.js.map +1 -1
  27. package/dist/esm/index.js +0 -1
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/lib/parsers/parse-i3s.js +1 -0
  30. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  31. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +2 -18
  32. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  33. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +5 -29
  34. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  35. package/dist/esm/types.js.map +1 -1
  36. package/dist/i3s-content-worker-node.js +47 -47
  37. package/dist/i3s-content-worker-node.js.map +2 -2
  38. package/dist/i3s-content-worker.js +51 -38
  39. package/dist/i3s-slpk-loader.js +2 -2
  40. package/dist/index.d.ts +0 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -3
  43. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  44. package/dist/lib/parsers/parse-i3s.js +1 -0
  45. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
  46. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
  47. package/dist/lib/parsers/parse-slpk/parse-slpk.js +9 -30
  48. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -21
  49. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
  50. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +7 -46
  51. package/dist/types.d.ts +3 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +9 -9
  54. package/src/i3s-slpk-loader.ts +2 -2
  55. package/src/index.ts +0 -2
  56. package/src/lib/parsers/parse-i3s.ts +1 -0
  57. package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -32
  58. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
  59. package/src/types.ts +3 -0
  60. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +0 -121
  61. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  62. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +0 -129
  63. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  64. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +0 -100
  65. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  66. package/dist/es5/lib/parsers/parse-zip/file-provider.js +0 -2
  67. package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +0 -1
  68. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +0 -113
  69. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  70. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +0 -69
  71. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  72. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +0 -45
  73. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  74. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +0 -32
  75. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  76. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +0 -33
  77. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  78. package/dist/esm/lib/parsers/parse-zip/file-provider.js +0 -2
  79. package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +0 -1
  80. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +0 -40
  81. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  82. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +0 -16
  83. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  84. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +0 -31
  85. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +0 -1
  86. package/dist/lib/parsers/parse-zip/cd-file-header.js +0 -55
  87. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts +0 -36
  88. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +0 -1
  89. package/dist/lib/parsers/parse-zip/data-view-file-provider.js +0 -61
  90. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +0 -18
  91. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +0 -1
  92. package/dist/lib/parsers/parse-zip/end-of-central-directory.js +0 -41
  93. package/dist/lib/parsers/parse-zip/file-provider.d.ts +0 -36
  94. package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +0 -1
  95. package/dist/lib/parsers/parse-zip/file-provider.js +0 -2
  96. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +0 -27
  97. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +0 -1
  98. package/dist/lib/parsers/parse-zip/local-file-header.js +0 -53
  99. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +0 -11
  100. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +0 -1
  101. package/dist/lib/parsers/parse-zip/search-from-the-end.js +0 -31
  102. package/src/lib/parsers/parse-zip/cd-file-header.ts +0 -106
  103. package/src/lib/parsers/parse-zip/data-view-file-provider.ts +0 -69
  104. package/src/lib/parsers/parse-zip/end-of-central-directory.ts +0 -78
  105. package/src/lib/parsers/parse-zip/file-provider.ts +0 -40
  106. package/src/lib/parsers/parse-zip/local-file-header.ts +0 -91
  107. package/src/lib/parsers/parse-zip/search-from-the-end.ts +0 -38
@@ -8,7 +8,7 @@ exports.ArcGisWebSceneLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
11
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var ArcGisWebSceneLoader = {
13
13
  name: 'ArcGIS Web Scene Loader',
14
14
  id: 'arcgis-web-scene',
@@ -15,7 +15,7 @@ var _parseI3sAttribute = require("./lib/parsers/parse-i3s-attribute");
15
15
  var _urlUtils = require("./lib/utils/url-utils");
16
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'latest';
18
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'latest';
19
19
  var EMPTY_VALUE = '';
20
20
  var REJECTED_STATUS = 'rejected';
21
21
  var I3SAttributeLoader = {
@@ -8,7 +8,7 @@ exports.I3SBuildingSceneLayerLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
11
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var I3SBuildingSceneLayerLoader = {
13
13
  name: 'I3S Building Scene Layer',
14
14
  id: 'i3s-building-scene-layer',
@@ -8,7 +8,7 @@ exports.I3SContentLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
11
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var I3SContentLoader = {
13
13
  name: 'I3S Content (Indexed Scene Layers)',
14
14
  id: 'i3s-content',
@@ -12,7 +12,7 @@ var _core = require("@loaders.gl/core");
12
12
  var _i3sContentLoader = require("./i3s-content-loader");
13
13
  var _parseI3s = require("./lib/parsers/parse-i3s");
14
14
  var _constants = require("./lib/parsers/constants");
15
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'latest';
15
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'latest';
16
16
  var TILESET_REGEX = /layers\/[0-9]+$/;
17
17
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
18
18
  var SLPK_HEX = '504b0304';
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.I3SNodePageLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'latest';
10
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'latest';
11
11
  function parseNodePage(_x, _x2) {
12
12
  return _parseNodePage.apply(this, arguments);
13
13
  }
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.SLPKLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _zip = require("@loaders.gl/zip");
10
11
  var _parseSlpk = require("./lib/parsers/parse-slpk/parse-slpk");
11
- var _dataViewFileProvider = require("./lib/parsers/parse-zip/data-view-file-provider");
12
- var VERSION = typeof "4.0.0-alpha.18" !== 'undefined' ? "4.0.0-alpha.18" : 'latest';
12
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'latest';
13
13
  var SLPKLoader = {
14
14
  name: 'I3S SLPK (Scene Layer Package)',
15
15
  id: 'slpk',
@@ -34,7 +34,7 @@ function _parseSLPK() {
34
34
  case 0:
35
35
  options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
36
36
  _context.next = 3;
37
- return (0, _parseSlpk.parseSLPK)(new _dataViewFileProvider.DataViewFileProvider(new DataView(data)));
37
+ return (0, _parseSlpk.parseSLPK)(new _zip.DataViewFile(new DataView(data)));
38
38
  case 3:
39
39
  return _context.abrupt("return", _context.sent.getFile((_options$slpk$path = (_options$slpk = options.slpk) === null || _options$slpk === void 0 ? void 0 : _options$slpk.path) !== null && _options$slpk$path !== void 0 ? _options$slpk$path : '', (_options$slpk2 = options.slpk) === null || _options$slpk2 === void 0 ? void 0 : _options$slpk2.pathMode));
40
40
  case 4:
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-slpk-loader.js","names":["_parseSlpk","require","_dataViewFileProvider","VERSION","SLPKLoader","name","id","module","version","mimeTypes","parse","parseSLPK","extensions","options","exports","_x","_parseSLPK","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","_options$slpk$path","_options$slpk","_options$slpk2","_args","wrap","_callee$","_context","prev","next","length","undefined","parseSLPKFromProvider","DataViewFileProvider","DataView","abrupt","sent","getFile","slpk","path","pathMode","stop"],"sources":["../../src/i3s-slpk-loader.ts"],"sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseSLPK as parseSLPKFromProvider} from './lib/parsers/parse-slpk/parse-slpk';\nimport {DataViewFileProvider} from './lib/parsers/parse-zip/data-view-file-provider';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** options to load data from SLPK */\nexport type SLPKLoaderOptions = LoaderOptions & {\n slpk?: {\n /** path inside the slpk archive */\n path?: string;\n /** mode of the path */\n pathMode?: 'http' | 'raw';\n };\n};\n\n/**\n * Loader for SLPK - Scene Layer Package\n */\nexport const SLPKLoader: LoaderWithParser<Buffer, never, SLPKLoaderOptions> = {\n name: 'I3S SLPK (Scene Layer Package)',\n id: 'slpk',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseSLPK,\n extensions: ['slpk'],\n options: {}\n};\n\n/**\n * returns a single file from the slpk archive\n * @param data slpk archive data\n * @param options options\n * @returns requested file\n */\n\nasync function parseSLPK(data: ArrayBuffer, options: SLPKLoaderOptions = {}) {\n return (await parseSLPKFromProvider(new DataViewFileProvider(new DataView(data)))).getFile(\n options.slpk?.path ?? '',\n options.slpk?.pathMode\n );\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAepE,IAAMC,UAA8D,GAAG;EAC5EC,IAAI,EAAE,gCAAgC;EACtCC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAEC,SAAS;EAChBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAACC,OAAA,CAAAV,UAAA,GAAAA,UAAA;AAAA,SASaO,SAASA,CAAAI,EAAA;EAAA,OAAAC,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,WAAA;EAAAA,UAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAxB,SAAAC,QAAyBC,IAAiB;IAAA,IAAAC,kBAAA,EAAAC,aAAA,EAAAC,cAAA;IAAA,IAAAd,OAAA;MAAAe,KAAA,GAAAV,SAAA;IAAA,OAAAG,YAAA,CAAAD,OAAA,CAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAEpB,OAA0B,GAAAe,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAG,CAAC,CAAC;UAAAG,QAAA,CAAAE,IAAA;UAAA,OAC3D,IAAAG,oBAAqB,EAAC,IAAIC,0CAAoB,CAAC,IAAIC,QAAQ,CAACd,IAAI,CAAC,CAAC,CAAC;QAAA;UAAA,OAAAO,QAAA,CAAAQ,MAAA,WAAAR,QAAA,CAAAS,IAAA,CAAEC,OAAO,EAAAhB,kBAAA,IAAAC,aAAA,GACxFb,OAAO,CAAC6B,IAAI,cAAAhB,aAAA,uBAAZA,aAAA,CAAciB,IAAI,cAAAlB,kBAAA,cAAAA,kBAAA,GAAI,EAAE,GAAAE,cAAA,GACxBd,OAAO,CAAC6B,IAAI,cAAAf,cAAA,uBAAZA,cAAA,CAAciB,QAAQ;QAAA;QAAA;UAAA,OAAAb,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAAtB,OAAA;EAAA,CAEzB;EAAA,OAAAP,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"i3s-slpk-loader.js","names":["_zip","require","_parseSlpk","VERSION","SLPKLoader","name","id","module","version","mimeTypes","parse","parseSLPK","extensions","options","exports","_x","_parseSLPK","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","_options$slpk$path","_options$slpk","_options$slpk2","_args","wrap","_callee$","_context","prev","next","length","undefined","parseSLPKFromProvider","DataViewFile","DataView","abrupt","sent","getFile","slpk","path","pathMode","stop"],"sources":["../../src/i3s-slpk-loader.ts"],"sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {DataViewFile} from '@loaders.gl/zip';\nimport {parseSLPK as parseSLPKFromProvider} from './lib/parsers/parse-slpk/parse-slpk';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** options to load data from SLPK */\nexport type SLPKLoaderOptions = LoaderOptions & {\n slpk?: {\n /** path inside the slpk archive */\n path?: string;\n /** mode of the path */\n pathMode?: 'http' | 'raw';\n };\n};\n\n/**\n * Loader for SLPK - Scene Layer Package\n */\nexport const SLPKLoader: LoaderWithParser<Buffer, never, SLPKLoaderOptions> = {\n name: 'I3S SLPK (Scene Layer Package)',\n id: 'slpk',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseSLPK,\n extensions: ['slpk'],\n options: {}\n};\n\n/**\n * returns a single file from the slpk archive\n * @param data slpk archive data\n * @param options options\n * @returns requested file\n */\n\nasync function parseSLPK(data: ArrayBuffer, options: SLPKLoaderOptions = {}) {\n return (await parseSLPKFromProvider(new DataViewFile(new DataView(data)))).getFile(\n options.slpk?.path ?? '',\n options.slpk?.pathMode\n );\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAepE,IAAMC,UAA8D,GAAG;EAC5EC,IAAI,EAAE,gCAAgC;EACtCC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAEC,SAAS;EAChBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAACC,OAAA,CAAAV,UAAA,GAAAA,UAAA;AAAA,SASaO,SAASA,CAAAI,EAAA;EAAA,OAAAC,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,WAAA;EAAAA,UAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAxB,SAAAC,QAAyBC,IAAiB;IAAA,IAAAC,kBAAA,EAAAC,aAAA,EAAAC,cAAA;IAAA,IAAAd,OAAA;MAAAe,KAAA,GAAAV,SAAA;IAAA,OAAAG,YAAA,CAAAD,OAAA,CAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAEpB,OAA0B,GAAAe,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAG,CAAC,CAAC;UAAAG,QAAA,CAAAE,IAAA;UAAA,OAC3D,IAAAG,oBAAqB,EAAC,IAAIC,iBAAY,CAAC,IAAIC,QAAQ,CAACd,IAAI,CAAC,CAAC,CAAC;QAAA;UAAA,OAAAO,QAAA,CAAAQ,MAAA,WAAAR,QAAA,CAAAS,IAAA,CAAEC,OAAO,EAAAhB,kBAAA,IAAAC,aAAA,GAChFb,OAAO,CAAC6B,IAAI,cAAAhB,aAAA,uBAAZA,aAAA,CAAciB,IAAI,cAAAlB,kBAAA,cAAAA,kBAAA,GAAI,EAAE,GAAAE,cAAA,GACxBd,OAAO,CAAC6B,IAAI,cAAAf,cAAA,uBAAZA,cAAA,CAAciB,QAAQ;QAAA;QAAA;UAAA,OAAAb,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAAtB,OAAA;EAAA,CAEzB;EAAA,OAAAP,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
package/dist/es5/index.js CHANGED
@@ -63,12 +63,6 @@ Object.defineProperty(exports, "parseSLPK", {
63
63
  return _parseSlpk.parseSLPK;
64
64
  }
65
65
  });
66
- Object.defineProperty(exports, "parseZipLocalFileHeader", {
67
- enumerable: true,
68
- get: function get() {
69
- return _localFileHeader.parseZipLocalFileHeader;
70
- }
71
- });
72
66
  var _constants = require("./lib/parsers/constants");
73
67
  var _i3sLoader = require("./i3s-loader");
74
68
  var _i3sSlpkLoader = require("./i3s-slpk-loader");
@@ -77,6 +71,5 @@ var _i3sAttributeLoader = require("./i3s-attribute-loader");
77
71
  var _i3sBuildingSceneLayerLoader = require("./i3s-building-scene-layer-loader");
78
72
  var _i3sNodePageLoader = require("./i3s-node-page-loader");
79
73
  var _arcgisWebsceneLoader = require("./arcgis-webscene-loader");
80
- var _localFileHeader = require("./lib/parsers/parse-zip/local-file-header");
81
74
  var _parseSlpk = require("./lib/parsers/parse-slpk/parse-slpk");
82
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_constants","require","_i3sLoader","_i3sSlpkLoader","_i3sContentLoader","_i3sAttributeLoader","_i3sBuildingSceneLayerLoader","_i3sNodePageLoader","_arcgisWebsceneLoader","_localFileHeader","_parseSlpk"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n I3STilesetHeader,\n I3STileContent,\n I3STileHeader,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition,\n TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent,\n StatisticsInfo,\n StatsInfo,\n Histogram,\n ValueCount,\n BuildingSceneSublayer,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\nexport type {FileProvider} from './lib/parsers/parse-zip/file-provider';\nexport type {I3SLoaderOptions} from './i3s-loader';\n\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n\nexport {I3SLoader} from './i3s-loader';\nexport {SLPKLoader} from './i3s-slpk-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {I3SNodePageLoader} from './i3s-node-page-loader';\nexport {ArcGisWebSceneLoader} from './arcgis-webscene-loader';\nexport {parseZipLocalFileHeader} from './lib/parsers/parse-zip/local-file-header';\nexport {parseSLPK} from './lib/parsers/parse-slpk/parse-slpk';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,qBAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_constants","require","_i3sLoader","_i3sSlpkLoader","_i3sContentLoader","_i3sAttributeLoader","_i3sBuildingSceneLayerLoader","_i3sNodePageLoader","_arcgisWebsceneLoader","_parseSlpk"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n I3STilesetHeader,\n I3STileContent,\n I3STileHeader,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition,\n TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent,\n StatisticsInfo,\n StatsInfo,\n Histogram,\n ValueCount,\n BuildingSceneSublayer,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\nexport type {I3SLoaderOptions} from './i3s-loader';\n\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n\nexport {I3SLoader} from './i3s-loader';\nexport {SLPKLoader} from './i3s-slpk-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {I3SNodePageLoader} from './i3s-node-page-loader';\nexport {ArcGisWebSceneLoader} from './arcgis-webscene-loader';\nexport {parseSLPK} from './lib/parsers/parse-slpk/parse-slpk';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,qBAAA,GAAAP,OAAA;AACA,IAAAQ,UAAA,GAAAR,OAAA"}
@@ -107,6 +107,7 @@ function _normalizeTilesetData() {
107
107
  root = _context.sent;
108
108
  case 12:
109
109
  return _context.abrupt("return", _objectSpread(_objectSpread({}, tileset), {}, {
110
+ loader: _i3sLoader.I3SLoader,
110
111
  url: url,
111
112
  basePath: url,
112
113
  type: _tiles.TILESET_TYPE.I3S,
@@ -1 +1 @@
1
- {"version":3,"file":"parse-i3s.js","names":["_culling","require","_geospatial","_core","_tiles","_i3sNodepagesTiles","_interopRequireDefault","_urlUtils","_i3sLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","normalizeTileData","tile","context","url","contentUrl","geometryData","concat","href","textureUrl","textureData","attributeUrls","attributeData","generateTileAttributeUrls","children","normalizeTileNonUrlData","textureFormat","isDracoGeometry","_tile$lodSelection","_tile$lodSelection2","boundingVolume","mbs","sphere","_toConsumableArray2","Ellipsoid","WGS84","cartographicToCartesian","slice","obb","box","center","halfSize","quaternion","OrientedBoundingBox","fromCenterHalfSizeQuaternion","boundingSphere","getBoundingSphere","radius","lodMetricType","lodSelection","metricType","lodMetricValue","maxError","type","TILE_TYPE","MESH","refine","TILE_REFINEMENT","REPLACE","normalizeTilesetData","_x","_x2","_x3","_normalizeTilesetData","_asyncToGenerator2","_regenerator","mark","_callee","tileset","options","nodePagesTile","root","_options$i3s","rootNodeUrl","wrap","_callee$","_context","prev","next","nodePages","I3SNodePagesTiles","formTileFromNodePages","sent","getUrlWithToken","i3s","token","load","I3SLoader","loadContent","isTileHeader","isTileset","abrupt","basePath","TILESET_TYPE","I3S","stop"],"sources":["../../../../src/lib/parsers/parse-i3s.ts"],"sourcesContent":["import {OrientedBoundingBox} from '@math.gl/culling';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {load} from '@loaders.gl/core';\nimport {TILE_TYPE, TILE_REFINEMENT, TILESET_TYPE} from '@loaders.gl/tiles';\nimport I3SNodePagesTiles from '../helpers/i3s-nodepages-tiles';\nimport {generateTileAttributeUrls, getUrlWithToken} from '../utils/url-utils';\nimport {\n I3STilesetHeader,\n I3STileHeader,\n Mbs,\n I3SMinimalNodeData,\n Node3DIndexDocument,\n SceneLayer3D\n} from '../../types';\nimport type {LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport { I3SLoader } from '../../i3s-loader';\n\nexport function normalizeTileData(tile : Node3DIndexDocument, context: LoaderContext): I3STileHeader {\n const url: string = context.url || '';\n let contentUrl: string | undefined;\n if (tile.geometryData) {\n contentUrl = `${url}/${tile.geometryData[0].href}`;\n }\n\n let textureUrl: string | undefined;\n if (tile.textureData) {\n textureUrl = `${url}/${tile.textureData[0].href}`;\n }\n\n let attributeUrls: string[] | undefined;\n if (tile.attributeData) {\n attributeUrls = generateTileAttributeUrls(url, tile);\n }\n\n const children = tile.children || [];\n\n return normalizeTileNonUrlData({\n ...tile,\n children,\n url,\n contentUrl,\n textureUrl,\n textureFormat: 'jpg', // `jpg` format will cause `ImageLoader` usage that will be able to handle `png` as well\n attributeUrls,\n isDracoGeometry: false\n });\n}\n\nexport function normalizeTileNonUrlData(tile : I3SMinimalNodeData): I3STileHeader {\n const boundingVolume: {box?: number[]; sphere?: number[]} = {};\n let mbs: Mbs = [0, 0, 0, 1];\n if (tile.mbs) {\n mbs = tile.mbs;\n boundingVolume.sphere = [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), // cartesian center of sphere\n tile.mbs[3] // radius of sphere\n ] as Mbs;\n } else if (tile.obb) {\n boundingVolume.box = [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center), // cartesian center of box\n ...tile.obb.halfSize, // halfSize\n ...tile.obb.quaternion // quaternion\n ];\n const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(\n boundingVolume.box.slice(0, 3),\n tile.obb.halfSize,\n tile.obb.quaternion\n );\n const boundingSphere = obb.getBoundingSphere();\n boundingVolume.sphere = [...boundingSphere.center , boundingSphere.radius] as Mbs;\n mbs = [...tile.obb.center, boundingSphere.radius] as Mbs;\n }\n\n const lodMetricType = tile.lodSelection?.[0].metricType;\n const lodMetricValue = tile.lodSelection?.[0].maxError;\n const type = TILE_TYPE.MESH;\n /**\n * I3S specification supports only REPLACE\n */\n const refine = TILE_REFINEMENT.REPLACE;\n\n return {...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine};\n}\n\nexport async function normalizeTilesetData(tileset : SceneLayer3D, options : LoaderOptions, context: LoaderContext): Promise<I3STilesetHeader> {\n const url = context.url;\n let nodePagesTile: I3SNodePagesTiles | undefined;\n let root: I3STileHeader;\n if (tileset.nodePages) {\n nodePagesTile = new I3SNodePagesTiles(tileset, url, options);\n root = await nodePagesTile.formTileFromNodePages(0);\n } else {\n // @ts-expect-error options is not properly typed\n const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);\n // eslint-disable-next-line no-use-before-define\n root = await load(rootNodeUrl, I3SLoader, {\n ...options,\n i3s: {\n // @ts-expect-error options is not properly typed\n ...options.i3s,\n loadContent: false, isTileHeader: true, isTileset: false}\n });\n }\n\n return {\n ...tileset,\n url,\n basePath: url,\n type: TILESET_TYPE.I3S,\n nodePagesTile,\n root,\n lodMetricType: root.lodMetricType,\n lodMetricValue: root.lodMetricValue\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-i3s.js","names":["_culling","require","_geospatial","_core","_tiles","_i3sNodepagesTiles","_interopRequireDefault","_urlUtils","_i3sLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","normalizeTileData","tile","context","url","contentUrl","geometryData","concat","href","textureUrl","textureData","attributeUrls","attributeData","generateTileAttributeUrls","children","normalizeTileNonUrlData","textureFormat","isDracoGeometry","_tile$lodSelection","_tile$lodSelection2","boundingVolume","mbs","sphere","_toConsumableArray2","Ellipsoid","WGS84","cartographicToCartesian","slice","obb","box","center","halfSize","quaternion","OrientedBoundingBox","fromCenterHalfSizeQuaternion","boundingSphere","getBoundingSphere","radius","lodMetricType","lodSelection","metricType","lodMetricValue","maxError","type","TILE_TYPE","MESH","refine","TILE_REFINEMENT","REPLACE","normalizeTilesetData","_x","_x2","_x3","_normalizeTilesetData","_asyncToGenerator2","_regenerator","mark","_callee","tileset","options","nodePagesTile","root","_options$i3s","rootNodeUrl","wrap","_callee$","_context","prev","next","nodePages","I3SNodePagesTiles","formTileFromNodePages","sent","getUrlWithToken","i3s","token","load","I3SLoader","loadContent","isTileHeader","isTileset","abrupt","loader","basePath","TILESET_TYPE","I3S","stop"],"sources":["../../../../src/lib/parsers/parse-i3s.ts"],"sourcesContent":["import {OrientedBoundingBox} from '@math.gl/culling';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {load} from '@loaders.gl/core';\nimport {TILE_TYPE, TILE_REFINEMENT, TILESET_TYPE} from '@loaders.gl/tiles';\nimport I3SNodePagesTiles from '../helpers/i3s-nodepages-tiles';\nimport {generateTileAttributeUrls, getUrlWithToken} from '../utils/url-utils';\nimport {\n I3STilesetHeader,\n I3STileHeader,\n Mbs,\n I3SMinimalNodeData,\n Node3DIndexDocument,\n SceneLayer3D\n} from '../../types';\nimport type {LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport { I3SLoader } from '../../i3s-loader';\n\nexport function normalizeTileData(tile : Node3DIndexDocument, context: LoaderContext): I3STileHeader {\n const url: string = context.url || '';\n let contentUrl: string | undefined;\n if (tile.geometryData) {\n contentUrl = `${url}/${tile.geometryData[0].href}`;\n }\n\n let textureUrl: string | undefined;\n if (tile.textureData) {\n textureUrl = `${url}/${tile.textureData[0].href}`;\n }\n\n let attributeUrls: string[] | undefined;\n if (tile.attributeData) {\n attributeUrls = generateTileAttributeUrls(url, tile);\n }\n\n const children = tile.children || [];\n\n return normalizeTileNonUrlData({\n ...tile,\n children,\n url,\n contentUrl,\n textureUrl,\n textureFormat: 'jpg', // `jpg` format will cause `ImageLoader` usage that will be able to handle `png` as well\n attributeUrls,\n isDracoGeometry: false\n });\n}\n\nexport function normalizeTileNonUrlData(tile : I3SMinimalNodeData): I3STileHeader {\n const boundingVolume: {box?: number[]; sphere?: number[]} = {};\n let mbs: Mbs = [0, 0, 0, 1];\n if (tile.mbs) {\n mbs = tile.mbs;\n boundingVolume.sphere = [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), // cartesian center of sphere\n tile.mbs[3] // radius of sphere\n ] as Mbs;\n } else if (tile.obb) {\n boundingVolume.box = [\n ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center), // cartesian center of box\n ...tile.obb.halfSize, // halfSize\n ...tile.obb.quaternion // quaternion\n ];\n const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(\n boundingVolume.box.slice(0, 3),\n tile.obb.halfSize,\n tile.obb.quaternion\n );\n const boundingSphere = obb.getBoundingSphere();\n boundingVolume.sphere = [...boundingSphere.center , boundingSphere.radius] as Mbs;\n mbs = [...tile.obb.center, boundingSphere.radius] as Mbs;\n }\n\n const lodMetricType = tile.lodSelection?.[0].metricType;\n const lodMetricValue = tile.lodSelection?.[0].maxError;\n const type = TILE_TYPE.MESH;\n /**\n * I3S specification supports only REPLACE\n */\n const refine = TILE_REFINEMENT.REPLACE;\n\n return {...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine};\n}\n\nexport async function normalizeTilesetData(tileset : SceneLayer3D, options : LoaderOptions, context: LoaderContext): Promise<I3STilesetHeader> {\n const url = context.url;\n let nodePagesTile: I3SNodePagesTiles | undefined;\n let root: I3STileHeader;\n if (tileset.nodePages) {\n nodePagesTile = new I3SNodePagesTiles(tileset, url, options);\n root = await nodePagesTile.formTileFromNodePages(0);\n } else {\n // @ts-expect-error options is not properly typed\n const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);\n // eslint-disable-next-line no-use-before-define\n root = await load(rootNodeUrl, I3SLoader, {\n ...options,\n i3s: {\n // @ts-expect-error options is not properly typed\n ...options.i3s,\n loadContent: false, isTileHeader: true, isTileset: false}\n });\n }\n\n return {\n ...tileset,\n loader: I3SLoader,\n url,\n basePath: url,\n type: TILESET_TYPE.I3S,\n nodePagesTile,\n root,\n lodMetricType: root.lodMetricType,\n lodMetricValue: root.lodMetricValue\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAUA,IAAAO,UAAA,GAAAP,OAAA;AAA6C,SAAAQ,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAEtC,SAASY,iBAAiBA,CAACC,IAA0B,EAAEC,OAAsB,EAAiB;EACnG,IAAMC,GAAW,GAAGD,OAAO,CAACC,GAAG,IAAI,EAAE;EACrC,IAAIC,UAA8B;EAClC,IAAIH,IAAI,CAACI,YAAY,EAAE;IACrBD,UAAU,MAAAE,MAAA,CAAMH,GAAG,OAAAG,MAAA,CAAIL,IAAI,CAACI,YAAY,CAAC,CAAC,CAAC,CAACE,IAAI,CAAE;EACpD;EAEA,IAAIC,UAA8B;EAClC,IAAIP,IAAI,CAACQ,WAAW,EAAE;IACpBD,UAAU,MAAAF,MAAA,CAAMH,GAAG,OAAAG,MAAA,CAAIL,IAAI,CAACQ,WAAW,CAAC,CAAC,CAAC,CAACF,IAAI,CAAE;EACnD;EAEA,IAAIG,aAAmC;EACvC,IAAIT,IAAI,CAACU,aAAa,EAAE;IACtBD,aAAa,GAAG,IAAAE,mCAAyB,EAACT,GAAG,EAAEF,IAAI,CAAC;EACtD;EAEA,IAAMY,QAAQ,GAAGZ,IAAI,CAACY,QAAQ,IAAI,EAAE;EAEpC,OAAOC,uBAAuB,CAAA3B,aAAA,CAAAA,aAAA,KACzBc,IAAI;IACPY,QAAQ,EAARA,QAAQ;IACRV,GAAG,EAAHA,GAAG;IACHC,UAAU,EAAVA,UAAU;IACVI,UAAU,EAAVA,UAAU;IACVO,aAAa,EAAE,KAAK;IACpBL,aAAa,EAAbA,aAAa;IACbM,eAAe,EAAE;EAAK,EACvB,CAAC;AACJ;AAEO,SAASF,uBAAuBA,CAACb,IAAyB,EAAiB;EAAA,IAAAgB,kBAAA,EAAAC,mBAAA;EAChF,IAAMC,cAAmD,GAAG,CAAC,CAAC;EAC9D,IAAIC,GAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC3B,IAAInB,IAAI,CAACmB,GAAG,EAAE;IACZA,GAAG,GAAGnB,IAAI,CAACmB,GAAG;IACdD,cAAc,CAACE,MAAM,MAAAf,MAAA,KAAAgB,mBAAA,CAAA1B,OAAA,EAChB2B,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACxB,IAAI,CAACmB,GAAG,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAChEzB,IAAI,CAACmB,GAAG,CAAC,CAAC,CAAC,EACL;EACV,CAAC,MAAM,IAAInB,IAAI,CAAC0B,GAAG,EAAE;IACnBR,cAAc,CAACS,GAAG,MAAAtB,MAAA,KAAAgB,mBAAA,CAAA1B,OAAA,EACb2B,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACxB,IAAI,CAAC0B,GAAG,CAACE,MAAM,CAAC,OAAAP,mBAAA,CAAA1B,OAAA,EACxDK,IAAI,CAAC0B,GAAG,CAACG,QAAQ,OAAAR,mBAAA,CAAA1B,OAAA,EACjBK,IAAI,CAAC0B,GAAG,CAACI,UAAU,EACvB;IACD,IAAMJ,GAAG,GAAG,IAAIK,4BAAmB,CAAC,CAAC,CAACC,4BAA4B,CAChEd,cAAc,CAACS,GAAG,CAACF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9BzB,IAAI,CAAC0B,GAAG,CAACG,QAAQ,EACjB7B,IAAI,CAAC0B,GAAG,CAACI,UACX,CAAC;IACD,IAAMG,cAAc,GAAGP,GAAG,CAACQ,iBAAiB,CAAC,CAAC;IAC9ChB,cAAc,CAACE,MAAM,MAAAf,MAAA,KAAAgB,mBAAA,CAAA1B,OAAA,EAAOsC,cAAc,CAACL,MAAM,IAAGK,cAAc,CAACE,MAAM,EAAQ;IACjFhB,GAAG,MAAAd,MAAA,KAAAgB,mBAAA,CAAA1B,OAAA,EAAOK,IAAI,CAAC0B,GAAG,CAACE,MAAM,IAAEK,cAAc,CAACE,MAAM,EAAQ;EAC1D;EAEA,IAAMC,aAAa,IAAApB,kBAAA,GAAGhB,IAAI,CAACqC,YAAY,cAAArB,kBAAA,uBAAjBA,kBAAA,CAAoB,CAAC,CAAC,CAACsB,UAAU;EACvD,IAAMC,cAAc,IAAAtB,mBAAA,GAAGjB,IAAI,CAACqC,YAAY,cAAApB,mBAAA,uBAAjBA,mBAAA,CAAoB,CAAC,CAAC,CAACuB,QAAQ;EACtD,IAAMC,IAAI,GAAGC,gBAAS,CAACC,IAAI;EAI3B,IAAMC,MAAM,GAAGC,sBAAe,CAACC,OAAO;EAEtC,OAAA5D,aAAA,CAAAA,aAAA,KAAWc,IAAI;IAAEmB,GAAG,EAAHA,GAAG;IAAED,cAAc,EAAdA,cAAc;IAAEkB,aAAa,EAAbA,aAAa;IAAEG,cAAc,EAAdA,cAAc;IAAEE,IAAI,EAAJA,IAAI;IAAEG,MAAM,EAANA;EAAM;AACnF;AAAC,SAEqBG,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAlE,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAA8D,sBAAA;EAAAA,qBAAA,OAAAC,kBAAA,CAAAzD,OAAA,EAAA0D,YAAA,CAAA1D,OAAA,CAAA2D,IAAA,CAAnC,SAAAC,QAAoCC,OAAsB,EAAEC,OAAuB,EAAExD,OAAsB;IAAA,IAAAC,GAAA,EAAAwD,aAAA,EAAAC,IAAA,EAAAC,YAAA,EAAAC,WAAA;IAAA,OAAAR,YAAA,CAAA1D,OAAA,CAAAmE,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAC1GhE,GAAG,GAAGD,OAAO,CAACC,GAAG;UAAA,KAGnBsD,OAAO,CAACW,SAAS;YAAAH,QAAA,CAAAE,IAAA;YAAA;UAAA;UACnBR,aAAa,GAAG,IAAIU,0BAAiB,CAACZ,OAAO,EAAEtD,GAAG,EAAEuD,OAAO,CAAC;UAACO,QAAA,CAAAE,IAAA;UAAA,OAChDR,aAAa,CAACW,qBAAqB,CAAC,CAAC,CAAC;QAAA;UAAnDV,IAAI,GAAAK,QAAA,CAAAM,IAAA;UAAAN,QAAA,CAAAE,IAAA;UAAA;QAAA;UAGEL,WAAW,GAAG,IAAAU,yBAAe,KAAAlE,MAAA,CAAImD,OAAO,CAACtD,GAAG,mBAAA0D,YAAA,GAAeH,OAAO,CAACe,GAAG,cAAAZ,YAAA,uBAAXA,YAAA,CAAaa,KAAK,CAAC;UAAAT,QAAA,CAAAE,IAAA;UAAA,OAEvE,IAAAQ,UAAI,EAACb,WAAW,EAAEc,oBAAS,EAAAzF,aAAA,CAAAA,aAAA,KACnCuE,OAAO;YACVe,GAAG,EAAAtF,aAAA,CAAAA,aAAA,KAEEuE,OAAO,CAACe,GAAG;cACdI,WAAW,EAAE,KAAK;cAAEC,YAAY,EAAE,IAAI;cAAEC,SAAS,EAAE;YAAK;UAAC,EAC5D,CAAC;QAAA;UANFnB,IAAI,GAAAK,QAAA,CAAAM,IAAA;QAAA;UAAA,OAAAN,QAAA,CAAAe,MAAA,WAAA7F,aAAA,CAAAA,aAAA,KAUDsE,OAAO;YACVwB,MAAM,EAAEL,oBAAS;YACjBzE,GAAG,EAAHA,GAAG;YACH+E,QAAQ,EAAE/E,GAAG;YACbuC,IAAI,EAAEyC,mBAAY,CAACC,GAAG;YACtBzB,aAAa,EAAbA,aAAa;YACbC,IAAI,EAAJA,IAAI;YACJvB,aAAa,EAAEuB,IAAI,CAACvB,aAAa;YACjCG,cAAc,EAAEoB,IAAI,CAACpB;UAAc;QAAA;QAAA;UAAA,OAAAyB,QAAA,CAAAoB,IAAA;MAAA;IAAA,GAAA7B,OAAA;EAAA,CAEtC;EAAA,OAAAJ,qBAAA,CAAAlE,KAAA,OAAAI,SAAA;AAAA"}
@@ -8,10 +8,7 @@ exports.parseSLPK = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _md = _interopRequireDefault(require("md5"));
11
- var _cdFileHeader = require("../parse-zip/cd-file-header");
12
- var _endOfCentralDirectory = require("../parse-zip/end-of-central-directory");
13
- var _localFileHeader = require("../parse-zip/local-file-header");
14
- var _searchFromTheEnd = require("../parse-zip/search-from-the-end");
11
+ var _zip = require("@loaders.gl/zip");
15
12
  var _slpkArchieve = require("./slpk-archieve");
16
13
  var parseSLPK = function () {
17
14
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(fileProvider, cb) {
@@ -20,11 +17,11 @@ var parseSLPK = function () {
20
17
  while (1) switch (_context.prev = _context.next) {
21
18
  case 0:
22
19
  _context.next = 2;
23
- return (0, _searchFromTheEnd.searchFromTheEnd)(fileProvider, _cdFileHeader.signature);
20
+ return (0, _zip.searchFromTheEnd)(fileProvider, _zip.cdSignature);
24
21
  case 2:
25
22
  hashCDOffset = _context.sent;
26
23
  _context.next = 5;
27
- return (0, _cdFileHeader.parseZipCDFileHeader)(hashCDOffset, fileProvider);
24
+ return (0, _zip.parseZipCDFileHeader)(hashCDOffset, fileProvider);
28
25
  case 5:
29
26
  cdFileHeader = _context.sent;
30
27
  if (!((cdFileHeader === null || cdFileHeader === void 0 ? void 0 : cdFileHeader.fileName) !== '@specialIndexFileHASH128@')) {
@@ -42,7 +39,7 @@ var parseSLPK = function () {
42
39
  case 14:
43
40
  cb === null || cb === void 0 ? void 0 : cb('SLPK contains hash file');
44
41
  _context.next = 17;
45
- return (0, _localFileHeader.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
42
+ return (0, _zip.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
46
43
  case 17:
47
44
  localFileHeader = _context.sent;
48
45
  if (localFileHeader) {
@@ -56,7 +53,7 @@ var parseSLPK = function () {
56
53
  return fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
57
54
  case 23:
58
55
  hashFile = _context.sent;
59
- hashData = parseHashFile(hashFile);
56
+ hashData = (0, _zip.parseHashFile)(hashFile);
60
57
  case 25:
61
58
  return _context.abrupt("return", new _slpkArchieve.SLPKArchive(fileProvider, hashData));
62
59
  case 26:
@@ -77,12 +74,12 @@ var generateHashInfo = function () {
77
74
  while (1) switch (_context2.prev = _context2.next) {
78
75
  case 0:
79
76
  _context2.next = 2;
80
- return (0, _endOfCentralDirectory.parseEoCDRecord)(fileProvider);
77
+ return (0, _zip.parseEoCDRecord)(fileProvider);
81
78
  case 2:
82
79
  _yield$parseEoCDRecor = _context2.sent;
83
80
  cdStartOffset = _yield$parseEoCDRecor.cdStartOffset;
84
81
  _context2.next = 6;
85
- return (0, _cdFileHeader.parseZipCDFileHeader)(cdStartOffset, fileProvider);
82
+ return (0, _zip.parseZipCDFileHeader)(cdStartOffset, fileProvider);
86
83
  case 6:
87
84
  cdHeader = _context2.sent;
88
85
  hashInfo = [];
@@ -96,14 +93,14 @@ var generateHashInfo = function () {
96
93
  offset: cdHeader.localHeaderOffset
97
94
  });
98
95
  _context2.next = 12;
99
- return (0, _cdFileHeader.parseZipCDFileHeader)(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
96
+ return (0, _zip.parseZipCDFileHeader)(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
100
97
  case 12:
101
98
  cdHeader = _context2.sent;
102
99
  _context2.next = 8;
103
100
  break;
104
101
  case 15:
105
102
  hashInfo.sort(function (a, b) {
106
- return (0, _slpkArchieve.compareHashes)(a.hash, b.hash);
103
+ return (0, _zip.compareHashes)(a.hash, b.hash);
107
104
  });
108
105
  return _context2.abrupt("return", hashInfo);
109
106
  case 17:
@@ -116,17 +113,4 @@ var generateHashInfo = function () {
116
113
  return _ref2.apply(this, arguments);
117
114
  };
118
115
  }();
119
- var parseHashFile = function parseHashFile(hashFile) {
120
- var hashFileBuffer = Buffer.from(hashFile);
121
- var hashArray = [];
122
- for (var i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
123
- var offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i + 16, hashFileBuffer.byteOffset + i + 24));
124
- var offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
125
- hashArray.push({
126
- hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)),
127
- offset: offset
128
- });
129
- }
130
- return hashArray;
131
- };
132
116
  //# sourceMappingURL=parse-slpk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-slpk.js","names":["_md","_interopRequireDefault","require","_cdFileHeader","_endOfCentralDirectory","_localFileHeader","_searchFromTheEnd","_slpkArchieve","parseSLPK","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","fileProvider","cb","hashCDOffset","cdFileHeader","hashData","localFileHeader","fileDataOffset","hashFile","wrap","_callee$","_context","prev","next","searchFromTheEnd","cdHeaderSignature","sent","parseZipCDFileHeader","fileName","generateHashInfo","parseZipLocalFileHeader","localHeaderOffset","Error","slice","compressedSize","parseHashFile","abrupt","SLPKArchive","stop","_x","_x2","apply","arguments","exports","_ref2","_callee2","_yield$parseEoCDRecor","cdStartOffset","cdHeader","hashInfo","_callee2$","_context2","parseEoCDRecord","push","hash","Buffer","from","md5","split","join","toLocaleLowerCase","offset","extraOffset","BigInt","extraFieldLength","sort","a","b","compareHashes","_x3","hashFileBuffer","hashArray","i","buffer","byteLength","offsetBuffer","DataView","byteOffset","getBigUint64","subarray"],"sources":["../../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"sourcesContent":["import md5 from 'md5';\nimport {parseZipCDFileHeader, signature as cdHeaderSignature} from '../parse-zip/cd-file-header';\nimport {parseEoCDRecord} from '../parse-zip/end-of-central-directory';\nimport {FileProvider} from '../parse-zip/file-provider';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\nimport {searchFromTheEnd} from '../parse-zip/search-from-the-end';\nimport {HashElement, SLPKArchive, compareHashes} from './slpk-archieve';\n\n/**\n * Creates slpk file handler from raw file\n * @param fileProvider raw file data\n * @param cb is called with information message during parsing\n * @returns slpk file handler\n */\nexport const parseSLPK = async (\n fileProvider: FileProvider,\n cb?: (msg: string) => void\n): Promise<SLPKArchive> => {\n const hashCDOffset = await searchFromTheEnd(fileProvider, cdHeaderSignature);\n\n const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);\n\n let hashData: HashElement[];\n if (cdFileHeader?.fileName !== '@specialIndexFileHASH128@') {\n cb?.('SLPK doesnt contain hash file');\n hashData = await generateHashInfo(fileProvider);\n cb?.('hash info has been composed according to central directory records');\n } else {\n cb?.('SLPK contains hash file');\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('corrupted SLPK');\n }\n\n const fileDataOffset = localFileHeader.fileDataOffset;\n const hashFile = await fileProvider.slice(\n fileDataOffset,\n fileDataOffset + localFileHeader.compressedSize\n );\n\n hashData = parseHashFile(hashFile);\n }\n\n return new SLPKArchive(fileProvider, hashData);\n};\n\n/**\n * generates hash info from central directory\n * @param fileProvider - provider of the archive\n * @returns ready to use hash info\n */\nconst generateHashInfo = async (fileProvider: FileProvider): Promise<HashElement[]> => {\n const {cdStartOffset} = await parseEoCDRecord(fileProvider);\n let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);\n const hashInfo: HashElement[] = [];\n while (cdHeader) {\n hashInfo.push({\n hash: Buffer.from(md5(cdHeader.fileName.split('\\\\').join('/').toLocaleLowerCase()), 'hex'),\n offset: cdHeader.localHeaderOffset\n });\n cdHeader = await parseZipCDFileHeader(\n cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),\n fileProvider\n );\n }\n hashInfo.sort((a, b) => compareHashes(a.hash, b.hash));\n return hashInfo;\n};\n\n/**\n * Reads hash file from buffer and returns it in ready-to-use form\n * @param hashFile - bufer containing hash file\n * @returns Array containing file info\n */\nconst parseHashFile = (hashFile: ArrayBuffer): HashElement[] => {\n const hashFileBuffer = Buffer.from(hashFile);\n const hashArray: HashElement[] = [];\n for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {\n const offsetBuffer = new DataView(\n hashFileBuffer.buffer.slice(\n hashFileBuffer.byteOffset + i + 16,\n hashFileBuffer.byteOffset + i + 24\n )\n );\n const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);\n hashArray.push({\n hash: Buffer.from(\n hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)\n ),\n offset\n });\n }\n return hashArray;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-slpk.js","names":["_md","_interopRequireDefault","require","_zip","_slpkArchieve","parseSLPK","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","fileProvider","cb","hashCDOffset","cdFileHeader","hashData","localFileHeader","fileDataOffset","hashFile","wrap","_callee$","_context","prev","next","searchFromTheEnd","cdHeaderSignature","sent","parseZipCDFileHeader","fileName","generateHashInfo","parseZipLocalFileHeader","localHeaderOffset","Error","slice","compressedSize","parseHashFile","abrupt","SLPKArchive","stop","_x","_x2","apply","arguments","exports","_ref2","_callee2","_yield$parseEoCDRecor","cdStartOffset","cdHeader","hashInfo","_callee2$","_context2","parseEoCDRecord","push","hash","Buffer","from","md5","split","join","toLocaleLowerCase","offset","extraOffset","BigInt","extraFieldLength","sort","a","b","compareHashes","_x3"],"sources":["../../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"sourcesContent":["import md5 from 'md5';\nimport {\n parseZipCDFileHeader,\n cdSignature as cdHeaderSignature,\n parseEoCDRecord,\n FileProvider,\n parseZipLocalFileHeader,\n searchFromTheEnd,\n HashElement,\n compareHashes,\n parseHashFile\n} from '@loaders.gl/zip';\nimport {SLPKArchive} from './slpk-archieve';\n\n/**\n * Creates slpk file handler from raw file\n * @param fileProvider raw file data\n * @param cb is called with information message during parsing\n * @returns slpk file handler\n */\nexport const parseSLPK = async (\n fileProvider: FileProvider,\n cb?: (msg: string) => void\n): Promise<SLPKArchive> => {\n const hashCDOffset = await searchFromTheEnd(fileProvider, cdHeaderSignature);\n\n const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);\n\n let hashData: HashElement[];\n if (cdFileHeader?.fileName !== '@specialIndexFileHASH128@') {\n cb?.('SLPK doesnt contain hash file');\n hashData = await generateHashInfo(fileProvider);\n cb?.('hash info has been composed according to central directory records');\n } else {\n cb?.('SLPK contains hash file');\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('corrupted SLPK');\n }\n\n const fileDataOffset = localFileHeader.fileDataOffset;\n const hashFile = await fileProvider.slice(\n fileDataOffset,\n fileDataOffset + localFileHeader.compressedSize\n );\n\n hashData = parseHashFile(hashFile);\n }\n\n return new SLPKArchive(fileProvider, hashData);\n};\n\n/**\n * generates hash info from central directory\n * @param fileProvider - provider of the archive\n * @returns ready to use hash info\n */\nconst generateHashInfo = async (fileProvider: FileProvider): Promise<HashElement[]> => {\n const {cdStartOffset} = await parseEoCDRecord(fileProvider);\n let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);\n const hashInfo: HashElement[] = [];\n while (cdHeader) {\n hashInfo.push({\n hash: Buffer.from(md5(cdHeader.fileName.split('\\\\').join('/').toLocaleLowerCase()), 'hex'),\n offset: cdHeader.localHeaderOffset\n });\n cdHeader = await parseZipCDFileHeader(\n cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),\n fileProvider\n );\n }\n hashInfo.sort((a, b) => compareHashes(a.hash, b.hash));\n return hashInfo;\n};\n"],"mappings":"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"}
@@ -4,30 +4,18 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.compareHashes = exports.SLPKArchive = void 0;
7
+ exports.SLPKArchive = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
  var _md = _interopRequireDefault(require("md5"));
14
- var _localFileHeader = require("../parse-zip/local-file-header");
14
+ var _zip = require("@loaders.gl/zip");
15
15
  var _compression = require("@loaders.gl/compression");
16
16
  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; } } }; }
17
17
  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); }
18
18
  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; }
19
- var compareHashes = function compareHashes(hash1, hash2) {
20
- var h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
21
- var h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
22
- var diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
23
- if (diff < 0n) {
24
- return -1;
25
- } else if (diff === 0n) {
26
- return 0;
27
- }
28
- return 1;
29
- };
30
- exports.compareHashes = compareHashes;
31
19
  var PATH_DESCRIPTIONS = [{
32
20
  test: /^$/,
33
21
  extensions: ['3dSceneLayer.json.gz']
@@ -55,26 +43,9 @@ var PATH_DESCRIPTIONS = [{
55
43
  }];
56
44
  var SLPKArchive = function () {
57
45
  function SLPKArchive(slpkArchive, hashFile) {
58
- var _this = this;
59
46
  (0, _classCallCheck2.default)(this, SLPKArchive);
60
47
  (0, _defineProperty2.default)(this, "slpkArchive", void 0);
61
48
  (0, _defineProperty2.default)(this, "hashArray", void 0);
62
- (0, _defineProperty2.default)(this, "findBin", function (hashToSearch) {
63
- var lowerBorder = 0;
64
- var upperBorder = _this.hashArray.length;
65
- while (upperBorder - lowerBorder > 1) {
66
- var middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
67
- var value = compareHashes(_this.hashArray[middle].hash, hashToSearch);
68
- if (value === 0) {
69
- return _this.hashArray[middle];
70
- } else if (value < 0) {
71
- lowerBorder = middle;
72
- } else {
73
- upperBorder = middle;
74
- }
75
- }
76
- return undefined;
77
- });
78
49
  this.slpkArchive = slpkArchive;
79
50
  this.hashArray = hashFile;
80
51
  }
@@ -241,7 +212,7 @@ var SLPKArchive = function () {
241
212
  while (1) switch (_context3.prev = _context3.next) {
242
213
  case 0:
243
214
  nameHash = Buffer.from((0, _md.default)(path), 'hex');
244
- fileInfo = this.findBin(nameHash);
215
+ fileInfo = (0, _zip.findBin)(nameHash, this.hashArray);
245
216
  if (fileInfo) {
246
217
  _context3.next = 4;
247
218
  break;
@@ -249,7 +220,7 @@ var SLPKArchive = function () {
249
220
  return _context3.abrupt("return", undefined);
250
221
  case 4:
251
222
  _context3.next = 6;
252
- return (0, _localFileHeader.parseZipLocalFileHeader)(fileInfo.offset, this.slpkArchive);
223
+ return (0, _zip.parseZipLocalFileHeader)(fileInfo.offset, this.slpkArchive);
253
224
  case 6:
254
225
  localFileHeader = _context3.sent;
255
226
  if (localFileHeader) {
@@ -271,6 +242,11 @@ var SLPKArchive = function () {
271
242
  }
272
243
  return getFileBytes;
273
244
  }()
245
+ }, {
246
+ key: "findBin",
247
+ value: function findBin(nameHash) {
248
+ throw new Error('Method not implemented.');
249
+ }
274
250
  }]);
275
251
  return SLPKArchive;
276
252
  }();
@@ -1 +1 @@
1
- {"version":3,"file":"slpk-archieve.js","names":["_md","_interopRequireDefault","require","_localFileHeader","_compression","_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","compareHashes","hash1","hash2","h1","BigUint64Array","buffer","byteOffset","h2","diff","exports","PATH_DESCRIPTIONS","extensions","SLPKArchive","slpkArchive","hashFile","_this","_classCallCheck2","default","_defineProperty2","hashToSearch","lowerBorder","upperBorder","hashArray","middle","Math","floor","hash","undefined","_createClass2","key","_getFile","_asyncToGenerator2","_regenerator","mark","_callee","path","mode","_PATH_DESCRIPTIONS$fi","data","_iterator","_step","ext","decompressedFile","fileWithoutCompression","_args","arguments","wrap","_callee$","_context","prev","find","val","getDataByPath","concat","sent","abrupt","t0","finish","Buffer","getFileBytes","Error","stop","getFile","_x","apply","_getDataByPath","_callee2","compression","decompressedData","_callee2$","_context2","toLocaleLowerCase","GZipCompression","decompress","_x2","_getFileBytes","_callee3","nameHash","fileInfo","localFileHeader","compressedFile","_callee3$","_context3","md5","findBin","parseZipLocalFileHeader","offset","fileDataOffset","compressedSize","_x3"],"sources":["../../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"sourcesContent":["import md5 from 'md5';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\nimport {GZipCompression} from '@loaders.gl/compression';\nimport {FileProvider} from '../parse-zip/file-provider';\n\n/** Element of hash array */\nexport type HashElement = {\n /** File name hash */\n hash: Buffer;\n /** File offset in the archive */\n offset: bigint;\n};\n\n/**\n * Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5\n * @param hash1 hash to compare\n * @param hash2 hash to compare\n * @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2\n */\nexport const compareHashes = (hash1: Buffer, hash2: Buffer): number => {\n const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);\n const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);\n\n const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];\n\n if (diff < 0n) {\n return -1;\n } else if (diff === 0n) {\n return 0;\n }\n return 1;\n};\n\n/** Description of real paths for different file types */\nconst PATH_DESCRIPTIONS: {test: RegExp; extensions: string[]}[] = [\n {\n test: /^$/,\n extensions: ['3dSceneLayer.json.gz']\n },\n {\n test: /^nodepages\\/\\d+$/,\n extensions: ['.json.gz']\n },\n {\n test: /^nodes\\/(\\d+|root)$/,\n extensions: ['/3dNodeIndexDocument.json.gz']\n },\n {\n test: /^nodes\\/\\d+\\/textures\\/.+$/,\n extensions: ['.jpg', '.png', '.bin.dds.gz', '.ktx']\n },\n {\n test: /^nodes\\/\\d+\\/geometries\\/\\d+$/,\n extensions: ['.bin.gz', '.draco.gz']\n },\n {\n test: /^nodes\\/\\d+\\/attributes\\/f_\\d+\\/\\d+$/,\n extensions: ['.bin.gz']\n },\n {\n test: /^statistics\\/f_\\d+\\/\\d+$/,\n extensions: ['.json.gz']\n },\n {\n test: /^nodes\\/\\d+\\/shared$/,\n extensions: ['/sharedResource.json.gz']\n }\n];\n\n/**\n * Class for handling information about slpk file\n */\nexport class SLPKArchive {\n private slpkArchive: FileProvider;\n private hashArray: HashElement[];\n constructor(slpkArchive: FileProvider, hashFile: HashElement[]) {\n this.slpkArchive = slpkArchive;\n this.hashArray = hashFile;\n }\n\n /**\n * Binary search in the hash info\n * @param hashToSearch hash that we need to find\n * @returns required hash element or undefined if not found\n */\n private findBin = (hashToSearch: Buffer): HashElement | undefined => {\n let lowerBorder = 0;\n let upperBorder = this.hashArray.length;\n\n while (upperBorder - lowerBorder > 1) {\n const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);\n const value = compareHashes(this.hashArray[middle].hash, hashToSearch);\n if (value === 0) {\n return this.hashArray[middle];\n } else if (value < 0) {\n lowerBorder = middle;\n } else {\n upperBorder = middle;\n }\n }\n return undefined;\n };\n\n /**\n * Returns file with the given path from slpk archive\n * @param path - path inside the slpk\n * @param mode - currently only raw mode supported\n * @returns buffer with ready to use file\n */\n async getFile(path: string, mode: 'http' | 'raw' = 'raw'): Promise<Buffer> {\n if (mode === 'http') {\n const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;\n if (extensions) {\n let data: ArrayBuffer | undefined;\n for (const ext of extensions) {\n data = await this.getDataByPath(`${path}${ext}`);\n if (data) {\n break;\n }\n }\n if (data) {\n return Buffer.from(data);\n }\n }\n }\n if (mode === 'raw') {\n const decompressedFile = await this.getDataByPath(`${path}.gz`);\n if (decompressedFile) {\n return Buffer.from(decompressedFile);\n }\n const fileWithoutCompression = await this.getFileBytes(path);\n if (fileWithoutCompression) {\n return Buffer.from(fileWithoutCompression);\n }\n }\n\n throw new Error('No such file in the archieve');\n }\n\n /**\n * returning uncompressed data for paths that ends with .gz and raw data for all other paths\n * @param path - path inside the archive\n * @returns buffer with the file data\n */\n private async getDataByPath(path: string): Promise<ArrayBuffer | undefined> {\n // sometimes paths are not in lower case when hash file is created,\n // so first we're looking for lower case file name and then for original one\n let data = await this.getFileBytes(path.toLocaleLowerCase());\n if (!data) {\n data = await this.getFileBytes(path);\n }\n if (!data) {\n return undefined;\n }\n if (/\\.gz$/.test(path)) {\n const compression = new GZipCompression();\n\n const decompressedData = await compression.decompress(data);\n return decompressedData;\n }\n return Buffer.from(data);\n }\n\n /**\n * Trying to get raw file data by adress\n * @param path - path inside the archive\n * @returns buffer with the raw file data\n */\n private async getFileBytes(path: string): Promise<ArrayBuffer | undefined> {\n const nameHash = Buffer.from(md5(path), 'hex');\n const fileInfo = this.findBin(nameHash); // implement binary search\n if (!fileInfo) {\n return undefined;\n }\n\n const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.slpkArchive);\n if (!localFileHeader) {\n return undefined;\n }\n\n const compressedFile = this.slpkArchive.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n return compressedFile;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAAwD,SAAAG,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAO,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAT,CAAA,CAAAQ,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAS,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAT,EAAA,GAAAA,EAAA,CAAAoB,IAAA,CAAAtB,CAAA,MAAAY,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAArB,EAAA,CAAAsB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAjB,EAAA,CAAAwB,MAAA,UAAAxB,EAAA,CAAAwB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAP,CAAA,EAAA2B,MAAA,SAAA3B,CAAA,qBAAAA,CAAA,sBAAA4B,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAAtB,CAAA,EAAAgC,KAAA,aAAApB,CAAA,iBAAAZ,CAAA,CAAAiC,WAAA,EAAArB,CAAA,GAAAZ,CAAA,CAAAiC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAP,KAAA,CAAA8B,IAAA,CAAAnC,CAAA,OAAAY,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAlC,KAAA,CAAAiC,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAiBjD,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAa,EAAEC,KAAa,EAAa;EACrE,IAAMC,EAAE,GAAG,IAAIC,cAAc,CAACH,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,UAAU,EAAE,CAAC,CAAC;EAChE,IAAMC,EAAE,GAAG,IAAIH,cAAc,CAACF,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACI,UAAU,EAAE,CAAC,CAAC;EAEhE,IAAME,IAAI,GAAGL,EAAE,CAAC,CAAC,CAAC,KAAKI,EAAE,CAAC,CAAC,CAAC,GAAGJ,EAAE,CAAC,CAAC,CAAC,GAAGI,EAAE,CAAC,CAAC,CAAC,GAAGJ,EAAE,CAAC,CAAC,CAAC,GAAGI,EAAE,CAAC,CAAC,CAAC;EAE5D,IAAIC,IAAI,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,CAAC;EACX,CAAC,MAAM,IAAIA,IAAI,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC;EACV;EACA,OAAO,CAAC;AACV,CAAC;AAACC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AAGF,IAAMU,iBAAyD,GAAG,CAChE;EACEd,IAAI,EAAE,IAAI;EACVe,UAAU,EAAE,CAAC,sBAAsB;AACrC,CAAC,EACD;EACEf,IAAI,EAAE,kBAAkB;EACxBe,UAAU,EAAE,CAAC,UAAU;AACzB,CAAC,EACD;EACEf,IAAI,EAAE,qBAAqB;EAC3Be,UAAU,EAAE,CAAC,8BAA8B;AAC7C,CAAC,EACD;EACEf,IAAI,EAAE,4BAA4B;EAClCe,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;AACpD,CAAC,EACD;EACEf,IAAI,EAAE,+BAA+B;EACrCe,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW;AACrC,CAAC,EACD;EACEf,IAAI,EAAE,sCAAsC;EAC5Ce,UAAU,EAAE,CAAC,SAAS;AACxB,CAAC,EACD;EACEf,IAAI,EAAE,0BAA0B;EAChCe,UAAU,EAAE,CAAC,UAAU;AACzB,CAAC,EACD;EACEf,IAAI,EAAE,sBAAsB;EAC5Be,UAAU,EAAE,CAAC,yBAAyB;AACxC,CAAC,CACF;AAAC,IAKWC,WAAW;EAGtB,SAAAA,YAAYC,WAAyB,EAAEC,QAAuB,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAL,WAAA;IAAA,IAAAM,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,mBAU9C,UAACE,YAAoB,EAA8B;MACnE,IAAIC,WAAW,GAAG,CAAC;MACnB,IAAIC,WAAW,GAAGN,KAAI,CAACO,SAAS,CAACtD,MAAM;MAEvC,OAAOqD,WAAW,GAAGD,WAAW,GAAG,CAAC,EAAE;QACpC,IAAMG,MAAM,GAAGH,WAAW,GAAGI,IAAI,CAACC,KAAK,CAAC,CAACJ,WAAW,GAAGD,WAAW,IAAI,CAAC,CAAC;QACxE,IAAM9C,KAAK,GAAG0B,aAAa,CAACe,KAAI,CAACO,SAAS,CAACC,MAAM,CAAC,CAACG,IAAI,EAAEP,YAAY,CAAC;QACtE,IAAI7C,KAAK,KAAK,CAAC,EAAE;UACf,OAAOyC,KAAI,CAACO,SAAS,CAACC,MAAM,CAAC;QAC/B,CAAC,MAAM,IAAIjD,KAAK,GAAG,CAAC,EAAE;UACpB8C,WAAW,GAAGG,MAAM;QACtB,CAAC,MAAM;UACLF,WAAW,GAAGE,MAAM;QACtB;MACF;MACA,OAAOI,SAAS;IAClB,CAAC;IAzBC,IAAI,CAACd,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACS,SAAS,GAAGR,QAAQ;EAC3B;EAAC,IAAAc,aAAA,CAAAX,OAAA,EAAAL,WAAA;IAAAiB,GAAA;IAAAvD,KAAA;MAAA,IAAAwD,QAAA,OAAAC,kBAAA,CAAAd,OAAA,EAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CA+BD,SAAAC,QAAcC,IAAY;QAAA,IAAAC,IAAA;UAAAC,qBAAA;UAAA1B,UAAA;UAAA2B,IAAA;UAAAC,SAAA;UAAAC,KAAA;UAAAC,GAAA;UAAAC,gBAAA;UAAAC,sBAAA;UAAAC,KAAA,GAAAC,SAAA;QAAA,OAAAb,YAAA,CAAAf,OAAA,CAAA6B,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAhE,IAAA;YAAA;cAAEoD,IAAoB,GAAAQ,KAAA,CAAA5E,MAAA,QAAA4E,KAAA,QAAAjB,SAAA,GAAAiB,KAAA,MAAG,KAAK;cAAA,MAClDR,IAAI,KAAK,MAAM;gBAAAY,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cACX2B,UAAU,IAAA0B,qBAAA,GAAG3B,iBAAiB,CAACwC,IAAI,CAAC,UAACC,GAAG;gBAAA,OAAKA,GAAG,CAACvD,IAAI,CAACA,IAAI,CAACuC,IAAI,CAAC;cAAA,EAAC,cAAAE,qBAAA,uBAApDA,qBAAA,CAAsD1B,UAAU;cAAA,KAC/EA,UAAU;gBAAAqC,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAAuD,SAAA,GAAAhF,0BAAA,CAEMoD,UAAU;cAAAqC,QAAA,CAAAC,IAAA;cAAAV,SAAA,CAAApE,CAAA;YAAA;cAAA,KAAAqE,KAAA,GAAAD,SAAA,CAAAnE,CAAA,IAAAC,IAAA;gBAAA2E,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAjByD,GAAG,GAAAD,KAAA,CAAAlE,KAAA;cAAA0E,QAAA,CAAAhE,IAAA;cAAA,OACC,IAAI,CAACoE,aAAa,IAAAC,MAAA,CAAIlB,IAAI,EAAAkB,MAAA,CAAGZ,GAAG,CAAE,CAAC;YAAA;cAAhDH,IAAI,GAAAU,QAAA,CAAAM,IAAA;cAAA,KACAhB,IAAI;gBAAAU,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAA,OAAAgE,QAAA,CAAAO,MAAA;YAAA;cAAAP,QAAA,CAAAhE,IAAA;cAAA;YAAA;cAAAgE,QAAA,CAAAhE,IAAA;cAAA;YAAA;cAAAgE,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAQ,EAAA,GAAAR,QAAA;cAAAT,SAAA,CAAAhE,CAAA,CAAAyE,QAAA,CAAAQ,EAAA;YAAA;cAAAR,QAAA,CAAAC,IAAA;cAAAV,SAAA,CAAA9D,CAAA;cAAA,OAAAuE,QAAA,CAAAS,MAAA;YAAA;cAAA,KAINnB,IAAI;gBAAAU,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAA,OAAAgE,QAAA,CAAAO,MAAA,WACCG,MAAM,CAAC/D,IAAI,CAAC2C,IAAI,CAAC;YAAA;cAAA,MAI1BF,IAAI,KAAK,KAAK;gBAAAY,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAAgE,QAAA,CAAAhE,IAAA;cAAA,OACe,IAAI,CAACoE,aAAa,IAAAC,MAAA,CAAIlB,IAAI,QAAK,CAAC;YAAA;cAAzDO,gBAAgB,GAAAM,QAAA,CAAAM,IAAA;cAAA,KAClBZ,gBAAgB;gBAAAM,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAA,OAAAgE,QAAA,CAAAO,MAAA,WACXG,MAAM,CAAC/D,IAAI,CAAC+C,gBAAgB,CAAC;YAAA;cAAAM,QAAA,CAAAhE,IAAA;cAAA,OAED,IAAI,CAAC2E,YAAY,CAACxB,IAAI,CAAC;YAAA;cAAtDQ,sBAAsB,GAAAK,QAAA,CAAAM,IAAA;cAAA,KACxBX,sBAAsB;gBAAAK,QAAA,CAAAhE,IAAA;gBAAA;cAAA;cAAA,OAAAgE,QAAA,CAAAO,MAAA,WACjBG,MAAM,CAAC/D,IAAI,CAACgD,sBAAsB,CAAC;YAAA;cAAA,MAIxC,IAAIiB,KAAK,CAAC,8BAA8B,CAAC;YAAA;YAAA;cAAA,OAAAZ,QAAA,CAAAa,IAAA;UAAA;QAAA,GAAA3B,OAAA;MAAA,CAChD;MAAA,SAAA4B,QAAAC,EAAA;QAAA,OAAAjC,QAAA,CAAAkC,KAAA,OAAAnB,SAAA;MAAA;MAAA,OAAAiB,OAAA;IAAA;EAAA;IAAAjC,GAAA;IAAAvD,KAAA;MAAA,IAAA2F,cAAA,OAAAlC,kBAAA,CAAAd,OAAA,EAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAOD,SAAAiC,SAA4B/B,IAAY;QAAA,IAAAG,IAAA,EAAA6B,WAAA,EAAAC,gBAAA;QAAA,OAAApC,YAAA,CAAAf,OAAA,CAAA6B,IAAA,UAAAuB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAArB,IAAA,GAAAqB,SAAA,CAAAtF,IAAA;YAAA;cAAAsF,SAAA,CAAAtF,IAAA;cAAA,OAGrB,IAAI,CAAC2E,YAAY,CAACxB,IAAI,CAACoC,iBAAiB,CAAC,CAAC,CAAC;YAAA;cAAxDjC,IAAI,GAAAgC,SAAA,CAAAhB,IAAA;cAAA,IACHhB,IAAI;gBAAAgC,SAAA,CAAAtF,IAAA;gBAAA;cAAA;cAAAsF,SAAA,CAAAtF,IAAA;cAAA,OACM,IAAI,CAAC2E,YAAY,CAACxB,IAAI,CAAC;YAAA;cAApCG,IAAI,GAAAgC,SAAA,CAAAhB,IAAA;YAAA;cAAA,IAEDhB,IAAI;gBAAAgC,SAAA,CAAAtF,IAAA;gBAAA;cAAA;cAAA,OAAAsF,SAAA,CAAAf,MAAA,WACA5B,SAAS;YAAA;cAAA,KAEd,OAAO,CAAC/B,IAAI,CAACuC,IAAI,CAAC;gBAAAmC,SAAA,CAAAtF,IAAA;gBAAA;cAAA;cACdmF,WAAW,GAAG,IAAIK,4BAAe,CAAC,CAAC;cAAAF,SAAA,CAAAtF,IAAA;cAAA,OAEVmF,WAAW,CAACM,UAAU,CAACnC,IAAI,CAAC;YAAA;cAArD8B,gBAAgB,GAAAE,SAAA,CAAAhB,IAAA;cAAA,OAAAgB,SAAA,CAAAf,MAAA,WACfa,gBAAgB;YAAA;cAAA,OAAAE,SAAA,CAAAf,MAAA,WAElBG,MAAM,CAAC/D,IAAI,CAAC2C,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAgC,SAAA,CAAAT,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA,CACzB;MAAA,SAAAd,cAAAsB,GAAA;QAAA,OAAAT,cAAA,CAAAD,KAAA,OAAAnB,SAAA;MAAA;MAAA,OAAAO,aAAA;IAAA;EAAA;IAAAvB,GAAA;IAAAvD,KAAA;MAAA,IAAAqG,aAAA,OAAA5C,kBAAA,CAAAd,OAAA,EAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAOD,SAAA2C,SAA2BzC,IAAY;QAAA,IAAA0C,QAAA,EAAAC,QAAA,EAAAC,eAAA,EAAAC,cAAA;QAAA,OAAAhD,YAAA,CAAAf,OAAA,CAAA6B,IAAA,UAAAmC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAjC,IAAA,GAAAiC,SAAA,CAAAlG,IAAA;YAAA;cAC/B6F,QAAQ,GAAGnB,MAAM,CAAC/D,IAAI,CAAC,IAAAwF,WAAG,EAAChD,IAAI,CAAC,EAAE,KAAK,CAAC;cACxC2C,QAAQ,GAAG,IAAI,CAACM,OAAO,CAACP,QAAQ,CAAC;cAAA,IAClCC,QAAQ;gBAAAI,SAAA,CAAAlG,IAAA;gBAAA;cAAA;cAAA,OAAAkG,SAAA,CAAA3B,MAAA,WACJ5B,SAAS;YAAA;cAAAuD,SAAA,CAAAlG,IAAA;cAAA,OAGY,IAAAqG,wCAAuB,EAACP,QAAQ,CAACQ,MAAM,EAAE,IAAI,CAACzE,WAAW,CAAC;YAAA;cAAlFkE,eAAe,GAAAG,SAAA,CAAA5B,IAAA;cAAA,IAChByB,eAAe;gBAAAG,SAAA,CAAAlG,IAAA;gBAAA;cAAA;cAAA,OAAAkG,SAAA,CAAA3B,MAAA,WACX5B,SAAS;YAAA;cAGZqD,cAAc,GAAG,IAAI,CAACnE,WAAW,CAACrB,KAAK,CAC3CuF,eAAe,CAACQ,cAAc,EAC9BR,eAAe,CAACQ,cAAc,GAAGR,eAAe,CAACS,cACnD,CAAC;cAAA,OAAAN,SAAA,CAAA3B,MAAA,WAEMyB,cAAc;YAAA;YAAA;cAAA,OAAAE,SAAA,CAAArB,IAAA;UAAA;QAAA,GAAAe,QAAA;MAAA,CACtB;MAAA,SAAAjB,aAAA8B,GAAA;QAAA,OAAAd,aAAA,CAAAX,KAAA,OAAAnB,SAAA;MAAA;MAAA,OAAAc,YAAA;IAAA;EAAA;EAAA,OAAA/C,WAAA;AAAA;AAAAH,OAAA,CAAAG,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"file":"slpk-archieve.js","names":["_md","_interopRequireDefault","require","_zip","_compression","_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","PATH_DESCRIPTIONS","extensions","SLPKArchive","slpkArchive","hashFile","_classCallCheck2","default","_defineProperty2","hashArray","_createClass2","key","_getFile","_asyncToGenerator2","_regenerator","mark","_callee","path","mode","_PATH_DESCRIPTIONS$fi","data","_iterator","_step","ext","decompressedFile","fileWithoutCompression","_args","arguments","wrap","_callee$","_context","prev","undefined","find","val","getDataByPath","concat","sent","abrupt","t0","finish","Buffer","getFileBytes","Error","stop","getFile","_x","apply","_getDataByPath","_callee2","compression","decompressedData","_callee2$","_context2","toLocaleLowerCase","GZipCompression","decompress","_x2","_getFileBytes","_callee3","nameHash","fileInfo","localFileHeader","compressedFile","_callee3$","_context3","md5","findBin","parseZipLocalFileHeader","offset","fileDataOffset","compressedSize","_x3","exports"],"sources":["../../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"sourcesContent":["import md5 from 'md5';\nimport {FileProvider, parseZipLocalFileHeader, HashElement, findBin} from '@loaders.gl/zip';\nimport {GZipCompression} from '@loaders.gl/compression';\n\n/** Description of real paths for different file types */\nconst PATH_DESCRIPTIONS: {test: RegExp; extensions: string[]}[] = [\n {\n test: /^$/,\n extensions: ['3dSceneLayer.json.gz']\n },\n {\n test: /^nodepages\\/\\d+$/,\n extensions: ['.json.gz']\n },\n {\n test: /^nodes\\/(\\d+|root)$/,\n extensions: ['/3dNodeIndexDocument.json.gz']\n },\n {\n test: /^nodes\\/\\d+\\/textures\\/.+$/,\n extensions: ['.jpg', '.png', '.bin.dds.gz', '.ktx']\n },\n {\n test: /^nodes\\/\\d+\\/geometries\\/\\d+$/,\n extensions: ['.bin.gz', '.draco.gz']\n },\n {\n test: /^nodes\\/\\d+\\/attributes\\/f_\\d+\\/\\d+$/,\n extensions: ['.bin.gz']\n },\n {\n test: /^statistics\\/f_\\d+\\/\\d+$/,\n extensions: ['.json.gz']\n },\n {\n test: /^nodes\\/\\d+\\/shared$/,\n extensions: ['/sharedResource.json.gz']\n }\n];\n\n/**\n * Class for handling information about slpk file\n */\nexport class SLPKArchive {\n private slpkArchive: FileProvider;\n private hashArray: HashElement[];\n constructor(slpkArchive: FileProvider, hashFile: HashElement[]) {\n this.slpkArchive = slpkArchive;\n this.hashArray = hashFile;\n }\n\n /**\n * Returns file with the given path from slpk archive\n * @param path - path inside the slpk\n * @param mode - currently only raw mode supported\n * @returns buffer with ready to use file\n */\n async getFile(path: string, mode: 'http' | 'raw' = 'raw'): Promise<Buffer> {\n if (mode === 'http') {\n const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;\n if (extensions) {\n let data: ArrayBuffer | undefined;\n for (const ext of extensions) {\n data = await this.getDataByPath(`${path}${ext}`);\n if (data) {\n break;\n }\n }\n if (data) {\n return Buffer.from(data);\n }\n }\n }\n if (mode === 'raw') {\n const decompressedFile = await this.getDataByPath(`${path}.gz`);\n if (decompressedFile) {\n return Buffer.from(decompressedFile);\n }\n const fileWithoutCompression = await this.getFileBytes(path);\n if (fileWithoutCompression) {\n return Buffer.from(fileWithoutCompression);\n }\n }\n\n throw new Error('No such file in the archieve');\n }\n\n /**\n * returning uncompressed data for paths that ends with .gz and raw data for all other paths\n * @param path - path inside the archive\n * @returns buffer with the file data\n */\n private async getDataByPath(path: string): Promise<ArrayBuffer | undefined> {\n // sometimes paths are not in lower case when hash file is created,\n // so first we're looking for lower case file name and then for original one\n let data = await this.getFileBytes(path.toLocaleLowerCase());\n if (!data) {\n data = await this.getFileBytes(path);\n }\n if (!data) {\n return undefined;\n }\n if (/\\.gz$/.test(path)) {\n const compression = new GZipCompression();\n\n const decompressedData = await compression.decompress(data);\n return decompressedData;\n }\n return Buffer.from(data);\n }\n\n /**\n * Trying to get raw file data by adress\n * @param path - path inside the archive\n * @returns buffer with the raw file data\n */\n private async getFileBytes(path: string): Promise<ArrayBuffer | undefined> {\n const nameHash = Buffer.from(md5(path), 'hex');\n const fileInfo = findBin(nameHash, this.hashArray); // implement binary search\n if (!fileInfo) {\n return undefined;\n }\n\n const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.slpkArchive);\n if (!localFileHeader) {\n return undefined;\n }\n\n const compressedFile = this.slpkArchive.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n return compressedFile;\n }\n findBin(nameHash: Buffer) {\n throw new Error('Method not implemented.');\n }\n}\n"],"mappings":"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"}