@loaders.gl/i3s 4.0.0-alpha.10 → 4.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +4500 -261
- package/dist/es5/arcgis-webscene-loader.js +1 -1
- package/dist/es5/i3s-attribute-loader.js +1 -1
- package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
- package/dist/es5/i3s-content-loader.js +1 -1
- package/dist/es5/i3s-loader.js +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/i3s-slpk-loader.js +1 -1
- package/dist/es5/index.js +14 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +25 -12
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +62 -33
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js +46 -0
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +75 -35
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js +63 -17
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -1
- package/dist/esm/arcgis-webscene-loader.js +1 -1
- package/dist/esm/i3s-attribute-loader.js +1 -1
- package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
- package/dist/esm/i3s-content-loader.js +1 -1
- package/dist/esm/i3s-loader.js +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/i3s-slpk-loader.js +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +8 -4
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +11 -12
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js +23 -0
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +7 -7
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js +16 -10
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -1
- package/dist/i3s-content-worker-node.js +2 -2
- package/dist/i3s-content-worker.js +8 -8
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +8 -4
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +12 -12
- package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts +37 -0
- package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/buffer-file-provider.js +47 -0
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +9 -20
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.js +7 -7
- package/dist/lib/parsers/parse-zip/file-provider.d.ts +31 -0
- package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/file-provider.js +2 -0
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts +8 -13
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-zip/local-file-header.js +16 -10
- package/package.json +9 -9
- package/src/index.ts +2 -0
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -4
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +14 -13
- package/src/lib/parsers/parse-zip/buffer-file-provider.ts +55 -0
- package/src/lib/parsers/parse-zip/cd-file-header.ts +25 -32
- package/src/lib/parsers/parse-zip/file-provider.ts +34 -0
- package/src/lib/parsers/parse-zip/local-file-header.ts +33 -24
|
@@ -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.
|
|
11
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : '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
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : '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.
|
|
11
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : '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.
|
|
11
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'beta';
|
|
12
12
|
var I3SContentLoader = {
|
|
13
13
|
name: 'I3S Content (Indexed Scene Layers)',
|
|
14
14
|
id: 'i3s-content',
|
package/dist/es5/i3s-loader.js
CHANGED
|
@@ -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.
|
|
15
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : '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.
|
|
10
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'latest';
|
|
11
11
|
function parseNodePage(_x, _x2) {
|
|
12
12
|
return _parseNodePage.apply(this, arguments);
|
|
13
13
|
}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.SLPKLoader = void 0;
|
|
7
7
|
var _parseSlpk = require("./lib/parsers/parse-slpk/parse-slpk");
|
|
8
|
-
var VERSION = typeof "4.0.0-alpha.
|
|
8
|
+
var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'latest';
|
|
9
9
|
var SLPKLoader = {
|
|
10
10
|
name: 'I3S SLPK (Scene Layer Package)',
|
|
11
11
|
id: 'slpk',
|
package/dist/es5/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "COORDINATE_SYSTEM", {
|
|
|
15
15
|
return _constants.COORDINATE_SYSTEM;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "FileProvider", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _fileProvider.FileProvider;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "I3SAttributeLoader", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -57,6 +63,12 @@ Object.defineProperty(exports, "loadFeatureAttributes", {
|
|
|
57
63
|
return _i3sAttributeLoader.loadFeatureAttributes;
|
|
58
64
|
}
|
|
59
65
|
});
|
|
66
|
+
Object.defineProperty(exports, "parseZipLocalFileHeader", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function get() {
|
|
69
|
+
return _localFileHeader.parseZipLocalFileHeader;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
60
72
|
var _constants = require("./lib/parsers/constants");
|
|
61
73
|
var _i3sLoader = require("./i3s-loader");
|
|
62
74
|
var _i3sSlpkLoader = require("./i3s-slpk-loader");
|
|
@@ -65,4 +77,6 @@ var _i3sAttributeLoader = require("./i3s-attribute-loader");
|
|
|
65
77
|
var _i3sBuildingSceneLayerLoader = require("./i3s-building-scene-layer-loader");
|
|
66
78
|
var _i3sNodePageLoader = require("./i3s-node-page-loader");
|
|
67
79
|
var _arcgisWebsceneLoader = require("./arcgis-webscene-loader");
|
|
80
|
+
var _localFileHeader = require("./lib/parsers/parse-zip/local-file-header");
|
|
81
|
+
var _fileProvider = require("./lib/parsers/parse-zip/file-provider");
|
|
68
82
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_constants","require","_i3sLoader","_i3sSlpkLoader","_i3sContentLoader","_i3sAttributeLoader","_i3sBuildingSceneLayerLoader","_i3sNodePageLoader","_arcgisWebsceneLoader"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\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 DATA_TYPE,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\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';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_constants","require","_i3sLoader","_i3sSlpkLoader","_i3sContentLoader","_i3sAttributeLoader","_i3sBuildingSceneLayerLoader","_i3sNodePageLoader","_arcgisWebsceneLoader","_localFileHeader","_fileProvider"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\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 DATA_TYPE,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\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 {FileProvider} from './lib/parsers/parse-zip/file-provider';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,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,aAAA,GAAAT,OAAA"}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.parseSLPK = parseSLPK;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _bufferFileProvider = require("../parse-zip/buffer-file-provider");
|
|
10
11
|
var _cdFileHeader = require("../parse-zip/cd-file-header");
|
|
11
12
|
var _localFileHeader = require("../parse-zip/local-file-header");
|
|
12
13
|
var _slpkArchieve = require("./slpk-archieve");
|
|
@@ -25,8 +26,8 @@ function _parseSLPK() {
|
|
|
25
26
|
searchWindow,
|
|
26
27
|
hashCDOffset,
|
|
27
28
|
i,
|
|
29
|
+
fileProvider,
|
|
28
30
|
cdFileHeader,
|
|
29
|
-
textDecoder,
|
|
30
31
|
localFileHeader,
|
|
31
32
|
fileDataOffset,
|
|
32
33
|
hashFile,
|
|
@@ -62,28 +63,40 @@ function _parseSLPK() {
|
|
|
62
63
|
_context.next = 6;
|
|
63
64
|
break;
|
|
64
65
|
case 17:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
fileProvider = new _bufferFileProvider.DataViewFileProvider(archive);
|
|
67
|
+
_context.next = 20;
|
|
68
|
+
return (0, _cdFileHeader.parseZipCDFileHeader)(hashCDOffset, fileProvider);
|
|
69
|
+
case 20:
|
|
70
|
+
cdFileHeader = _context.sent;
|
|
71
|
+
if (!(cdFileHeader.fileName !== '@specialIndexFileHASH128@')) {
|
|
72
|
+
_context.next = 23;
|
|
69
73
|
break;
|
|
70
74
|
}
|
|
71
75
|
throw new Error('No hash file in slpk');
|
|
72
|
-
case
|
|
73
|
-
|
|
76
|
+
case 23:
|
|
77
|
+
_context.next = 25;
|
|
78
|
+
return (0, _localFileHeader.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
|
|
79
|
+
case 25:
|
|
80
|
+
localFileHeader = _context.sent;
|
|
81
|
+
if (localFileHeader) {
|
|
82
|
+
_context.next = 28;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
throw new Error('No hash file in slpk');
|
|
86
|
+
case 28:
|
|
74
87
|
fileDataOffset = localFileHeader.fileDataOffset;
|
|
75
88
|
hashFile = archive.buffer.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
|
|
76
89
|
if (hashFile) {
|
|
77
|
-
_context.next =
|
|
90
|
+
_context.next = 32;
|
|
78
91
|
break;
|
|
79
92
|
}
|
|
80
93
|
throw new Error('No hash file in slpk');
|
|
81
|
-
case
|
|
82
|
-
_context.next =
|
|
94
|
+
case 32:
|
|
95
|
+
_context.next = 34;
|
|
83
96
|
return new _slpkArchieve.SLPKArchive(data, hashFile).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);
|
|
84
|
-
case
|
|
97
|
+
case 34:
|
|
85
98
|
return _context.abrupt("return", _context.sent);
|
|
86
|
-
case
|
|
99
|
+
case 35:
|
|
87
100
|
case "end":
|
|
88
101
|
return _context.stop();
|
|
89
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-slpk.js","names":["
|
|
1
|
+
{"version":3,"file":"parse-slpk.js","names":["_bufferFileProvider","require","_cdFileHeader","_localFileHeader","_slpkArchieve","getByteAt","offset","buffer","getUint8","byteOffset","parseSLPK","_x","_parseSLPK","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","_options$slpk$path","_options$slpk","_options$slpk2","options","archive","cdFileHeaderSignature","searchWindow","hashCDOffset","i","fileProvider","cdFileHeader","localFileHeader","fileDataOffset","hashFile","_args","wrap","_callee$","_context","prev","next","length","undefined","DataView","byteLength","every","val","index","abrupt","DataViewFileProvider","parseZipCDFileHeader","sent","fileName","Error","parseZipLocalFileHeader","localHeaderOffset","slice","compressedSize","SLPKArchive","getFile","slpk","path","pathMode","stop"],"sources":["../../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"sourcesContent":["import type {SLPKLoaderOptions} from '../../../i3s-slpk-loader';\nimport {DataViewFileProvider} from '../parse-zip/buffer-file-provider';\nimport {parseZipCDFileHeader} from '../parse-zip/cd-file-header';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\nimport {SLPKArchive} from './slpk-archieve';\n\n/**\n * Returns one byte from the provided buffer at the provided position\n * @param offset - position where to read\n * @param buffer - buffer to read\n * @returns one byte from the provided buffer at the provided position\n */\nconst getByteAt = (offset: number, buffer: DataView): number => {\n return buffer.getUint8(buffer.byteOffset + offset);\n};\n\nexport async function parseSLPK(data: ArrayBuffer, options: SLPKLoaderOptions = {}) {\n const archive = new DataView(data);\n const cdFileHeaderSignature = [80, 75, 1, 2];\n\n const searchWindow = [\n getByteAt(archive.byteLength - 1, archive),\n getByteAt(archive.byteLength - 2, archive),\n getByteAt(archive.byteLength - 3, archive),\n undefined\n ];\n\n let hashCDOffset = 0;\n\n // looking for the last record in the central directory\n for (let i = archive.byteLength - 4; i > -1; i--) {\n searchWindow[3] = searchWindow[2];\n searchWindow[2] = searchWindow[1];\n searchWindow[1] = searchWindow[0];\n searchWindow[0] = getByteAt(i, archive);\n if (searchWindow.every((val, index) => val === cdFileHeaderSignature[index])) {\n hashCDOffset = i;\n break;\n }\n }\n\n const fileProvider = new DataViewFileProvider(archive);\n\n const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);\n\n if (cdFileHeader.fileName !== '@specialIndexFileHASH128@') {\n throw new Error('No hash file in slpk');\n }\n\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('No hash file in slpk');\n }\n\n const fileDataOffset = localFileHeader.fileDataOffset;\n const hashFile = archive.buffer.slice(\n fileDataOffset,\n fileDataOffset + localFileHeader.compressedSize\n );\n\n if (!hashFile) {\n throw new Error('No hash file in slpk');\n }\n\n return await new SLPKArchive(data, hashFile).getFile(\n options.slpk?.path ?? '',\n options.slpk?.pathMode\n );\n}\n"],"mappings":"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"}
|
|
@@ -10,10 +10,10 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
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
|
-
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
14
13
|
var _md = _interopRequireDefault(require("md5"));
|
|
15
|
-
var _compression = require("@loaders.gl/compression");
|
|
16
14
|
var _localFileHeader = require("../parse-zip/local-file-header");
|
|
15
|
+
var _bufferFileProvider = require("../parse-zip/buffer-file-provider");
|
|
16
|
+
var _compression = require("@loaders.gl/compression");
|
|
17
17
|
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; } } }; }
|
|
18
18
|
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); }
|
|
19
19
|
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; }
|
|
@@ -134,7 +134,7 @@ var SLPKArchive = function () {
|
|
|
134
134
|
return _context.abrupt("return", Buffer.from(data));
|
|
135
135
|
case 26:
|
|
136
136
|
if (!(mode === 'raw')) {
|
|
137
|
-
_context.next =
|
|
137
|
+
_context.next = 37;
|
|
138
138
|
break;
|
|
139
139
|
}
|
|
140
140
|
_context.next = 29;
|
|
@@ -147,15 +147,18 @@ var SLPKArchive = function () {
|
|
|
147
147
|
}
|
|
148
148
|
return _context.abrupt("return", Buffer.from(decompressedFile));
|
|
149
149
|
case 32:
|
|
150
|
-
|
|
150
|
+
_context.next = 34;
|
|
151
|
+
return this.getFileBytes(path);
|
|
152
|
+
case 34:
|
|
153
|
+
fileWithoutCompression = _context.sent;
|
|
151
154
|
if (!fileWithoutCompression) {
|
|
152
|
-
_context.next =
|
|
155
|
+
_context.next = 37;
|
|
153
156
|
break;
|
|
154
157
|
}
|
|
155
158
|
return _context.abrupt("return", Buffer.from(fileWithoutCompression));
|
|
156
|
-
case
|
|
159
|
+
case 37:
|
|
157
160
|
throw new Error('No such file in the archieve');
|
|
158
|
-
case
|
|
161
|
+
case 38:
|
|
159
162
|
case "end":
|
|
160
163
|
return _context.stop();
|
|
161
164
|
}
|
|
@@ -170,34 +173,33 @@ var SLPKArchive = function () {
|
|
|
170
173
|
key: "getDataByPath",
|
|
171
174
|
value: function () {
|
|
172
175
|
var _getDataByPath = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(path) {
|
|
173
|
-
var data, decompressedData;
|
|
176
|
+
var data, compression, decompressedData;
|
|
174
177
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
175
178
|
while (1) switch (_context2.prev = _context2.next) {
|
|
176
179
|
case 0:
|
|
177
|
-
|
|
180
|
+
_context2.next = 2;
|
|
181
|
+
return this.getFileBytes(path);
|
|
182
|
+
case 2:
|
|
183
|
+
data = _context2.sent;
|
|
178
184
|
if (data) {
|
|
179
|
-
_context2.next =
|
|
185
|
+
_context2.next = 5;
|
|
180
186
|
break;
|
|
181
187
|
}
|
|
182
188
|
return _context2.abrupt("return", undefined);
|
|
183
|
-
case
|
|
189
|
+
case 5:
|
|
184
190
|
if (!/\.gz$/.test(path)) {
|
|
185
|
-
_context2.next =
|
|
191
|
+
_context2.next = 11;
|
|
186
192
|
break;
|
|
187
193
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
_workerType: 'test',
|
|
193
|
-
gzip: {}
|
|
194
|
-
});
|
|
195
|
-
case 6:
|
|
194
|
+
compression = new _compression.GZipCompression();
|
|
195
|
+
_context2.next = 9;
|
|
196
|
+
return compression.decompress(data);
|
|
197
|
+
case 9:
|
|
196
198
|
decompressedData = _context2.sent;
|
|
197
199
|
return _context2.abrupt("return", decompressedData);
|
|
198
|
-
case
|
|
200
|
+
case 11:
|
|
199
201
|
return _context2.abrupt("return", Buffer.from(data));
|
|
200
|
-
case
|
|
202
|
+
case 12:
|
|
201
203
|
case "end":
|
|
202
204
|
return _context2.stop();
|
|
203
205
|
}
|
|
@@ -210,18 +212,45 @@ var SLPKArchive = function () {
|
|
|
210
212
|
}()
|
|
211
213
|
}, {
|
|
212
214
|
key: "getFileBytes",
|
|
213
|
-
value: function
|
|
214
|
-
var
|
|
215
|
-
|
|
216
|
-
return
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
215
|
+
value: function () {
|
|
216
|
+
var _getFileBytes = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(path) {
|
|
217
|
+
var nameHash, fileInfo, localFileHeader, compressedFile;
|
|
218
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
219
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
220
|
+
case 0:
|
|
221
|
+
nameHash = Buffer.from((0, _md.default)(path), 'hex');
|
|
222
|
+
fileInfo = this.hashArray.find(function (val) {
|
|
223
|
+
return Buffer.compare(val.hash, nameHash) === 0;
|
|
224
|
+
});
|
|
225
|
+
if (fileInfo) {
|
|
226
|
+
_context3.next = 4;
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
return _context3.abrupt("return", undefined);
|
|
230
|
+
case 4:
|
|
231
|
+
_context3.next = 6;
|
|
232
|
+
return (0, _localFileHeader.parseZipLocalFileHeader)(this.slpkArchive.byteOffset + (fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.offset), new _bufferFileProvider.DataViewFileProvider(this.slpkArchive));
|
|
233
|
+
case 6:
|
|
234
|
+
localFileHeader = _context3.sent;
|
|
235
|
+
if (localFileHeader) {
|
|
236
|
+
_context3.next = 9;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
return _context3.abrupt("return", undefined);
|
|
240
|
+
case 9:
|
|
241
|
+
compressedFile = this.slpkArchive.buffer.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
242
|
+
return _context3.abrupt("return", compressedFile);
|
|
243
|
+
case 11:
|
|
244
|
+
case "end":
|
|
245
|
+
return _context3.stop();
|
|
246
|
+
}
|
|
247
|
+
}, _callee3, this);
|
|
248
|
+
}));
|
|
249
|
+
function getFileBytes(_x3) {
|
|
250
|
+
return _getFileBytes.apply(this, arguments);
|
|
220
251
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return compressedFile;
|
|
224
|
-
}
|
|
252
|
+
return getFileBytes;
|
|
253
|
+
}()
|
|
225
254
|
}]);
|
|
226
255
|
return SLPKArchive;
|
|
227
256
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slpk-archieve.js","names":["_workerUtils","require","_md","_interopRequireDefault","_compression","_localFileHeader","_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","slpkArchiveBuffer","hashFile","_classCallCheck2","default","_defineProperty2","slpkArchive","DataView","hashArray","parseHashFile","_createClass2","key","hashFileBuffer","Buffer","buffer","byteLength","offsetBuffer","byteOffset","offset","getUint32","push","hash","subarray","_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","getFileBytes","Error","stop","getFile","_x","apply","_getDataByPath","_callee2","decompressedData","_callee2$","_context2","processOnWorker","CompressionWorker","compression","operation","_workerType","gzip","_x2","nameHash","md5","fileInfo","compare","localFileHeader","parseZipLocalFileHeader","compressedFile","fileDataOffset","compressedSize","exports"],"sources":["../../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"sourcesContent":["import {processOnWorker} from '@loaders.gl/worker-utils';\nimport md5 from 'md5';\nimport {CompressionWorker} from '@loaders.gl/compression';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\n\n/** Element of hash array */\ntype HashElement = {\n /**\n * File name hash\n */\n hash: Buffer;\n /**\n * File offset in the archive\n */\n offset: number;\n};\n\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+$/,\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 slpkArchive: DataView;\n hashArray: {hash: Buffer; offset: number}[];\n constructor(slpkArchiveBuffer: ArrayBuffer, hashFile: ArrayBuffer) {\n this.slpkArchive = new DataView(slpkArchiveBuffer);\n this.hashArray = this.parseHashFile(hashFile);\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 */\n private 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.getUint32(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\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 = 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 const data = this.getFileBytes(path);\n if (!data) {\n return undefined;\n }\n if (/\\.gz$/.test(path)) {\n const decompressedData = await processOnWorker(CompressionWorker, data, {\n compression: 'gzip',\n operation: 'decompress',\n _workerType: 'test',\n gzip: {}\n });\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 getFileBytes(path: string): ArrayBuffer | undefined {\n const nameHash = Buffer.from(md5(path), 'hex');\n const fileInfo = this.hashArray.find((val) => Buffer.compare(val.hash, nameHash) === 0);\n if (!fileInfo) {\n return undefined;\n }\n\n const localFileHeader = parseZipLocalFileHeader(\n this.slpkArchive.byteOffset + fileInfo?.offset,\n this.slpkArchive\n );\n\n const compressedFile = this.slpkArchive.buffer.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n return compressedFile;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slpk-archieve.js","names":["_md","_interopRequireDefault","require","_localFileHeader","_bufferFileProvider","_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","slpkArchiveBuffer","hashFile","_classCallCheck2","default","_defineProperty2","slpkArchive","DataView","hashArray","parseHashFile","_createClass2","key","hashFileBuffer","Buffer","buffer","byteLength","offsetBuffer","byteOffset","offset","getUint32","push","hash","subarray","_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","getFileBytes","Error","stop","getFile","_x","apply","_getDataByPath","_callee2","compression","decompressedData","_callee2$","_context2","GZipCompression","decompress","_x2","_getFileBytes","_callee3","nameHash","fileInfo","localFileHeader","compressedFile","_callee3$","_context3","md5","compare","parseZipLocalFileHeader","DataViewFileProvider","fileDataOffset","compressedSize","_x3","exports"],"sources":["../../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"sourcesContent":["import md5 from 'md5';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\nimport {DataViewFileProvider} from '../parse-zip/buffer-file-provider';\nimport {GZipCompression} from '@loaders.gl/compression';\n\n/** Element of hash array */\ntype HashElement = {\n /**\n * File name hash\n */\n hash: Buffer;\n /**\n * File offset in the archive\n */\n offset: number;\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+$/,\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 slpkArchive: DataView;\n hashArray: {hash: Buffer; offset: number}[];\n constructor(slpkArchiveBuffer: ArrayBuffer, hashFile: ArrayBuffer) {\n this.slpkArchive = new DataView(slpkArchiveBuffer);\n this.hashArray = this.parseHashFile(hashFile);\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 */\n private 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.getUint32(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\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 const data = await this.getFileBytes(path);\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.hashArray.find((val) => Buffer.compare(val.hash, nameHash) === 0);\n if (!fileInfo) {\n return undefined;\n }\n\n const localFileHeader = await parseZipLocalFileHeader(\n this.slpkArchive.byteOffset + fileInfo?.offset,\n new DataViewFileProvider(this.slpkArchive)\n );\n if (!localFileHeader) {\n return undefined;\n }\n\n const compressedFile = this.slpkArchive.buffer.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n return compressedFile;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.DataViewFileProvider = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var DataViewFileProvider = function () {
|
|
12
|
+
function DataViewFileProvider(file) {
|
|
13
|
+
(0, _classCallCheck2.default)(this, DataViewFileProvider);
|
|
14
|
+
(0, _defineProperty2.default)(this, "file", void 0);
|
|
15
|
+
this.file = file;
|
|
16
|
+
}
|
|
17
|
+
(0, _createClass2.default)(DataViewFileProvider, [{
|
|
18
|
+
key: "getUint8",
|
|
19
|
+
value: function getUint8(offset) {
|
|
20
|
+
return Promise.resolve(this.file.getUint8(offset));
|
|
21
|
+
}
|
|
22
|
+
}, {
|
|
23
|
+
key: "getUint16",
|
|
24
|
+
value: function getUint16(offset) {
|
|
25
|
+
return Promise.resolve(this.file.getUint16(offset, true));
|
|
26
|
+
}
|
|
27
|
+
}, {
|
|
28
|
+
key: "getUint32",
|
|
29
|
+
value: function getUint32(offset) {
|
|
30
|
+
return Promise.resolve(this.file.getUint32(offset, true));
|
|
31
|
+
}
|
|
32
|
+
}, {
|
|
33
|
+
key: "slice",
|
|
34
|
+
value: function slice(startOffset, endOffset) {
|
|
35
|
+
return Promise.resolve(this.file.buffer.slice(startOffset, endOffset));
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "length",
|
|
39
|
+
get: function get() {
|
|
40
|
+
return this.file.byteLength;
|
|
41
|
+
}
|
|
42
|
+
}]);
|
|
43
|
+
return DataViewFileProvider;
|
|
44
|
+
}();
|
|
45
|
+
exports.DataViewFileProvider = DataViewFileProvider;
|
|
46
|
+
//# sourceMappingURL=buffer-file-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-file-provider.js","names":["DataViewFileProvider","file","_classCallCheck2","default","_defineProperty2","_createClass2","key","value","getUint8","offset","Promise","resolve","getUint16","getUint32","slice","startOffset","endOffset","buffer","get","byteLength","exports"],"sources":["../../../../../src/lib/parsers/parse-zip/buffer-file-provider.ts"],"sourcesContent":["import {FileProvider} from './file-provider';\n\n/**\n * Provides file data using DataView\n */\nexport class DataViewFileProvider implements FileProvider {\n /**\n * The DataView from which data is provided\n */\n private file: DataView;\n\n constructor(file: DataView) {\n this.file = file;\n }\n\n /**\n * Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n getUint8(offset: number): Promise<number> {\n return Promise.resolve(this.file.getUint8(offset));\n }\n\n /**\n * Gets an unsigned 16-bit integer at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n getUint16(offset: number): Promise<number> {\n return Promise.resolve(this.file.getUint16(offset, true));\n }\n\n /**\n * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.\n * @param offset The offset, in bytes, from the start of the file where to read the data.\n */\n getUint32(offset: number): Promise<number> {\n return Promise.resolve(this.file.getUint32(offset, true));\n }\n\n /**\n * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.\n * @param startOffset The offset, in bytes, from the start of the file where to start reading the data.\n * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.\n */\n slice(startOffset: number, endOffset: number): Promise<ArrayBuffer> {\n return Promise.resolve(this.file.buffer.slice(startOffset, endOffset));\n }\n\n /**\n * the length (in bytes) of the data.\n */\n get length() {\n return this.file.byteLength;\n }\n}\n"],"mappings":";;;;;;;;;;IAKaA,oBAAoB;EAM/B,SAAAA,qBAAYC,IAAc,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAH,oBAAA;IAAA,IAAAI,gBAAA,CAAAD,OAAA;IAC1B,IAAI,CAACF,IAAI,GAAGA,IAAI;EAClB;EAAC,IAAAI,aAAA,CAAAF,OAAA,EAAAH,oBAAA;IAAAM,GAAA;IAAAC,KAAA,EAMD,SAAAC,SAASC,MAAc,EAAmB;MACxC,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACV,IAAI,CAACO,QAAQ,CAACC,MAAM,CAAC,CAAC;IACpD;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAMD,SAAAK,UAAUH,MAAc,EAAmB;MACzC,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACV,IAAI,CAACW,SAAS,CAACH,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAMD,SAAAM,UAAUJ,MAAc,EAAmB;MACzC,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACV,IAAI,CAACY,SAAS,CAACJ,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAOD,SAAAO,MAAMC,WAAmB,EAAEC,SAAiB,EAAwB;MAClE,OAAON,OAAO,CAACC,OAAO,CAAC,IAAI,CAACV,IAAI,CAACgB,MAAM,CAACH,KAAK,CAACC,WAAW,EAAEC,SAAS,CAAC,CAAC;IACxE;EAAC;IAAAV,GAAA;IAAAY,GAAA,EAKD,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAACjB,IAAI,CAACkB,UAAU;IAC7B;EAAC;EAAA,OAAAnB,oBAAA;AAAA;AAAAoB,OAAA,CAAApB,oBAAA,GAAAA,oBAAA"}
|
|
@@ -1,44 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.parseZipCDFileHeader = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var parseZipCDFileHeader = function () {
|
|
11
|
+
var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(headerOffset, buffer) {
|
|
12
|
+
var offsets, compressedSize, uncompressedSize, fileNameLength, fileName, extraOffset, oldFormatOffset, fileDataOffset, offsetInZip64Data, localHeaderOffset;
|
|
13
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
14
|
+
while (1) switch (_context.prev = _context.next) {
|
|
15
|
+
case 0:
|
|
16
|
+
offsets = {
|
|
17
|
+
CD_COMPRESSED_SIZE_OFFSET: 20,
|
|
18
|
+
CD_UNCOMPRESSED_SIZE_OFFSET: 24,
|
|
19
|
+
CD_FILE_NAME_LENGTH_OFFSET: 28,
|
|
20
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET: 30,
|
|
21
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET: 42,
|
|
22
|
+
CD_FILE_NAME_OFFSET: 46
|
|
23
|
+
};
|
|
24
|
+
_context.next = 3;
|
|
25
|
+
return buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET);
|
|
26
|
+
case 3:
|
|
27
|
+
compressedSize = _context.sent;
|
|
28
|
+
_context.next = 6;
|
|
29
|
+
return buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET);
|
|
30
|
+
case 6:
|
|
31
|
+
uncompressedSize = _context.sent;
|
|
32
|
+
_context.next = 9;
|
|
33
|
+
return buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
34
|
+
case 9:
|
|
35
|
+
fileNameLength = _context.sent;
|
|
36
|
+
_context.t0 = new TextDecoder();
|
|
37
|
+
_context.next = 13;
|
|
38
|
+
return buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength);
|
|
39
|
+
case 13:
|
|
40
|
+
_context.t1 = _context.sent;
|
|
41
|
+
fileName = _context.t0.decode.call(_context.t0, _context.t1);
|
|
42
|
+
extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength;
|
|
43
|
+
_context.next = 18;
|
|
44
|
+
return buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
45
|
+
case 18:
|
|
46
|
+
oldFormatOffset = _context.sent;
|
|
47
|
+
fileDataOffset = oldFormatOffset;
|
|
48
|
+
if (!(fileDataOffset === 0xffffffff)) {
|
|
49
|
+
_context.next = 27;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
offsetInZip64Data = 4;
|
|
53
|
+
if (compressedSize === 0xffffffff) {
|
|
54
|
+
offsetInZip64Data += 8;
|
|
55
|
+
}
|
|
56
|
+
if (uncompressedSize === 0xffffffff) {
|
|
57
|
+
offsetInZip64Data += 8;
|
|
58
|
+
}
|
|
59
|
+
_context.next = 26;
|
|
60
|
+
return buffer.getUint32(extraOffset + offsetInZip64Data);
|
|
61
|
+
case 26:
|
|
62
|
+
fileDataOffset = _context.sent;
|
|
63
|
+
case 27:
|
|
64
|
+
localHeaderOffset = fileDataOffset;
|
|
65
|
+
return _context.abrupt("return", {
|
|
66
|
+
compressedSize: compressedSize,
|
|
67
|
+
uncompressedSize: uncompressedSize,
|
|
68
|
+
fileNameLength: fileNameLength,
|
|
69
|
+
fileName: fileName,
|
|
70
|
+
extraOffset: extraOffset,
|
|
71
|
+
localHeaderOffset: localHeaderOffset
|
|
72
|
+
});
|
|
73
|
+
case 29:
|
|
74
|
+
case "end":
|
|
75
|
+
return _context.stop();
|
|
76
|
+
}
|
|
77
|
+
}, _callee);
|
|
78
|
+
}));
|
|
79
|
+
return function parseZipCDFileHeader(_x, _x2) {
|
|
80
|
+
return _ref.apply(this, arguments);
|
|
15
81
|
};
|
|
16
|
-
|
|
17
|
-
var uncompressedSize = buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET, true);
|
|
18
|
-
var fileNameLength = buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET, true);
|
|
19
|
-
var fileName = buffer.buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength);
|
|
20
|
-
var extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength;
|
|
21
|
-
var oldFormatOffset = buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET, true);
|
|
22
|
-
var fileDataOffset = oldFormatOffset;
|
|
23
|
-
if (fileDataOffset === 0xffffffff) {
|
|
24
|
-
var offsetInZip64Data = 4;
|
|
25
|
-
if (compressedSize === 0xffffffff) {
|
|
26
|
-
offsetInZip64Data += 8;
|
|
27
|
-
}
|
|
28
|
-
if (uncompressedSize === 0xffffffff) {
|
|
29
|
-
offsetInZip64Data += 8;
|
|
30
|
-
}
|
|
31
|
-
fileDataOffset = buffer.getUint32(extraOffset + offsetInZip64Data, true);
|
|
32
|
-
}
|
|
33
|
-
var localHeaderOffset = fileDataOffset;
|
|
34
|
-
return {
|
|
35
|
-
compressedSize: compressedSize,
|
|
36
|
-
uncompressedSize: uncompressedSize,
|
|
37
|
-
fileNameLength: fileNameLength,
|
|
38
|
-
fileName: fileName,
|
|
39
|
-
extraOffset: extraOffset,
|
|
40
|
-
localHeaderOffset: localHeaderOffset
|
|
41
|
-
};
|
|
42
|
-
};
|
|
82
|
+
}();
|
|
43
83
|
exports.parseZipCDFileHeader = parseZipCDFileHeader;
|
|
44
84
|
//# sourceMappingURL=cd-file-header.js.map
|