@loaders.gl/i3s 4.3.0-alpha.1 → 4.3.0-alpha.2
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/arcgis-webscene-loader.js +1 -1
- package/dist/dist.dev.js +81 -55
- package/dist/dist.min.js +1 -1
- package/dist/i3s-attribute-loader.js +1 -1
- package/dist/i3s-building-scene-layer-loader.js +1 -1
- package/dist/i3s-content-loader.js +1 -1
- package/dist/i3s-content-worker-node.js +38 -38
- package/dist/i3s-content-worker-node.js.map +4 -4
- package/dist/i3s-content-worker.js +34 -23
- package/dist/i3s-loader.js +1 -1
- package/dist/i3s-node-page-loader.js +1 -1
- package/dist/i3s-slpk-loader.js +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.cjs.map +2 -2
- package/package.json +12 -12
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseWebscene } from "./lib/parsers/parse-arcgis-webscene.js";
|
|
2
2
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
3
3
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
4
|
-
const VERSION = typeof "4.
|
|
4
|
+
const VERSION = typeof "4.3.0-alpha.1" !== 'undefined' ? "4.3.0-alpha.1" : 'latest';
|
|
5
5
|
/**
|
|
6
6
|
* Loader for ArcGIS WebScene
|
|
7
7
|
* Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/
|
package/dist/dist.dev.js
CHANGED
|
@@ -12820,6 +12820,7 @@ var __exports__ = (() => {
|
|
|
12820
12820
|
}
|
|
12821
12821
|
|
|
12822
12822
|
// ../zip/src/parse-zip/search-from-the-end.ts
|
|
12823
|
+
var buffLength = 1024;
|
|
12823
12824
|
var searchFromTheEnd = async (file, target) => {
|
|
12824
12825
|
const searchWindow = [
|
|
12825
12826
|
await file.getUint8(file.length - 1n),
|
|
@@ -12827,18 +12828,25 @@ var __exports__ = (() => {
|
|
|
12827
12828
|
await file.getUint8(file.length - 3n),
|
|
12828
12829
|
void 0
|
|
12829
12830
|
];
|
|
12830
|
-
let targetOffset =
|
|
12831
|
-
|
|
12832
|
-
|
|
12833
|
-
|
|
12834
|
-
|
|
12835
|
-
|
|
12836
|
-
|
|
12837
|
-
|
|
12838
|
-
|
|
12831
|
+
let targetOffset = -1;
|
|
12832
|
+
let point = file.length - 4n;
|
|
12833
|
+
do {
|
|
12834
|
+
const prevPoint = point;
|
|
12835
|
+
point -= BigInt(buffLength);
|
|
12836
|
+
point = point >= 0n ? point : 0n;
|
|
12837
|
+
const buff = new Uint8Array(await file.slice(point, prevPoint));
|
|
12838
|
+
for (let i2 = buff.length - 1; i2 > -1; i2--) {
|
|
12839
|
+
searchWindow[3] = searchWindow[2];
|
|
12840
|
+
searchWindow[2] = searchWindow[1];
|
|
12841
|
+
searchWindow[1] = searchWindow[0];
|
|
12842
|
+
searchWindow[0] = buff[i2];
|
|
12843
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
12844
|
+
targetOffset = i2;
|
|
12845
|
+
break;
|
|
12846
|
+
}
|
|
12839
12847
|
}
|
|
12840
|
-
}
|
|
12841
|
-
return targetOffset;
|
|
12848
|
+
} while (targetOffset === -1 && point > 0n);
|
|
12849
|
+
return point + BigInt(targetOffset);
|
|
12842
12850
|
};
|
|
12843
12851
|
|
|
12844
12852
|
// ../zip/src/parse-zip/end-of-central-directory.ts
|
|
@@ -12846,13 +12854,16 @@ var __exports__ = (() => {
|
|
|
12846
12854
|
var zip64EoCDLocatorSignature = new Uint8Array([80, 75, 6, 7]);
|
|
12847
12855
|
var zip64EoCDSignature = new Uint8Array([80, 75, 6, 6]);
|
|
12848
12856
|
var CD_RECORDS_NUMBER_OFFSET = 8n;
|
|
12857
|
+
var CD_CD_BYTE_SIZE_OFFSET = 12n;
|
|
12849
12858
|
var CD_START_OFFSET_OFFSET = 16n;
|
|
12850
12859
|
var ZIP64_EOCD_START_OFFSET_OFFSET = 8n;
|
|
12851
12860
|
var ZIP64_CD_RECORDS_NUMBER_OFFSET = 24n;
|
|
12861
|
+
var ZIP64_CD_CD_BYTE_SIZE_OFFSET = 40n;
|
|
12852
12862
|
var ZIP64_CD_START_OFFSET_OFFSET = 48n;
|
|
12853
12863
|
var parseEoCDRecord = async (file) => {
|
|
12854
12864
|
const zipEoCDOffset = await searchFromTheEnd(file, eoCDSignature);
|
|
12855
12865
|
let cdRecordsNumber = BigInt(await file.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
12866
|
+
let cdByteSize = BigInt(await file.getUint32(zipEoCDOffset + CD_CD_BYTE_SIZE_OFFSET));
|
|
12856
12867
|
let cdStartOffset = BigInt(await file.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
12857
12868
|
let zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
12858
12869
|
let zip64EoCDOffset = 0n;
|
|
@@ -12866,6 +12877,7 @@ var __exports__ = (() => {
|
|
|
12866
12877
|
throw new Error("zip64 EoCD not found");
|
|
12867
12878
|
}
|
|
12868
12879
|
cdRecordsNumber = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
12880
|
+
cdByteSize = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_CD_BYTE_SIZE_OFFSET);
|
|
12869
12881
|
cdStartOffset = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
12870
12882
|
} else {
|
|
12871
12883
|
zip64EoCDLocatorOffset = 0n;
|
|
@@ -12873,6 +12885,7 @@ var __exports__ = (() => {
|
|
|
12873
12885
|
return {
|
|
12874
12886
|
cdRecordsNumber,
|
|
12875
12887
|
cdStartOffset,
|
|
12888
|
+
cdByteSize,
|
|
12876
12889
|
offsets: {
|
|
12877
12890
|
zip64EoCDOffset,
|
|
12878
12891
|
zip64EoCDLocatorOffset,
|
|
@@ -13020,34 +13033,41 @@ var __exports__ = (() => {
|
|
|
13020
13033
|
];
|
|
13021
13034
|
|
|
13022
13035
|
// ../zip/src/parse-zip/cd-file-header.ts
|
|
13023
|
-
var CD_COMPRESSED_SIZE_OFFSET =
|
|
13024
|
-
var CD_UNCOMPRESSED_SIZE_OFFSET =
|
|
13025
|
-
var CD_FILE_NAME_LENGTH_OFFSET =
|
|
13026
|
-
var CD_EXTRA_FIELD_LENGTH_OFFSET =
|
|
13027
|
-
var CD_START_DISK_OFFSET =
|
|
13028
|
-
var CD_LOCAL_HEADER_OFFSET_OFFSET =
|
|
13036
|
+
var CD_COMPRESSED_SIZE_OFFSET = 20;
|
|
13037
|
+
var CD_UNCOMPRESSED_SIZE_OFFSET = 24;
|
|
13038
|
+
var CD_FILE_NAME_LENGTH_OFFSET = 28;
|
|
13039
|
+
var CD_EXTRA_FIELD_LENGTH_OFFSET = 30;
|
|
13040
|
+
var CD_START_DISK_OFFSET = 32;
|
|
13041
|
+
var CD_LOCAL_HEADER_OFFSET_OFFSET = 42;
|
|
13029
13042
|
var CD_FILE_NAME_OFFSET = 46n;
|
|
13030
13043
|
var signature = new Uint8Array([80, 75, 1, 2]);
|
|
13031
13044
|
var parseZipCDFileHeader = async (headerOffset, file) => {
|
|
13032
|
-
|
|
13045
|
+
if (headerOffset >= file.length) {
|
|
13046
|
+
return null;
|
|
13047
|
+
}
|
|
13048
|
+
const mainHeader = new DataView(
|
|
13049
|
+
await file.slice(headerOffset, headerOffset + CD_FILE_NAME_OFFSET)
|
|
13050
|
+
);
|
|
13051
|
+
const magicBytes = mainHeader.buffer.slice(0, 4);
|
|
13033
13052
|
if (!compareArrayBuffers(magicBytes, signature.buffer)) {
|
|
13034
13053
|
return null;
|
|
13035
13054
|
}
|
|
13036
|
-
const compressedSize = BigInt(
|
|
13037
|
-
const uncompressedSize = BigInt(
|
|
13038
|
-
const extraFieldLength =
|
|
13039
|
-
const startDisk = BigInt(
|
|
13040
|
-
const fileNameLength =
|
|
13041
|
-
const
|
|
13055
|
+
const compressedSize = BigInt(mainHeader.getUint32(CD_COMPRESSED_SIZE_OFFSET, true));
|
|
13056
|
+
const uncompressedSize = BigInt(mainHeader.getUint32(CD_UNCOMPRESSED_SIZE_OFFSET, true));
|
|
13057
|
+
const extraFieldLength = mainHeader.getUint16(CD_EXTRA_FIELD_LENGTH_OFFSET, true);
|
|
13058
|
+
const startDisk = BigInt(mainHeader.getUint16(CD_START_DISK_OFFSET, true));
|
|
13059
|
+
const fileNameLength = mainHeader.getUint16(CD_FILE_NAME_LENGTH_OFFSET, true);
|
|
13060
|
+
const additionalHeader = await file.slice(
|
|
13042
13061
|
headerOffset + CD_FILE_NAME_OFFSET,
|
|
13043
|
-
headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)
|
|
13062
|
+
headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength)
|
|
13044
13063
|
);
|
|
13064
|
+
const filenameBytes = additionalHeader.slice(0, fileNameLength);
|
|
13045
13065
|
const fileName = new TextDecoder().decode(filenameBytes);
|
|
13046
13066
|
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
13047
|
-
const oldFormatOffset =
|
|
13067
|
+
const oldFormatOffset = mainHeader.getUint32(CD_LOCAL_HEADER_OFFSET_OFFSET, true);
|
|
13048
13068
|
const localHeaderOffset = BigInt(oldFormatOffset);
|
|
13049
13069
|
const extraField = new DataView(
|
|
13050
|
-
|
|
13070
|
+
additionalHeader.slice(fileNameLength, additionalHeader.byteLength)
|
|
13051
13071
|
);
|
|
13052
13072
|
const zip64data = {
|
|
13053
13073
|
uncompressedSize,
|
|
@@ -13066,13 +13086,16 @@ var __exports__ = (() => {
|
|
|
13066
13086
|
};
|
|
13067
13087
|
};
|
|
13068
13088
|
async function* makeZipCDHeaderIterator(fileProvider) {
|
|
13069
|
-
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
13070
|
-
|
|
13089
|
+
const { cdStartOffset, cdByteSize } = await parseEoCDRecord(fileProvider);
|
|
13090
|
+
const centralDirectory = new DataViewFile(
|
|
13091
|
+
new DataView(await fileProvider.slice(cdStartOffset, cdStartOffset + cdByteSize))
|
|
13092
|
+
);
|
|
13093
|
+
let cdHeader = await parseZipCDFileHeader(0n, centralDirectory);
|
|
13071
13094
|
while (cdHeader) {
|
|
13072
13095
|
yield cdHeader;
|
|
13073
13096
|
cdHeader = await parseZipCDFileHeader(
|
|
13074
13097
|
cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),
|
|
13075
|
-
|
|
13098
|
+
centralDirectory
|
|
13076
13099
|
);
|
|
13077
13100
|
}
|
|
13078
13101
|
}
|
|
@@ -13219,42 +13242,45 @@ var __exports__ = (() => {
|
|
|
13219
13242
|
];
|
|
13220
13243
|
|
|
13221
13244
|
// ../zip/src/parse-zip/local-file-header.ts
|
|
13222
|
-
var COMPRESSION_METHOD_OFFSET =
|
|
13223
|
-
var COMPRESSED_SIZE_OFFSET =
|
|
13224
|
-
var UNCOMPRESSED_SIZE_OFFSET =
|
|
13225
|
-
var FILE_NAME_LENGTH_OFFSET =
|
|
13226
|
-
var EXTRA_FIELD_LENGTH_OFFSET =
|
|
13245
|
+
var COMPRESSION_METHOD_OFFSET = 8;
|
|
13246
|
+
var COMPRESSED_SIZE_OFFSET = 18;
|
|
13247
|
+
var UNCOMPRESSED_SIZE_OFFSET = 22;
|
|
13248
|
+
var FILE_NAME_LENGTH_OFFSET = 26;
|
|
13249
|
+
var EXTRA_FIELD_LENGTH_OFFSET = 28;
|
|
13227
13250
|
var FILE_NAME_OFFSET = 30n;
|
|
13228
13251
|
var signature2 = new Uint8Array([80, 75, 3, 4]);
|
|
13229
|
-
var parseZipLocalFileHeader = async (headerOffset,
|
|
13230
|
-
const
|
|
13252
|
+
var parseZipLocalFileHeader = async (headerOffset, file) => {
|
|
13253
|
+
const mainHeader = new DataView(await file.slice(headerOffset, headerOffset + FILE_NAME_OFFSET));
|
|
13254
|
+
const magicBytes = mainHeader.buffer.slice(0, 4);
|
|
13231
13255
|
if (!compareArrayBuffers(magicBytes, signature2)) {
|
|
13232
13256
|
return null;
|
|
13233
13257
|
}
|
|
13234
|
-
const fileNameLength =
|
|
13235
|
-
const
|
|
13236
|
-
|
|
13237
|
-
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13241
|
-
const
|
|
13258
|
+
const fileNameLength = mainHeader.getUint16(FILE_NAME_LENGTH_OFFSET, true);
|
|
13259
|
+
const extraFieldLength = mainHeader.getUint16(EXTRA_FIELD_LENGTH_OFFSET, true);
|
|
13260
|
+
const additionalHeader = await file.slice(
|
|
13261
|
+
headerOffset + FILE_NAME_OFFSET,
|
|
13262
|
+
headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength)
|
|
13263
|
+
);
|
|
13264
|
+
const fileNameBuffer = additionalHeader.slice(0, fileNameLength);
|
|
13265
|
+
const extraDataBuffer = new DataView(
|
|
13266
|
+
additionalHeader.slice(fileNameLength, additionalHeader.byteLength)
|
|
13267
|
+
);
|
|
13268
|
+
const fileName = new TextDecoder().decode(fileNameBuffer).split("\\").join("/");
|
|
13242
13269
|
let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
13243
|
-
const compressionMethod =
|
|
13244
|
-
let compressedSize = BigInt(
|
|
13245
|
-
let uncompressedSize = BigInt(
|
|
13246
|
-
|
|
13247
|
-
let offsetInZip64Data = 4n;
|
|
13270
|
+
const compressionMethod = mainHeader.getUint16(COMPRESSION_METHOD_OFFSET, true);
|
|
13271
|
+
let compressedSize = BigInt(mainHeader.getUint32(COMPRESSED_SIZE_OFFSET, true));
|
|
13272
|
+
let uncompressedSize = BigInt(mainHeader.getUint32(UNCOMPRESSED_SIZE_OFFSET, true));
|
|
13273
|
+
let offsetInZip64Data = 4;
|
|
13248
13274
|
if (uncompressedSize === BigInt(4294967295)) {
|
|
13249
|
-
uncompressedSize =
|
|
13250
|
-
offsetInZip64Data +=
|
|
13275
|
+
uncompressedSize = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13276
|
+
offsetInZip64Data += 8;
|
|
13251
13277
|
}
|
|
13252
13278
|
if (compressedSize === BigInt(4294967295)) {
|
|
13253
|
-
compressedSize =
|
|
13254
|
-
offsetInZip64Data +=
|
|
13279
|
+
compressedSize = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13280
|
+
offsetInZip64Data += 8;
|
|
13255
13281
|
}
|
|
13256
13282
|
if (fileDataOffset === BigInt(4294967295)) {
|
|
13257
|
-
fileDataOffset =
|
|
13283
|
+
fileDataOffset = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13258
13284
|
}
|
|
13259
13285
|
return {
|
|
13260
13286
|
fileNameLength,
|