@loaders.gl/i3s 4.3.0-alpha.1 → 4.3.0-alpha.3
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 +86 -56
- 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 +68 -59
- 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 +11 -7
- package/dist/index.cjs.map +2 -2
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +2 -2
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -2
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/utils/url-utils.d.ts.map +1 -1
- package/dist/lib/utils/url-utils.js +5 -1
- package/package.json +12 -12
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +2 -2
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +6 -2
- package/src/lib/utils/url-utils.ts +7 -2
|
@@ -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.2" !== 'undefined' ? "4.3.0-alpha.2" : '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
|
@@ -4645,7 +4645,7 @@ var __exports__ = (() => {
|
|
|
4645
4645
|
}
|
|
4646
4646
|
};
|
|
4647
4647
|
|
|
4648
|
-
// ../loader-utils/src/lib/file-provider/file-provider.ts
|
|
4648
|
+
// ../loader-utils/src/lib/file-provider/file-provider-interface.ts
|
|
4649
4649
|
var isFileProvider = (fileProvider) => {
|
|
4650
4650
|
return fileProvider?.getUint8 && fileProvider?.slice && fileProvider?.length;
|
|
4651
4651
|
};
|
|
@@ -11470,7 +11470,11 @@ var __exports__ = (() => {
|
|
|
11470
11470
|
try {
|
|
11471
11471
|
const urlObj = new URL(url);
|
|
11472
11472
|
urlWithoutParams = `${urlObj.origin}${urlObj.pathname}`;
|
|
11473
|
+
if (urlWithoutParams.startsWith("null")) {
|
|
11474
|
+
urlWithoutParams = null;
|
|
11475
|
+
}
|
|
11473
11476
|
} catch (e2) {
|
|
11477
|
+
urlWithoutParams = null;
|
|
11474
11478
|
}
|
|
11475
11479
|
return urlWithoutParams || url;
|
|
11476
11480
|
}
|
|
@@ -12820,6 +12824,7 @@ var __exports__ = (() => {
|
|
|
12820
12824
|
}
|
|
12821
12825
|
|
|
12822
12826
|
// ../zip/src/parse-zip/search-from-the-end.ts
|
|
12827
|
+
var buffLength = 1024;
|
|
12823
12828
|
var searchFromTheEnd = async (file, target) => {
|
|
12824
12829
|
const searchWindow = [
|
|
12825
12830
|
await file.getUint8(file.length - 1n),
|
|
@@ -12827,18 +12832,25 @@ var __exports__ = (() => {
|
|
|
12827
12832
|
await file.getUint8(file.length - 3n),
|
|
12828
12833
|
void 0
|
|
12829
12834
|
];
|
|
12830
|
-
let targetOffset =
|
|
12831
|
-
|
|
12832
|
-
|
|
12833
|
-
|
|
12834
|
-
|
|
12835
|
-
|
|
12836
|
-
|
|
12837
|
-
|
|
12838
|
-
|
|
12835
|
+
let targetOffset = -1;
|
|
12836
|
+
let point = file.length - 4n;
|
|
12837
|
+
do {
|
|
12838
|
+
const prevPoint = point;
|
|
12839
|
+
point -= BigInt(buffLength);
|
|
12840
|
+
point = point >= 0n ? point : 0n;
|
|
12841
|
+
const buff = new Uint8Array(await file.slice(point, prevPoint));
|
|
12842
|
+
for (let i2 = buff.length - 1; i2 > -1; i2--) {
|
|
12843
|
+
searchWindow[3] = searchWindow[2];
|
|
12844
|
+
searchWindow[2] = searchWindow[1];
|
|
12845
|
+
searchWindow[1] = searchWindow[0];
|
|
12846
|
+
searchWindow[0] = buff[i2];
|
|
12847
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
12848
|
+
targetOffset = i2;
|
|
12849
|
+
break;
|
|
12850
|
+
}
|
|
12839
12851
|
}
|
|
12840
|
-
}
|
|
12841
|
-
return targetOffset;
|
|
12852
|
+
} while (targetOffset === -1 && point > 0n);
|
|
12853
|
+
return point + BigInt(targetOffset);
|
|
12842
12854
|
};
|
|
12843
12855
|
|
|
12844
12856
|
// ../zip/src/parse-zip/end-of-central-directory.ts
|
|
@@ -12846,13 +12858,16 @@ var __exports__ = (() => {
|
|
|
12846
12858
|
var zip64EoCDLocatorSignature = new Uint8Array([80, 75, 6, 7]);
|
|
12847
12859
|
var zip64EoCDSignature = new Uint8Array([80, 75, 6, 6]);
|
|
12848
12860
|
var CD_RECORDS_NUMBER_OFFSET = 8n;
|
|
12861
|
+
var CD_CD_BYTE_SIZE_OFFSET = 12n;
|
|
12849
12862
|
var CD_START_OFFSET_OFFSET = 16n;
|
|
12850
12863
|
var ZIP64_EOCD_START_OFFSET_OFFSET = 8n;
|
|
12851
12864
|
var ZIP64_CD_RECORDS_NUMBER_OFFSET = 24n;
|
|
12865
|
+
var ZIP64_CD_CD_BYTE_SIZE_OFFSET = 40n;
|
|
12852
12866
|
var ZIP64_CD_START_OFFSET_OFFSET = 48n;
|
|
12853
12867
|
var parseEoCDRecord = async (file) => {
|
|
12854
12868
|
const zipEoCDOffset = await searchFromTheEnd(file, eoCDSignature);
|
|
12855
12869
|
let cdRecordsNumber = BigInt(await file.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
12870
|
+
let cdByteSize = BigInt(await file.getUint32(zipEoCDOffset + CD_CD_BYTE_SIZE_OFFSET));
|
|
12856
12871
|
let cdStartOffset = BigInt(await file.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
12857
12872
|
let zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
12858
12873
|
let zip64EoCDOffset = 0n;
|
|
@@ -12866,6 +12881,7 @@ var __exports__ = (() => {
|
|
|
12866
12881
|
throw new Error("zip64 EoCD not found");
|
|
12867
12882
|
}
|
|
12868
12883
|
cdRecordsNumber = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
12884
|
+
cdByteSize = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_CD_BYTE_SIZE_OFFSET);
|
|
12869
12885
|
cdStartOffset = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
12870
12886
|
} else {
|
|
12871
12887
|
zip64EoCDLocatorOffset = 0n;
|
|
@@ -12873,6 +12889,7 @@ var __exports__ = (() => {
|
|
|
12873
12889
|
return {
|
|
12874
12890
|
cdRecordsNumber,
|
|
12875
12891
|
cdStartOffset,
|
|
12892
|
+
cdByteSize,
|
|
12876
12893
|
offsets: {
|
|
12877
12894
|
zip64EoCDOffset,
|
|
12878
12895
|
zip64EoCDLocatorOffset,
|
|
@@ -13020,34 +13037,41 @@ var __exports__ = (() => {
|
|
|
13020
13037
|
];
|
|
13021
13038
|
|
|
13022
13039
|
// ../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 =
|
|
13040
|
+
var CD_COMPRESSED_SIZE_OFFSET = 20;
|
|
13041
|
+
var CD_UNCOMPRESSED_SIZE_OFFSET = 24;
|
|
13042
|
+
var CD_FILE_NAME_LENGTH_OFFSET = 28;
|
|
13043
|
+
var CD_EXTRA_FIELD_LENGTH_OFFSET = 30;
|
|
13044
|
+
var CD_START_DISK_OFFSET = 32;
|
|
13045
|
+
var CD_LOCAL_HEADER_OFFSET_OFFSET = 42;
|
|
13029
13046
|
var CD_FILE_NAME_OFFSET = 46n;
|
|
13030
13047
|
var signature = new Uint8Array([80, 75, 1, 2]);
|
|
13031
13048
|
var parseZipCDFileHeader = async (headerOffset, file) => {
|
|
13032
|
-
|
|
13049
|
+
if (headerOffset >= file.length) {
|
|
13050
|
+
return null;
|
|
13051
|
+
}
|
|
13052
|
+
const mainHeader = new DataView(
|
|
13053
|
+
await file.slice(headerOffset, headerOffset + CD_FILE_NAME_OFFSET)
|
|
13054
|
+
);
|
|
13055
|
+
const magicBytes = mainHeader.buffer.slice(0, 4);
|
|
13033
13056
|
if (!compareArrayBuffers(magicBytes, signature.buffer)) {
|
|
13034
13057
|
return null;
|
|
13035
13058
|
}
|
|
13036
|
-
const compressedSize = BigInt(
|
|
13037
|
-
const uncompressedSize = BigInt(
|
|
13038
|
-
const extraFieldLength =
|
|
13039
|
-
const startDisk = BigInt(
|
|
13040
|
-
const fileNameLength =
|
|
13041
|
-
const
|
|
13059
|
+
const compressedSize = BigInt(mainHeader.getUint32(CD_COMPRESSED_SIZE_OFFSET, true));
|
|
13060
|
+
const uncompressedSize = BigInt(mainHeader.getUint32(CD_UNCOMPRESSED_SIZE_OFFSET, true));
|
|
13061
|
+
const extraFieldLength = mainHeader.getUint16(CD_EXTRA_FIELD_LENGTH_OFFSET, true);
|
|
13062
|
+
const startDisk = BigInt(mainHeader.getUint16(CD_START_DISK_OFFSET, true));
|
|
13063
|
+
const fileNameLength = mainHeader.getUint16(CD_FILE_NAME_LENGTH_OFFSET, true);
|
|
13064
|
+
const additionalHeader = await file.slice(
|
|
13042
13065
|
headerOffset + CD_FILE_NAME_OFFSET,
|
|
13043
|
-
headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)
|
|
13066
|
+
headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength)
|
|
13044
13067
|
);
|
|
13068
|
+
const filenameBytes = additionalHeader.slice(0, fileNameLength);
|
|
13045
13069
|
const fileName = new TextDecoder().decode(filenameBytes);
|
|
13046
13070
|
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
13047
|
-
const oldFormatOffset =
|
|
13071
|
+
const oldFormatOffset = mainHeader.getUint32(CD_LOCAL_HEADER_OFFSET_OFFSET, true);
|
|
13048
13072
|
const localHeaderOffset = BigInt(oldFormatOffset);
|
|
13049
13073
|
const extraField = new DataView(
|
|
13050
|
-
|
|
13074
|
+
additionalHeader.slice(fileNameLength, additionalHeader.byteLength)
|
|
13051
13075
|
);
|
|
13052
13076
|
const zip64data = {
|
|
13053
13077
|
uncompressedSize,
|
|
@@ -13066,13 +13090,16 @@ var __exports__ = (() => {
|
|
|
13066
13090
|
};
|
|
13067
13091
|
};
|
|
13068
13092
|
async function* makeZipCDHeaderIterator(fileProvider) {
|
|
13069
|
-
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
13070
|
-
|
|
13093
|
+
const { cdStartOffset, cdByteSize } = await parseEoCDRecord(fileProvider);
|
|
13094
|
+
const centralDirectory = new DataViewFile(
|
|
13095
|
+
new DataView(await fileProvider.slice(cdStartOffset, cdStartOffset + cdByteSize))
|
|
13096
|
+
);
|
|
13097
|
+
let cdHeader = await parseZipCDFileHeader(0n, centralDirectory);
|
|
13071
13098
|
while (cdHeader) {
|
|
13072
13099
|
yield cdHeader;
|
|
13073
13100
|
cdHeader = await parseZipCDFileHeader(
|
|
13074
13101
|
cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),
|
|
13075
|
-
|
|
13102
|
+
centralDirectory
|
|
13076
13103
|
);
|
|
13077
13104
|
}
|
|
13078
13105
|
}
|
|
@@ -13219,42 +13246,45 @@ var __exports__ = (() => {
|
|
|
13219
13246
|
];
|
|
13220
13247
|
|
|
13221
13248
|
// ../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 =
|
|
13249
|
+
var COMPRESSION_METHOD_OFFSET = 8;
|
|
13250
|
+
var COMPRESSED_SIZE_OFFSET = 18;
|
|
13251
|
+
var UNCOMPRESSED_SIZE_OFFSET = 22;
|
|
13252
|
+
var FILE_NAME_LENGTH_OFFSET = 26;
|
|
13253
|
+
var EXTRA_FIELD_LENGTH_OFFSET = 28;
|
|
13227
13254
|
var FILE_NAME_OFFSET = 30n;
|
|
13228
13255
|
var signature2 = new Uint8Array([80, 75, 3, 4]);
|
|
13229
|
-
var parseZipLocalFileHeader = async (headerOffset,
|
|
13230
|
-
const
|
|
13256
|
+
var parseZipLocalFileHeader = async (headerOffset, file) => {
|
|
13257
|
+
const mainHeader = new DataView(await file.slice(headerOffset, headerOffset + FILE_NAME_OFFSET));
|
|
13258
|
+
const magicBytes = mainHeader.buffer.slice(0, 4);
|
|
13231
13259
|
if (!compareArrayBuffers(magicBytes, signature2)) {
|
|
13232
13260
|
return null;
|
|
13233
13261
|
}
|
|
13234
|
-
const fileNameLength =
|
|
13235
|
-
const
|
|
13236
|
-
|
|
13237
|
-
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13241
|
-
const
|
|
13262
|
+
const fileNameLength = mainHeader.getUint16(FILE_NAME_LENGTH_OFFSET, true);
|
|
13263
|
+
const extraFieldLength = mainHeader.getUint16(EXTRA_FIELD_LENGTH_OFFSET, true);
|
|
13264
|
+
const additionalHeader = await file.slice(
|
|
13265
|
+
headerOffset + FILE_NAME_OFFSET,
|
|
13266
|
+
headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength)
|
|
13267
|
+
);
|
|
13268
|
+
const fileNameBuffer = additionalHeader.slice(0, fileNameLength);
|
|
13269
|
+
const extraDataBuffer = new DataView(
|
|
13270
|
+
additionalHeader.slice(fileNameLength, additionalHeader.byteLength)
|
|
13271
|
+
);
|
|
13272
|
+
const fileName = new TextDecoder().decode(fileNameBuffer).split("\\").join("/");
|
|
13242
13273
|
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;
|
|
13274
|
+
const compressionMethod = mainHeader.getUint16(COMPRESSION_METHOD_OFFSET, true);
|
|
13275
|
+
let compressedSize = BigInt(mainHeader.getUint32(COMPRESSED_SIZE_OFFSET, true));
|
|
13276
|
+
let uncompressedSize = BigInt(mainHeader.getUint32(UNCOMPRESSED_SIZE_OFFSET, true));
|
|
13277
|
+
let offsetInZip64Data = 4;
|
|
13248
13278
|
if (uncompressedSize === BigInt(4294967295)) {
|
|
13249
|
-
uncompressedSize =
|
|
13250
|
-
offsetInZip64Data +=
|
|
13279
|
+
uncompressedSize = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13280
|
+
offsetInZip64Data += 8;
|
|
13251
13281
|
}
|
|
13252
13282
|
if (compressedSize === BigInt(4294967295)) {
|
|
13253
|
-
compressedSize =
|
|
13254
|
-
offsetInZip64Data +=
|
|
13283
|
+
compressedSize = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13284
|
+
offsetInZip64Data += 8;
|
|
13255
13285
|
}
|
|
13256
13286
|
if (fileDataOffset === BigInt(4294967295)) {
|
|
13257
|
-
fileDataOffset =
|
|
13287
|
+
fileDataOffset = extraDataBuffer.getBigUint64(offsetInZip64Data, true);
|
|
13258
13288
|
}
|
|
13259
13289
|
return {
|
|
13260
13290
|
fileNameLength,
|