map-ol-utils 0.2.0 → 1.0.0

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.
@@ -1,683 +0,0 @@
1
- //#region src/tdt-vts/protobuf.ts
2
- const MAX_SAFE_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);
3
- const TWO_POW_64 = 1n << 64n;
4
- const TWO_POW_63 = 1n << 63n;
5
- const textEncoder = new TextEncoder();
6
- const textDecoder = new TextDecoder("utf-8", { fatal: false });
7
- function asBytes(input) {
8
- if (input instanceof Uint8Array) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
9
- if (input instanceof ArrayBuffer) return new Uint8Array(input);
10
- return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
11
- }
12
- var ProtoReader = class {
13
- bytes;
14
- pos = 0;
15
- constructor(input) {
16
- this.bytes = asBytes(input);
17
- }
18
- get length() {
19
- return this.bytes.byteLength;
20
- }
21
- readTag(end = this.length) {
22
- if (this.pos >= end) return void 0;
23
- const raw = this.readVarintBigInt(end);
24
- const field = Number(raw >> 3n);
25
- const wire = Number(raw & 7n);
26
- if (field <= 0) throw new Error(`Protobuf field 编号无效:${field}`);
27
- if (wire !== 0 && wire !== 1 && wire !== 2 && wire !== 5) throw new Error(`不支持的 Protobuf wire type:${wire}`);
28
- return {
29
- field,
30
- wire
31
- };
32
- }
33
- readVarintBigInt(end = this.length) {
34
- let value = 0n;
35
- let shift = 0n;
36
- for (let count = 0; count < 10; count += 1) {
37
- if (this.pos >= end) throw new Error("Protobuf varint 被截断");
38
- const byte = this.bytes[this.pos];
39
- if (byte === void 0) throw new Error("Protobuf varint 越界");
40
- this.pos += 1;
41
- value |= BigInt(byte & 127) << shift;
42
- if ((byte & 128) === 0) return value;
43
- shift += 7n;
44
- }
45
- throw new Error("Protobuf varint 超过 10 字节");
46
- }
47
- readVarintNumber(end = this.length) {
48
- const value = this.readVarintBigInt(end);
49
- if (value > MAX_SAFE_BIGINT) throw new RangeError(`Protobuf 数值 ${value} 超出 JavaScript 安全整数范围`);
50
- return Number(value);
51
- }
52
- readInt64(end = this.length) {
53
- const raw = this.readVarintBigInt(end);
54
- return raw >= TWO_POW_63 ? raw - TWO_POW_64 : raw;
55
- }
56
- readSInt64(end = this.length) {
57
- const raw = this.readVarintBigInt(end);
58
- return raw >> 1n ^ -(raw & 1n);
59
- }
60
- readBoolean(end = this.length) {
61
- return this.readVarintBigInt(end) !== 0n;
62
- }
63
- readFloat(end = this.length) {
64
- this.assertAvailable(4, end);
65
- const value = new DataView(this.bytes.buffer, this.bytes.byteOffset + this.pos, 4).getFloat32(0, true);
66
- this.pos += 4;
67
- return value;
68
- }
69
- readDouble(end = this.length) {
70
- this.assertAvailable(8, end);
71
- const value = new DataView(this.bytes.buffer, this.bytes.byteOffset + this.pos, 8).getFloat64(0, true);
72
- this.pos += 8;
73
- return value;
74
- }
75
- readLengthEnd(parentEnd = this.length) {
76
- const size = this.readVarintNumber(parentEnd);
77
- const end = this.pos + size;
78
- if (end > parentEnd || end > this.length) throw new Error(`长度字段越界:${end} > ${Math.min(parentEnd, this.length)}`);
79
- return end;
80
- }
81
- readBytes(parentEnd = this.length) {
82
- const end = this.readLengthEnd(parentEnd);
83
- const value = this.bytes.subarray(this.pos, end);
84
- this.pos = end;
85
- return value;
86
- }
87
- readString(parentEnd = this.length) {
88
- return textDecoder.decode(this.readBytes(parentEnd));
89
- }
90
- readPackedVarints(parentEnd = this.length) {
91
- const packedEnd = this.readLengthEnd(parentEnd);
92
- const result = [];
93
- while (this.pos < packedEnd) result.push(this.readVarintNumber(packedEnd));
94
- return result;
95
- }
96
- skip(wire, parentEnd = this.length) {
97
- switch (wire) {
98
- case 0:
99
- this.readVarintBigInt(parentEnd);
100
- return;
101
- case 1:
102
- this.assertAvailable(8, parentEnd);
103
- this.pos += 8;
104
- return;
105
- case 2: {
106
- const end = this.readLengthEnd(parentEnd);
107
- this.pos = end;
108
- return;
109
- }
110
- case 5:
111
- this.assertAvailable(4, parentEnd);
112
- this.pos += 4;
113
- return;
114
- }
115
- }
116
- expectWire(actual, expected, field) {
117
- if (actual !== expected) throw new Error(`field ${field} 的 wire type 应为 ${expected},实际为 ${actual}`);
118
- }
119
- assertAvailable(size, end) {
120
- if (this.pos + size > end || this.pos + size > this.length) throw new Error(`Protobuf 固定长度字段越界:需要 ${size} 字节`);
121
- }
122
- };
123
- var ProtoWriter = class ProtoWriter {
124
- bytes = /* @__PURE__ */ new Uint8Array(256);
125
- pos = 0;
126
- writeTag(field, wire) {
127
- if (!Number.isInteger(field) || field <= 0) throw new TypeError(`field 必须是正整数:${field}`);
128
- this.writeVarintBigInt(BigInt(field << 3 | wire));
129
- }
130
- writeVarintBigInt(value) {
131
- if (value < 0n) throw new RangeError("无符号 varint 不能写入负数");
132
- while (value > 127n) {
133
- this.writeByte(Number(value & 127n) | 128);
134
- value >>= 7n;
135
- }
136
- this.writeByte(Number(value));
137
- }
138
- writeVarintNumber(value) {
139
- if (!Number.isSafeInteger(value) || value < 0) throw new RangeError(`varint 必须是非负安全整数:${value}`);
140
- this.writeVarintBigInt(BigInt(value));
141
- }
142
- writeInt64(value) {
143
- this.writeVarintBigInt(BigInt.asUintN(64, value));
144
- }
145
- writeSInt64(value) {
146
- const encoded = value >= 0n ? value << 1n : (-value << 1n) - 1n;
147
- this.writeVarintBigInt(encoded);
148
- }
149
- writeTagVarint(field, value) {
150
- this.writeTag(field, 0);
151
- if (typeof value === "bigint") this.writeVarintBigInt(value);
152
- else this.writeVarintNumber(value);
153
- }
154
- writeTagInt64(field, value) {
155
- this.writeTag(field, 0);
156
- this.writeInt64(value);
157
- }
158
- writeTagSInt64(field, value) {
159
- this.writeTag(field, 0);
160
- this.writeSInt64(value);
161
- }
162
- writeTagBoolean(field, value) {
163
- this.writeTagVarint(field, value ? 1 : 0);
164
- }
165
- writeTagFloat(field, value) {
166
- this.writeTag(field, 5);
167
- this.ensure(4);
168
- new DataView(this.bytes.buffer).setFloat32(this.pos, value, true);
169
- this.pos += 4;
170
- }
171
- writeTagDouble(field, value) {
172
- this.writeTag(field, 1);
173
- this.ensure(8);
174
- new DataView(this.bytes.buffer).setFloat64(this.pos, value, true);
175
- this.pos += 8;
176
- }
177
- writeTagString(field, value) {
178
- this.writeTagBytes(field, textEncoder.encode(value));
179
- }
180
- writeTagBytes(field, value) {
181
- this.writeTag(field, 2);
182
- this.writeVarintNumber(value.byteLength);
183
- this.writeRawBytes(value);
184
- }
185
- writeTagPackedVarints(field, values) {
186
- if (values.length === 0) return;
187
- const packed = new ProtoWriter();
188
- for (const value of values) packed.writeVarintNumber(value);
189
- this.writeTagBytes(field, packed.finish());
190
- }
191
- writeMessage(field, value, writer) {
192
- const nested = new ProtoWriter();
193
- writer(value, nested);
194
- this.writeTagBytes(field, nested.finish());
195
- }
196
- writeRawBytes(value) {
197
- this.ensure(value.byteLength);
198
- this.bytes.set(value, this.pos);
199
- this.pos += value.byteLength;
200
- }
201
- finish() {
202
- return this.bytes.slice(0, this.pos);
203
- }
204
- writeByte(value) {
205
- this.ensure(1);
206
- this.bytes[this.pos] = value;
207
- this.pos += 1;
208
- }
209
- ensure(extra) {
210
- const required = this.pos + extra;
211
- if (required <= this.bytes.length) return;
212
- let size = this.bytes.length;
213
- while (size < required) size *= 2;
214
- const replacement = new Uint8Array(size);
215
- replacement.set(this.bytes);
216
- this.bytes = replacement;
217
- }
218
- };
219
-
220
- //#endregion
221
- //#region src/tdt-vts/private-mvt.ts
222
- const TDT_XOR_BYTE_INDEXES = [
223
- 1,
224
- 2,
225
- 3,
226
- 4,
227
- 99
228
- ];
229
- function toUint8Array(input) {
230
- if (input instanceof Uint8Array) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
231
- if (input instanceof ArrayBuffer) return new Uint8Array(input);
232
- return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
233
- }
234
- const restoreTdtBytes = (input) => {
235
- const source = toUint8Array(input);
236
- const bytes = new Uint8Array(source);
237
- for (const index of TDT_XOR_BYTE_INDEXES) if (index < bytes.length) bytes[index] = (bytes[index] ?? 0) ^ 255;
238
- return bytes;
239
- };
240
- const decodeMvt = (input, layout) => {
241
- const reader = new ProtoReader(input);
242
- const tile = { layers: [] };
243
- while (reader.pos < reader.length) {
244
- const tag = reader.readTag();
245
- if (!tag) break;
246
- if (tag.field === 3 && tag.wire === 2) {
247
- const end = reader.readLengthEnd();
248
- const layer = readLayer(reader, end, layout);
249
- reader.pos = end;
250
- if (layer.name || layer.features.length > 0) tile.layers.push(layer);
251
- } else reader.skip(tag.wire);
252
- }
253
- validateTile(tile);
254
- return tile;
255
- };
256
- function readLayer(reader, end, layout) {
257
- const layer = {
258
- version: 1,
259
- name: "",
260
- extent: 4096,
261
- features: [],
262
- keys: [],
263
- values: []
264
- };
265
- while (reader.pos < end) {
266
- const tag = reader.readTag(end);
267
- if (!tag) break;
268
- if (tag.field === 15) {
269
- reader.expectWire(tag.wire, 0, tag.field);
270
- layer.version = reader.readVarintNumber(end);
271
- continue;
272
- }
273
- if (tag.field === 5) {
274
- reader.expectWire(tag.wire, 0, tag.field);
275
- layer.extent = reader.readVarintNumber(end);
276
- continue;
277
- }
278
- if (layout === "private") switch (tag.field) {
279
- case 1:
280
- reader.expectWire(tag.wire, 2, tag.field);
281
- layer.features.push(readFeatureMessage(reader, end, layout));
282
- break;
283
- case 2:
284
- reader.expectWire(tag.wire, 2, tag.field);
285
- layer.name = reader.readString(end);
286
- break;
287
- case 3:
288
- reader.expectWire(tag.wire, 2, tag.field);
289
- layer.values.push(readValueMessage(reader, end, layout));
290
- break;
291
- case 4:
292
- reader.expectWire(tag.wire, 2, tag.field);
293
- layer.keys.push(reader.readString(end));
294
- break;
295
- default: reader.skip(tag.wire, end);
296
- }
297
- else switch (tag.field) {
298
- case 1:
299
- reader.expectWire(tag.wire, 2, tag.field);
300
- layer.name = reader.readString(end);
301
- break;
302
- case 2:
303
- reader.expectWire(tag.wire, 2, tag.field);
304
- layer.features.push(readFeatureMessage(reader, end, layout));
305
- break;
306
- case 3:
307
- reader.expectWire(tag.wire, 2, tag.field);
308
- layer.keys.push(reader.readString(end));
309
- break;
310
- case 4:
311
- reader.expectWire(tag.wire, 2, tag.field);
312
- layer.values.push(readValueMessage(reader, end, layout));
313
- break;
314
- default: reader.skip(tag.wire, end);
315
- }
316
- }
317
- reader.pos = end;
318
- return layer;
319
- }
320
- function readFeatureMessage(reader, parentEnd, layout) {
321
- const end = reader.readLengthEnd(parentEnd);
322
- const feature = {
323
- tags: [],
324
- type: 0,
325
- geometry: []
326
- };
327
- while (reader.pos < end) {
328
- const tag = reader.readTag(end);
329
- if (!tag) break;
330
- if (layout === "private") switch (tag.field) {
331
- case 1:
332
- feature.geometry.push(...readPackedOrSingle(reader, tag.wire, end));
333
- break;
334
- case 2:
335
- reader.expectWire(tag.wire, 0, tag.field);
336
- feature.type = reader.readVarintNumber(end);
337
- break;
338
- case 3:
339
- feature.tags.push(...readPackedOrSingle(reader, tag.wire, end));
340
- break;
341
- case 4:
342
- reader.expectWire(tag.wire, 0, tag.field);
343
- feature.id = reader.readVarintBigInt(end);
344
- break;
345
- default: reader.skip(tag.wire, end);
346
- }
347
- else switch (tag.field) {
348
- case 1:
349
- reader.expectWire(tag.wire, 0, tag.field);
350
- feature.id = reader.readVarintBigInt(end);
351
- break;
352
- case 2:
353
- feature.tags.push(...readPackedOrSingle(reader, tag.wire, end));
354
- break;
355
- case 3:
356
- reader.expectWire(tag.wire, 0, tag.field);
357
- feature.type = reader.readVarintNumber(end);
358
- break;
359
- case 4:
360
- feature.geometry.push(...readPackedOrSingle(reader, tag.wire, end));
361
- break;
362
- default: reader.skip(tag.wire, end);
363
- }
364
- }
365
- reader.pos = end;
366
- return feature;
367
- }
368
- function readPackedOrSingle(reader, wire, end) {
369
- if (wire === 2) return reader.readPackedVarints(end);
370
- if (wire === 0) return [reader.readVarintNumber(end)];
371
- throw new Error(`packed varint 字段的 wire type 无效:${wire}`);
372
- }
373
- function readValueMessage(reader, parentEnd, layout) {
374
- const end = reader.readLengthEnd(parentEnd);
375
- let value = {
376
- kind: "null",
377
- value: null
378
- };
379
- while (reader.pos < end) {
380
- const tag = reader.readTag(end);
381
- if (!tag) break;
382
- const privateFloat = layout === "private" ? 3 : 2;
383
- const privateDouble = layout === "private" ? 2 : 3;
384
- if (tag.field === 1) {
385
- reader.expectWire(tag.wire, 2, tag.field);
386
- value = {
387
- kind: "string",
388
- value: reader.readString(end)
389
- };
390
- } else if (tag.field === privateFloat) {
391
- reader.expectWire(tag.wire, 5, tag.field);
392
- value = {
393
- kind: "float",
394
- value: reader.readFloat(end)
395
- };
396
- } else if (tag.field === privateDouble) {
397
- reader.expectWire(tag.wire, 1, tag.field);
398
- value = {
399
- kind: "double",
400
- value: reader.readDouble(end)
401
- };
402
- } else if (tag.field === 4) {
403
- reader.expectWire(tag.wire, 0, tag.field);
404
- value = {
405
- kind: "int64",
406
- value: reader.readInt64(end)
407
- };
408
- } else if (tag.field === 5) {
409
- reader.expectWire(tag.wire, 0, tag.field);
410
- value = {
411
- kind: "uint64",
412
- value: reader.readVarintBigInt(end)
413
- };
414
- } else if (tag.field === 6) {
415
- reader.expectWire(tag.wire, 0, tag.field);
416
- value = {
417
- kind: "sint64",
418
- value: reader.readSInt64(end)
419
- };
420
- } else if (tag.field === 7) {
421
- reader.expectWire(tag.wire, 0, tag.field);
422
- value = {
423
- kind: "boolean",
424
- value: reader.readBoolean(end)
425
- };
426
- } else reader.skip(tag.wire, end);
427
- }
428
- reader.pos = end;
429
- return value;
430
- }
431
- function validateTile(tile) {
432
- for (const layer of tile.layers) {
433
- if (!layer.name) throw new Error("MVT layer 缺少 name");
434
- if (!Number.isInteger(layer.extent) || layer.extent <= 0 || layer.extent > 65536) throw new Error(`MVT layer ${layer.name} 的 extent 无效:${layer.extent}`);
435
- if (!Number.isInteger(layer.version) || layer.version < 1 || layer.version > 3) throw new Error(`MVT layer ${layer.name} 的 version 无效:${layer.version}`);
436
- for (const feature of layer.features) {
437
- if (feature.tags.length % 2 !== 0) throw new Error(`MVT layer ${layer.name} 存在奇数长度 tags`);
438
- for (let index = 0; index < feature.tags.length; index += 2) {
439
- const keyIndex = feature.tags[index];
440
- const valueIndex = feature.tags[index + 1];
441
- if (keyIndex === void 0 || valueIndex === void 0 || keyIndex < 0 || keyIndex >= layer.keys.length || valueIndex < 0 || valueIndex >= layer.values.length) throw new Error(`MVT layer ${layer.name} 的属性索引越界`);
442
- }
443
- }
444
- }
445
- }
446
- const privateTypeToStandard = (type) => {
447
- switch (type) {
448
- case 0: return 0;
449
- case 1: return 2;
450
- case 2: return 3;
451
- case 4: return 1;
452
- default: throw new Error(`未知的天地图私有 Geometry 类型:${type}`);
453
- }
454
- };
455
- const normalizePrivateGeometry = (geometry) => {
456
- const output = [];
457
- let cursor = 0;
458
- while (cursor < geometry.length) {
459
- const commandInteger = geometry[cursor];
460
- if (commandInteger === void 0) throw new Error("Geometry 命令缺失");
461
- cursor += 1;
462
- const privateCommand = commandInteger & 7;
463
- const count = commandInteger >>> 3;
464
- if (count <= 0) throw new Error(`Geometry 命令 count 无效:${count}`);
465
- let standardCommand;
466
- if (privateCommand === 2) standardCommand = 1;
467
- else if (privateCommand === 3) standardCommand = 2;
468
- else if (privateCommand === 7) standardCommand = 7;
469
- else throw new Error(`未知的天地图私有 Geometry 命令:${privateCommand}`);
470
- output.push(count << 3 | standardCommand);
471
- if (privateCommand === 2 || privateCommand === 3) {
472
- const coordinateCount = count * 2;
473
- if (cursor + coordinateCount > geometry.length) throw new Error("Geometry 坐标参数被截断");
474
- for (let index = 0; index < coordinateCount; index += 1) {
475
- const coordinate = geometry[cursor];
476
- if (coordinate === void 0) throw new Error("Geometry 坐标缺失");
477
- output.push(coordinate);
478
- cursor += 1;
479
- }
480
- }
481
- }
482
- return output;
483
- };
484
- const encodeStandardMvt = (privateTile) => {
485
- const writer = new ProtoWriter();
486
- for (const layer of privateTile.layers) writer.writeMessage(3, layer, writeStandardLayer);
487
- return writer.finish();
488
- };
489
- function writeStandardLayer(layer, writer) {
490
- writer.writeTagVarint(15, layer.version || 2);
491
- writer.writeTagString(1, layer.name);
492
- for (const feature of layer.features) writer.writeMessage(2, feature, writeStandardFeature);
493
- for (const key of layer.keys) writer.writeTagString(3, key);
494
- for (const value of layer.values) writer.writeMessage(4, value, writeStandardValue);
495
- writer.writeTagVarint(5, layer.extent || 4096);
496
- }
497
- function writeStandardFeature(feature, writer) {
498
- if (feature.id !== void 0) writer.writeTagVarint(1, feature.id);
499
- writer.writeTagPackedVarints(2, feature.tags);
500
- writer.writeTagVarint(3, privateTypeToStandard(feature.type));
501
- writer.writeTagPackedVarints(4, normalizePrivateGeometry(feature.geometry));
502
- }
503
- function writeStandardValue(value, writer) {
504
- switch (value.kind) {
505
- case "string":
506
- writer.writeTagString(1, value.value);
507
- break;
508
- case "float":
509
- writer.writeTagFloat(2, value.value);
510
- break;
511
- case "double":
512
- writer.writeTagDouble(3, value.value);
513
- break;
514
- case "int64":
515
- writer.writeTagInt64(4, value.value);
516
- break;
517
- case "uint64":
518
- writer.writeTagVarint(5, value.value);
519
- break;
520
- case "sint64":
521
- writer.writeTagSInt64(6, value.value);
522
- break;
523
- case "boolean": writer.writeTagBoolean(7, value.value);
524
- }
525
- }
526
- const normalizePrivateMvt = (input, options = {}) => {
527
- const source = toUint8Array(input);
528
- const pragma = options.pragma ?? null;
529
- const restoreMode = options.restoreMode ?? "auto";
530
- let restored = false;
531
- let privateTile;
532
- const decodeRaw = () => decodeMvt(source, "private");
533
- const decodeRestored = () => {
534
- restored = true;
535
- return decodeMvt(restoreTdtBytes(source), "private");
536
- };
537
- if (restoreMode === "always") privateTile = decodeRestored();
538
- else if (restoreMode === "never") privateTile = decodeRaw();
539
- else if (restoreMode === "header") privateTile = pragma === "1" ? decodeRestored() : decodeRaw();
540
- else if (pragma === "1") privateTile = decodeRestored();
541
- else try {
542
- privateTile = decodeRaw();
543
- } catch (rawError) {
544
- try {
545
- privateTile = decodeRestored();
546
- } catch (restoredError) {
547
- throw new AggregateError([rawError, restoredError], "天地图瓦片按原始字节和恢复字节均无法解析", { cause: restoredError });
548
- }
549
- }
550
- const data = encodeStandardMvt(privateTile);
551
- return {
552
- data,
553
- stats: buildStats(privateTile, restored, pragma, source.byteLength, data.byteLength)
554
- };
555
- };
556
- function buildStats(tile, restored, pragma, inputBytes, outputBytes) {
557
- const layers = tile.layers.map((layer) => {
558
- let pointCount = 0;
559
- let lineCount = 0;
560
- let polygonCount = 0;
561
- for (const feature of layer.features) {
562
- const standard = privateTypeToStandard(feature.type);
563
- if (standard === 1) pointCount += 1;
564
- else if (standard === 2) lineCount += 1;
565
- else if (standard === 3) polygonCount += 1;
566
- }
567
- return {
568
- name: layer.name,
569
- featureCount: layer.features.length,
570
- pointCount,
571
- lineCount,
572
- polygonCount,
573
- extent: layer.extent,
574
- version: layer.version
575
- };
576
- });
577
- return {
578
- restored,
579
- pragma,
580
- inputBytes,
581
- outputBytes,
582
- layerCount: layers.length,
583
- featureCount: layers.reduce((sum, layer) => sum + layer.featureCount, 0),
584
- layers
585
- };
586
- }
587
- const resolveFeatureProperties = (layer, feature) => {
588
- const properties = {};
589
- for (let index = 0; index < feature.tags.length; index += 2) {
590
- const keyIndex = feature.tags[index];
591
- const valueIndex = feature.tags[index + 1];
592
- if (keyIndex === void 0 || valueIndex === void 0) continue;
593
- const key = layer.keys[keyIndex];
594
- const value = layer.values[valueIndex];
595
- if (!key || !value) continue;
596
- properties[key] = value.value;
597
- }
598
- return properties;
599
- };
600
-
601
- //#endregion
602
- //#region src/tdt-vts/tile-loader.ts
603
- /** Fetch a private Tianditu VTS tile and return a standard MVT buffer. */
604
- const loadAndNormalizeTdtVts = async (url, options = {}) => {
605
- const fetcher = options.fetch ?? globalThis.fetch;
606
- if (!fetcher) throw new Error("当前环境不支持 fetch,请通过 options.fetch 注入实现");
607
- const response = await fetcher(url, {
608
- mode: "cors",
609
- credentials: "omit",
610
- cache: "default",
611
- signal: options.signal
612
- });
613
- if (!response.ok) throw new Error(`瓦片请求失败:HTTP ${response.status} ${response.statusText}`);
614
- const normalized = normalizePrivateMvt(await response.arrayBuffer(), {
615
- pragma: response.headers.get("Pragma"),
616
- restoreMode: options.restoreMode
617
- });
618
- const { buffer } = new Uint8Array(normalized.data);
619
- return {
620
- buffer,
621
- stats: {
622
- ...normalized.stats,
623
- contentType: response.headers.get("Content-Type"),
624
- cacheControl: response.headers.get("Cache-Control")
625
- }
626
- };
627
- };
628
-
629
- //#endregion
630
- Object.defineProperty(exports, 'TDT_XOR_BYTE_INDEXES', {
631
- enumerable: true,
632
- get: function () {
633
- return TDT_XOR_BYTE_INDEXES;
634
- }
635
- });
636
- Object.defineProperty(exports, 'decodeMvt', {
637
- enumerable: true,
638
- get: function () {
639
- return decodeMvt;
640
- }
641
- });
642
- Object.defineProperty(exports, 'encodeStandardMvt', {
643
- enumerable: true,
644
- get: function () {
645
- return encodeStandardMvt;
646
- }
647
- });
648
- Object.defineProperty(exports, 'loadAndNormalizeTdtVts', {
649
- enumerable: true,
650
- get: function () {
651
- return loadAndNormalizeTdtVts;
652
- }
653
- });
654
- Object.defineProperty(exports, 'normalizePrivateGeometry', {
655
- enumerable: true,
656
- get: function () {
657
- return normalizePrivateGeometry;
658
- }
659
- });
660
- Object.defineProperty(exports, 'normalizePrivateMvt', {
661
- enumerable: true,
662
- get: function () {
663
- return normalizePrivateMvt;
664
- }
665
- });
666
- Object.defineProperty(exports, 'privateTypeToStandard', {
667
- enumerable: true,
668
- get: function () {
669
- return privateTypeToStandard;
670
- }
671
- });
672
- Object.defineProperty(exports, 'resolveFeatureProperties', {
673
- enumerable: true,
674
- get: function () {
675
- return resolveFeatureProperties;
676
- }
677
- });
678
- Object.defineProperty(exports, 'restoreTdtBytes', {
679
- enumerable: true,
680
- get: function () {
681
- return restoreTdtBytes;
682
- }
683
- });