@loaders.gl/3d-tiles 4.0.0-alpha.21 → 4.0.0-alpha.22

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 (89) hide show
  1. package/dist/{tz3/tz3-archive.d.ts → 3d-tiles-archive/3d-tiles-archive-archive.d.ts} +12 -6
  2. package/dist/3d-tiles-archive/3d-tiles-archive-archive.d.ts.map +1 -0
  3. package/dist/{tz3/tz3-archive.js → 3d-tiles-archive/3d-tiles-archive-archive.js} +16 -16
  4. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts +10 -0
  5. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts.map +1 -0
  6. package/dist/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +5 -5
  7. package/dist/3d-tiles-archive-loader.d.ts +13 -0
  8. package/dist/3d-tiles-archive-loader.d.ts.map +1 -0
  9. package/dist/{tz3-loader.js → 3d-tiles-archive-loader.js} +9 -8
  10. package/dist/dist.min.js +375 -72
  11. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js +126 -0
  12. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  13. package/dist/es5/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +7 -7
  14. package/dist/es5/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  15. package/dist/es5/3d-tiles-archive-loader.js +50 -0
  16. package/dist/es5/3d-tiles-archive-loader.js.map +1 -0
  17. package/dist/es5/index.js +14 -7
  18. package/dist/es5/index.js.map +1 -1
  19. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js +151 -0
  20. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  21. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +3 -3
  22. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  23. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +12 -12
  24. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  25. package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -1
  26. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  27. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +6 -6
  28. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  29. package/dist/es5/lib/utils/version.js +1 -1
  30. package/dist/esm/{tz3/tz3-archive.js → 3d-tiles-archive/3d-tiles-archive-archive.js} +14 -19
  31. package/dist/esm/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  32. package/dist/esm/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +4 -4
  33. package/dist/esm/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  34. package/dist/esm/3d-tiles-archive-loader.js +20 -0
  35. package/dist/esm/3d-tiles-archive-loader.js.map +1 -0
  36. package/dist/esm/index.js +2 -1
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js +49 -0
  39. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  40. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +5 -6
  41. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  42. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +5 -7
  43. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  44. package/dist/esm/lib/parsers/parse-3d-tile-header.js +2 -1
  45. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  46. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +2 -4
  47. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  48. package/dist/esm/lib/utils/version.js +1 -1
  49. package/dist/index.d.ts +3 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +5 -3
  52. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts +31 -0
  53. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts.map +1 -0
  54. package/dist/lib/filesystems/tiles-3d-archive-file-system.js +75 -0
  55. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -1
  56. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +2 -2
  57. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +1 -1
  58. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
  59. package/dist/lib/parsers/parse-3d-tile-gltf.js +6 -6
  60. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  61. package/dist/lib/parsers/parse-3d-tile-header.js +2 -1
  62. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +1 -1
  63. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -1
  64. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +10 -2
  65. package/package.json +8 -7
  66. package/src/{tz3/tz3-archive.ts → 3d-tiles-archive/3d-tiles-archive-archive.ts} +20 -18
  67. package/src/{tz3/tz3-parser.ts → 3d-tiles-archive/3d-tiles-archive-parser.ts} +4 -4
  68. package/src/3d-tiles-archive-loader.ts +47 -0
  69. package/src/index.ts +3 -2
  70. package/src/lib/filesystems/tiles-3d-archive-file-system.ts +97 -0
  71. package/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts +8 -3
  72. package/src/lib/parsers/parse-3d-tile-gltf.ts +8 -8
  73. package/src/lib/parsers/parse-3d-tile-header.ts +2 -1
  74. package/src/lib/parsers/parse-3d-tile-point-cloud.ts +10 -3
  75. package/dist/es5/tz3/tz3-archive.js +0 -161
  76. package/dist/es5/tz3/tz3-archive.js.map +0 -1
  77. package/dist/es5/tz3/tz3-parser.js.map +0 -1
  78. package/dist/es5/tz3-loader.js +0 -48
  79. package/dist/es5/tz3-loader.js.map +0 -1
  80. package/dist/esm/tz3/tz3-archive.js.map +0 -1
  81. package/dist/esm/tz3/tz3-parser.js.map +0 -1
  82. package/dist/esm/tz3-loader.js +0 -19
  83. package/dist/esm/tz3-loader.js.map +0 -1
  84. package/dist/tz3/tz3-archive.d.ts.map +0 -1
  85. package/dist/tz3/tz3-parser.d.ts +0 -10
  86. package/dist/tz3/tz3-parser.d.ts.map +0 -1
  87. package/dist/tz3-loader.d.ts +0 -14
  88. package/dist/tz3-loader.d.ts.map +0 -1
  89. package/src/tz3-loader.ts +0 -41
@@ -2,6 +2,7 @@
2
2
  // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
3
3
 
4
4
  import {DracoLoader} from '@loaders.gl/draco';
5
+ import {LoaderContext, parseFromContext} from '@loaders.gl/loader-utils';
5
6
  import {GL} from '@loaders.gl/math';
6
7
  import {Vector3} from '@math.gl/core';
7
8
 
