@ifc-lite/geometry 1.16.3 → 1.16.4

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,6 +1,26 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ const NATIVE_CACHE_PREFETCH_WINDOW = 2;
5
+ const MAX_DEFERRED_BATCHES_PER_DRAIN = 4;
6
+ const MAX_DEFERRED_MESHES_PER_DRAIN = 8192;
7
+ const MAX_DEFERRED_DRAIN_MS = 10;
8
+ function yieldToEventLoop() {
9
+ const maybeScheduler = globalThis.scheduler;
10
+ if (typeof maybeScheduler?.yield === 'function') {
11
+ return maybeScheduler.yield();
12
+ }
13
+ return new Promise((resolve) => {
14
+ const channel = new MessageChannel();
15
+ channel.port1.onmessage = () => resolve();
16
+ channel.port2.postMessage(null);
17
+ });
18
+ }
19
+ function sleep(ms) {
20
+ return new Promise((resolve) => {
21
+ globalThis.setTimeout(resolve, ms);
22
+ });
23
+ }
4
24
  /**
5
25
  * Native Tauri bridge for desktop apps
6
26
  *
@@ -43,6 +63,128 @@ export class NativeBridge {
43
63
  const encoder = new TextEncoder();
44
64
  return Array.from(encoder.encode(content));
45
65
  }
66
+ async drainDeferredBatches(pendingBatches, options, streamStartTime) {
67
+ let drainedBatchCount = 0;
68
+ let drainedMeshCount = 0;
69
+ let drainStartedAt = performance.now();
70
+ while (pendingBatches.length > 0) {
71
+ const next = pendingBatches.shift();
72
+ const batch = next.type === 'mesh-array'
73
+ ? {
74
+ meshes: next.meshes.map(convertNativeMesh),
75
+ progress: {
76
+ processed: next.progress.processed,
77
+ total: next.progress.total,
78
+ currentType: next.progress.currentType,
79
+ },
80
+ nativeTelemetry: convertNativeBatchTelemetry(next.telemetry, performance.now() - streamStartTime),
81
+ }
82
+ : {
83
+ meshes: convertPackedNativeBatch(next.payload),
84
+ progress: {
85
+ processed: next.payload.progress.processed,
86
+ total: next.payload.progress.total,
87
+ currentType: next.payload.progress.currentType,
88
+ },
89
+ nativeTelemetry: convertNativeBatchTelemetry(next.payload.telemetry, performance.now() - streamStartTime),
90
+ };
91
+ options.onBatch?.(batch);
92
+ drainedBatchCount += 1;
93
+ drainedMeshCount += batch.meshes.length;
94
+ if (pendingBatches.length > 0) {
95
+ const shouldYield = drainedBatchCount >= MAX_DEFERRED_BATCHES_PER_DRAIN ||
96
+ drainedMeshCount >= MAX_DEFERRED_MESHES_PER_DRAIN ||
97
+ performance.now() - drainStartedAt >= MAX_DEFERRED_DRAIN_MS;
98
+ if (shouldYield) {
99
+ await yieldToEventLoop();
100
+ drainedBatchCount = 0;
101
+ drainedMeshCount = 0;
102
+ drainStartedAt = performance.now();
103
+ }
104
+ }
105
+ }
106
+ }
107
+ async processEventDrivenNativeStream(command, args, options, streamStartTime) {
108
+ if (!this.listen) {
109
+ throw new Error(`Event API unavailable, ${command} requires Tauri event support`);
110
+ }
111
+ const pendingBatches = [];
112
+ let drainPromise = null;
113
+ let drainError = null;
114
+ const scheduleDrain = () => {
115
+ if (drainPromise)
116
+ return;
117
+ drainPromise = (async () => {
118
+ try {
119
+ await this.drainDeferredBatches(pendingBatches, options, streamStartTime);
120
+ }
121
+ catch (error) {
122
+ drainError = error instanceof Error ? error : new Error(String(error));
123
+ }
124
+ finally {
125
+ drainPromise = null;
126
+ if (pendingBatches.length > 0 && !drainError) {
127
+ scheduleDrain();
128
+ }
129
+ }
130
+ })();
131
+ };
132
+ const unlisten = await this.listen('geometry-batch', (event) => {
133
+ pendingBatches.push({
134
+ type: 'mesh-array',
135
+ meshes: event.payload.meshes,
136
+ progress: event.payload.progress,
137
+ telemetry: event.payload.telemetry,
138
+ });
139
+ scheduleDrain();
140
+ });
141
+ const unlistenPacked = await this.listen('geometry-packed-batch', (event) => {
142
+ pendingBatches.push({
143
+ type: 'packed',
144
+ payload: event.payload,
145
+ });
146
+ scheduleDrain();
147
+ });
148
+ const unlistenColorUpdate = await this.listen('geometry-color-update', (event) => {
149
+ const updates = new Map();
150
+ for (const entry of event.payload.updates) {
151
+ updates.set(entry.expressId, entry.color);
152
+ }
153
+ if (updates.size > 0) {
154
+ options.onColorUpdate?.(updates);
155
+ }
156
+ });
157
+ try {
158
+ const stats = await this.invoke(command, args);
159
+ const result = {
160
+ totalMeshes: stats.totalMeshes,
161
+ totalVertices: stats.totalVertices,
162
+ totalTriangles: stats.totalTriangles,
163
+ parseTimeMs: stats.parseTimeMs,
164
+ entityScanTimeMs: stats.entityScanTimeMs,
165
+ lookupTimeMs: stats.lookupTimeMs,
166
+ preprocessTimeMs: stats.preprocessTimeMs,
167
+ geometryTimeMs: stats.geometryTimeMs,
168
+ totalTimeMs: stats.totalTimeMs,
169
+ firstChunkReadyTimeMs: stats.firstChunkReadyTimeMs,
170
+ firstChunkPackTimeMs: stats.firstChunkPackTimeMs,
171
+ firstChunkEmittedTimeMs: stats.firstChunkEmittedTimeMs,
172
+ firstChunkEmitTimeMs: stats.firstChunkEmitTimeMs,
173
+ };
174
+ while (drainPromise) {
175
+ await drainPromise;
176
+ }
177
+ if (drainError) {
178
+ throw drainError;
179
+ }
180
+ return result;
181
+ }
182
+ finally {
183
+ unlisten();
184
+ unlistenPacked();
185
+ unlistenColorUpdate();
186
+ }
187
+ }
46
188
  async processGeometry(content) {
47
189
  if (!this.initialized || !this.invoke) {
48
190
  await this.init();
@@ -60,6 +202,18 @@ export class NativeBridge {
60
202
  coordinateInfo,
61
203
  };
62
204
  }
205
+ async processGeometryPath(path) {
206
+ if (!this.initialized || !this.invoke) {
207
+ await this.init();
208
+ }
209
+ const result = await this.invoke('get_geometry_from_path', { path });
210
+ return {
211
+ meshes: result.meshes.map(convertNativeMesh),
212
+ totalVertices: result.totalVertices,
213
+ totalTriangles: result.totalTriangles,
214
+ coordinateInfo: convertNativeCoordinateInfo(result.coordinateInfo),
215
+ };
216
+ }
63
217
  async processGeometryStreaming(content, options) {
64
218
  if (!this.initialized || !this.invoke) {
65
219
  await this.init();
@@ -73,7 +227,15 @@ export class NativeBridge {
73
227
  totalVertices: result.totalVertices,
74
228
  totalTriangles: result.totalTriangles,
75
229
  parseTimeMs: 0,
230
+ entityScanTimeMs: 0,
231
+ lookupTimeMs: 0,
232
+ preprocessTimeMs: 0,
76
233
  geometryTimeMs: 0,
234
+ totalTimeMs: 0,
235
+ firstChunkReadyTimeMs: 0,
236
+ firstChunkPackTimeMs: 0,
237
+ firstChunkEmittedTimeMs: 0,
238
+ firstChunkEmitTimeMs: 0,
77
239
  };
78
240
  // Emit single batch with all meshes
79
241
  options.onBatch?.({
@@ -84,17 +246,52 @@ export class NativeBridge {
84
246
  return stats;
85
247
  }
86
248
  const buffer = this.toNativeBuffer(content);
87
- // Listen for geometry batch events
249
+ const streamStartTime = performance.now();
250
+ const pendingBatches = [];
251
+ let drainPromise = null;
252
+ let drainError = null;
253
+ const scheduleDrain = () => {
254
+ if (drainPromise)
255
+ return;
256
+ drainPromise = (async () => {
257
+ try {
258
+ await this.drainDeferredBatches(pendingBatches, options, streamStartTime);
259
+ }
260
+ catch (error) {
261
+ drainError = error instanceof Error ? error : new Error(String(error));
262
+ }
263
+ finally {
264
+ drainPromise = null;
265
+ if (pendingBatches.length > 0 && !drainError) {
266
+ scheduleDrain();
267
+ }
268
+ }
269
+ })();
270
+ };
88
271
  const unlisten = await this.listen('geometry-batch', (event) => {
89
- const batch = {
90
- meshes: event.payload.meshes.map(convertNativeMesh),
91
- progress: {
92
- processed: event.payload.progress.processed,
93
- total: event.payload.progress.total,
94
- currentType: event.payload.progress.currentType,
95
- },
96
- };
97
- options.onBatch?.(batch);
272
+ pendingBatches.push({
273
+ type: 'mesh-array',
274
+ meshes: event.payload.meshes,
275
+ progress: event.payload.progress,
276
+ telemetry: event.payload.telemetry,
277
+ });
278
+ scheduleDrain();
279
+ });
280
+ const unlistenPacked = await this.listen('geometry-packed-batch', (event) => {
281
+ pendingBatches.push({
282
+ type: 'packed',
283
+ payload: event.payload,
284
+ });
285
+ scheduleDrain();
286
+ });
287
+ const unlistenColorUpdate = await this.listen('geometry-color-update', (event) => {
288
+ const updates = new Map();
289
+ for (const entry of event.payload.updates) {
290
+ updates.set(entry.expressId, entry.color);
291
+ }
292
+ if (updates.size > 0) {
293
+ options.onColorUpdate?.(updates);
294
+ }
98
295
  });
99
296
  try {
100
297
  // Call native streaming command
@@ -104,8 +301,22 @@ export class NativeBridge {
104
301
  totalVertices: stats.totalVertices,
105
302
  totalTriangles: stats.totalTriangles,
106
303
  parseTimeMs: stats.parseTimeMs,
304
+ entityScanTimeMs: stats.entityScanTimeMs,
305
+ lookupTimeMs: stats.lookupTimeMs,
306
+ preprocessTimeMs: stats.preprocessTimeMs,
107
307
  geometryTimeMs: stats.geometryTimeMs,
308
+ totalTimeMs: stats.totalTimeMs,
309
+ firstChunkReadyTimeMs: stats.firstChunkReadyTimeMs,
310
+ firstChunkPackTimeMs: stats.firstChunkPackTimeMs,
311
+ firstChunkEmittedTimeMs: stats.firstChunkEmittedTimeMs,
312
+ firstChunkEmitTimeMs: stats.firstChunkEmitTimeMs,
108
313
  };
314
+ while (drainPromise) {
315
+ await drainPromise;
316
+ }
317
+ if (drainError) {
318
+ throw drainError;
319
+ }
109
320
  options.onComplete?.(result);
110
321
  return result;
111
322
  }
@@ -116,7 +327,146 @@ export class NativeBridge {
116
327
  finally {
117
328
  // Clean up event listener
118
329
  unlisten();
330
+ unlistenPacked();
331
+ unlistenColorUpdate();
332
+ }
333
+ }
334
+ async processGeometryStreamingPath(path, options, cacheKey) {
335
+ if (!this.initialized || !this.invoke) {
336
+ await this.init();
119
337
  }
338
+ const streamStartTime = performance.now();
339
+ if (!cacheKey) {
340
+ throw new Error('Packed shard path streaming requires a cache key');
341
+ }
342
+ return this.processPackedShardPathStream(path, cacheKey, options, streamStartTime);
343
+ }
344
+ async processGeometryStreamingCache(cacheKey, options) {
345
+ if (!this.initialized || !this.invoke) {
346
+ await this.init();
347
+ }
348
+ const streamStartTime = performance.now();
349
+ try {
350
+ const manifest = await this.invoke('get_native_geometry_cache_manifest', { cacheKey });
351
+ if (!manifest) {
352
+ throw new Error(`Native geometry cache manifest missing for ${cacheKey}`);
353
+ }
354
+ let processedMeshes = 0;
355
+ for (let shardIndex = 0; shardIndex < manifest.shardCount; shardIndex += 1) {
356
+ const shardPayload = await this.invoke('get_native_geometry_cache_packed_shard', { cacheKey, shardIndex });
357
+ const batch = decodePackedGeometryCacheShard(shardPayload, performance.now() - streamStartTime, shardIndex + 1);
358
+ processedMeshes = batch.progress.processed;
359
+ options.onBatch?.(batch);
360
+ if (shardIndex + 1 < manifest.shardCount) {
361
+ await yieldToEventLoop();
362
+ }
363
+ }
364
+ const result = {
365
+ totalMeshes: manifest.totalMeshes,
366
+ totalVertices: manifest.totalVertices,
367
+ totalTriangles: manifest.totalTriangles,
368
+ parseTimeMs: 0,
369
+ entityScanTimeMs: 0,
370
+ lookupTimeMs: 0,
371
+ preprocessTimeMs: 0,
372
+ geometryTimeMs: Math.round(performance.now() - streamStartTime),
373
+ totalTimeMs: Math.round(performance.now() - streamStartTime),
374
+ firstChunkReadyTimeMs: 0,
375
+ firstChunkPackTimeMs: 0,
376
+ firstChunkEmittedTimeMs: 0,
377
+ firstChunkEmitTimeMs: 0,
378
+ };
379
+ if (processedMeshes !== manifest.totalMeshes) {
380
+ console.warn(`[NativeBridge] Cached packed shard stream mesh mismatch for ${cacheKey}: received=${processedMeshes} expected=${manifest.totalMeshes}`);
381
+ }
382
+ options.onComplete?.(result);
383
+ return result;
384
+ }
385
+ catch (error) {
386
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
387
+ throw error;
388
+ }
389
+ }
390
+ async processPackedShardPathStream(path, cacheKey, options, streamStartTime) {
391
+ const statsPromise = this.invoke('get_geometry_streaming_from_path', {
392
+ path,
393
+ cacheKey,
394
+ preferPackedShards: true,
395
+ });
396
+ let nextShardIndex = 0;
397
+ let lastProgressAt = performance.now();
398
+ let processedMeshes = 0;
399
+ // Event-driven shard notification: Rust emits "native-shard-ready" when
400
+ // a packed shard is written. We resolve immediately instead of sleeping.
401
+ let shardReadyResolve = null;
402
+ const unlistenShardReady = this.listen
403
+ ? await this.listen('native-shard-ready', () => {
404
+ if (shardReadyResolve) {
405
+ const resolve = shardReadyResolve;
406
+ shardReadyResolve = null;
407
+ resolve();
408
+ }
409
+ })
410
+ : null;
411
+ function waitForShardOrTimeout(timeoutMs) {
412
+ return new Promise((resolve) => {
413
+ const timer = setTimeout(resolve, timeoutMs);
414
+ shardReadyResolve = () => {
415
+ clearTimeout(timer);
416
+ resolve();
417
+ };
418
+ });
419
+ }
420
+ try {
421
+ while (true) {
422
+ const status = await this.invoke('get_native_geometry_cache_stream_status', { cacheKey });
423
+ if (status?.failed) {
424
+ throw new Error(status.errorMessage ?? `Packed shard stream failed for ${cacheKey}`);
425
+ }
426
+ const readyShardCount = status?.readyShardCount ?? 0;
427
+ // Read ALL ready shards in burst — no yield between reads
428
+ while (nextShardIndex < readyShardCount) {
429
+ const shardPayload = await this.invoke('get_native_geometry_cache_packed_shard', { cacheKey, shardIndex: nextShardIndex });
430
+ const batch = decodePackedGeometryCacheShard(shardPayload, performance.now() - streamStartTime, nextShardIndex + 1);
431
+ processedMeshes = Math.max(processedMeshes, batch.progress.processed);
432
+ lastProgressAt = performance.now();
433
+ options.onBatch?.(batch);
434
+ nextShardIndex += 1;
435
+ }
436
+ if (status?.done && nextShardIndex >= readyShardCount) {
437
+ break;
438
+ }
439
+ if (performance.now() - lastProgressAt > 60_000) {
440
+ throw new Error(`Packed shard path stream stalled for ${cacheKey}: shards=${nextShardIndex}/${readyShardCount} processed=${processedMeshes}`);
441
+ }
442
+ // Wait for shard-ready event from Rust (instant notification) with
443
+ // a short timeout fallback in case events are missed.
444
+ await waitForShardOrTimeout(50);
445
+ }
446
+ }
447
+ finally {
448
+ if (unlistenShardReady) {
449
+ unlistenShardReady();
450
+ }
451
+ }
452
+ const stats = await statsPromise;
453
+ const result = {
454
+ totalMeshes: stats.totalMeshes,
455
+ totalVertices: stats.totalVertices,
456
+ totalTriangles: stats.totalTriangles,
457
+ parseTimeMs: stats.parseTimeMs,
458
+ entityScanTimeMs: stats.entityScanTimeMs,
459
+ lookupTimeMs: stats.lookupTimeMs,
460
+ preprocessTimeMs: stats.preprocessTimeMs,
461
+ geometryTimeMs: stats.geometryTimeMs,
462
+ totalTimeMs: stats.totalTimeMs,
463
+ firstChunkReadyTimeMs: stats.firstChunkReadyTimeMs,
464
+ firstChunkPackTimeMs: stats.firstChunkPackTimeMs,
465
+ firstChunkEmittedTimeMs: stats.firstChunkEmittedTimeMs,
466
+ firstChunkEmitTimeMs: stats.firstChunkEmitTimeMs,
467
+ };
468
+ options.onComplete?.(result);
469
+ return result;
120
470
  }
121
471
  getApi() {
122
472
  // Native bridge doesn't expose an API object
@@ -127,12 +477,133 @@ export class NativeBridge {
127
477
  function convertNativeMesh(native) {
128
478
  return {
129
479
  expressId: native.expressId,
480
+ ifcType: native.ifcType,
130
481
  positions: new Float32Array(native.positions),
131
482
  normals: new Float32Array(native.normals),
132
483
  indices: new Uint32Array(native.indices),
133
484
  color: native.color,
134
485
  };
135
486
  }
487
+ function convertPackedNativeBatch(native) {
488
+ // Copy each packed numeric array once, then hand meshes cheap subarray views
489
+ // instead of slicing and copying per mesh.
490
+ const positions = Float32Array.from(native.positions);
491
+ const normals = Float32Array.from(native.normals);
492
+ const indices = Uint32Array.from(native.indices);
493
+ return native.meshes.map((mesh) => ({
494
+ expressId: mesh.expressId,
495
+ ifcType: mesh.ifcType,
496
+ positions: positions.subarray(mesh.positionsOffset, mesh.positionsOffset + mesh.positionsLen),
497
+ normals: normals.subarray(mesh.normalsOffset, mesh.normalsOffset + mesh.normalsLen),
498
+ indices: indices.subarray(mesh.indicesOffset, mesh.indicesOffset + mesh.indicesLen),
499
+ color: mesh.color,
500
+ }));
501
+ }
502
+ function toArrayBuffer(payload) {
503
+ if (payload instanceof ArrayBuffer) {
504
+ return payload;
505
+ }
506
+ if (payload instanceof Uint8Array) {
507
+ if (payload.byteOffset === 0
508
+ && payload.byteLength === payload.buffer.byteLength
509
+ && payload.buffer instanceof ArrayBuffer) {
510
+ return payload.buffer;
511
+ }
512
+ return payload.slice().buffer;
513
+ }
514
+ if (Array.isArray(payload)) {
515
+ return Uint8Array.from(payload).buffer;
516
+ }
517
+ throw new Error(`Unsupported packed geometry shard payload: ${typeof payload}`);
518
+ }
519
+ function decodePackedGeometryCacheShard(payload, jsReceivedTimeMs, batchSequence) {
520
+ const buffer = toArrayBuffer(payload);
521
+ const header = new Uint32Array(buffer, 0, 8);
522
+ const [magic, version, meshCount, positionsLen, normalsLen, indicesLen, processed, total] = header;
523
+ if (magic !== 0x49464342) {
524
+ throw new Error('Invalid packed geometry cache shard magic');
525
+ }
526
+ if (version !== 1) {
527
+ throw new Error(`Unsupported packed geometry cache shard version: ${version}`);
528
+ }
529
+ const meshRecordWordLength = 11;
530
+ const meshWordOffset = 8;
531
+ const meshTableWords = meshCount * meshRecordWordLength;
532
+ const dataByteOffset = (meshWordOffset + meshTableWords) * Uint32Array.BYTES_PER_ELEMENT;
533
+ const positionsByteLength = positionsLen * Float32Array.BYTES_PER_ELEMENT;
534
+ const normalsByteLength = normalsLen * Float32Array.BYTES_PER_ELEMENT;
535
+ const indicesByteLength = indicesLen * Uint32Array.BYTES_PER_ELEMENT;
536
+ const positionsOffset = dataByteOffset;
537
+ const normalsOffset = positionsOffset + positionsByteLength;
538
+ const indicesOffset = normalsOffset + normalsByteLength;
539
+ const positions = new Float32Array(buffer, positionsOffset, positionsLen);
540
+ const normals = new Float32Array(buffer, normalsOffset, normalsLen);
541
+ const indices = new Uint32Array(buffer, indicesOffset, indicesLen);
542
+ const meshView = new DataView(buffer, meshWordOffset * Uint32Array.BYTES_PER_ELEMENT, meshTableWords * Uint32Array.BYTES_PER_ELEMENT);
543
+ const meshes = [];
544
+ for (let meshIndex = 0; meshIndex < meshCount; meshIndex += 1) {
545
+ const base = meshIndex * meshRecordWordLength * Uint32Array.BYTES_PER_ELEMENT;
546
+ const expressId = meshView.getUint32(base, true);
547
+ const positionsOffsetWords = meshView.getUint32(base + 4, true);
548
+ const positionsLengthWords = meshView.getUint32(base + 8, true);
549
+ const normalsOffsetWords = meshView.getUint32(base + 12, true);
550
+ const normalsLengthWords = meshView.getUint32(base + 16, true);
551
+ const indicesOffsetWords = meshView.getUint32(base + 20, true);
552
+ const indicesLengthWords = meshView.getUint32(base + 24, true);
553
+ const color = [
554
+ meshView.getFloat32(base + 28, true),
555
+ meshView.getFloat32(base + 32, true),
556
+ meshView.getFloat32(base + 36, true),
557
+ meshView.getFloat32(base + 40, true),
558
+ ];
559
+ meshes.push({
560
+ expressId,
561
+ positions: positions.subarray(positionsOffsetWords, positionsOffsetWords + positionsLengthWords),
562
+ normals: normals.subarray(normalsOffsetWords, normalsOffsetWords + normalsLengthWords),
563
+ indices: indices.subarray(indicesOffsetWords, indicesOffsetWords + indicesLengthWords),
564
+ color,
565
+ });
566
+ }
567
+ return {
568
+ meshes,
569
+ progress: {
570
+ processed,
571
+ total,
572
+ currentType: 'cached',
573
+ },
574
+ nativeTelemetry: {
575
+ batchSequence,
576
+ payloadKind: 'packed-cache-shard',
577
+ meshCount,
578
+ positionsLen,
579
+ normalsLen,
580
+ indicesLen,
581
+ chunkReadyTimeMs: 0,
582
+ packTimeMs: 0,
583
+ emitTimeMs: 0,
584
+ emittedTimeMs: 0,
585
+ jsReceivedTimeMs,
586
+ },
587
+ };
588
+ }
589
+ function convertNativeBatchTelemetry(telemetry, jsReceivedTimeMs) {
590
+ if (!telemetry) {
591
+ return undefined;
592
+ }
593
+ return {
594
+ batchSequence: telemetry.batchSequence,
595
+ payloadKind: telemetry.payloadKind,
596
+ meshCount: telemetry.meshCount,
597
+ positionsLen: telemetry.positionsLen,
598
+ normalsLen: telemetry.normalsLen,
599
+ indicesLen: telemetry.indicesLen,
600
+ chunkReadyTimeMs: telemetry.chunkReadyTimeMs,
601
+ packTimeMs: telemetry.packTimeMs,
602
+ emitTimeMs: telemetry.emitTimeMs,
603
+ emittedTimeMs: telemetry.emittedTimeMs,
604
+ jsReceivedTimeMs,
605
+ };
606
+ }
136
607
  function convertNativeCoordinateInfo(native) {
137
608
  return {
138
609
  originShift: native.originShift,
@@ -1 +1 @@
1
- {"version":3,"file":"native-bridge.js","sourceRoot":"","sources":["../src/native-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-bridge.js","sourceRoot":"","sources":["../src/native-bridge.ts"],"names":[],"mappings":"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"}