@@ -13,7 +14,6 @@ import {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors'
13
14
  import {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';
14
15
  import {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';
15
16
  import {Tiles3DLoaderOptions} from '../../tiles-3d-loader';
16
- import {LoaderContext} from '@loaders.gl/loader-utils';
17
17
  import {Tiles3DTileContent} from '../../types';
18
18
 
19
19
  export async function parsePointCloud3DTile(
@@ -262,7 +262,6 @@ export async function loadDraco(
262
262
  if (!context) {
263
263
  return;
264
264
  }
265
- const {parse} = context;
266
265
  const dracoOptions = {
267
266
  ...options,
268
267
  draco: {
@@ -274,17 +273,20 @@ export async function loadDraco(
274
273
  // The entire tileset might be included, too expensive to serialize
275
274
  delete dracoOptions['3d-tiles'];
276
275
 
277
- const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);
276
+ const data = await parseFromContext(dracoData.buffer, DracoLoader, dracoOptions, context);
278
277
 
279
278
  const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
280
279
  const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;
281
280
  const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;
282
281
  const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;
282
+ // @ts-expect-error
283
283
  const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;
284
+ // @ts-expect-error
284
285
  const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;
285
286
  if (isQuantizedDraco) {
286
287
  // Draco quantization range == quantized volume scale - size in meters of the quantized volume
287
288
  // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc
289
+ // @ts-expect-error This doesn't look right
288
290
  const quantization = data.POSITION.data.quantization;
289
291
  const range = quantization.range;
290
292
  tile.quantizedVolumeScale = new Vector3(range, range, range);
@@ -293,6 +295,7 @@ export async function loadDraco(
293
295
  tile.isQuantizedDraco = true;
294
296
  }
295
297
  if (isOctEncodedDraco) {
298
+ // @ts-expect-error This doesn't look right
296
299
  tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;
297
300
  tile.isOctEncodedDraco = true;
298
301
  }
@@ -308,9 +311,13 @@ export async function loadDraco(
308
311
  }
309
312
 
310
313
  tile.attributes = {
314
+ // @ts-expect-error
311
315
  positions: decodedPositions,
316
+ // @ts-expect-error
312
317
  colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),
318
+ // @ts-expect-error
313
319
  normals: decodedNormals,
320
+ // @ts-expect-error
314
321
  batchIds: decodedBatchIds,
315
322
  ...batchTableAttributes
316
323
  };
@@ -1,161 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.TZ3Archive = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
- var _md = _interopRequireDefault(require("md5"));
14
- var _zip = require("@loaders.gl/zip");
15
- var _compression = require("@loaders.gl/compression");
16
- var COMPRESSION_METHODS = {
17
- 0: function () {
18
- var _2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(compressedFile) {
19
- return _regenerator.default.wrap(function _callee$(_context) {
20
- while (1) switch (_context.prev = _context.next) {
21
- case 0:
22
- return _context.abrupt("return", compressedFile);
23
- case 1:
24
- case "end":
25
- return _context.stop();
26
- }
27
- }, _callee);
28
- }));
29
- function _(_x) {
30
- return _2.apply(this, arguments);
31
- }
32
- return _;
33
- }(),
34
- 8: function () {
35
- var _3 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(compressedFile) {
36
- var compression, decompressedData;
37
- return _regenerator.default.wrap(function _callee2$(_context2) {
38
- while (1) switch (_context2.prev = _context2.next) {
39
- case 0:
40
- compression = new _compression.DeflateCompression({
41
- raw: true
42
- });
43
- _context2.next = 3;
44
- return compression.decompress(compressedFile);
45
- case 3:
46
- decompressedData = _context2.sent;
47
- return _context2.abrupt("return", decompressedData);
48
- case 5:
49
- case "end":
50
- return _context2.stop();
51
- }
52
- }, _callee2);
53
- }));
54
- function _(_x2) {
55
- return _3.apply(this, arguments);
56
- }
57
- return _;
58
- }()
59
- };
60
- var TZ3Archive = function () {
61
- function TZ3Archive(tz3Archive, hashFile) {
62
- (0, _classCallCheck2.default)(this, TZ3Archive);
63
- (0, _defineProperty2.default)(this, "tz3Archive", void 0);
64
- (0, _defineProperty2.default)(this, "hashArray", void 0);
65
- this.tz3Archive = tz3Archive;
66
- this.hashArray = hashFile;
67
- }
68
- (0, _createClass2.default)(TZ3Archive, [{
69
- key: "getFile",
70
- value: function () {
71
- var _getFile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(path) {
72
- var data, decompressedFile;
73
- return _regenerator.default.wrap(function _callee3$(_context3) {
74
- while (1) switch (_context3.prev = _context3.next) {
75
- case 0:
76
- _context3.next = 2;
77
- return this.getFileBytes(path.toLocaleLowerCase());
78
- case 2:
79
- data = _context3.sent;
80
- if (data) {
81
- _context3.next = 7;
82
- break;
83
- }
84
- _context3.next = 6;
85
- return this.getFileBytes(path);
86
- case 6:
87
- data = _context3.sent;
88
- case 7:
89
- if (data) {
90
- _context3.next = 9;
91
- break;
92
- }
93
- throw new Error('No such file in the archieve');
94
- case 9:
95
- decompressedFile = Buffer.from(data);
96
- return _context3.abrupt("return", decompressedFile);
97
- case 11:
98
- case "end":
99
- return _context3.stop();
100
- }
101
- }, _callee3, this);
102
- }));
103
- function getFile(_x3) {
104
- return _getFile.apply(this, arguments);
105
- }
106
- return getFile;
107
- }()
108
- }, {
109
- key: "getFileBytes",
110
- value: function () {
111
- var _getFileBytes = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(path) {
112
- var nameHash, fileInfo, localFileHeader, compressedFile, compressionMethod;
113
- return _regenerator.default.wrap(function _callee4$(_context4) {
114
- while (1) switch (_context4.prev = _context4.next) {
115
- case 0:
116
- nameHash = Buffer.from((0, _md.default)(path), 'hex');
117
- fileInfo = (0, _zip.findBin)(nameHash, this.hashArray);
118
- if (fileInfo) {
119
- _context4.next = 4;
120
- break;
121
- }
122
- return _context4.abrupt("return", null);
123
- case 4:
124
- _context4.next = 6;
125
- return (0, _zip.parseZipLocalFileHeader)(fileInfo.offset, this.tz3Archive);
126
- case 6:
127
- localFileHeader = _context4.sent;
128
- if (localFileHeader) {
129
- _context4.next = 9;
130
- break;
131
- }
132
- return _context4.abrupt("return", null);
133
- case 9:
134
- _context4.next = 11;
135
- return this.tz3Archive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
136
- case 11:
137
- compressedFile = _context4.sent;
138
- compressionMethod = COMPRESSION_METHODS[localFileHeader.compressionMethod];
139
- if (compressionMethod) {
140
- _context4.next = 15;
141
- break;
142
- }
143
- throw Error('Only Deflation compression is supported');
144
- case 15:
145
- return _context4.abrupt("return", compressionMethod(compressedFile));
146
- case 16:
147
- case "end":
148
- return _context4.stop();
149
- }
150
- }, _callee4, this);
151
- }));
152
- function getFileBytes(_x4) {
153
- return _getFileBytes.apply(this, arguments);
154
- }
155
- return getFileBytes;
156
- }()
157
- }]);
158
- return TZ3Archive;
159
- }();
160
- exports.TZ3Archive = TZ3Archive;
161
- //# sourceMappingURL=tz3-archive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-archive.js","names":["_md","_interopRequireDefault","require","_zip","_compression","COMPRESSION_METHODS","_2","_asyncToGenerator2","default","_regenerator","mark","_callee","compressedFile","wrap","_callee$","_context","prev","next","abrupt","stop","_","_x","apply","arguments","_3","_callee2","compression","decompressedData","_callee2$","_context2","DeflateCompression","raw","decompress","sent","_x2","TZ3Archive","tz3Archive","hashFile","_classCallCheck2","_defineProperty2","hashArray","_createClass2","key","value","_getFile","_callee3","path","data","decompressedFile","_callee3$","_context3","getFileBytes","toLocaleLowerCase","Error","Buffer","from","getFile","_x3","_getFileBytes","_callee4","nameHash","fileInfo","localFileHeader","compressionMethod","_callee4$","_context4","md5","findBin","parseZipLocalFileHeader","offset","slice","fileDataOffset","compressedSize","_x4","exports"],"sources":["../../../src/tz3/tz3-archive.ts"],"sourcesContent":["import md5 from 'md5';\nimport {FileProvider, parseZipLocalFileHeader, HashElement, findBin} from '@loaders.gl/zip';\nimport {DeflateCompression} from '@loaders.gl/compression';\n\ntype CompressionHandler = (compressedFile: ArrayBuffer) => Promise<ArrayBuffer>;\n\n/**\n * Handling different compression types in zip\n */\nconst COMPRESSION_METHODS: {[key: number]: CompressionHandler} = {\n /** No compression */\n 0: async (compressedFile) => compressedFile,\n\n /** Deflation */\n 8: async (compressedFile) => {\n const compression = new DeflateCompression({raw: true});\n const decompressedData = await compression.decompress(compressedFile);\n return decompressedData;\n }\n};\n\n/**\n * Class for handling information about 3tz file\n */\nexport class TZ3Archive {\n private tz3Archive: FileProvider;\n private hashArray: HashElement[];\n constructor(tz3Archive: FileProvider, hashFile: HashElement[]) {\n this.tz3Archive = tz3Archive;\n this.hashArray = hashFile;\n }\n\n /**\n * Returns file with the given path from 3tz archive\n * @param path - path inside the 3tz\n * @returns buffer with ready to use file\n */\n async getFile(path: string): Promise<Buffer> {\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 throw new Error('No such file in the archieve');\n }\n const decompressedFile = Buffer.from(data);\n\n return decompressedFile;\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 | null> {\n const nameHash = Buffer.from(md5(path), 'hex');\n const fileInfo = findBin(nameHash, this.hashArray); // implement binary search\n if (!fileInfo) {\n return null;\n }\n\n const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.tz3Archive);\n if (!localFileHeader) {\n return null;\n }\n\n const compressedFile = await this.tz3Archive.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n const compressionMethod = COMPRESSION_METHODS[localFileHeader.compressionMethod];\n if (!compressionMethod) {\n throw Error('Only Deflation compression is supported');\n }\n\n return compressionMethod(compressedFile);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-parser.js","names":["_zip","require","_tz3Archive","parse3tz","_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","TZ3Archive","stop","_x","_x2","apply","arguments","exports"],"sources":["../../../src/tz3/tz3-parser.ts"],"sourcesContent":["import {\n FileProvider,\n HashElement,\n cdSignature as cdHeaderSignature,\n generateHashInfo,\n parseHashFile,\n parseZipCDFileHeader,\n parseZipLocalFileHeader,\n searchFromTheEnd\n} from '@loaders.gl/zip';\nimport {TZ3Archive} from './tz3-archive';\n\n/**\n * Creates 3tz file handler from raw file\n * @param fileProvider raw file data\n * @param cb is called with information message during parsing\n * @returns 3tz file handler\n */\nexport const parse3tz = async (\n fileProvider: FileProvider,\n cb?: (msg: string) => void\n): Promise<TZ3Archive> => {\n const hashCDOffset = await searchFromTheEnd(fileProvider, cdHeaderSignature);\n\n const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);\n\n let hashData: HashElement[];\n if (cdFileHeader?.fileName !== '@3dtilesIndex1@') {\n cb?.('3tz 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?.('3tz contains hash file');\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('corrupted 3tz');\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 TZ3Archive(fileProvider, hashData);\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAUA,IAAAC,WAAA,GAAAD,OAAA;AAQO,IAAME,QAAQ;EAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QACtBC,YAA0B,EAC1BC,EAA0B;IAAA,IAAAC,YAAA,EAAAC,YAAA,EAAAC,QAAA,EAAAC,eAAA,EAAAC,cAAA,EAAAC,QAAA;IAAA,OAAAV,YAAA,CAAAD,OAAA,CAAAY,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAE,IAAA;UAAA,OAEC,IAAAC,qBAAgB,EAACb,YAAY,EAAEc,gBAAiB,CAAC;QAAA;UAAtEZ,YAAY,GAAAQ,QAAA,CAAAK,IAAA;UAAAL,QAAA,CAAAE,IAAA;UAAA,OAES,IAAAI,yBAAoB,EAACd,YAAY,EAAEF,YAAY,CAAC;QAAA;UAArEG,YAAY,GAAAO,QAAA,CAAAK,IAAA;UAAA,MAGd,CAAAZ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEc,QAAQ,MAAK,iBAAiB;YAAAP,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC9CX,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,8BAA8B,CAAC;UAACS,QAAA,CAAAE,IAAA;UAAA,OACpB,IAAAM,qBAAgB,EAAClB,YAAY,CAAC;QAAA;UAA/CI,QAAQ,GAAAM,QAAA,CAAAK,IAAA;UACRd,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,oEAAoE,CAAC;UAACS,QAAA,CAAAE,IAAA;UAAA;QAAA;UAE3EX,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,wBAAwB,CAAC;UAACS,QAAA,CAAAE,IAAA;UAAA,OACD,IAAAO,4BAAuB,EACnDhB,YAAY,CAACiB,iBAAiB,EAC9BpB,YACF,CAAC;QAAA;UAHKK,eAAe,GAAAK,QAAA,CAAAK,IAAA;UAAA,IAIhBV,eAAe;YAAAK,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACZ,IAAIS,KAAK,CAAC,eAAe,CAAC;QAAA;UAG5Bf,cAAc,GAAGD,eAAe,CAACC,cAAc;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAC9BZ,YAAY,CAACsB,KAAK,CACvChB,cAAc,EACdA,cAAc,GAAGD,eAAe,CAACkB,cACnC,CAAC;QAAA;UAHKhB,QAAQ,GAAAG,QAAA,CAAAK,IAAA;UAKdX,QAAQ,GAAG,IAAAoB,kBAAa,EAACjB,QAAQ,CAAC;QAAC;UAAA,OAAAG,QAAA,CAAAe,MAAA,WAG9B,IAAIC,sBAAU,CAAC1B,YAAY,EAAEI,QAAQ,CAAC;QAAA;QAAA;UAAA,OAAAM,QAAA,CAAAiB,IAAA;MAAA;IAAA,GAAA5B,OAAA;EAAA,CAC9C;EAAA,gBAjCYN,QAAQA,CAAAmC,EAAA,EAAAC,GAAA;IAAA,OAAAnC,IAAA,CAAAoC,KAAA,OAAAC,SAAA;EAAA;AAAA,GAiCpB;AAACC,OAAA,CAAAvC,QAAA,GAAAA,QAAA"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.TZ3Loader = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _zip = require("@loaders.gl/zip");
11
- var _tz3Parser = require("./tz3/tz3-parser");
12
- var VERSION = typeof "4.0.0-alpha.21" !== 'undefined' ? "4.0.0-alpha.21" : 'latest';
13
- var TZ3Loader = {
14
- name: '3tz',
15
- id: '3tz',
16
- module: 'i3s',
17
- version: VERSION,
18
- mimeTypes: ['application/octet-stream'],
19
- parse: parse3tz,
20
- extensions: ['3tz'],
21
- options: {}
22
- };
23
- exports.TZ3Loader = TZ3Loader;
24
- function parse3tz(_x) {
25
- return _parse3tz.apply(this, arguments);
26
- }
27
- function _parse3tz() {
28
- _parse3tz = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
29
- var _options$tz3$path, _options$tz;
30
- var options,
31
- _args = arguments;
32
- return _regenerator.default.wrap(function _callee$(_context) {
33
- while (1) switch (_context.prev = _context.next) {
34
- case 0:
35
- options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
36
- _context.next = 3;
37
- return (0, _tz3Parser.parse3tz)(new _zip.DataViewFile(new DataView(data)));
38
- case 3:
39
- return _context.abrupt("return", _context.sent.getFile((_options$tz3$path = (_options$tz = options.tz3) === null || _options$tz === void 0 ? void 0 : _options$tz.path) !== null && _options$tz3$path !== void 0 ? _options$tz3$path : ''));
40
- case 4:
41
- case "end":
42
- return _context.stop();
43
- }
44
- }, _callee);
45
- }));
46
- return _parse3tz.apply(this, arguments);
47
- }
48
- //# sourceMappingURL=tz3-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-loader.js","names":["_zip","require","_tz3Parser","VERSION","TZ3Loader","name","id","module","version","mimeTypes","parse","parse3tz","extensions","options","exports","_x","_parse3tz","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","_options$tz3$path","_options$tz","_args","wrap","_callee$","_context","prev","next","length","undefined","parse3tzFromProvider","DataViewFile","DataView","abrupt","sent","getFile","tz3","path","stop"],"sources":["../../src/tz3-loader.ts"],"sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {DataViewFile} from '@loaders.gl/zip';\nimport {parse3tz as parse3tzFromProvider} from './tz3/tz3-parser';\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 3tz */\nexport type TZ3LoaderOptions = LoaderOptions & {\n tz3?: {\n /** path inside the 3tz archive */\n path?: string;\n };\n};\n\n/**\n * Loader for 3tz packages\n */\nexport const TZ3Loader: LoaderWithParser<Buffer, never, TZ3LoaderOptions> = {\n name: '3tz',\n id: '3tz',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parse3tz,\n extensions: ['3tz'],\n options: {}\n};\n\n/**\n * returns a single file from the 3tz archive\n * @param data 3tz archive data\n * @param options options\n * @returns requested file\n */\nasync function parse3tz(data: ArrayBuffer, options: TZ3LoaderOptions = {}) {\n return (await parse3tzFromProvider(new DataViewFile(new DataView(data)))).getFile(\n options.tz3?.path ?? ''\n );\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAapE,IAAMC,SAA4D,GAAG;EAC1EC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAEC,QAAQ;EACfC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAACC,OAAA,CAAAV,SAAA,GAAAA,SAAA;AAAA,SAQaO,QAAQA,CAAAI,EAAA;EAAA,OAAAC,SAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,UAAA;EAAAA,SAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAvB,SAAAC,QAAwBC,IAAiB;IAAA,IAAAC,iBAAA,EAAAC,WAAA;IAAA,IAAAb,OAAA;MAAAc,KAAA,GAAAT,SAAA;IAAA,OAAAG,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAEnB,OAAyB,GAAAc,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAG,CAAC,CAAC;UAAAG,QAAA,CAAAE,IAAA;UAAA,OACzD,IAAAG,mBAAoB,EAAC,IAAIC,iBAAY,CAAC,IAAIC,QAAQ,CAACb,IAAI,CAAC,CAAC,CAAC;QAAA;UAAA,OAAAM,QAAA,CAAAQ,MAAA,WAAAR,QAAA,CAAAS,IAAA,CAAEC,OAAO,EAAAf,iBAAA,IAAAC,WAAA,GAC/Eb,OAAO,CAAC4B,GAAG,cAAAf,WAAA,uBAAXA,WAAA,CAAagB,IAAI,cAAAjB,iBAAA,cAAAA,iBAAA,GAAI,EAAE;QAAA;QAAA;UAAA,OAAAK,QAAA,CAAAa,IAAA;MAAA;IAAA,GAAApB,OAAA;EAAA,CAE1B;EAAA,OAAAP,SAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-archive.js","names":["md5","parseZipLocalFileHeader","findBin","DeflateCompression","COMPRESSION_METHODS","compressedFile","compression","raw","decompressedData","decompress","TZ3Archive","constructor","tz3Archive","hashFile","_defineProperty","hashArray","getFile","path","data","getFileBytes","toLocaleLowerCase","Error","decompressedFile","Buffer","from","nameHash","fileInfo","localFileHeader","offset","slice","fileDataOffset","compressedSize","compressionMethod"],"sources":["../../../src/tz3/tz3-archive.ts"],"sourcesContent":["import md5 from 'md5';\nimport {FileProvider, parseZipLocalFileHeader, HashElement, findBin} from '@loaders.gl/zip';\nimport {DeflateCompression} from '@loaders.gl/compression';\n\ntype CompressionHandler = (compressedFile: ArrayBuffer) => Promise<ArrayBuffer>;\n\n/**\n * Handling different compression types in zip\n */\nconst COMPRESSION_METHODS: {[key: number]: CompressionHandler} = {\n /** No compression */\n 0: async (compressedFile) => compressedFile,\n\n /** Deflation */\n 8: async (compressedFile) => {\n const compression = new DeflateCompression({raw: true});\n const decompressedData = await compression.decompress(compressedFile);\n return decompressedData;\n }\n};\n\n/**\n * Class for handling information about 3tz file\n */\nexport class TZ3Archive {\n private tz3Archive: FileProvider;\n private hashArray: HashElement[];\n constructor(tz3Archive: FileProvider, hashFile: HashElement[]) {\n this.tz3Archive = tz3Archive;\n this.hashArray = hashFile;\n }\n\n /**\n * Returns file with the given path from 3tz archive\n * @param path - path inside the 3tz\n * @returns buffer with ready to use file\n */\n async getFile(path: string): Promise<Buffer> {\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 throw new Error('No such file in the archieve');\n }\n const decompressedFile = Buffer.from(data);\n\n return decompressedFile;\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 | null> {\n const nameHash = Buffer.from(md5(path), 'hex');\n const fileInfo = findBin(nameHash, this.hashArray); // implement binary search\n if (!fileInfo) {\n return null;\n }\n\n const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.tz3Archive);\n if (!localFileHeader) {\n return null;\n }\n\n const compressedFile = await this.tz3Archive.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n const compressionMethod = COMPRESSION_METHODS[localFileHeader.compressionMethod];\n if (!compressionMethod) {\n throw Error('Only Deflation compression is supported');\n }\n\n return compressionMethod(compressedFile);\n }\n}\n"],"mappings":";AAAA,OAAOA,GAAG,MAAM,KAAK;AACrB,SAAsBC,uBAAuB,EAAeC,OAAO,QAAO,iBAAiB;AAC3F,SAAQC,kBAAkB,QAAO,yBAAyB;AAO1D,MAAMC,mBAAwD,GAAG;EAE/D,CAAC,EAAE,MAAOC,cAAc,IAAKA,cAAc;EAG3C,CAAC,EAAE,MAAOA,cAAc,IAAK;IAC3B,MAAMC,WAAW,GAAG,IAAIH,kBAAkB,CAAC;MAACI,GAAG,EAAE;IAAI,CAAC,CAAC;IACvD,MAAMC,gBAAgB,GAAG,MAAMF,WAAW,CAACG,UAAU,CAACJ,cAAc,CAAC;IACrE,OAAOG,gBAAgB;EACzB;AACF,CAAC;AAKD,OAAO,MAAME,UAAU,CAAC;EAGtBC,WAAWA,CAACC,UAAwB,EAAEC,QAAuB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC7D,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACG,SAAS,GAAGF,QAAQ;EAC3B;EAOA,MAAMG,OAAOA,CAACC,IAAY,EAAmB;IAG3C,IAAIC,IAAI,GAAG,MAAM,IAAI,CAACC,YAAY,CAACF,IAAI,CAACG,iBAAiB,CAAC,CAAC,CAAC;IAC5D,IAAI,CAACF,IAAI,EAAE;MACTA,IAAI,GAAG,MAAM,IAAI,CAACC,YAAY,CAACF,IAAI,CAAC;IACtC;IACA,IAAI,CAACC,IAAI,EAAE;MACT,MAAM,IAAIG,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAACN,IAAI,CAAC;IAE1C,OAAOI,gBAAgB;EACzB;EAOA,MAAcH,YAAYA,CAACF,IAAY,EAA+B;IACpE,MAAMQ,QAAQ,GAAGF,MAAM,CAACC,IAAI,CAACxB,GAAG,CAACiB,IAAI,CAAC,EAAE,KAAK,CAAC;IAC9C,MAAMS,QAAQ,GAAGxB,OAAO,CAACuB,QAAQ,EAAE,IAAI,CAACV,SAAS,CAAC;IAClD,IAAI,CAACW,QAAQ,EAAE;MACb,OAAO,IAAI;IACb;IAEA,MAAMC,eAAe,GAAG,MAAM1B,uBAAuB,CAACyB,QAAQ,CAACE,MAAM,EAAE,IAAI,CAAChB,UAAU,CAAC;IACvF,IAAI,CAACe,eAAe,EAAE;MACpB,OAAO,IAAI;IACb;IAEA,MAAMtB,cAAc,GAAG,MAAM,IAAI,CAACO,UAAU,CAACiB,KAAK,CAChDF,eAAe,CAACG,cAAc,EAC9BH,eAAe,CAACG,cAAc,GAAGH,eAAe,CAACI,cACnD,CAAC;IAED,MAAMC,iBAAiB,GAAG5B,mBAAmB,CAACuB,eAAe,CAACK,iBAAiB,CAAC;IAChF,IAAI,CAACA,iBAAiB,EAAE;MACtB,MAAMX,KAAK,CAAC,yCAAyC,CAAC;IACxD;IAEA,OAAOW,iBAAiB,CAAC3B,cAAc,CAAC;EAC1C;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-parser.js","names":["cdSignature","cdHeaderSignature","generateHashInfo","parseHashFile","parseZipCDFileHeader","parseZipLocalFileHeader","searchFromTheEnd","TZ3Archive","parse3tz","fileProvider","cb","hashCDOffset","cdFileHeader","hashData","fileName","localFileHeader","localHeaderOffset","Error","fileDataOffset","hashFile","slice","compressedSize"],"sources":["../../../src/tz3/tz3-parser.ts"],"sourcesContent":["import {\n FileProvider,\n HashElement,\n cdSignature as cdHeaderSignature,\n generateHashInfo,\n parseHashFile,\n parseZipCDFileHeader,\n parseZipLocalFileHeader,\n searchFromTheEnd\n} from '@loaders.gl/zip';\nimport {TZ3Archive} from './tz3-archive';\n\n/**\n * Creates 3tz file handler from raw file\n * @param fileProvider raw file data\n * @param cb is called with information message during parsing\n * @returns 3tz file handler\n */\nexport const parse3tz = async (\n fileProvider: FileProvider,\n cb?: (msg: string) => void\n): Promise<TZ3Archive> => {\n const hashCDOffset = await searchFromTheEnd(fileProvider, cdHeaderSignature);\n\n const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);\n\n let hashData: HashElement[];\n if (cdFileHeader?.fileName !== '@3dtilesIndex1@') {\n cb?.('3tz 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?.('3tz contains hash file');\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('corrupted 3tz');\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 TZ3Archive(fileProvider, hashData);\n};\n"],"mappings":"AAAA,SAGEA,WAAW,IAAIC,iBAAiB,EAChCC,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,uBAAuB,EACvBC,gBAAgB,QACX,iBAAiB;AACxB,SAAQC,UAAU,QAAO,eAAe;AAQxC,OAAO,MAAMC,QAAQ,GAAG,MAAAA,CACtBC,YAA0B,EAC1BC,EAA0B,KACF;EACxB,MAAMC,YAAY,GAAG,MAAML,gBAAgB,CAACG,YAAY,EAAER,iBAAiB,CAAC;EAE5E,MAAMW,YAAY,GAAG,MAAMR,oBAAoB,CAACO,YAAY,EAAEF,YAAY,CAAC;EAE3E,IAAII,QAAuB;EAC3B,IAAI,CAAAD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEE,QAAQ,MAAK,iBAAiB,EAAE;IAChDJ,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,8BAA8B,CAAC;IACpCG,QAAQ,GAAG,MAAMX,gBAAgB,CAACO,YAAY,CAAC;IAC/CC,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,oEAAoE,CAAC;EAC5E,CAAC,MAAM;IACLA,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,wBAAwB,CAAC;IAC9B,MAAMK,eAAe,GAAG,MAAMV,uBAAuB,CACnDO,YAAY,CAACI,iBAAiB,EAC9BP,YACF,CAAC;IACD,IAAI,CAACM,eAAe,EAAE;MACpB,MAAM,IAAIE,KAAK,CAAC,eAAe,CAAC;IAClC;IAEA,MAAMC,cAAc,GAAGH,eAAe,CAACG,cAAc;IACrD,MAAMC,QAAQ,GAAG,MAAMV,YAAY,CAACW,KAAK,CACvCF,cAAc,EACdA,cAAc,GAAGH,eAAe,CAACM,cACnC,CAAC;IAEDR,QAAQ,GAAGV,aAAa,CAACgB,QAAQ,CAAC;EACpC;EAEA,OAAO,IAAIZ,UAAU,CAACE,YAAY,EAAEI,QAAQ,CAAC;AAC/C,CAAC"}
@@ -1,19 +0,0 @@
1
- import { DataViewFile } from '@loaders.gl/zip';
2
- import { parse3tz as parse3tzFromProvider } from './tz3/tz3-parser';
3
- const VERSION = typeof "4.0.0-alpha.21" !== 'undefined' ? "4.0.0-alpha.21" : 'latest';
4
- export const TZ3Loader = {
5
- name: '3tz',
6
- id: '3tz',
7
- module: 'i3s',
8
- version: VERSION,
9
- mimeTypes: ['application/octet-stream'],
10
- parse: parse3tz,
11
- extensions: ['3tz'],
12
- options: {}
13
- };
14
- async function parse3tz(data) {
15
- var _options$tz3$path, _options$tz;
16
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17
- return (await parse3tzFromProvider(new DataViewFile(new DataView(data)))).getFile((_options$tz3$path = (_options$tz = options.tz3) === null || _options$tz === void 0 ? void 0 : _options$tz.path) !== null && _options$tz3$path !== void 0 ? _options$tz3$path : '');
18
- }
19
- //# sourceMappingURL=tz3-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-loader.js","names":["DataViewFile","parse3tz","parse3tzFromProvider","VERSION","TZ3Loader","name","id","module","version","mimeTypes","parse","extensions","options","data","_options$tz3$path","_options$tz","arguments","length","undefined","DataView","getFile","tz3","path"],"sources":["../../src/tz3-loader.ts"],"sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {DataViewFile} from '@loaders.gl/zip';\nimport {parse3tz as parse3tzFromProvider} from './tz3/tz3-parser';\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 3tz */\nexport type TZ3LoaderOptions = LoaderOptions & {\n tz3?: {\n /** path inside the 3tz archive */\n path?: string;\n };\n};\n\n/**\n * Loader for 3tz packages\n */\nexport const TZ3Loader: LoaderWithParser<Buffer, never, TZ3LoaderOptions> = {\n name: '3tz',\n id: '3tz',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parse3tz,\n extensions: ['3tz'],\n options: {}\n};\n\n/**\n * returns a single file from the 3tz archive\n * @param data 3tz archive data\n * @param options options\n * @returns requested file\n */\nasync function parse3tz(data: ArrayBuffer, options: TZ3LoaderOptions = {}) {\n return (await parse3tzFromProvider(new DataViewFile(new DataView(data)))).getFile(\n options.tz3?.path ?? ''\n );\n}\n"],"mappings":"AACA,SAAQA,YAAY,QAAO,iBAAiB;AAC5C,SAAQC,QAAQ,IAAIC,oBAAoB,QAAO,kBAAkB;AAIjE,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAa3E,OAAO,MAAMC,SAA4D,GAAG;EAC1EC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAET,QAAQ;EACfU,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,eAAeX,QAAQA,CAACY,IAAiB,EAAkC;EAAA,IAAAC,iBAAA,EAAAC,WAAA;EAAA,IAAhCH,OAAyB,GAAAI,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvE,OAAO,CAAC,MAAMd,oBAAoB,CAAC,IAAIF,YAAY,CAAC,IAAImB,QAAQ,CAACN,IAAI,CAAC,CAAC,CAAC,EAAEO,OAAO,EAAAN,iBAAA,IAAAC,WAAA,GAC/EH,OAAO,CAACS,GAAG,cAAAN,WAAA,uBAAXA,WAAA,CAAaO,IAAI,cAAAR,iBAAA,cAAAA,iBAAA,GAAI,EACvB,CAAC;AACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-archive.d.ts","sourceRoot":"","sources":["../../src/tz3/tz3-archive.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAA2B,WAAW,EAAU,MAAM,iBAAiB,CAAC;AAoB5F;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAgB;gBACrB,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;IAK7D;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe5C;;;;OAIG;YACW,YAAY;CAwB3B"}
@@ -1,10 +0,0 @@
1
- import { FileProvider } from '@loaders.gl/zip';
2
- import { TZ3Archive } from './tz3-archive';
3
- /**
4
- * Creates 3tz file handler from raw file
5
- * @param fileProvider raw file data
6
- * @param cb is called with information message during parsing
7
- * @returns 3tz file handler
8
- */
9
- export declare const parse3tz: (fileProvider: FileProvider, cb?: ((msg: string) => void) | undefined) => Promise<TZ3Archive>;
10
- //# sourceMappingURL=tz3-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-parser.d.ts","sourceRoot":"","sources":["../../src/tz3/tz3-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAQb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,iBACL,YAAY,cACf,MAAM,KAAK,IAAI,kBACzB,QAAQ,UAAU,CA8BpB,CAAC"}
@@ -1,14 +0,0 @@
1
- /// <reference types="node" />
2
- import { LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
3
- /** options to load data from 3tz */
4
- export type TZ3LoaderOptions = LoaderOptions & {
5
- tz3?: {
6
- /** path inside the 3tz archive */
7
- path?: string;
8
- };
9
- };
10
- /**
11
- * Loader for 3tz packages
12
- */
13
- export declare const TZ3Loader: LoaderWithParser<Buffer, never, TZ3LoaderOptions>;
14
- //# sourceMappingURL=tz3-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tz3-loader.d.ts","sourceRoot":"","sources":["../src/tz3-loader.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAQzE,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,kCAAkC;QAClC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,CASvE,CAAC"}
package/src/tz3-loader.ts DELETED
@@ -1,41 +0,0 @@
1
- import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
2
- import {DataViewFile} from '@loaders.gl/zip';
3
- import {parse3tz as parse3tzFromProvider} from './tz3/tz3-parser';
4
-
5
- // __VERSION__ is injected by babel-plugin-version-inline
6
- // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
8
-
9
- /** options to load data from 3tz */
10
- export type TZ3LoaderOptions = LoaderOptions & {
11
- tz3?: {
12
- /** path inside the 3tz archive */
13
- path?: string;
14
- };
15
- };
16
-
17
- /**
18
- * Loader for 3tz packages
19
- */
20
- export const TZ3Loader: LoaderWithParser<Buffer, never, TZ3LoaderOptions> = {
21
- name: '3tz',
22
- id: '3tz',
23
- module: 'i3s',
24
- version: VERSION,
25
- mimeTypes: ['application/octet-stream'],
26
- parse: parse3tz,
27
- extensions: ['3tz'],
28
- options: {}
29
- };
30
-
31
- /**
32
- * returns a single file from the 3tz archive
33
- * @param data 3tz archive data
34
- * @param options options
35
- * @returns requested file
36
- */
37
- async function parse3tz(data: ArrayBuffer, options: TZ3LoaderOptions = {}) {
38
- return (await parse3tzFromProvider(new DataViewFile(new DataView(data)))).getFile(
39
- options.tz3?.path ?? ''
40
- );
41
- }